@babylonlabs-io/wallet-connector 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/LICENSE +141 -0
  2. package/README.md +234 -0
  3. package/dist/components/ChainButton/index.d.ts +11 -0
  4. package/dist/components/Chains/container.d.ts +8 -0
  5. package/dist/components/Chains/index.d.ts +13 -0
  6. package/dist/components/Chains/index.stories.d.ts +6 -0
  7. package/dist/components/ConnectedWallet/index.d.ts +10 -0
  8. package/dist/components/Error/container.d.ts +5 -0
  9. package/dist/components/Error/index.d.ts +12 -0
  10. package/dist/components/FieldControl/index.d.ts +7 -0
  11. package/dist/components/Inscriptions/container.d.ts +6 -0
  12. package/dist/components/Inscriptions/index.d.ts +7 -0
  13. package/dist/components/Loader/index.d.ts +6 -0
  14. package/dist/components/ResponsiveDialog/ResponsiveDialog.d.ts +2 -0
  15. package/dist/components/TermsOfService/container.d.ts +6 -0
  16. package/dist/components/TermsOfService/index.d.ts +8 -0
  17. package/dist/components/WalletButton/index.d.ts +12 -0
  18. package/dist/components/WalletProvider/components/Screen.d.ts +17 -0
  19. package/dist/components/WalletProvider/components/WalletDialog.d.ts +6 -0
  20. package/dist/components/WalletProvider/constants.d.ts +2 -0
  21. package/dist/components/WalletProvider/index.d.ts +9 -0
  22. package/dist/components/WalletProvider/tesnet.d.ts +4 -0
  23. package/dist/components/Wallets/container.d.ts +11 -0
  24. package/dist/components/Wallets/index.d.ts +10 -0
  25. package/dist/context/Chain.context.d.ts +24 -0
  26. package/dist/context/Inscriptions.context.d.ts +12 -0
  27. package/dist/context/State.context.d.ts +42 -0
  28. package/dist/core/Wallet.d.ts +27 -0
  29. package/dist/core/WalletConnector.d.ts +23 -0
  30. package/dist/core/index.d.ts +6 -0
  31. package/dist/core/types.d.ts +214 -0
  32. package/dist/core/utils/bip322.d.ts +41 -0
  33. package/dist/core/utils/mempool.d.ts +10 -0
  34. package/dist/core/utils/wallet.d.ts +8 -0
  35. package/dist/core/wallets/bbn/index.d.ts +3 -0
  36. package/dist/core/wallets/bbn/injectable/index.d.ts +3 -0
  37. package/dist/core/wallets/bbn/keplr/index.d.ts +3 -0
  38. package/dist/core/wallets/bbn/keplr/provider.d.ts +22 -0
  39. package/dist/core/wallets/bbn/leap/index.d.ts +3 -0
  40. package/dist/core/wallets/bbn/leap/provider.d.ts +17 -0
  41. package/dist/core/wallets/bbn/okx/index.d.ts +3 -0
  42. package/dist/core/wallets/bbn/okx/provider.d.ts +17 -0
  43. package/dist/core/wallets/btc/index.d.ts +3 -0
  44. package/dist/core/wallets/btc/injectable/index.d.ts +3 -0
  45. package/dist/core/wallets/btc/keystone/index.d.ts +3 -0
  46. package/dist/core/wallets/btc/keystone/provider.d.ts +42 -0
  47. package/dist/core/wallets/btc/okx/index.d.ts +3 -0
  48. package/dist/core/wallets/btc/okx/provider.d.ts +21 -0
  49. package/dist/core/wallets/btc/onekey/index.d.ts +3 -0
  50. package/dist/core/wallets/btc/onekey/provider.d.ts +20 -0
  51. package/dist/core/wallets/btc/unisat/index.d.ts +3 -0
  52. package/dist/core/wallets/btc/unisat/provider.d.ts +21 -0
  53. package/dist/core/wallets/index.d.ts +5 -0
  54. package/dist/fonts/Px-Grotesk/Px-Grotesk-Black-Italic.otf +0 -0
  55. package/dist/fonts/Px-Grotesk/Px-Grotesk-Black-Italic.woff +0 -0
  56. package/dist/fonts/Px-Grotesk/Px-Grotesk-Black-Italic.woff2 +0 -0
  57. package/dist/fonts/Px-Grotesk/Px-Grotesk-Black.otf +0 -0
  58. package/dist/fonts/Px-Grotesk/Px-Grotesk-Black.woff +0 -0
  59. package/dist/fonts/Px-Grotesk/Px-Grotesk-Black.woff2 +0 -0
  60. package/dist/fonts/Px-Grotesk/Px-Grotesk-Bold-Italic.otf +0 -0
  61. package/dist/fonts/Px-Grotesk/Px-Grotesk-Bold-Italic.woff +0 -0
  62. package/dist/fonts/Px-Grotesk/Px-Grotesk-Bold-Italic.woff2 +0 -0
  63. package/dist/fonts/Px-Grotesk/Px-Grotesk-Bold.otf +0 -0
  64. package/dist/fonts/Px-Grotesk/Px-Grotesk-Bold.woff +0 -0
  65. package/dist/fonts/Px-Grotesk/Px-Grotesk-Bold.woff2 +0 -0
  66. package/dist/fonts/Px-Grotesk/Px-Grotesk-Italic.otf +0 -0
  67. package/dist/fonts/Px-Grotesk/Px-Grotesk-Italic.woff +0 -0
  68. package/dist/fonts/Px-Grotesk/Px-Grotesk-Italic.woff2 +0 -0
  69. package/dist/fonts/Px-Grotesk/Px-Grotesk-Light-Italic.otf +0 -0
  70. package/dist/fonts/Px-Grotesk/Px-Grotesk-Light-Italic.woff +0 -0
  71. package/dist/fonts/Px-Grotesk/Px-Grotesk-Light-Italic.woff2 +0 -0
  72. package/dist/fonts/Px-Grotesk/Px-Grotesk-Light.otf +0 -0
  73. package/dist/fonts/Px-Grotesk/Px-Grotesk-Light.woff +0 -0
  74. package/dist/fonts/Px-Grotesk/Px-Grotesk-Light.woff2 +0 -0
  75. package/dist/fonts/Px-Grotesk/Px-Grotesk-Regular.otf +0 -0
  76. package/dist/fonts/Px-Grotesk/Px-Grotesk-Regular.woff +0 -0
  77. package/dist/fonts/Px-Grotesk/Px-Grotesk-Regular.woff2 +0 -0
  78. package/dist/fonts/Px-Grotesk/Px-Grotesk-Screen.eot +0 -0
  79. package/dist/fonts/Px-Grotesk/Px-Grotesk-Screen.otf +0 -0
  80. package/dist/fonts/Px-Grotesk/Px-Grotesk-Screen.woff +0 -0
  81. package/dist/fonts/Px-Grotesk/Px-Grotesk-Screen.woff2 +0 -0
  82. package/dist/fonts/Px-Grotesk/Px-Grotesk-Thin-Italic.otf +0 -0
  83. package/dist/fonts/Px-Grotesk/Px-Grotesk-Thin-Italic.woff +0 -0
  84. package/dist/fonts/Px-Grotesk/Px-Grotesk-Thin-Italic.woff2 +0 -0
  85. package/dist/fonts/Px-Grotesk/Px-Grotesk-Thin.otf +0 -0
  86. package/dist/fonts/Px-Grotesk/Px-Grotesk-Thin.woff +0 -0
  87. package/dist/fonts/Px-Grotesk/Px-Grotesk-Thin.woff2 +0 -0
  88. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Bold-Italic.otf +0 -0
  89. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Bold-Italic.woff +0 -0
  90. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Bold-Italic.woff2 +0 -0
  91. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Bold.otf +0 -0
  92. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Bold.woff +0 -0
  93. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Bold.woff2 +0 -0
  94. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Italic.otf +0 -0
  95. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Italic.woff +0 -0
  96. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Italic.woff2 +0 -0
  97. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Light-Italic.otf +0 -0
  98. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Light-Italic.woff +0 -0
  99. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Light-Italic.woff2 +0 -0
  100. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Light.otf +0 -0
  101. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Light.woff +0 -0
  102. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Light.woff2 +0 -0
  103. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Regular.otf +0 -0
  104. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Regular.woff +0 -0
  105. package/dist/fonts/Px-Grotesk-Mono/Px-Grotesk-Mono-Regular.woff2 +0 -0
  106. package/dist/hooks/useChainConnector.d.ts +3 -0
  107. package/dist/hooks/useIsMobileView.d.ts +1 -0
  108. package/dist/hooks/usePersistState.d.ts +2 -0
  109. package/dist/hooks/useWalletConnect.d.ts +6 -0
  110. package/dist/hooks/useWalletConnectors.d.ts +5 -0
  111. package/dist/hooks/useWalletWidgets.d.ts +1 -0
  112. package/dist/hooks/useWidgetState.d.ts +1 -0
  113. package/dist/images/chains/babylon.jpeg +0 -0
  114. package/dist/images/chains/bitcoin.png +0 -0
  115. package/dist/images/wallets/binance.png +0 -0
  116. package/dist/images/wallets/binance.webp +0 -0
  117. package/dist/images/wallets/keystone.svg +4 -0
  118. package/dist/images/wallets/okx.png +0 -0
  119. package/dist/images/wallets/tomo.png +0 -0
  120. package/dist/index.cjs.js +80 -0
  121. package/dist/index.cjs.js.map +1 -0
  122. package/dist/index.d.ts +10 -0
  123. package/dist/index.es.js +81912 -0
  124. package/dist/index.es.js.map +1 -0
  125. package/dist/style.css +1 -0
  126. package/dist/utils/wallet.d.ts +1 -0
  127. package/package.json +113 -0
