@txnlab/use-wallet 2.8.0 → 3.0.0-beta.2

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 (203) hide show
  1. package/README.md +3 -1009
  2. package/dist/index.cjs +2060 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +511 -0
  5. package/dist/index.d.ts +436 -902
  6. package/dist/index.js +2012 -0
  7. package/dist/index.js.map +1 -0
  8. package/package.json +50 -119
  9. package/dist/cjs/index.js +0 -3934
  10. package/dist/cjs/index.js.map +0 -1
  11. package/dist/cjs/jest.config.d.ts +0 -11
  12. package/dist/cjs/jest.setup.d.ts +0 -0
  13. package/dist/cjs/src/algod/index.d.ts +0 -10
  14. package/dist/cjs/src/clients/algosigner/client.d.ts +0 -37
  15. package/dist/cjs/src/clients/algosigner/constants.d.ts +0 -2
  16. package/dist/cjs/src/clients/algosigner/index.d.ts +0 -2
  17. package/dist/cjs/src/clients/algosigner/types.d.ts +0 -39
  18. package/dist/cjs/src/clients/base/base.d.ts +0 -46
  19. package/dist/cjs/src/clients/base/index.d.ts +0 -2
  20. package/dist/cjs/src/clients/custom/client.d.ts +0 -18
  21. package/dist/cjs/src/clients/custom/constants.d.ts +0 -1
  22. package/dist/cjs/src/clients/custom/index.d.ts +0 -2
  23. package/dist/cjs/src/clients/custom/types.d.ts +0 -25
  24. package/dist/cjs/src/clients/daffi/client.d.ts +0 -34
  25. package/dist/cjs/src/clients/daffi/constants.d.ts +0 -1
  26. package/dist/cjs/src/clients/daffi/index.d.ts +0 -2
  27. package/dist/cjs/src/clients/daffi/types.d.ts +0 -27
  28. package/dist/cjs/src/clients/defly/client.d.ts +0 -34
  29. package/dist/cjs/src/clients/defly/constants.d.ts +0 -1
  30. package/dist/cjs/src/clients/defly/index.d.ts +0 -2
  31. package/dist/cjs/src/clients/defly/types.d.ts +0 -32
  32. package/dist/cjs/src/clients/exodus/client.d.ts +0 -33
  33. package/dist/cjs/src/clients/exodus/constants.d.ts +0 -1
  34. package/dist/cjs/src/clients/exodus/index.d.ts +0 -2
  35. package/dist/cjs/src/clients/exodus/types.d.ts +0 -34
  36. package/dist/cjs/src/clients/index.d.ts +0 -19
  37. package/dist/cjs/src/clients/kibisis/client.d.ts +0 -73
  38. package/dist/cjs/src/clients/kibisis/constants.d.ts +0 -37
  39. package/dist/cjs/src/clients/kibisis/index.d.ts +0 -2
  40. package/dist/cjs/src/clients/kibisis/types.d.ts +0 -86
  41. package/dist/cjs/src/clients/kibisis/utils.d.ts +0 -9
  42. package/dist/cjs/src/clients/kibisis/utils.test.d.ts +0 -1
  43. package/dist/cjs/src/clients/kmd/client.d.ts +0 -30
  44. package/dist/cjs/src/clients/kmd/constants.d.ts +0 -1
  45. package/dist/cjs/src/clients/kmd/index.d.ts +0 -2
  46. package/dist/cjs/src/clients/kmd/types.d.ts +0 -32
  47. package/dist/cjs/src/clients/lute/client.d.ts +0 -34
  48. package/dist/cjs/src/clients/lute/constants.d.ts +0 -1
  49. package/dist/cjs/src/clients/lute/index.d.ts +0 -2
  50. package/dist/cjs/src/clients/lute/types.d.ts +0 -15
  51. package/dist/cjs/src/clients/magic/client.d.ts +0 -35
  52. package/dist/cjs/src/clients/magic/constants.d.ts +0 -1
  53. package/dist/cjs/src/clients/magic/index.d.ts +0 -2
  54. package/dist/cjs/src/clients/magic/types.d.ts +0 -27
  55. package/dist/cjs/src/clients/mnemonic/client.d.ts +0 -35
  56. package/dist/cjs/src/clients/mnemonic/constants.d.ts +0 -1
  57. package/dist/cjs/src/clients/mnemonic/index.d.ts +0 -2
  58. package/dist/cjs/src/clients/mnemonic/types.d.ts +0 -21
  59. package/dist/cjs/src/clients/myalgo/client.d.ts +0 -33
  60. package/dist/cjs/src/clients/myalgo/constants.d.ts +0 -1
  61. package/dist/cjs/src/clients/myalgo/index.d.ts +0 -2
  62. package/dist/cjs/src/clients/myalgo/types.d.ts +0 -19
  63. package/dist/cjs/src/clients/pera/client.d.ts +0 -34
  64. package/dist/cjs/src/clients/pera/constants.d.ts +0 -1
  65. package/dist/cjs/src/clients/pera/index.d.ts +0 -2
  66. package/dist/cjs/src/clients/pera/types.d.ts +0 -27
  67. package/dist/cjs/src/clients/walletconnect2/client.d.ts +0 -36
  68. package/dist/cjs/src/clients/walletconnect2/constants.d.ts +0 -5
  69. package/dist/cjs/src/clients/walletconnect2/index.d.ts +0 -2
  70. package/dist/cjs/src/clients/walletconnect2/types.d.ts +0 -28
  71. package/dist/cjs/src/clients/walletconnect2/utils.d.ts +0 -2
  72. package/dist/cjs/src/constants/constants.d.ts +0 -20
  73. package/dist/cjs/src/constants/index.d.ts +0 -1
  74. package/dist/cjs/src/context/WalletContext.d.ts +0 -8
  75. package/dist/cjs/src/hooks/index.d.ts +0 -2
  76. package/dist/cjs/src/hooks/useInitializeProviders.d.ts +0 -10
  77. package/dist/cjs/src/hooks/useInitializeProviders.test.d.ts +0 -4
  78. package/dist/cjs/src/hooks/useWallet.d.ts +0 -31
  79. package/dist/cjs/src/hooks/useWallet.test.d.ts +0 -4
  80. package/dist/cjs/src/index.d.ts +0 -6
  81. package/dist/cjs/src/media/audio.d.ts +0 -1
  82. package/dist/cjs/src/store/index.d.ts +0 -2
  83. package/dist/cjs/src/store/state/debugStore.d.ts +0 -6
  84. package/dist/cjs/src/store/state/walletStore.d.ts +0 -52
  85. package/dist/cjs/src/testUtils/mockAccounts.d.ts +0 -3
  86. package/dist/cjs/src/testUtils/mockClients.d.ts +0 -45
  87. package/dist/cjs/src/types/api.d.ts +0 -14
  88. package/dist/cjs/src/types/index.d.ts +0 -4
  89. package/dist/cjs/src/types/node.d.ts +0 -44
  90. package/dist/cjs/src/types/providers.d.ts +0 -148
  91. package/dist/cjs/src/types/utilities.d.ts +0 -1
  92. package/dist/cjs/src/types/wallet.d.ts +0 -54
  93. package/dist/cjs/src/utils/clearAccounts.d.ts +0 -2
  94. package/dist/cjs/src/utils/clearAccounts.test.d.ts +0 -1
  95. package/dist/cjs/src/utils/debugLog.d.ts +0 -3
  96. package/dist/cjs/src/utils/encodeNFDTransactionArray.spec.d.ts +0 -1
  97. package/dist/cjs/src/utils/encodeNFDTransactionsArray.d.ts +0 -2
  98. package/dist/cjs/src/utils/index.d.ts +0 -3
  99. package/dist/cjs/src/utils/initializeProviders.d.ts +0 -3
  100. package/dist/cjs/src/utils/initializeProviders.test.d.ts +0 -4
  101. package/dist/cjs/src/utils/providers.d.ts +0 -3
  102. package/dist/cjs/src/utils/providers.spec.d.ts +0 -1
  103. package/dist/cjs/src/utils/reconnectProviders.d.ts +0 -2
  104. package/dist/cjs/src/utils/reconnectProviders.test.d.ts +0 -1
  105. package/dist/cjs/src/utils/svgToBase64.d.ts +0 -1
  106. package/dist/cjs/src/utils/types.d.ts +0 -2
  107. package/dist/esm/index.js +0 -3911
  108. package/dist/esm/jest.config.d.ts +0 -11
  109. package/dist/esm/jest.setup.d.ts +0 -0
  110. package/dist/esm/src/algod/index.d.ts +0 -10
  111. package/dist/esm/src/clients/algosigner/client.d.ts +0 -37
  112. package/dist/esm/src/clients/algosigner/constants.d.ts +0 -2
  113. package/dist/esm/src/clients/algosigner/index.d.ts +0 -2
  114. package/dist/esm/src/clients/algosigner/types.d.ts +0 -39
  115. package/dist/esm/src/clients/base/base.d.ts +0 -46
  116. package/dist/esm/src/clients/base/index.d.ts +0 -2
  117. package/dist/esm/src/clients/custom/client.d.ts +0 -18
  118. package/dist/esm/src/clients/custom/constants.d.ts +0 -1
  119. package/dist/esm/src/clients/custom/index.d.ts +0 -2
  120. package/dist/esm/src/clients/custom/types.d.ts +0 -25
  121. package/dist/esm/src/clients/daffi/client.d.ts +0 -34
  122. package/dist/esm/src/clients/daffi/constants.d.ts +0 -1
  123. package/dist/esm/src/clients/daffi/index.d.ts +0 -2
  124. package/dist/esm/src/clients/daffi/types.d.ts +0 -27
  125. package/dist/esm/src/clients/defly/client.d.ts +0 -34
  126. package/dist/esm/src/clients/defly/constants.d.ts +0 -1
  127. package/dist/esm/src/clients/defly/index.d.ts +0 -2
  128. package/dist/esm/src/clients/defly/types.d.ts +0 -32
  129. package/dist/esm/src/clients/exodus/client.d.ts +0 -33
  130. package/dist/esm/src/clients/exodus/constants.d.ts +0 -1
  131. package/dist/esm/src/clients/exodus/index.d.ts +0 -2
  132. package/dist/esm/src/clients/exodus/types.d.ts +0 -34
  133. package/dist/esm/src/clients/index.d.ts +0 -19
  134. package/dist/esm/src/clients/kibisis/client.d.ts +0 -73
  135. package/dist/esm/src/clients/kibisis/constants.d.ts +0 -37
  136. package/dist/esm/src/clients/kibisis/index.d.ts +0 -2
  137. package/dist/esm/src/clients/kibisis/types.d.ts +0 -86
  138. package/dist/esm/src/clients/kibisis/utils.d.ts +0 -9
  139. package/dist/esm/src/clients/kibisis/utils.test.d.ts +0 -1
  140. package/dist/esm/src/clients/kmd/client.d.ts +0 -30
  141. package/dist/esm/src/clients/kmd/constants.d.ts +0 -1
  142. package/dist/esm/src/clients/kmd/index.d.ts +0 -2
  143. package/dist/esm/src/clients/kmd/types.d.ts +0 -32
  144. package/dist/esm/src/clients/lute/client.d.ts +0 -34
  145. package/dist/esm/src/clients/lute/constants.d.ts +0 -1
  146. package/dist/esm/src/clients/lute/index.d.ts +0 -2
  147. package/dist/esm/src/clients/lute/types.d.ts +0 -15
  148. package/dist/esm/src/clients/magic/client.d.ts +0 -35
  149. package/dist/esm/src/clients/magic/constants.d.ts +0 -1
  150. package/dist/esm/src/clients/magic/index.d.ts +0 -2
  151. package/dist/esm/src/clients/magic/types.d.ts +0 -27
  152. package/dist/esm/src/clients/mnemonic/client.d.ts +0 -35
  153. package/dist/esm/src/clients/mnemonic/constants.d.ts +0 -1
  154. package/dist/esm/src/clients/mnemonic/index.d.ts +0 -2
  155. package/dist/esm/src/clients/mnemonic/types.d.ts +0 -21
  156. package/dist/esm/src/clients/myalgo/client.d.ts +0 -33
  157. package/dist/esm/src/clients/myalgo/constants.d.ts +0 -1
  158. package/dist/esm/src/clients/myalgo/index.d.ts +0 -2
  159. package/dist/esm/src/clients/myalgo/types.d.ts +0 -19
  160. package/dist/esm/src/clients/pera/client.d.ts +0 -34
  161. package/dist/esm/src/clients/pera/constants.d.ts +0 -1
  162. package/dist/esm/src/clients/pera/index.d.ts +0 -2
  163. package/dist/esm/src/clients/pera/types.d.ts +0 -27
  164. package/dist/esm/src/clients/walletconnect2/client.d.ts +0 -36
  165. package/dist/esm/src/clients/walletconnect2/constants.d.ts +0 -5
  166. package/dist/esm/src/clients/walletconnect2/index.d.ts +0 -2
  167. package/dist/esm/src/clients/walletconnect2/types.d.ts +0 -28
  168. package/dist/esm/src/clients/walletconnect2/utils.d.ts +0 -2
  169. package/dist/esm/src/constants/constants.d.ts +0 -20
  170. package/dist/esm/src/constants/index.d.ts +0 -1
  171. package/dist/esm/src/context/WalletContext.d.ts +0 -8
  172. package/dist/esm/src/hooks/index.d.ts +0 -2
  173. package/dist/esm/src/hooks/useInitializeProviders.d.ts +0 -10
  174. package/dist/esm/src/hooks/useInitializeProviders.test.d.ts +0 -4
  175. package/dist/esm/src/hooks/useWallet.d.ts +0 -31
  176. package/dist/esm/src/hooks/useWallet.test.d.ts +0 -4
  177. package/dist/esm/src/index.d.ts +0 -6
  178. package/dist/esm/src/media/audio.d.ts +0 -1
  179. package/dist/esm/src/store/index.d.ts +0 -2
  180. package/dist/esm/src/store/state/debugStore.d.ts +0 -6
  181. package/dist/esm/src/store/state/walletStore.d.ts +0 -52
  182. package/dist/esm/src/testUtils/mockAccounts.d.ts +0 -3
  183. package/dist/esm/src/testUtils/mockClients.d.ts +0 -45
  184. package/dist/esm/src/types/api.d.ts +0 -14
  185. package/dist/esm/src/types/index.d.ts +0 -4
  186. package/dist/esm/src/types/node.d.ts +0 -44
  187. package/dist/esm/src/types/providers.d.ts +0 -148
  188. package/dist/esm/src/types/utilities.d.ts +0 -1
  189. package/dist/esm/src/types/wallet.d.ts +0 -54
  190. package/dist/esm/src/utils/clearAccounts.d.ts +0 -2
  191. package/dist/esm/src/utils/clearAccounts.test.d.ts +0 -1
  192. package/dist/esm/src/utils/debugLog.d.ts +0 -3
  193. package/dist/esm/src/utils/encodeNFDTransactionArray.spec.d.ts +0 -1
  194. package/dist/esm/src/utils/encodeNFDTransactionsArray.d.ts +0 -2
  195. package/dist/esm/src/utils/index.d.ts +0 -3
  196. package/dist/esm/src/utils/initializeProviders.d.ts +0 -3
  197. package/dist/esm/src/utils/initializeProviders.test.d.ts +0 -4
  198. package/dist/esm/src/utils/providers.d.ts +0 -3
  199. package/dist/esm/src/utils/providers.spec.d.ts +0 -1
  200. package/dist/esm/src/utils/reconnectProviders.d.ts +0 -2
  201. package/dist/esm/src/utils/reconnectProviders.test.d.ts +0 -1
  202. package/dist/esm/src/utils/svgToBase64.d.ts +0 -1
  203. package/dist/esm/src/utils/types.d.ts +0 -2
