@talken/talkenkit 2.3.7 → 2.3.9

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 (219) hide show
  1. package/dist/Arc-ILTINY4C.js +8 -0
  2. package/dist/Brave-4L5B7JJR.js +8 -0
  3. package/dist/Browser-XMB4J5WD.js +8 -0
  4. package/dist/Chrome-6ZDQIHC5.js +8 -0
  5. package/dist/Edge-OAWCEU7H.js +8 -0
  6. package/dist/Firefox-O66FZK3V.js +8 -0
  7. package/dist/Linux-NUJF4EPC.js +8 -0
  8. package/dist/Macos-46EJ2NPK.js +8 -0
  9. package/dist/Opera-KTUB3UWN.js +8 -0
  10. package/dist/Safari-A3Q6PIT2.js +8 -0
  11. package/dist/Windows-NL32NG52.js +8 -0
  12. package/dist/abcWallet-ES4OPRSK.js +8 -0
  13. package/dist/ar_AR-YBBYUEGS.js +8 -0
  14. package/dist/arbitrum-D2TUFPZI.js +8 -0
  15. package/dist/argentWallet-A5HM5FRP.js +8 -0
  16. package/dist/assets-4NDWRKXE.js +8 -0
  17. package/dist/avalanche-BOOSH35S.js +8 -0
  18. package/dist/base-3JMRS35B.js +8 -0
  19. package/dist/berasigWallet-6IOU73YL.js +8 -0
  20. package/dist/bestWallet-6LJUU6OL.js +8 -0
  21. package/dist/bifrostWallet-SLPPXZ2K.js +8 -0
  22. package/dist/binanceWallet-Z67J7362.js +8 -0
  23. package/dist/bitgetWallet-DLLOWMCI.js +8 -0
  24. package/dist/bitskiWallet-CPOXGABT.js +8 -0
  25. package/dist/bitverseWallet-SAK4MIS6.js +8 -0
  26. package/dist/blast-4GF24NR7.js +8 -0
  27. package/dist/bloomWallet-YIRCNQZJ.js +8 -0
  28. package/dist/braveWallet-PNBKQKJC.js +8 -0
  29. package/dist/bsc-KU6MBOYR.js +8 -0
  30. package/dist/bybitWallet-GCDBAJKO.js +8 -0
  31. package/dist/celo-5A5VXMPX.js +8 -0
  32. package/dist/chunk-M2CMB5B2.js +93 -0
  33. package/dist/chunk-TJX4M23U.js +27 -0
  34. package/dist/clvWallet-R6YRCMZO.js +8 -0
  35. package/dist/coin98Wallet-4Y3ROAGP.js +8 -0
  36. package/dist/coinbaseWallet-L4QDZB5W.js +8 -0
  37. package/dist/compassWallet-NNBX35AV.js +8 -0
  38. package/dist/components/AbcLoginModal/AbcAuthModal.d.ts +11 -1
  39. package/dist/components/ConnectButton/ConnectButtonRenderer.d.ts +1 -1
  40. package/dist/components/ConnectOptions/CompactMobileOptions.css.d.ts +26 -0
  41. package/dist/components/ConnectOptions/CompactMobileOptions.d.ts +19 -0
  42. package/dist/components/ConnectOptions/DesktopOptions.d.ts +9 -2
  43. package/dist/components/RainbowKitProvider/RainbowKitConfigProvider.d.ts +20 -0
  44. package/dist/components/RainbowKitProvider/RainbowKitProvider.d.ts +17 -2
  45. package/dist/config/networks.d.ts +125 -0
  46. package/dist/connect-Q2RLUT5B.js +8 -0
  47. package/dist/contexts/index.d.ts +2 -2
  48. package/dist/coreWallet-PN2LMNGN.js +8 -0
  49. package/dist/create-HQ4QXTKY.js +8 -0
  50. package/dist/cronos-KZAB32FC.js +8 -0
  51. package/dist/dawnWallet-AMO43DL3.js +8 -0
  52. package/dist/de_DE-RUWMVYCQ.js +8 -0
  53. package/dist/desigWallet-AD335WX5.js +8 -0
  54. package/dist/en_US-NQ25CUR4.js +8 -0
  55. package/dist/encryption-3YHRI3PA.js +14 -0
  56. package/dist/enkryptWallet-OOP27GE2.js +8 -0
  57. package/dist/es_419-HKJPYJRI.js +8 -0
  58. package/dist/ethereum-WAFT6DML.js +8 -0
  59. package/dist/flow-XANNOAPJ.js +8 -0
  60. package/dist/foxWallet-UDUWOW52.js +8 -0
  61. package/dist/fr_FR-2O5ZDLPQ.js +1356 -0
  62. package/dist/frameWallet-BEABTFIT.js +8 -0
  63. package/dist/frontierWallet-RG47M3C5.js +8 -0
  64. package/dist/gateWallet-XOP74BMB.js +8 -0
  65. package/dist/gnosis-7GFI4V27.js +8 -0
  66. package/dist/hardhat-6HKZWC4T.js +8 -0
  67. package/dist/hi_IN-XRZ4YIUW.js +8 -0
  68. package/dist/hooks/useDeviceType.d.ts +9 -0
  69. package/dist/id_ID-REEY4CSS.js +8 -0
  70. package/dist/imTokenWallet-LTPKXYUD.js +8 -0
  71. package/dist/index.d.ts +9 -1
  72. package/dist/index.js +1960 -1040
  73. package/dist/injectedWallet-YCFZTULL.js +8 -0
  74. package/dist/iopayWallet-XS37QAUO.js +8 -0
  75. package/dist/ja_JP-2OPCVN6X.js +8 -0
  76. package/dist/kaia-DQ3OSYXE.js +8 -0
  77. package/dist/kaiaWallet-2XZDQZ63.js +8 -0
  78. package/dist/kaikasWallet-V2GCFPEB.js +8 -0
  79. package/dist/ko_KR-DDXBZTYT.js +8 -0
  80. package/dist/krakenWallet-3VM7ZM2O.js +8 -0
  81. package/dist/kresusWallet-4MXFQP4P.js +8 -0
  82. package/dist/ledgerWallet-YC3HF3NJ.js +8 -0
  83. package/dist/login-DGIK764Z.js +8 -0
  84. package/dist/magicEden-BLYGUG47.js +8 -0
  85. package/dist/manta-OEF3QP66.js +8 -0
  86. package/dist/mantle-EYIH4GGM.js +8 -0
  87. package/dist/metaMaskWallet-ZZMFVM52.js +8 -0
  88. package/dist/mewWallet-D6JN37EZ.js +8 -0
  89. package/dist/ms_MY-PX7G4XTD.js +8 -0
  90. package/dist/nestWallet-X3CDHKNV.js +8 -0
  91. package/dist/oktoWallet-ZYLL2RLN.js +8 -0
  92. package/dist/okxWallet-FLICEG4S.js +8 -0
  93. package/dist/omniWallet-DAQHKHUN.js +8 -0
  94. package/dist/oneInchWallet-BRGGUXND.js +8 -0
  95. package/dist/oneKeyWallet-KDU2JIFD.js +8 -0
  96. package/dist/optimism-6GXRYJDW.js +8 -0
  97. package/dist/paraSwapWallet-7UHWT54G.js +8 -0
  98. package/dist/phantomWallet-BSCGZT6L.js +8 -0
  99. package/dist/polygon-YNJM552P.js +8 -0
  100. package/dist/pt_BR-A5R4SBSC.js +8 -0
  101. package/dist/rabbyWallet-RZIUL3YN.js +8 -0
  102. package/dist/rainbowWallet-4ALDT5ZL.js +8 -0
  103. package/dist/ramperWallet-IB3JRE2F.js +8 -0
  104. package/dist/refresh-R5NYTT3S.js +8 -0
  105. package/dist/ronin-LU7LZPWA.js +8 -0
  106. package/dist/roninWallet-BS7VDK7U.js +8 -0
  107. package/dist/ru_RU-4QDZLRSW.js +1356 -0
  108. package/dist/safeWallet-5NR62MJV.js +8 -0
  109. package/dist/safeheronWallet-7ELUSU44.js +8 -0
  110. package/dist/safepalWallet-CZJABQ5N.js +8 -0
  111. package/dist/scan-BVZ7DVJ4.js +8 -0
  112. package/dist/scroll-XRP46UTI.js +8 -0
  113. package/dist/secure-GEK7TTJY.js +8 -0
  114. package/dist/seifWallet-XLBMTX4R.js +8 -0
  115. package/dist/sign-PREOQ4RR.js +8 -0
  116. package/dist/solana/SolanaWalletProvider.d.ts +1 -1
  117. package/dist/subWallet-47USA4OE.js +8 -0
  118. package/dist/tahoWallet-N3XXJ3NW.js +8 -0
  119. package/dist/talismanWallet-SV3B42TQ.js +8 -0
  120. package/dist/th_TH-4TWPYDKX.js +1356 -0
  121. package/dist/themes/baseTheme.js +1 -0
  122. package/dist/themes/darkTheme.js +1 -0
  123. package/dist/themes/lightTheme.js +1 -0
  124. package/dist/themes/midnightTheme.js +1 -0
  125. package/dist/tokenPocketWallet-7IYW3MIL.js +8 -0
  126. package/dist/tokenaryWallet-7D2LN65X.js +8 -0
  127. package/dist/tr_TR-C37KIU7M.js +1356 -0
  128. package/dist/trustWallet-HJQBMBC6.js +8 -0
  129. package/dist/uk_UA-I77HS4GO.js +1356 -0
  130. package/dist/uniswapWallet-JZ2ULELN.js +8 -0
  131. package/dist/utils/abcWaasAdapter.d.ts +75 -0
  132. package/dist/valoraWallet-PCTL6UBB.js +8 -0
  133. package/dist/vi_VN-KVPDLW26.js +8 -0
  134. package/dist/walletConnectWallet-AJ36XVBT.js +8 -0
  135. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.d.ts +11 -8
  136. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +1 -1
  137. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.d.ts +4 -11
  138. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +1 -1
  139. package/dist/wallets/walletConnectors/abcWallet/api/BitcoinApi.d.ts +1 -19
  140. package/dist/wallets/walletConnectors/abcWallet/api/BitcoinApi.js +1 -1
  141. package/dist/wallets/walletConnectors/abcWallet/api/index.js +5 -5
  142. package/dist/wallets/walletConnectors/abcWallet/index.js +5 -5
  143. package/dist/wallets/walletConnectors/abcWallet/types.d.ts +2 -0
  144. package/dist/wallets/walletConnectors/chunk-2GIBC7XF.js +39 -0
  145. package/dist/wallets/walletConnectors/chunk-2J66VMY5.js +152 -0
  146. package/dist/wallets/walletConnectors/chunk-34WMJDUY.js +481 -0
  147. package/dist/wallets/walletConnectors/chunk-3J3XZMJ7.js +39 -0
  148. package/dist/wallets/walletConnectors/chunk-3WVSOTC4.js +63 -0
  149. package/dist/wallets/walletConnectors/chunk-43LOEA55.js +63 -0
  150. package/dist/wallets/walletConnectors/chunk-4IRVZPIN.js +63 -0
  151. package/dist/wallets/walletConnectors/chunk-4NLOE5S3.js +63 -0
  152. package/dist/wallets/walletConnectors/chunk-5MSMALF7.js +63 -0
  153. package/dist/wallets/walletConnectors/chunk-5OFAP55G.js +44 -0
  154. package/dist/wallets/walletConnectors/chunk-6KOHIL7T.js +63 -0
  155. package/dist/wallets/walletConnectors/chunk-6YPK343Z.js +63 -0
  156. package/dist/wallets/walletConnectors/chunk-7FFIZE76.js +63 -0
  157. package/dist/wallets/walletConnectors/chunk-7P5HZGEV.js +627 -0
  158. package/dist/wallets/walletConnectors/chunk-A6LBRVGP.js +63 -0
  159. package/dist/wallets/walletConnectors/chunk-BKXPGZMQ.js +228 -0
  160. package/dist/wallets/walletConnectors/chunk-CNHVIXPV.js +228 -0
  161. package/dist/wallets/walletConnectors/chunk-DAZZIITX.js +1678 -0
  162. package/dist/wallets/walletConnectors/chunk-ESRU5KCF.js +151 -0
  163. package/dist/wallets/walletConnectors/chunk-F4JFONDA.js +601 -0
  164. package/dist/wallets/walletConnectors/chunk-GXHCAEWR.js +63 -0
  165. package/dist/wallets/walletConnectors/chunk-HDYBRMYW.js +194 -0
  166. package/dist/wallets/walletConnectors/chunk-HOE4UOHR.js +514 -0
  167. package/dist/wallets/walletConnectors/chunk-HS2FAOAJ.js +63 -0
  168. package/dist/wallets/walletConnectors/chunk-IA4EQFSS.js +474 -0
  169. package/dist/wallets/walletConnectors/chunk-IHM7I7D5.js +63 -0
  170. package/dist/wallets/walletConnectors/chunk-JJAJOFZI.js +63 -0
  171. package/dist/wallets/walletConnectors/chunk-KFIUFVQH.js +624 -0
  172. package/dist/wallets/walletConnectors/chunk-KFROJI25.js +535 -0
  173. package/dist/wallets/walletConnectors/chunk-KHVILXGK.js +514 -0
  174. package/dist/wallets/walletConnectors/chunk-LGT7LQAJ.js +63 -0
  175. package/dist/wallets/walletConnectors/chunk-LHBQ2Z3Q.js +63 -0
  176. package/dist/wallets/walletConnectors/chunk-M76GLEFL.js +63 -0
  177. package/dist/wallets/walletConnectors/chunk-MFIE6UCG.js +63 -0
  178. package/dist/wallets/walletConnectors/chunk-NA5G3LSC.js +63 -0
  179. package/dist/wallets/walletConnectors/chunk-NASGGIUS.js +63 -0
  180. package/dist/wallets/walletConnectors/chunk-NKJLO4QH.js +39 -0
  181. package/dist/wallets/walletConnectors/chunk-NURTFXQU.js +568 -0
  182. package/dist/wallets/walletConnectors/chunk-NVM3JZ4L.js +63 -0
  183. package/dist/wallets/walletConnectors/chunk-NWDLOM7Q.js +646 -0
  184. package/dist/wallets/walletConnectors/chunk-OHRTTVNJ.js +44 -0
  185. package/dist/wallets/walletConnectors/chunk-OMYDLPUM.js +63 -0
  186. package/dist/wallets/walletConnectors/chunk-P2MTINFI.js +280 -0
  187. package/dist/wallets/walletConnectors/chunk-PLL7P7HY.js +63 -0
  188. package/dist/wallets/walletConnectors/chunk-PUFQKZA7.js +63 -0
  189. package/dist/wallets/walletConnectors/chunk-RLBGBBIO.js +309 -0
  190. package/dist/wallets/walletConnectors/chunk-RUZBOPMI.js +63 -0
  191. package/dist/wallets/walletConnectors/chunk-S2B56ZVJ.js +481 -0
  192. package/dist/wallets/walletConnectors/chunk-SFP47DS6.js +63 -0
  193. package/dist/wallets/walletConnectors/chunk-SNZL5LJ6.js +637 -0
  194. package/dist/wallets/walletConnectors/chunk-SPR4W5TG.js +474 -0
  195. package/dist/wallets/walletConnectors/chunk-SSDCG5BG.js +63 -0
  196. package/dist/wallets/walletConnectors/chunk-SUXK3JW6.js +280 -0
  197. package/dist/wallets/walletConnectors/chunk-TUUNSVKZ.js +345 -0
  198. package/dist/wallets/walletConnectors/chunk-U2CUEL35.js +240 -0
  199. package/dist/wallets/walletConnectors/chunk-VLEVJVJR.js +63 -0
  200. package/dist/wallets/walletConnectors/chunk-W2VDZD74.js +478 -0
  201. package/dist/wallets/walletConnectors/chunk-WAO3KL5U.js +285 -0
  202. package/dist/wallets/walletConnectors/chunk-WYSKBMHW.js +280 -0
  203. package/dist/wallets/walletConnectors/chunk-XDRZSWHB.js +63 -0
  204. package/dist/wallets/walletConnectors/chunk-XKVRDEDK.js +63 -0
  205. package/dist/wallets/walletConnectors/chunk-XYAAXWWU.js +63 -0
  206. package/dist/wallets/walletConnectors/chunk-XYPR4BAF.js +436 -0
  207. package/dist/wallets/walletConnectors/index.js +68 -68
  208. package/dist/wigwamWallet-D3MVGB5Z.js +8 -0
  209. package/dist/xdc-5NQHQJE5.js +8 -0
  210. package/dist/xdefiWallet-B4O6HAIP.js +8 -0
  211. package/dist/zealWallet-6SPNICRX.js +8 -0
  212. package/dist/zerionWallet-XZ3JCAOO.js +8 -0
  213. package/dist/zetachain-U6IILKZJ.js +8 -0
  214. package/dist/zh_CN-KGLAIP3N.js +8 -0
  215. package/dist/zh_HK-AEXEN6P6.js +8 -0
  216. package/dist/zh_TW-6C7R5V3K.js +8 -0
  217. package/dist/zkSync-TMPB52ZN.js +8 -0
  218. package/dist/zora-S46CHEOU.js +8 -0
  219. package/package.json +1 -1