@@ -0,0 +1,42 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { IChain, IWallet } from '../core/types';
3
+ export type Screen<T extends string = string> = {
4
+ type: T;
5
+ params?: Record<string, any>;
6
+ };
7
+ export type Screens = Screen<"LOADER"> | Screen<"TERMS_OF_SERVICE"> | Screen<"CHAINS"> | Screen<"WALLETS"> | Screen<"INSCRIPTIONS"> | Screen<"ERROR">;
8
+ export interface State {
9
+ confirmed: boolean;
10
+ visible: boolean;
11
+ screen: Screens;
12
+ selectedWallets: Record<string, IWallet | undefined>;
13
+ chains: Record<string, IChain>;
14
+ }
15
+ export interface Actions {
16
+ open?: () => void;
17
+ close?: () => void;
18
+ displayLoader?: (message?: string) => void;
19
+ displayChains?: () => void;
20
+ displayWallets?: (chain: string) => void;
21
+ displayInscriptions?: () => void;
22
+ displayTermsOfService?: () => void;
23
+ displayError?: (params: {
24
+ icon?: JSX.Element;
25
+ title: string;
26
+ description: string;
27
+ cancelButton?: string;
28
+ submitButton?: string;
29
+ onCancel?: () => void;
30
+ onSubmit?: () => void;
31
+ }) => void;
32
+ selectWallet?: (chain: string, wallet: IWallet) => void;
33
+ removeWallet?: (chain: string) => void;
34
+ confirm?: () => void;
35
+ reset?: () => void;
36
+ }
37
+ export declare const StateContext: import('react').Context<State & Actions>;
38
+ interface StateProviderProps {
39
+ chains: IChain[];
40
+ }
41
+ export declare function StateProvider({ children, chains }: PropsWithChildren<StateProviderProps>): import("react/jsx-runtime").JSX.Element;
42
+ export {};
@@ -0,0 +1,27 @@
1
+ import { Account, IProvider, IWallet, Network } from './types';
2
+ export interface WalletOptions<P extends IProvider> {
3
+ id: string;
4
+ name: string;
5
+ icon: string;
6
+ docs: string;
7
+ networks: Network[];
8
+ origin: any;
9
+ provider: P | null;
10
+ label?: string;
11
+ }
12
+ export declare class Wallet<P extends IProvider> implements IWallet {
13
+ readonly id: string;
14
+ readonly origin: any;
15
+ readonly name: string;
16
+ readonly icon: string;
17
+ readonly docs: string;
18
+ readonly networks: Network[];
19
+ readonly provider: P | null;
20
+ private readonly _label?;
21
+ account: Account | null;
22
+ constructor({ id, origin, name, icon, docs, networks, provider, label }: WalletOptions<P>);
23
+ get installed(): boolean;
24
+ get label(): string;
25
+ connect(): Promise<this>;
26
+ clone(): Wallet<P>;
27
+ }
@@ -0,0 +1,23 @@
1
+ import { Wallet } from './Wallet';
2
+ import { IConnector, IProvider } from './types';
3
+ export interface ConnectorEvents<P extends IProvider> {
4
+ connecting: (message?: string) => void;
5
+ connect: (wallet: Wallet<P>) => void;
6
+ disconnect: (wallet: Wallet<P>) => void;
7
+ error: (error: Error) => void;
8
+ }
9
+ export declare class WalletConnector<N extends string, P extends IProvider, C> implements IConnector<N, P, C> {
10
+ readonly id: N;
11
+ readonly name: string;
12
+ readonly icon: string;
13
+ readonly wallets: Wallet<P>[];
14
+ readonly config: C;
15
+ private _connectedWallet;
16
+ private _ee;
17
+ constructor(id: N, name: string, icon: string, wallets: Wallet<P>[], config: C);
18
+ get connectedWallet(): Wallet<P> | null;
19
+ connect(wallet: string | Wallet<P>): Promise<Wallet<P> | null>;
20
+ disconnect(): Promise<void>;
21
+ clone(): WalletConnector<N, P, C>;
22
+ on<K extends keyof ConnectorEvents<P>>(name: K, handler: ConnectorEvents<P>[K]): import('nanoevents').Unsubscribe;
23
+ }
@@ -0,0 +1,6 @@
1
+ import { Wallet } from './Wallet';
2
+ import { WalletConnector } from './WalletConnector';
3
+ import { ChainMetadata, ExternalWalletProps, IProvider, WalletMetadata } from './types';
4
+ export declare const createWallet: <P extends IProvider, C>(metadata: WalletMetadata<P, C>, context: any, config: C) => Promise<Wallet<P>>;
5
+ export declare const createExternalWallet: <P extends IProvider>({ id, name, icon, provider }: ExternalWalletProps<P>) => Wallet<P>;
6
+ export declare const createWalletConnector: <N extends string, P extends IProvider, C>(metadata: ChainMetadata<N, P, C>, context: any, config: C) => Promise<WalletConnector<N, P, C>>;
@@ -0,0 +1,214 @@
1
+ import { ChainInfo, OfflineAminoSigner, OfflineDirectSigner } from '@keplr-wallet/types';
2
+ import { ComponentType } from 'react';
3
+ export type Fees = {
4
+ fastestFee: number;
5
+ halfHourFee: number;
6
+ hourFee: number;
7
+ economyFee: number;
8
+ minimumFee: number;
9
+ };
10
+ export interface UTXO {
11
+ txid: string;
12
+ vout: number;
13
+ value: number;
14
+ scriptPubKey: string;
15
+ }
16
+ export interface InscriptionIdentifier {
17
+ txid: string;
18
+ vout: number;
19
+ }
20
+ export declare enum Network {
21
+ MAINNET = "mainnet",
22
+ CANARY = "canary",
23
+ TESTNET = "testnet",
24
+ SIGNET = "signet"
25
+ }
26
+ export type WalletInfo = {
27
+ publicKeyHex: string;
28
+ address: string;
29
+ };
30
+ export interface BTCConfig {
31
+ coinName: string;
32
+ coinSymbol: string;
33
+ networkName: string;
34
+ mempoolApiUrl: string;
35
+ network: Network;
36
+ }
37
+ export type BBNConfig = {
38
+ chainId: string;
39
+ rpc: string;
40
+ chainData: ChainInfo;
41
+ networkName: string;
42
+ networkFullName: string;
43
+ coinSymbol: string;
44
+ };
45
+ export interface IProvider {
46
+ connectWallet: () => Promise<void>;
47
+ getAddress: () => Promise<string>;
48
+ getPublicKeyHex: () => Promise<string>;
49
+ }
50
+ export interface IWallet<P extends IProvider = IProvider> {
51
+ id: string;
52
+ name: string;
53
+ icon: string;
54
+ docs: string;
55
+ installed: boolean;
56
+ provider: P | null;
57
+ account: Account | null;
58
+ label: string;
59
+ }
60
+ export interface IChain<K extends string = string, P extends IProvider = IProvider, C = any> {
61
+ id: K;
62
+ name: string;
63
+ icon: string;
64
+ wallets: IWallet<P>[];
65
+ config: C;
66
+ }
67
+ export interface IConnector<K extends string = string, P extends IProvider = IProvider, C = any> extends IChain<K, P, C> {
68
+ connect(wallet: string | IWallet<P>): Promise<IWallet<P> | null>;
69
+ disconnect(): Promise<void>;
70
+ on(event: string, cb: (wallet: IWallet<P>) => void): () => void;
71
+ }
72
+ export interface Account {
73
+ address: string;
74
+ publicKeyHex: string;
75
+ }
76
+ export interface WalletMetadata<P extends IProvider, C> {
77
+ id: string;
78
+ wallet?: string | ((context: any, config: C) => any);
79
+ label?: string;
80
+ name: string | ((wallet: any, config: C) => Promise<string>);
81
+ icon: string | ((wallet: any, config: C) => Promise<string>);
82
+ docs: string;
83
+ networks: Network[];
84
+ createProvider: (wallet: any, config: C) => P;
85
+ }
86
+ export interface ChainMetadata<N extends string, P extends IProvider, C> {
87
+ chain: N;
88
+ name: string;
89
+ icon: string;
90
+ wallets: WalletMetadata<P, C>[];
91
+ }
92
+ export interface ExternalWalletProps<P extends IProvider> {
93
+ id: string;
94
+ name: string;
95
+ icon: string;
96
+ provider: P;
97
+ }
98
+ export interface WidgetProps<P extends IProvider = IProvider> {
99
+ id: string;
100
+ connector: IConnector;
101
+ createWallet: (props: ExternalWalletProps<P>) => IWallet<P>;
102
+ }
103
+ export type WidgetComponent<P extends IProvider = IProvider> = ComponentType<WidgetProps<P>>;
104
+ export interface ExternalConnector<P extends IProvider = IProvider> {
105
+ id: string;
106
+ widget: WidgetComponent<P>;
107
+ }
108
+ export interface IBTCProvider extends IProvider {
109
+ /**
110
+ * Connects to the wallet and returns the instance of the wallet provider.
111
+ * Currently only supports "native segwit" and "taproot" address types.
112
+ * @returns A promise that resolves to an instance of the wrapper wallet provider in babylon friendly format.
113
+ * @throws An error if the wallet is not installed or if connection fails.
114
+ */
115
+ connectWallet(): Promise<void>;
116
+ /**
117
+ * Gets the address of the connected wallet.
118
+ * @returns A promise that resolves to the address of the connected wallet.
119
+ */
120
+ getAddress(): Promise<string>;
121
+ /**
122
+ * Gets the public key of the connected wallet.
123
+ * @returns A promise that resolves to the public key of the connected wallet.
124
+ */
125
+ getPublicKeyHex(): Promise<string>;
126
+ /**
127
+ * Signs the given PSBT in hex format.
128
+ * @param psbtHex - The hex string of the unsigned PSBT to sign.
129
+ * @returns A promise that resolves to the hex string of the signed PSBT.
130
+ */
131
+ signPsbt(psbtHex: string): Promise<string>;
132
+ /**
133
+ * Signs multiple PSBTs in hex format.
134
+ * @param psbtsHexes - The hex strings of the unsigned PSBTs to sign.
135
+ * @returns A promise that resolves to an array of hex strings, each representing a signed PSBT.
136
+ */
137
+ signPsbts(psbtsHexes: string[]): Promise<string[]>;
138
+ /**
139
+ * Gets the network of the current account.
140
+ * @returns A promise that resolves to the network of the current account.
141
+ */
142
+ getNetwork(): Promise<Network>;
143
+ /**
144
+ * Signs a message using the specified signing method.
145
+ * @param message - The message to sign.
146
+ * @param type - The signing method to use.
147
+ * @returns A promise that resolves to the signed message.
148
+ */
149
+ signMessage(message: string, type: "ecdsa"): Promise<string>;
150
+ /**
151
+ * Retrieves the inscriptions for the connected wallet.
152
+ * @returns A promise that resolves to an array of inscriptions.
153
+ */
154
+ getInscriptions(): Promise<InscriptionIdentifier[]>;
155
+ /**
156
+ * Registers an event listener for the specified event.
157
+ * At the moment, only the "accountChanged" event is supported.
158
+ * @param eventName - The name of the event to listen for.
159
+ * @param callBack - The callback function to be executed when the event occurs.
160
+ */
161
+ on(eventName: string, callBack: () => void): void;
162
+ /**
163
+ * Unregisters an event listener for the specified event.
164
+ * @param eventName - The name of the event to listen for.
165
+ * @param callBack - The callback function to be executed when the event occurs.
166
+ */
167
+ off(eventName: string, callBack: () => void): void;
168
+ /**
169
+ * Gets the name of the wallet provider.
170
+ * @returns A promise that resolves to the name of the wallet provider.
171
+ */
172
+ getWalletProviderName(): Promise<string>;
173
+ /**
174
+ * Gets the icon of the wallet provider.
175
+ * @returns A promise that resolves to the icon of the wallet provider.
176
+ */
177
+ getWalletProviderIcon(): Promise<string>;
178
+ }
179
+ export interface IBBNProvider extends IProvider {
180
+ /**
181
+ * Connects to the wallet and returns the instance of the wallet provider.
182
+ * @returns A promise that resolves to an instance of the wrapper wallet provider.
183
+ * @throws An error if the wallet is not installed or if connection fails.
184
+ */
185
+ connectWallet(): Promise<void>;
186
+ /**
187
+ * Gets the address of the connected wallet.
188
+ * @returns A promise that resolves to the address of the connected wallet.
189
+ */
190
+ getAddress(): Promise<string>;
191
+ /**
192
+ * Gets the public key of the connected wallet.
193
+ * @returns A promise that resolves to the public key of the connected wallet.
194
+ */
195
+ getPublicKeyHex(): Promise<string>;
196
+ /**
197
+ * Gets the name of the wallet provider.
198
+ * @returns A promise that resolves to the name of the wallet provider.
199
+ */
200
+ getWalletProviderName(): Promise<string>;
201
+ /**
202
+ * Gets the icon of the wallet provider.
203
+ * @returns A promise that resolves to the icon of the wallet provider.
204
+ */
205
+ getWalletProviderIcon(): Promise<string>;
206
+ /**
207
+ * Retrieves an offline signer that supports both Amino and Direct signing methods.
208
+ * This signer is used for signing transactions offline before broadcasting them to the network.
209
+ *
210
+ * @returns {Promise<OfflineAminoSigner & OfflineDirectSigner>} A promise that resolves to a signer supporting both Amino and Direct signing
211
+ * @throws {Error} If wallet connection is not established or signer cannot be retrieved
212
+ */
213
+ getOfflineSigner(): Promise<OfflineAminoSigner & OfflineDirectSigner>;
214
+ }
@@ -0,0 +1,41 @@
1
+ import * as bitcoin from "bitcoinjs-lib";
2
+ /**
3
+ * https://github.com/ACken2/bip322-js/blob/main/src/BIP322.ts
4
+ * use the existing the bip322-js file with some modification, use the file directly instead of install the whole package,
5
+ * because the package will introduce too many dependencies.
6
+ * Class that handles BIP-322 related operations.
7
+ */
8
+ declare class BIP322 {
9
+ static TAG: Buffer;
10
+ /**
11
+ * Compute the message hash as specified in the BIP-322.
12
+ * The standard is specified in BIP-340 as:
13
+ * The function hashtag(x) where tag is a UTF-8 encoded tag name and x is a byte array returns the 32-byte hash SHA256(SHA256(tag) || SHA256(tag) || x).
14
+ * @param message Message to be hashed
15
+ * @returns Hashed message
16
+ */
17
+ static hashMessage(message: string): Buffer;
18
+ /**
19
+ * Build a to_spend transaction using simple signature in accordance to the BIP-322.
20
+ * @param message Message to be signed using BIP-322
21
+ * @param scriptPublicKey The script public key for the signing wallet
22
+ * @returns Bitcoin transaction that correspond to the to_spend transaction
23
+ */
24
+ static buildToSpendTx(message: string, scriptPublicKey: Buffer): bitcoin.Transaction;
25
+ /**
26
+ * Build a to_sign transaction using simple signature in accordance to the BIP-322.
27
+ * @param toSpendTxId Transaction ID of the to_spend transaction as constructed by buildToSpendTx
28
+ * @param witnessScript The script public key for the signing wallet, or the redeemScript for P2SH-P2WPKH address
29
+ * @param isRedeemScript Set to true if the provided witnessScript is a redeemScript for P2SH-P2WPKH address, default to false
30
+ * @param tapInternalKey Used to set the taproot internal public key of a taproot signing address when provided, default to undefined
31
+ * @returns Ready-to-be-signed bitcoinjs.Psbt transaction
32
+ */
33
+ static buildToSignTx(toSpendTxId: string, witnessScript: Buffer, isRedeemScript?: boolean, tapInternalKey?: Buffer): bitcoin.Psbt;
34
+ /**
35
+ * Encode witness stack in a signed BIP-322 PSBT into its base-64 encoded format.
36
+ * @param signedPsbt Signed PSBT
37
+ * @returns Base-64 encoded witness data
38
+ */
39
+ static encodeWitness(signedPsbt: bitcoin.Psbt): string;
40
+ }
41
+ export default BIP322;
@@ -0,0 +1,10 @@
1
+ import { Fees, UTXO } from '../types';
2
+ export interface MempoolApi {
3
+ pushTx(txHex: string): Promise<string>;
4
+ getAddressBalance(address: string): Promise<number>;
5
+ getNetworkFees(): Promise<Fees>;
6
+ getTipHeight(): Promise<number>;
7
+ getFundingUTXOs(address: string, amount?: number): Promise<UTXO[]>;
8
+ getTxInfo(txId: string): Promise<any>;
9
+ }
10
+ export declare function createMempoolAPI(mempoolApiUrl: string): MempoolApi;
@@ -0,0 +1,8 @@
1
+ import { networks } from 'bitcoinjs-lib';
2
+ import { Network } from '../types';
3
+ export declare const COMPRESSED_PUBLIC_KEY_HEX_LENGTH = 66;
4
+ export declare const getTaprootAddress: (publicKey: string, network: Network) => string;
5
+ export declare const getNativeSegwitAddress: (publicKey: string, network: Network) => string;
6
+ export declare function validateAddressWithPK(address: string, publicKey: string, network: Network): boolean;
7
+ export declare function validateAddress(network: Network, address: string): void;
8
+ export declare const toNetwork: (network: Network) => networks.Network;
@@ -0,0 +1,3 @@
1
+ import { BBNConfig, ChainMetadata, IBBNProvider } from '../../types';
2
+ declare const metadata: ChainMetadata<"BBN", IBBNProvider, BBNConfig>;
3
+ export default metadata;
@@ -0,0 +1,3 @@
1
+ import { IBBNProvider, BBNConfig, WalletMetadata } from '../../../types';
2
+ declare const metadata: WalletMetadata<IBBNProvider, BBNConfig>;
3
+ export default metadata;
@@ -0,0 +1,3 @@
1
+ import { IBBNProvider, BBNConfig, WalletMetadata } from '../../../types';
2
+ declare const metadata: WalletMetadata<IBBNProvider, BBNConfig>;
3
+ export default metadata;
@@ -0,0 +1,22 @@
1
+ import { Window as KeplrWindow } from '@keplr-wallet/types';
2
+ import { OfflineAminoSigner, OfflineDirectSigner } from '@keplr-wallet/types/src/cosmjs';
3
+ import { BBNConfig, IBBNProvider } from '../../../types';
4
+ declare global {
5
+ interface Window extends KeplrWindow {
6
+ }
7
+ }
8
+ export declare const WALLET_PROVIDER_NAME = "Keplr";
9
+ export declare class KeplrProvider implements IBBNProvider {
10
+ private keplr;
11
+ private walletInfo;
12
+ private chainId;
13
+ private rpc;
14
+ private chainData;
15
+ constructor(keplr: Window["keplr"], config: BBNConfig);
16
+ connectWallet(): Promise<void>;
17
+ getAddress(): Promise<string>;
18
+ getPublicKeyHex(): Promise<string>;
19
+ getWalletProviderName(): Promise<string>;
20
+ getWalletProviderIcon(): Promise<string>;
21
+ getOfflineSigner(): Promise<OfflineAminoSigner & OfflineDirectSigner>;
22
+ }
@@ -0,0 +1,3 @@
1
+ import { IBBNProvider, BBNConfig, WalletMetadata } from '../../../types';
2
+ declare const metadata: WalletMetadata<IBBNProvider, BBNConfig>;
3
+ export default metadata;
@@ -0,0 +1,17 @@
1
+ import { OfflineAminoSigner, OfflineDirectSigner } from '@keplr-wallet/types/src/cosmjs';
2
+ import { BBNConfig, IBBNProvider } from '../../../types';
3
+ export declare const WALLET_PROVIDER_NAME = "Leap";
4
+ export declare class LeapProvider implements IBBNProvider {
5
+ private wallet;
6
+ private walletInfo;
7
+ private chainId;
8
+ private rpc;
9
+ private chainData;
10
+ constructor(wallet: any, config: BBNConfig);
11
+ connectWallet(): Promise<void>;
12
+ getAddress(): Promise<string>;
13
+ getPublicKeyHex(): Promise<string>;
14
+ getWalletProviderName(): Promise<string>;
15
+ getWalletProviderIcon(): Promise<string>;
16
+ getOfflineSigner(): Promise<OfflineAminoSigner & OfflineDirectSigner>;
17
+ }
@@ -0,0 +1,3 @@
1
+ import { IBBNProvider, BBNConfig, WalletMetadata } from '../../../types';
2
+ declare const metadata: WalletMetadata<IBBNProvider, BBNConfig>;
3
+ export default metadata;
@@ -0,0 +1,17 @@
1
+ import { OfflineAminoSigner, OfflineDirectSigner } from '@keplr-wallet/types/src/cosmjs';
2
+ import { BBNConfig, IBBNProvider } from '../../../types';
3
+ export declare const WALLET_PROVIDER_NAME = "OKX";
4
+ export declare class OKXBabylonProvider implements IBBNProvider {
5
+ private wallet;
6
+ private walletInfo;
7
+ private chainId;
8
+ private rpc;
9
+ private chainData;
10
+ constructor(wallet: any, config: BBNConfig);
11
+ connectWallet(): Promise<void>;
12
+ getAddress(): Promise<string>;
13
+ getPublicKeyHex(): Promise<string>;
14
+ getWalletProviderName(): Promise<string>;
15
+ getWalletProviderIcon(): Promise<string>;
16
+ getOfflineSigner(): Promise<OfflineAminoSigner & OfflineDirectSigner>;
17
+ }
@@ -0,0 +1,3 @@
1
+ import { BTCConfig, ChainMetadata, IBTCProvider } from '../../types';
2
+ declare const metadata: ChainMetadata<"BTC", IBTCProvider, BTCConfig>;
3
+ export default metadata;
@@ -0,0 +1,3 @@
1
+ import { IBTCProvider, BTCConfig, WalletMetadata } from '../../../types';
2
+ declare const metadata: WalletMetadata<IBTCProvider, BTCConfig>;
3
+ export default metadata;
@@ -0,0 +1,3 @@
1
+ import { IBTCProvider, BTCConfig, WalletMetadata } from '../../../types';
2
+ declare const metadata: WalletMetadata<IBTCProvider, BTCConfig>;
3
+ export default metadata;
@@ -0,0 +1,42 @@
1
+ import { BTCConfig, InscriptionIdentifier, IBTCProvider, Network } from '../../../types';
2
+ export declare const WALLET_PROVIDER_NAME = "Keystone";
3
+ export declare class KeystoneProvider implements IBTCProvider {
4
+ private keystoneWaleltInfo;
5
+ private viewSDK;
6
+ private dataSdk;
7
+ private config;
8
+ constructor(_wallet: any, config: BTCConfig);
9
+ /**
10
+ * Connects the staking app to the Keystone device and retrieves the necessary information.
11
+ * @returns A Promise that resolves to the current instance of the class.
12
+ * @throws An error if there is an issue reading the QR code or retrieving the extended public key.
13
+ */
14
+ connectWallet: () => Promise<void>;
15
+ getAddress: () => Promise<string>;
16
+ getPublicKeyHex: () => Promise<string>;
17
+ signPsbt: (psbtHex: string) => Promise<string>;
18
+ signPsbts: (psbtsHexes: string[]) => Promise<string[]>;
19
+ getNetwork: () => Promise<Network>;
20
+ signMessage: (message: string, type: "ecdsa") => Promise<string>;
21
+ getInscriptions: () => Promise<InscriptionIdentifier[]>;
22
+ on: () => void;
23
+ off: () => void;
24
+ getWalletProviderName: () => Promise<string>;
25
+ getWalletProviderIcon: () => Promise<string>;
26
+ /**
27
+ * Sign the PSBT with the Keystone device.
28
+ *
29
+ * @param psbtHex - The PSBT in hex format.
30
+ * @returns The signed PSBT in hex format.
31
+ * */
32
+ private sign;
33
+ /**
34
+ * Add the BIP32 derivation information for each input.
35
+ * The Keystone device is stateless, so it needs to know which key to use to sign the PSBT.
36
+ * Therefore, add the Taproot BIP32 derivation information to the PSBT.
37
+ * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#Specification
38
+ * @param psbt - The PSBT object.
39
+ * @returns The PSBT object with the BIP32 derivation information added.
40
+ */
41
+ private enhancePsbt;
42
+ }
@@ -0,0 +1,3 @@
1
+ import { IBTCProvider, BTCConfig, WalletMetadata } from '../../../types';
2
+ declare const metadata: WalletMetadata<IBTCProvider, BTCConfig>;
3
+ export default metadata;
@@ -0,0 +1,21 @@
1
+ import { BTCConfig, InscriptionIdentifier, IBTCProvider, Network } from '../../../types';
2
+ export declare const WALLET_PROVIDER_NAME = "OKX";
3
+ export declare class OKXProvider implements IBTCProvider {
4
+ private wallet;
5
+ private provider;
6
+ private walletInfo;
7
+ private config;
8
+ constructor(wallet: any, config: BTCConfig);
9
+ connectWallet: () => Promise<void>;
10
+ getAddress: () => Promise<string>;
11
+ getPublicKeyHex: () => Promise<string>;
12
+ signPsbt: (psbtHex: string) => Promise<string>;
13
+ signPsbts: (psbtsHexes: string[]) => Promise<string[]>;
14
+ getNetwork: () => Promise<Network>;
15
+ signMessage: (message: string, type: "ecdsa") => Promise<string>;
16
+ getInscriptions: () => Promise<InscriptionIdentifier[]>;
17
+ on: (eventName: string, callBack: () => void) => any;
18
+ off: (eventName: string, callBack: () => void) => any;
19
+ getWalletProviderName: () => Promise<string>;
20
+ getWalletProviderIcon: () => Promise<string>;
21
+ }
@@ -0,0 +1,3 @@
1
+ import { IBTCProvider, BTCConfig, WalletMetadata } from '../../../types';
2
+ declare const metadata: WalletMetadata<IBTCProvider, BTCConfig>;
3
+ export default metadata;
@@ -0,0 +1,20 @@
1
+ import { BTCConfig, IBTCProvider, InscriptionIdentifier, Network } from '../../../types';
2
+ export declare const WALLET_PROVIDER_NAME = "OneKey";
3
+ export declare class OneKeyProvider implements IBTCProvider {
4
+ private provider;
5
+ private walletInfo;
6
+ private config;
7
+ constructor(wallet: any, config: BTCConfig);
8
+ connectWallet: () => Promise<void>;
9
+ getAddress: () => Promise<string>;
10
+ getPublicKeyHex: () => Promise<string>;
11
+ signPsbt: (psbtHex: string) => Promise<string>;
12
+ signPsbts: (psbtsHexes: string[]) => Promise<string[]>;
13
+ getNetwork: () => Promise<Network>;
14
+ signMessage: (message: string, type: "ecdsa") => Promise<string>;
15
+ getInscriptions: () => Promise<InscriptionIdentifier[]>;
16
+ on: (eventName: string, callBack: () => void) => any;
17
+ off: (eventName: string, callBack: () => void) => any;
18
+ getWalletProviderName: () => Promise<string>;
19
+ getWalletProviderIcon: () => Promise<string>;
20
+ }
@@ -0,0 +1,3 @@
1
+ import { IBTCProvider, BTCConfig, WalletMetadata } from '../../../types';
2
+ declare const metadata: WalletMetadata<IBTCProvider, BTCConfig>;
3
+ export default metadata;
@@ -0,0 +1,21 @@
1
+ import { BTCConfig, IBTCProvider, InscriptionIdentifier, Network } from '../../../types';
2
+ export declare const WALLET_PROVIDER_NAME = "Unisat";
3
+ export declare class UnisatProvider implements IBTCProvider {
4
+ private provider;
5
+ private walletInfo;
6
+ private config;
7
+ constructor(wallet: any, config: BTCConfig);
8
+ connectWallet: () => Promise<void>;
9
+ getAddress: () => Promise<string>;
10
+ getPublicKeyHex: () => Promise<string>;
11
+ signPsbt: (psbtHex: string) => Promise<string>;
12
+ signPsbts: (psbtsHexes: string[]) => Promise<string[]>;
13
+ private getSignPsbtDefaultOptions;
14
+ getNetwork: () => Promise<Network>;
15
+ signMessage: (message: string, type: "ecdsa") => Promise<string>;
16
+ getInscriptions: () => Promise<InscriptionIdentifier[]>;
17
+ on: (eventName: string, callBack: () => void) => any;
18
+ off: (eventName: string, callBack: () => void) => any;
19
+ getWalletProviderName: () => Promise<string>;
20
+ getWalletProviderIcon: () => Promise<string>;
21
+ }
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ readonly BTC: import('../types').ChainMetadata<"BTC", import('../types').IBTCProvider, import('../types').BTCConfig>;
3
+ readonly BBN: import('../types').ChainMetadata<"BBN", import('../types').IBBNProvider, import('../types').BBNConfig>;
4
+ };
5
+ export default _default;