@@ -0,0 +1,511 @@
1
+ import { Store } from '@tanstack/store';
2
+ import algosdk from 'algosdk';
3
+ import { WalletConnectModalConfig } from '@walletconnect/modal';
4
+ import { SignClientTypes } from '@walletconnect/types';
5
+
6
+ declare enum NetworkId {
7
+ MAINNET = "mainnet",
8
+ TESTNET = "testnet",
9
+ BETANET = "betanet",
10
+ LOCALNET = "localnet"
11
+ }
12
+ interface AlgodConfig {
13
+ token: string | algosdk.AlgodTokenHeader | algosdk.CustomTokenHeader | algosdk.BaseHTTPClient;
14
+ baseServer: string;
15
+ port?: string | number;
16
+ headers?: Record<string, string>;
17
+ }
18
+ type NetworkConfigMap = Record<NetworkId, AlgodConfig>;
19
+ type NetworkConfig = Partial<AlgodConfig> | Partial<Record<NetworkId, Partial<AlgodConfig>>>;
20
+
21
+ interface DeflyWalletConnectOptions {
22
+ bridge?: string;
23
+ shouldShowSignTxnToast?: boolean;
24
+ chainId?: 416001 | 416002 | 416003 | 4160;
25
+ }
26
+ declare class DeflyWallet extends BaseWallet {
27
+ private client;
28
+ private options;
29
+ protected store: Store<State>;
30
+ constructor({ id, store, subscribe, getAlgodClient, options, metadata }: WalletConstructor<WalletId.DEFLY>);
31
+ static defaultMetadata: {
32
+ name: string;
33
+ icon: string;
34
+ };
35
+ private initializeClient;
36
+ connect: () => Promise<WalletAccount[]>;
37
+ disconnect: () => Promise<void>;
38
+ resumeSession: () => Promise<void>;
39
+ signTransactions: (txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[], returnGroup?: boolean) => Promise<Uint8Array[]>;
40
+ transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
41
+ }
42
+
43
+ /** @see https://docs.exodus.com/api-reference/algorand-provider-arc-api/ */
44
+ interface EnableNetworkOpts {
45
+ genesisID?: string;
46
+ genesisHash?: string;
47
+ }
48
+ interface EnableAccountsOpts {
49
+ accounts?: string[];
50
+ }
51
+ type ExodusOptions = EnableNetworkOpts & EnableAccountsOpts;
52
+ interface EnableNetworkResult {
53
+ genesisID: string;
54
+ genesisHash: string;
55
+ }
56
+ interface EnableAccountsResult {
57
+ accounts: string[];
58
+ }
59
+ type EnableResult = EnableNetworkResult & EnableAccountsResult;
60
+ type SignTxnsResult = (string | null)[];
61
+ interface Exodus {
62
+ isConnected: boolean;
63
+ address: string | null;
64
+ enable: (options?: ExodusOptions) => Promise<EnableResult>;
65
+ signTxns: (transactions: WalletTransaction[]) => Promise<SignTxnsResult>;
66
+ }
67
+ type WindowExtended = {
68
+ algorand: Exodus;
69
+ } & Window & typeof globalThis;
70
+ declare class ExodusWallet extends BaseWallet {
71
+ private client;
72
+ private options;
73
+ protected store: Store<State>;
74
+ constructor({ id, store, subscribe, getAlgodClient, options, metadata }: WalletConstructor<WalletId.EXODUS>);
75
+ static defaultMetadata: {
76
+ name: string;
77
+ icon: string;
78
+ };
79
+ private initializeClient;
80
+ connect: () => Promise<WalletAccount[]>;
81
+ disconnect: () => Promise<void>;
82
+ resumeSession: () => Promise<void>;
83
+ signTransactions: (txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[], returnGroup?: boolean) => Promise<Uint8Array[]>;
84
+ transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
85
+ }
86
+
87
+ type ProviderMethod = 'enable' | 'getProviders' | 'postTxns' | 'signAndPostTxns' | 'signBytes' | 'signTxns';
88
+ interface SendRequestWithTimeoutOptions<Params> {
89
+ method: ProviderMethod;
90
+ params: Params;
91
+ reference: string;
92
+ timeout?: number;
93
+ }
94
+ declare class KibisisWallet extends BaseWallet {
95
+ methods: ProviderMethod[];
96
+ protected store: Store<State>;
97
+ constructor({ id, store, subscribe, getAlgodClient, metadata }: WalletConstructor<WalletId.KIBISIS>);
98
+ static defaultMetadata: {
99
+ name: string;
100
+ icon: string;
101
+ };
102
+ static sendRequestWithTimeout<Params, Result>({ method, params, timeout, reference }: SendRequestWithTimeoutOptions<Params>): Promise<Result | undefined>;
103
+ /**
104
+ * Calls the enable method on the provider that returns the authorized accounts.
105
+ * @returns {Arc0027Account[]} the authorized accounts.
106
+ * @throws {METHOD_CANCELED_ERROR} if the method was cancelled by the user.
107
+ * @throws {METHOD_NOT_SUPPORTED_ERROR} if the method is not supported for the configured network.
108
+ * @throws {METHOD_TIMED_OUT_ERROR} if the method timed out by lack of response.
109
+ * @throws {NETWORK_NOT_SUPPORTED_ERROR} if the network is not supported for the configured network.
110
+ * @throws {UNKNOWN_ERROR} if the response result was empty.
111
+ */
112
+ private enable;
113
+ /**
114
+ * Gets the genesis hash of the algod client's configured network.
115
+ * @returns {string} the genesis hash
116
+ */
117
+ private getGenesisHash;
118
+ /**
119
+ * Gets the provider information and updates the supported methods. This should be called
120
+ * before interacting with the provider to ensure methods are supported.
121
+ * @throws {METHOD_TIMED_OUT_ERROR} if the method timed out by lack of response.
122
+ * @throws {NETWORK_NOT_SUPPORTED_ERROR} if the network is not supported for the configured network.
123
+ * @throws {UNKNOWN_ERROR} if the response result was empty.
124
+ */
125
+ private getSupportedMethods;
126
+ /**
127
+ * Calls the signTxns methods to sign the supplied transactions.
128
+ * @param {Arc0001SignTxns[]} txns - the unsigned or signed transactions as defined in ARC-0001.
129
+ * @returns {(string | null)[]} the authorized accounts.
130
+ * @throws {INVALID_INPUT_ERROR} if computed group ID for the txns does not match the assigned group ID.
131
+ * @throws {INVALID_GROUP_ID_ERROR} if the unsigned txns is malformed or not conforming to ARC-0001.
132
+ * @throws {METHOD_CANCELED_ERROR} if the method was cancelled by the user.
133
+ * @throws {METHOD_NOT_SUPPORTED_ERROR} if the method is not supported for the configured network.
134
+ * @throws {METHOD_TIMED_OUT_ERROR} if the method timed out by lack of response.
135
+ * @throws {NETWORK_NOT_SUPPORTED_ERROR} if the network is not supported for the configured network.
136
+ * @throws {UNAUTHORIZED_SIGNER_ERROR} if a signer in the request is not authorized by the provider.
137
+ * @throws {UNKNOWN_ERROR} if the response result was empty.
138
+ */
139
+ private signTxns;
140
+ /**
141
+ * Validates whether a method is supported with the provider.
142
+ * @param {ProviderMethod} method - the method to validate.
143
+ * @throws {METHOD_NOT_SUPPORTED_ERROR} if the method is not supported for the configured network.
144
+ */
145
+ private validateMethod;
146
+ connect: () => Promise<WalletAccount[]>;
147
+ disconnect: () => Promise<void>;
148
+ resumeSession: () => Promise<void>;
149
+ signTransactions: (txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[], returnGroup?: boolean) => Promise<Uint8Array[]>;
150
+ transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
151
+ }
152
+
153
+ interface KmdConstructor {
154
+ token: string | algosdk.KMDTokenHeader | algosdk.CustomTokenHeader;
155
+ baseServer?: string;
156
+ port?: string | number;
157
+ headers?: Record<string, string>;
158
+ }
159
+ type KmdOptions = Partial<Pick<KmdConstructor, 'token'>> & Omit<KmdConstructor, 'token'> & {
160
+ wallet?: string;
161
+ };
162
+ declare class KmdWallet extends BaseWallet {
163
+ private client;
164
+ private options;
165
+ private walletName;
166
+ private walletId;
167
+ private password;
168
+ protected store: Store<State>;
169
+ constructor({ id, store, subscribe, getAlgodClient, options, metadata }: WalletConstructor<WalletId.KMD>);
170
+ static defaultMetadata: {
171
+ name: string;
172
+ icon: string;
173
+ };
174
+ private initializeClient;
175
+ connect: () => Promise<WalletAccount[]>;
176
+ disconnect: () => Promise<void>;
177
+ resumeSession: () => Promise<void>;
178
+ signTransactions: (txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[], returnGroup?: boolean) => Promise<Uint8Array[]>;
179
+ transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
180
+ private fetchWalletId;
181
+ private fetchToken;
182
+ private fetchAccounts;
183
+ private releaseToken;
184
+ private getPassword;
185
+ }
186
+
187
+ interface LuteConnectOptions {
188
+ siteName?: string;
189
+ }
190
+ declare class LuteWallet extends BaseWallet {
191
+ private client;
192
+ private options;
193
+ protected store: Store<State>;
194
+ constructor({ id, store, subscribe, getAlgodClient, options, metadata }: WalletConstructor<WalletId.LUTE>);
195
+ static defaultMetadata: {
196
+ name: string;
197
+ icon: string;
198
+ };
199
+ private initializeClient;
200
+ private getGenesisId;
201
+ connect: () => Promise<WalletAccount[]>;
202
+ disconnect: () => Promise<void>;
203
+ resumeSession: () => Promise<void>;
204
+ signTransactions: (txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[], returnGroup?: boolean) => Promise<Uint8Array[]>;
205
+ transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
206
+ }
207
+
208
+ type MnemonicOptions = {
209
+ persistToStorage?: boolean;
210
+ };
211
+ declare class MnemonicWallet extends BaseWallet {
212
+ private account;
213
+ private options;
214
+ protected store: Store<State>;
215
+ constructor({ id, store, subscribe, getAlgodClient, options, metadata }: WalletConstructor<WalletId.MNEMONIC>);
216
+ static defaultMetadata: {
217
+ name: string;
218
+ icon: string;
219
+ };
220
+ private initializeAccount;
221
+ connect: () => Promise<WalletAccount[]>;
222
+ disconnect: () => Promise<void>;
223
+ resumeSession: () => Promise<void>;
224
+ signTransactions: (txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[], returnGroup?: boolean) => Promise<Uint8Array[]>;
225
+ transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
226
+ }
227
+
228
+ interface PeraWalletConnectOptions {
229
+ bridge?: string;
230
+ shouldShowSignTxnToast?: boolean;
231
+ chainId?: 416001 | 416002 | 416003 | 4160;
232
+ compactMode?: boolean;
233
+ }
234
+ declare class PeraWallet extends BaseWallet {
235
+ private client;
236
+ private options;
237
+ protected store: Store<State>;
238
+ constructor({ id, store, subscribe, getAlgodClient, options, metadata }: WalletConstructor<WalletId.PERA>);
239
+ static defaultMetadata: {
240
+ name: string;
241
+ icon: string;
242
+ };
243
+ private initializeClient;
244
+ connect: () => Promise<WalletAccount[]>;
245
+ disconnect: () => Promise<void>;
246
+ resumeSession: () => Promise<void>;
247
+ signTransactions: (txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[], returnGroup?: boolean) => Promise<Uint8Array[]>;
248
+ transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
249
+ }
250
+
251
+ interface SignClientOptions {
252
+ projectId: string;
253
+ relayUrl?: string;
254
+ metadata?: SignClientTypes.Metadata;
255
+ }
256
+ type WalletConnectModalOptions = Pick<WalletConnectModalConfig, 'enableExplorer' | 'explorerRecommendedWalletIds' | 'privacyPolicyUrl' | 'termsOfServiceUrl' | 'themeMode' | 'themeVariables'>;
257
+ type WalletConnectOptions = SignClientOptions & WalletConnectModalOptions;
258
+ declare class WalletConnect extends BaseWallet {
259
+ private client;
260
+ private options;
261
+ private modal;
262
+ private modalOptions;
263
+ private session;
264
+ private chains;
265
+ protected store: Store<State>;
266
+ constructor({ id, store, subscribe, getAlgodClient, options, metadata }: WalletConstructor<WalletId.WALLETCONNECT>);
267
+ static defaultMetadata: {
268
+ name: string;
269
+ icon: string;
270
+ };
271
+ private initializeClient;
272
+ private initializeModal;
273
+ private onSessionConnected;
274
+ connect: () => Promise<WalletAccount[]>;
275
+ disconnect: () => Promise<void>;
276
+ resumeSession: () => Promise<void>;
277
+ signTransactions: (txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[], returnGroup?: boolean) => Promise<Uint8Array[]>;
278
+ transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
279
+ }
280
+
281
+ declare enum WalletId {
282
+ DEFLY = "defly",
283
+ EXODUS = "exodus",
284
+ KIBISIS = "kibisis",
285
+ KMD = "kmd",
286
+ LUTE = "lute",
287
+ MNEMONIC = "mnemonic",
288
+ PERA = "pera",
289
+ WALLETCONNECT = "walletconnect"
290
+ }
291
+ type WalletMap = {
292
+ [WalletId.DEFLY]: typeof DeflyWallet;
293
+ [WalletId.EXODUS]: typeof ExodusWallet;
294
+ [WalletId.KIBISIS]: typeof KibisisWallet;
295
+ [WalletId.KMD]: typeof KmdWallet;
296
+ [WalletId.LUTE]: typeof LuteWallet;
297
+ [WalletId.MNEMONIC]: typeof MnemonicWallet;
298
+ [WalletId.PERA]: typeof PeraWallet;
299
+ [WalletId.WALLETCONNECT]: typeof WalletConnect;
300
+ };
301
+ type WalletOptionsMap = {
302
+ [WalletId.DEFLY]: DeflyWalletConnectOptions;
303
+ [WalletId.EXODUS]: ExodusOptions;
304
+ [WalletId.KIBISIS]: Record<string, never>;
305
+ [WalletId.KMD]: KmdOptions;
306
+ [WalletId.LUTE]: LuteConnectOptions;
307
+ [WalletId.MNEMONIC]: MnemonicOptions;
308
+ [WalletId.PERA]: PeraWalletConnectOptions;
309
+ [WalletId.WALLETCONNECT]: WalletConnectOptions;
310
+ };
311
+ type SupportedWallet = WalletIdConfig<WalletId> | WalletId;
312
+ type WalletConfigMap = {
313
+ [K in keyof WalletOptionsMap]: {
314
+ options?: WalletOptionsMap[K];
315
+ metadata?: Partial<WalletMetadata>;
316
+ };
317
+ };
318
+ type WalletOptions<T extends keyof WalletOptionsMap> = WalletOptionsMap[T];
319
+ type WalletConfig<T extends keyof WalletConfigMap> = WalletConfigMap[T];
320
+ type WalletIdConfig<T extends keyof WalletConfigMap> = {
321
+ [K in T]: {
322
+ id: K;
323
+ } & WalletConfigMap[K];
324
+ }[T];
325
+ type NonEmptyArray<T> = [T, ...T[]];
326
+ type SupportedWallets = NonEmptyArray<SupportedWallet>;
327
+ type WalletMetadata = {
328
+ name: string;
329
+ icon: string;
330
+ };
331
+ interface BaseWalletConstructor {
332
+ id: WalletId;
333
+ metadata: Partial<WalletMetadata> | undefined;
334
+ getAlgodClient: () => algosdk.Algodv2;
335
+ store: Store<State>;
336
+ subscribe: (callback: (state: State) => void) => () => void;
337
+ }
338
+ type WalletConstructor<T extends keyof WalletOptionsMap> = BaseWalletConstructor & {
339
+ options?: WalletOptions<T>;
340
+ defaultMetadata?: WalletMetadata;
341
+ };
342
+ type WalletAccount = {
343
+ name: string;
344
+ address: string;
345
+ };
346
+ /** @see https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0001.md#interface-multisigmetadata */
347
+ interface MultisigMetadata {
348
+ /**
349
+ * Multisig version.
350
+ */
351
+ version: number;
352
+ /**
353
+ * Multisig threshold value. Authorization requires a subset of signatures,
354
+ * equal to or greater than the threshold value.
355
+ */
356
+ threshold: number;
357
+ /**
358
+ * List of Algorand addresses of possible signers for this
359
+ * multisig. Order is important.
360
+ */
361
+ addrs: string[];
362
+ }
363
+ /** @see https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0001.md#interface-wallettransaction */
364
+ interface WalletTransaction {
365
+ /**
366
+ * Base64 encoding of the canonical msgpack encoding of a Transaction.
367
+ */
368
+ txn: string;
369
+ /**
370
+ * Optional authorized address used to sign the transaction when the account
371
+ * is rekeyed. Also called the signor/sgnr.
372
+ */
373
+ authAddr?: string;
374
+ /**
375
+ * Multisig metadata used to sign the transaction
376
+ */
377
+ msig?: MultisigMetadata;
378
+ /**
379
+ * Optional list of addresses that must sign the transactions
380
+ */
381
+ signers?: string[];
382
+ /**
383
+ * Optional base64 encoding of the canonical msgpack encoding of a
384
+ * SignedTxn corresponding to txn, when signers=[]
385
+ */
386
+ stxn?: string;
387
+ /**
388
+ * Optional message explaining the reason of the transaction
389
+ */
390
+ message?: string;
391
+ /**
392
+ * Optional message explaining the reason of this group of transaction
393
+ * Field only allowed in the first transaction of a group
394
+ */
395
+ groupMessage?: string;
396
+ }
397
+ /** @see https://github.com/perawallet/connect/blob/1.3.3/src/util/model/peraWalletModels.ts */
398
+ interface SignerTransaction {
399
+ txn: algosdk.Transaction;
400
+ /**
401
+ * Optional authorized address used to sign the transaction when
402
+ * the account is rekeyed. Also called the signor/sgnr.
403
+ */
404
+ authAddr?: string;
405
+ /**
406
+ * Optional list of addresses that must sign the transactions.
407
+ * Wallet skips to sign this txn if signers is empty array.
408
+ * If undefined, wallet tries to sign it.
409
+ */
410
+ signers?: string[];
411
+ /**
412
+ * Optional message explaining the reason of the transaction
413
+ */
414
+ message?: string;
415
+ }
416
+ interface JsonRpcRequest<T = any> {
417
+ id: number;
418
+ jsonrpc: string;
419
+ method: string;
420
+ params: T;
421
+ }
422
+
423
+ declare abstract class BaseWallet {
424
+ readonly id: WalletId;
425
+ readonly metadata: WalletMetadata;
426
+ protected store: Store<State>;
427
+ protected getAlgodClient: () => algosdk.Algodv2;
428
+ subscribe: (callback: (state: State) => void) => () => void;
429
+ protected constructor({ id, metadata, store, subscribe, getAlgodClient }: WalletConstructor<WalletId>);
430
+ static defaultMetadata: WalletMetadata;
431
+ abstract connect(): Promise<WalletAccount[]>;
432
+ abstract disconnect(): Promise<void>;
433
+ abstract resumeSession(): Promise<void>;
434
+ setActive: () => void;
435
+ setActiveAccount: (account: string) => void;
436
+ abstract signTransactions(txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[], returnGroup?: boolean): Promise<Uint8Array[]>;
437
+ abstract transactionSigner(txnGroup: algosdk.Transaction[], indexesToSign: number[]): Promise<Uint8Array[]>;
438
+ get name(): string;
439
+ get accounts(): WalletAccount[];
440
+ get addresses(): string[];
441
+ get activeAccount(): WalletAccount | null;
442
+ get activeAddress(): string | null;
443
+ get activeNetwork(): NetworkId;
444
+ get isConnected(): boolean;
445
+ get isActive(): boolean;
446
+ protected onDisconnect(): void;
447
+ }
448
+
449
+ type WalletState = {
450
+ accounts: WalletAccount[];
451
+ activeAccount: WalletAccount | null;
452
+ };
453
+ type WalletStateMap = Partial<Record<WalletId, WalletState>>;
454
+ interface State {
455
+ wallets: WalletStateMap;
456
+ activeWallet: WalletId | null;
457
+ activeNetwork: NetworkId;
458
+ }
459
+ declare const defaultState: State;
460
+
461
+ interface WalletManagerConfig {
462
+ wallets?: SupportedWallet[];
463
+ network?: NetworkId;
464
+ algod?: NetworkConfig;
465
+ }
466
+ declare class WalletManager {
467
+ _clients: Map<WalletId, BaseWallet>;
468
+ networkConfig: NetworkConfigMap;
469
+ algodClient: algosdk.Algodv2;
470
+ store: Store<State>;
471
+ subscribe: (callback: (state: State) => void) => () => void;
472
+ constructor({ wallets, network, algod }?: WalletManagerConfig);
473
+ private loadPersistedState;
474
+ private savePersistedState;
475
+ private initializeWallets;
476
+ get wallets(): BaseWallet[];
477
+ getWallet(walletId: WalletId): BaseWallet | undefined;
478
+ resumeSessions(): Promise<void>;
479
+ private initNetworkConfig;
480
+ private createAlgodClient;
481
+ getAlgodClient: () => algosdk.Algodv2;
482
+ setActiveNetwork(networkId: NetworkId): void;
483
+ get activeNetwork(): NetworkId;
484
+ get activeWallet(): BaseWallet | null;
485
+ get activeWalletAccounts(): WalletAccount[] | null;
486
+ get activeWalletAddresses(): string[] | null;
487
+ get activeAccount(): WalletAccount | null;
488
+ get activeAddress(): string | null;
489
+ get signTransactions(): (txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[] | undefined, returnGroup?: boolean | undefined) => Promise<Uint8Array[]>;
490
+ /**
491
+ * A function which can sign transactions from an atomic transaction group. The logic will be
492
+ * specific to each wallet, but the function will always return a promise that resolves to an
493
+ * array of encoded signed transactions matching the length of the indexesToSign array.
494
+ *
495
+ * @see https://github.com/algorand/js-algorand-sdk/blob/v2.6.0/src/signer.ts#L7-L18
496
+ *
497
+ * @param txnGroup - The atomic group containing transactions to be signed
498
+ * @param indexesToSign - An array of indexes in the atomic transaction group that should be signed
499
+ * @returns A promise which resolves an array of encoded signed transactions. The length of the
500
+ * array will be the same as the length of indexesToSign, and each index i in the array
501
+ * corresponds to the signed transaction from txnGroup[indexesToSign[i]]
502
+ */
503
+ get transactionSigner(): algosdk.TransactionSigner;
504
+ }
505
+
506
+ declare class StorageAdapter {
507
+ static getItem(key: string): string | null;
508
+ static setItem(key: string, value: string): void;
509
+ }
510
+
511
+ export { BaseWallet, type BaseWalletConstructor, DeflyWallet, type DeflyWalletConnectOptions, type EnableResult, type Exodus, type ExodusOptions, ExodusWallet, type JsonRpcRequest, type KmdOptions, KmdWallet, type MnemonicOptions, MnemonicWallet, type MultisigMetadata, NetworkId, PeraWallet, type PeraWalletConnectOptions, type SignTxnsResult, type SignerTransaction, type State, StorageAdapter, type SupportedWallet, type SupportedWallets, type WalletAccount, type WalletConfig, type WalletConfigMap, WalletConnect, type WalletConnectOptions, type WalletConstructor, WalletId, type WalletIdConfig, WalletManager, type WalletManagerConfig, type WalletMap, type WalletMetadata, type WalletOptions, type WalletOptionsMap, type WalletState, type WalletTransaction, type WindowExtended, defaultState };