@@ -0,0 +1,568 @@
1
+ "use client";
2
+
3
+ // src/wallets/walletConnectors/abcWallet/abcBitcoinProvider.ts
4
+ var EventEmitter = class {
5
+ constructor() {
6
+ this.events = /* @__PURE__ */ new Map();
7
+ }
8
+ on(event, listener) {
9
+ if (!this.events.has(event)) {
10
+ this.events.set(event, []);
11
+ }
12
+ this.events.get(event).push(listener);
13
+ return this;
14
+ }
15
+ off(event, listener) {
16
+ const listeners = this.events.get(event);
17
+ if (listeners) {
18
+ const index = listeners.indexOf(listener);
19
+ if (index !== -1) {
20
+ listeners.splice(index, 1);
21
+ }
22
+ }
23
+ return this;
24
+ }
25
+ removeListener(event, listener) {
26
+ return this.off(event, listener);
27
+ }
28
+ emit(event, ...args) {
29
+ const listeners = this.events.get(event);
30
+ if (listeners) {
31
+ for (const listener of listeners) {
32
+ listener(...args);
33
+ }
34
+ return true;
35
+ }
36
+ return false;
37
+ }
38
+ removeAllListeners(event) {
39
+ if (event) {
40
+ this.events.delete(event);
41
+ } else {
42
+ this.events.clear();
43
+ }
44
+ return this;
45
+ }
46
+ };
47
+ var BitcoinErrorCode = {
48
+ USER_REJECTED: 4001,
49
+ UNAUTHORIZED: 4100,
50
+ UNSUPPORTED_METHOD: 4200,
51
+ DISCONNECTED: 4900,
52
+ INVALID_PARAMS: -32602,
53
+ INTERNAL_ERROR: -32603,
54
+ INSUFFICIENT_FUNDS: 5001,
55
+ UTXO_NOT_FOUND: 5002
56
+ };
57
+ var BitcoinProviderError = class extends Error {
58
+ constructor(code, message, data) {
59
+ super(message);
60
+ this.code = code;
61
+ this.data = data;
62
+ this.name = "BitcoinProviderError";
63
+ }
64
+ };
65
+ var BITCOIN_NETWORKS = {
66
+ mainnet: {
67
+ name: "Bitcoin Mainnet",
68
+ type: "bitcoin",
69
+ explorer: "https://blockstream.info"
70
+ },
71
+ testnet: {
72
+ name: "Bitcoin Testnet",
73
+ type: "bitcoin_testnet",
74
+ explorer: "https://blockstream.info/testnet"
75
+ }
76
+ };
77
+ var AbcBitcoinProvider = class extends EventEmitter {
78
+ // 1 minute
79
+ constructor(client) {
80
+ super();
81
+ this.wallet = null;
82
+ this.network = BITCOIN_NETWORKS.testnet;
83
+ this.connected = false;
84
+ this.utxoCache = /* @__PURE__ */ new Map();
85
+ this.cacheExpiry = /* @__PURE__ */ new Map();
86
+ this.CACHE_TTL = 6e4;
87
+ this.client = client;
88
+ }
89
+ /**
90
+ * Set wallet information
91
+ */
92
+ setWallet(wallet) {
93
+ const previousAddress = this.wallet?.address;
94
+ this.wallet = wallet;
95
+ this.connected = true;
96
+ if (wallet.network === "bitcoin") {
97
+ this.network = BITCOIN_NETWORKS.mainnet;
98
+ } else {
99
+ this.network = BITCOIN_NETWORKS.testnet;
100
+ }
101
+ if (previousAddress !== wallet.address) {
102
+ this.emit("accountsChanged", [wallet.address]);
103
+ this.clearUtxoCache();
104
+ }
105
+ this.emit("connect", {
106
+ address: wallet.address,
107
+ network: this.network.type
108
+ });
109
+ console.log("[BitcoinProvider] \u2705 Wallet connected:", wallet.address);
110
+ }
111
+ /**
112
+ * Clear wallet (disconnect)
113
+ */
114
+ clearWallet() {
115
+ this.wallet = null;
116
+ this.connected = false;
117
+ this.clearUtxoCache();
118
+ this.emit("disconnect");
119
+ this.emit("accountsChanged", []);
120
+ console.log("[BitcoinProvider] \u{1F50C} Wallet disconnected");
121
+ }
122
+ /**
123
+ * Set PIN request callback for transaction signing
124
+ */
125
+ setRequestPinCallback(callback) {
126
+ this.requestPinCallback = callback;
127
+ }
128
+ /**
129
+ * Request PIN from user
130
+ * First tries global callback, then falls back to manual callback
131
+ */
132
+ async requestPin() {
133
+ const globalRequestPin = window.__TALKENKIT_REQUEST_PIN__;
134
+ if (globalRequestPin && typeof globalRequestPin === "function") {
135
+ return globalRequestPin("transaction");
136
+ }
137
+ if (!this.requestPinCallback) {
138
+ throw new BitcoinProviderError(
139
+ BitcoinErrorCode.INTERNAL_ERROR,
140
+ "PIN request callback not configured. Make sure RainbowKitProvider is rendered."
141
+ );
142
+ }
143
+ return this.requestPinCallback();
144
+ }
145
+ /**
146
+ * Set network
147
+ */
148
+ setNetwork(networkKey) {
149
+ const newNetwork = BITCOIN_NETWORKS[networkKey];
150
+ if (!newNetwork) {
151
+ throw new BitcoinProviderError(
152
+ BitcoinErrorCode.INVALID_PARAMS,
153
+ `Unknown network: ${networkKey}`
154
+ );
155
+ }
156
+ const previousType = this.network.type;
157
+ this.network = newNetwork;
158
+ if (previousType !== newNetwork.type) {
159
+ this.emit("networkChanged", newNetwork.type);
160
+ this.clearUtxoCache();
161
+ }
162
+ }
163
+ /**
164
+ * Get current network
165
+ */
166
+ getNetwork() {
167
+ return this.network;
168
+ }
169
+ /**
170
+ * Check if connected
171
+ */
172
+ isConnected() {
173
+ return this.connected && this.wallet !== null;
174
+ }
175
+ /**
176
+ * Get Bitcoin address
177
+ */
178
+ async getAddress() {
179
+ if (!this.wallet) {
180
+ throw new BitcoinProviderError(
181
+ BitcoinErrorCode.DISCONNECTED,
182
+ "Wallet not connected"
183
+ );
184
+ }
185
+ return this.wallet.address;
186
+ }
187
+ /**
188
+ * Get compressed public key (33 bytes)
189
+ */
190
+ async getPublicKey() {
191
+ if (!this.wallet) {
192
+ throw new BitcoinProviderError(
193
+ BitcoinErrorCode.DISCONNECTED,
194
+ "Wallet not connected"
195
+ );
196
+ }
197
+ return this.wallet.publicKey;
198
+ }
199
+ /**
200
+ * Get address type (bech32, p2pkh, etc.)
201
+ */
202
+ getAddressType() {
203
+ if (!this.wallet) {
204
+ throw new BitcoinProviderError(
205
+ BitcoinErrorCode.DISCONNECTED,
206
+ "Wallet not connected"
207
+ );
208
+ }
209
+ return this.wallet.addressType;
210
+ }
211
+ /**
212
+ * Clear UTXO cache
213
+ */
214
+ clearUtxoCache() {
215
+ this.utxoCache.clear();
216
+ this.cacheExpiry.clear();
217
+ }
218
+ /**
219
+ * Check if cache is valid
220
+ */
221
+ isCacheValid(address) {
222
+ const expiry = this.cacheExpiry.get(address);
223
+ if (!expiry)
224
+ return false;
225
+ return Date.now() < expiry;
226
+ }
227
+ /**
228
+ * Get UTXOs for address (with caching)
229
+ */
230
+ async getUtxos(forceRefresh = false) {
231
+ if (!this.wallet) {
232
+ throw new BitcoinProviderError(
233
+ BitcoinErrorCode.DISCONNECTED,
234
+ "Wallet not connected"
235
+ );
236
+ }
237
+ const address = this.wallet.address;
238
+ if (!forceRefresh && this.isCacheValid(address)) {
239
+ const cached = this.utxoCache.get(address);
240
+ if (cached) {
241
+ console.log(
242
+ `[BitcoinProvider] \u{1F4E6} Using cached UTXOs (${cached.length} items)`
243
+ );
244
+ return cached;
245
+ }
246
+ }
247
+ try {
248
+ console.log("[BitcoinProvider] \u{1F50D} Fetching UTXOs from network...");
249
+ const utxos = await this.client.bitcoin.getUtxos(
250
+ address,
251
+ this.network.type
252
+ );
253
+ this.utxoCache.set(address, utxos);
254
+ this.cacheExpiry.set(address, Date.now() + this.CACHE_TTL);
255
+ console.log(`[BitcoinProvider] \u2705 Fetched ${utxos.length} UTXOs`);
256
+ return utxos;
257
+ } catch (error) {
258
+ console.error(
259
+ "[BitcoinProvider] \u274C Failed to fetch UTXOs:",
260
+ error.message
261
+ );
262
+ throw new BitcoinProviderError(
263
+ BitcoinErrorCode.INTERNAL_ERROR,
264
+ "Failed to fetch UTXOs",
265
+ error
266
+ );
267
+ }
268
+ }
269
+ /**
270
+ * Get total balance (sum of all UTXOs)
271
+ * Returns balance in satoshis
272
+ */
273
+ async getBalance(forceRefresh = false) {
274
+ const utxos = await this.getUtxos(forceRefresh);
275
+ const balance = utxos.reduce((sum, utxo) => sum + utxo.value, 0);
276
+ console.log(
277
+ `[BitcoinProvider] \u{1F4B0} Balance: ${balance} satoshis (${balance / 1e8} BTC)`
278
+ );
279
+ return balance;
280
+ }
281
+ /**
282
+ * Estimate transaction fee
283
+ * Returns fee rate in satoshis per byte
284
+ */
285
+ async estimateFee(targetBlocks = 6) {
286
+ try {
287
+ const feeRate = await this.client.bitcoin.estimateFee(
288
+ this.network.type,
289
+ targetBlocks
290
+ );
291
+ console.log(`[BitcoinProvider] \u26FD Fee rate: ${feeRate} sat/byte`);
292
+ return feeRate;
293
+ } catch (_error) {
294
+ console.error("[BitcoinProvider] \u26A0\uFE0F Fee estimation failed, using default");
295
+ return 1;
296
+ }
297
+ }
298
+ /**
299
+ * Sign Bitcoin transaction (PSBT)
300
+ * Requires PIN input from user
301
+ *
302
+ * @param psbt - PSBT in base64 format
303
+ * @returns Signed PSBT in base64 format
304
+ */
305
+ async signTransaction(psbt) {
306
+ if (!this.wallet) {
307
+ throw new BitcoinProviderError(
308
+ BitcoinErrorCode.DISCONNECTED,
309
+ "Wallet not connected"
310
+ );
311
+ }
312
+ try {
313
+ console.log("[BitcoinProvider] \u{1F510} Signing transaction (PSBT)...");
314
+ const pin = await this.requestPin();
315
+ const result = await this.client.bitcoin.signBitcoinTransaction({
316
+ uid: this.wallet.uid,
317
+ shareId: this.wallet.shareId,
318
+ publicKey: this.wallet.publicKey,
319
+ psbt,
320
+ pin,
321
+ network: this.network.type
322
+ });
323
+ console.log(
324
+ `[BitcoinProvider] \u2705 Transaction signed (${result.signatures.length} inputs)`
325
+ );
326
+ this.emit("transactionSigned", {
327
+ psbt: result.signedPsbt,
328
+ signatures: result.signatures
329
+ });
330
+ this.clearUtxoCache();
331
+ return result.signedPsbt;
332
+ } catch (error) {
333
+ console.error(
334
+ "[BitcoinProvider] \u274C Transaction signing failed:",
335
+ error.message
336
+ );
337
+ if (error.message?.includes("cancelled") || error.message?.includes("rejected")) {
338
+ throw new BitcoinProviderError(
339
+ BitcoinErrorCode.USER_REJECTED,
340
+ "User rejected transaction",
341
+ error
342
+ );
343
+ }
344
+ this.emit("error", error);
345
+ throw new BitcoinProviderError(
346
+ BitcoinErrorCode.INTERNAL_ERROR,
347
+ "Failed to sign transaction",
348
+ error
349
+ );
350
+ }
351
+ }
352
+ /**
353
+ * Sign Bitcoin message (BIP-322)
354
+ * Does NOT require PIN (uses encryptedShare)
355
+ *
356
+ * @param message - Message to sign (string)
357
+ * @returns Signature in base64 format
358
+ */
359
+ async signMessage(message) {
360
+ if (!this.wallet) {
361
+ throw new BitcoinProviderError(
362
+ BitcoinErrorCode.DISCONNECTED,
363
+ "Wallet not connected"
364
+ );
365
+ }
366
+ try {
367
+ console.log("[BitcoinProvider] \u{1F510} Signing message (BIP-322)...");
368
+ const messageHex = Buffer.from(message, "utf8").toString("hex");
369
+ const result = await this.client.bitcoin.signBitcoinMessage({
370
+ uid: this.wallet.uid,
371
+ shareId: this.wallet.shareId,
372
+ keyId: this.wallet.keyId,
373
+ publicKey: this.wallet.publicKey,
374
+ message: messageHex,
375
+ pin: "",
376
+ // Message signing doesn't require PIN
377
+ network: this.network.type,
378
+ messageType: "bip322"
379
+ });
380
+ console.log("[BitcoinProvider] \u2705 Message signed");
381
+ this.emit("messageSigned", {
382
+ message,
383
+ signature: result.signature,
384
+ address: result.address
385
+ });
386
+ return result.signature;
387
+ } catch (error) {
388
+ console.error(
389
+ "[BitcoinProvider] \u274C Message signing failed:",
390
+ error.message
391
+ );
392
+ this.emit("error", error);
393
+ throw new BitcoinProviderError(
394
+ BitcoinErrorCode.INTERNAL_ERROR,
395
+ "Failed to sign message",
396
+ error
397
+ );
398
+ }
399
+ }
400
+ /**
401
+ * High-level transaction sending (like Solana pattern)
402
+ * Creates, signs, and broadcasts transaction
403
+ *
404
+ * @param params - Transaction parameters
405
+ * @param params.toAddress - Recipient Bitcoin address
406
+ * @param params.amount - Amount in BTC (will be converted to satoshis)
407
+ * @returns Transaction hash
408
+ */
409
+ async sendTransaction(params) {
410
+ if (!this.wallet) {
411
+ throw new BitcoinProviderError(
412
+ BitcoinErrorCode.DISCONNECTED,
413
+ "Wallet not connected"
414
+ );
415
+ }
416
+ try {
417
+ console.log("[BitcoinProvider] \u{1F4B8} Starting high-level transaction...");
418
+ const authStateKey = "talkenkit_abc_auth_state";
419
+ const authState = typeof window !== "undefined" ? localStorage.getItem(authStateKey) : null;
420
+ if (!authState) {
421
+ throw new BitcoinProviderError(
422
+ BitcoinErrorCode.UNAUTHORIZED,
423
+ "Not authenticated - auth state not found"
424
+ );
425
+ }
426
+ const parsed = JSON.parse(authState);
427
+ const evmWallet = parsed.wallet;
428
+ if (!evmWallet?.uid || !evmWallet?.sid || !evmWallet?.pvencstr || !evmWallet?.wid) {
429
+ throw new BitcoinProviderError(
430
+ BitcoinErrorCode.UNAUTHORIZED,
431
+ "EVM wallet data not found (required for Bitcoin signing)"
432
+ );
433
+ }
434
+ console.log(
435
+ "[BitcoinProvider] \u{1F510} Requesting PIN for Bitcoin transaction..."
436
+ );
437
+ const pin = await this.requestPin();
438
+ const encoder = new TextEncoder();
439
+ const data = encoder.encode(pin);
440
+ const hashBuffer = await crypto.subtle.digest("SHA-256", data);
441
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
442
+ const pinHash = hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
443
+ const satoshis = Math.floor(params.amount * 1e8);
444
+ const SecureService = (await import("./abcWallet/secure.js")).default;
445
+ const secureService = new SecureService(this.client.bitcoin.getBaseURL());
446
+ const walletData = {
447
+ address: evmWallet.address,
448
+ keyId: evmWallet.keyId,
449
+ encryptedShare: evmWallet.encryptedShare,
450
+ uid: evmWallet.uid,
451
+ sid: evmWallet.sid,
452
+ wid: evmWallet.wid,
453
+ pvencstr: evmWallet.pvencstr,
454
+ encryptDevicePassword: evmWallet.encryptDevicePassword,
455
+ pubkey: evmWallet.pubkey
456
+ };
457
+ const txHash = await this.client.bitcoin.sendTransaction(
458
+ {
459
+ amount: satoshis.toString(),
460
+ to: params.toAddress,
461
+ pubkey: this.wallet.publicKey,
462
+ network: this.network.type
463
+ },
464
+ walletData,
465
+ pinHash,
466
+ secureService
467
+ );
468
+ console.log("[BitcoinProvider] \u2705 Transaction complete:", txHash);
469
+ this.emit("transactionBroadcasted", {
470
+ txHash,
471
+ explorerUrl: `${this.network.explorer}/tx/${txHash}`
472
+ });
473
+ this.clearUtxoCache();
474
+ return txHash;
475
+ } catch (error) {
476
+ console.error("[BitcoinProvider] \u274C Transaction failed:", error.message);
477
+ if (error.message?.includes("insufficient")) {
478
+ throw new BitcoinProviderError(
479
+ BitcoinErrorCode.INSUFFICIENT_FUNDS,
480
+ "Insufficient BTC balance",
481
+ error
482
+ );
483
+ }
484
+ if (error.message?.includes("cancelled") || error.message?.includes("rejected")) {
485
+ throw new BitcoinProviderError(
486
+ BitcoinErrorCode.USER_REJECTED,
487
+ "User rejected transaction",
488
+ error
489
+ );
490
+ }
491
+ this.emit("error", error);
492
+ throw new BitcoinProviderError(
493
+ BitcoinErrorCode.INTERNAL_ERROR,
494
+ "Failed to send transaction",
495
+ error
496
+ );
497
+ }
498
+ }
499
+ /**
500
+ * Broadcast signed transaction to network
501
+ *
502
+ * @param rawTransaction - Raw transaction in hex format
503
+ * @param psbt - Optional finalized PSBT
504
+ * @returns Transaction hash
505
+ */
506
+ async broadcastTransaction(rawTransaction, psbt) {
507
+ if (!this.wallet) {
508
+ throw new BitcoinProviderError(
509
+ BitcoinErrorCode.DISCONNECTED,
510
+ "Wallet not connected"
511
+ );
512
+ }
513
+ try {
514
+ console.log("[BitcoinProvider] \u{1F4E1} Broadcasting transaction...");
515
+ const result = await this.client.bitcoin.sendBitcoinTransaction({
516
+ network: this.network.type,
517
+ rawTransaction,
518
+ ...psbt && { psbt }
519
+ });
520
+ console.log(
521
+ "[BitcoinProvider] \u2705 Transaction broadcasted:",
522
+ result.txHash
523
+ );
524
+ this.emit("transactionBroadcasted", {
525
+ txHash: result.txHash,
526
+ explorerUrl: `${this.network.explorer}/tx/${result.txHash}`
527
+ });
528
+ this.clearUtxoCache();
529
+ return result.txHash;
530
+ } catch (error) {
531
+ console.error(
532
+ "[BitcoinProvider] \u274C Transaction broadcast failed:",
533
+ error.message
534
+ );
535
+ this.emit("error", error);
536
+ throw new BitcoinProviderError(
537
+ BitcoinErrorCode.INTERNAL_ERROR,
538
+ "Failed to broadcast transaction",
539
+ error
540
+ );
541
+ }
542
+ }
543
+ /**
544
+ * Get wallet info
545
+ */
546
+ getWalletInfo() {
547
+ if (!this.wallet)
548
+ return null;
549
+ return {
550
+ address: this.wallet.address,
551
+ publicKey: this.wallet.publicKey,
552
+ addressType: this.wallet.addressType,
553
+ network: this.network.type
554
+ };
555
+ }
556
+ /**
557
+ * Refresh UTXO cache
558
+ */
559
+ async refreshUtxos() {
560
+ return this.getUtxos(true);
561
+ }
562
+ };
563
+
564
+ export {
565
+ BitcoinProviderError,
566
+ BITCOIN_NETWORKS,
567
+ AbcBitcoinProvider
568
+ };
@@ -0,0 +1,63 @@
1
+ "use client";
2
+ import {
3
+ AuthApi
4
+ } from "./chunk-RLBGBBIO.js";
5
+ import {
6
+ BitcoinApi
7
+ } from "./chunk-IA4EQFSS.js";
8
+ import {
9
+ SigningApi
10
+ } from "./chunk-TUUNSVKZ.js";
11
+ import {
12
+ SolanaApi
13
+ } from "./chunk-2J66VMY5.js";
14
+ import {
15
+ TransactionApi
16
+ } from "./chunk-HDYBRMYW.js";
17
+ import {
18
+ WalletApi
19
+ } from "./chunk-ESRU5KCF.js";
20
+
21
+ // src/wallets/walletConnectors/abcWallet/api/index.ts
22
+ var AbcWaasApiClient = class {
23
+ constructor(config) {
24
+ this.auth = new AuthApi(config);
25
+ this.wallet = new WalletApi(config);
26
+ this.transaction = new TransactionApi(config);
27
+ this.signing = new SigningApi(config);
28
+ this.solana = new SolanaApi(config);
29
+ this.bitcoin = new BitcoinApi(config);
30
+ }
31
+ /**
32
+ * Check if user is authenticated
33
+ */
34
+ isAuthenticated() {
35
+ return this.auth.isAuthenticated();
36
+ }
37
+ /**
38
+ * Check if access token is expired
39
+ */
40
+ isTokenExpired() {
41
+ return this.auth.isTokenExpired();
42
+ }
43
+ /**
44
+ * Get current access token
45
+ */
46
+ getAccessToken() {
47
+ return this.auth.getAccessToken();
48
+ }
49
+ /**
50
+ * Logout (clear tokens)
51
+ */
52
+ async logout() {
53
+ await this.auth.logout();
54
+ }
55
+ };
56
+ function createAbcWaasApiClient(config) {
57
+ return new AbcWaasApiClient(config);
58
+ }
59
+
60
+ export {
61
+ AbcWaasApiClient,
62
+ createAbcWaasApiClient
63
+ };