@talken/talkenkit 2.4.15 → 2.4.17

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 (234) hide show
  1. package/dist/abcWallet-54KUGWUZ.js +192 -0
  2. package/dist/abcWallet-KZHOADBJ.js +192 -0
  3. package/dist/abcWallet-NZAVB4PI.js +190 -0
  4. package/dist/chunk-5X3ROW3U.js +8777 -0
  5. package/dist/chunk-DKA3NVFM.js +8497 -0
  6. package/dist/chunk-QNZ5HSPM.js +8339 -0
  7. package/dist/chunk-VE53ZNZV.js +331 -0
  8. package/dist/components/ConfirmationModal/ApproveSection.css.d.ts +16 -0
  9. package/dist/components/ConfirmationModal/ApproveSection.d.ts +8 -0
  10. package/dist/components/ConfirmationModal/NFTPlaceholder.css.d.ts +7 -0
  11. package/dist/components/ConfirmationModal/NFTPlaceholder.d.ts +8 -0
  12. package/dist/components/ConfirmationModal/NftApprovalSection.css.d.ts +10 -0
  13. package/dist/components/ConfirmationModal/NftApprovalSection.d.ts +7 -0
  14. package/dist/components/ConfirmationModal/SignConfirmationModal.css.d.ts +35 -0
  15. package/dist/components/ConfirmationModal/SignConfirmationModal.d.ts +17 -0
  16. package/dist/components/ConfirmationModal/SwapSection.css.d.ts +17 -0
  17. package/dist/components/ConfirmationModal/SwapSection.d.ts +7 -0
  18. package/dist/components/ConfirmationModal/TransactionConfirmationModal.css.d.ts +49 -0
  19. package/dist/components/ConfirmationModal/TransactionConfirmationModal.d.ts +12 -0
  20. package/dist/components/ConfirmationModal/TransferSection.css.d.ts +17 -0
  21. package/dist/components/ConfirmationModal/TransferSection.d.ts +7 -0
  22. package/dist/components/ConfirmationModal/commonStyles.css.d.ts +37 -0
  23. package/dist/components/ConfirmationModal/constants.d.ts +16 -0
  24. package/dist/components/ConfirmationModal/index.d.ts +9 -0
  25. package/dist/components/ConfirmationModal/modalTheme.css.d.ts +20 -0
  26. package/dist/components/ConfirmationModal/transactionUIRegistry.d.ts +134 -0
  27. package/dist/components/ConfirmationModal/utils.d.ts +37 -0
  28. package/dist/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthSections.css.d.ts +1 -0
  29. package/dist/components/ConnectOptions/AbcWaasAuth/AbcWaasAuthSections.d.ts +1 -1
  30. package/dist/components/ConnectOptions/AbcWaasAuth/hooks/useAbcWaasAuth.d.ts +2 -25
  31. package/dist/components/ConnectOptions/AbcWaasAuth/hooks/useAbcWaasSocial.d.ts +1 -47
  32. package/dist/components/ConnectOptions/PinAuth/hooks/useWalletGeneration.d.ts +4 -21
  33. package/dist/components/GasFeeModal/GasFeeEditModal.css.d.ts +32 -0
  34. package/dist/components/GasFeeModal/GasFeeEditModal.d.ts +21 -0
  35. package/dist/components/GasFeeModal/index.d.ts +3 -0
  36. package/dist/components/GasFeeModal/modalTheme.css.d.ts +19 -0
  37. package/dist/components/Icons/Close2.d.ts +7 -0
  38. package/dist/components/Icons/Copy2.d.ts +4 -0
  39. package/dist/components/Icons/Dropdown2.d.ts +4 -0
  40. package/dist/components/Icons/Edit.d.ts +4 -0
  41. package/dist/components/Icons/InfoCircle.d.ts +4 -0
  42. package/dist/components/Icons/Kakao.d.ts +2 -0
  43. package/dist/components/Icons/Minus.d.ts +4 -0
  44. package/dist/components/Icons/Plus.d.ts +4 -0
  45. package/dist/components/Icons/SettingsGear.d.ts +4 -0
  46. package/dist/components/Icons/SpeedHigh.d.ts +4 -0
  47. package/dist/components/Icons/SpeedLow.d.ts +4 -0
  48. package/dist/components/Icons/SpeedMedium.d.ts +4 -0
  49. package/dist/components/RainbowKitProvider/InternalPinProvider.d.ts +7 -9
  50. package/dist/components/RainbowKitProvider/RainbowKitConfigProvider.d.ts +1 -6
  51. package/dist/components/RainbowKitProvider/RainbowKitProvider.d.ts +7 -7
  52. package/dist/components/Toast/Toast.css.d.ts +2 -0
  53. package/dist/components/Toast/Toast.d.ts +6 -0
  54. package/dist/components/Toast/index.d.ts +4 -0
  55. package/dist/components/Toast/useToast.d.ts +10 -0
  56. package/dist/config/networks.d.ts +10 -0
  57. package/dist/css/sprinkles.css.d.ts +1 -1
  58. package/dist/hooks/useSolanaWallet.d.ts +5 -23
  59. package/dist/hooks/useTronWallet.d.ts +63 -0
  60. package/dist/index.css +1903 -236
  61. package/dist/index.d.ts +8 -3
  62. package/dist/index.js +7557 -3592
  63. package/dist/klipWallet-RD5Y4UEK.js +8 -0
  64. package/dist/providers/SignConfirmationProvider/SignConfirmationProvider.d.ts +22 -0
  65. package/dist/providers/SignConfirmationProvider/index.d.ts +6 -0
  66. package/dist/providers/SignConfirmationProvider/requestParsers.d.ts +24 -0
  67. package/dist/providers/SignConfirmationProvider/types.d.ts +91 -0
  68. package/dist/providers/SignConfirmationProvider/useApiClient.d.ts +15 -0
  69. package/dist/providers/SignConfirmationProvider/useTransactionResolver.d.ts +18 -0
  70. package/dist/secure-AEBFSVWE.js +8 -0
  71. package/dist/services/AbcAgenticWalletService.d.ts +111 -0
  72. package/dist/services/AbcAuthService.d.ts +26 -20
  73. package/dist/types/index.d.ts +3 -0
  74. package/dist/types/token.d.ts +82 -0
  75. package/dist/utils/abi/abiDecoder.d.ts +144 -0
  76. package/dist/utils/apiClientFactory.d.ts +21 -0
  77. package/dist/utils/blockies.d.ts +12 -0
  78. package/dist/utils/tokenMapper.d.ts +10 -0
  79. package/dist/wallets/walletConnectors/abcWallet/abcApi.d.ts +4 -1
  80. package/dist/wallets/walletConnectors/abcWallet/abcApi.js +7 -7
  81. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinConnector.js +5 -5
  82. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.d.ts +6 -8
  83. package/dist/wallets/walletConnectors/abcWallet/abcBitcoinProvider.js +1 -1
  84. package/dist/wallets/walletConnectors/abcWallet/abcConnector.js +9 -9
  85. package/dist/wallets/walletConnectors/abcWallet/abcProvider.d.ts +17 -6
  86. package/dist/wallets/walletConnectors/abcWallet/abcProvider.js +5 -4
  87. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.d.ts +11 -34
  88. package/dist/wallets/walletConnectors/abcWallet/abcSolanaProvider.js +1 -1
  89. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.d.ts +3 -11
  90. package/dist/wallets/walletConnectors/abcWallet/abcSolanaWalletAdapter.js +17 -80
  91. package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.d.ts +112 -0
  92. package/dist/wallets/walletConnectors/abcWallet/abcTronProvider.js +11 -0
  93. package/dist/wallets/walletConnectors/abcWallet/abcWallet.d.ts +2 -0
  94. package/dist/wallets/walletConnectors/abcWallet/abcWallet.js +11 -10
  95. package/dist/wallets/walletConnectors/abcWallet/api/AuthApi.d.ts +9 -11
  96. package/dist/wallets/walletConnectors/abcWallet/api/AuthApi.js +6 -6
  97. package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.d.ts +1 -1
  98. package/dist/wallets/walletConnectors/abcWallet/api/BaseApiClient.js +5 -5
  99. package/dist/wallets/walletConnectors/abcWallet/api/BitcoinApi.js +6 -6
  100. package/dist/wallets/walletConnectors/abcWallet/api/GasApi.d.ts +45 -0
  101. package/dist/wallets/walletConnectors/abcWallet/api/GasApi.js +12 -0
  102. package/dist/wallets/walletConnectors/abcWallet/api/SigningApi.js +7 -7
  103. package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.d.ts +9 -1
  104. package/dist/wallets/walletConnectors/abcWallet/api/SolanaApi.js +7 -7
  105. package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.d.ts +333 -0
  106. package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiClient.js +11 -0
  107. package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiSingleton.d.ts +18 -0
  108. package/dist/wallets/walletConnectors/abcWallet/api/TalkenApiSingleton.js +14 -0
  109. package/dist/wallets/walletConnectors/abcWallet/api/TransactionApi.d.ts +2 -2
  110. package/dist/wallets/walletConnectors/abcWallet/api/TransactionApi.js +7 -7
  111. package/dist/wallets/walletConnectors/abcWallet/api/TronApi.d.ts +102 -0
  112. package/dist/wallets/walletConnectors/abcWallet/api/TronApi.js +12 -0
  113. package/dist/wallets/walletConnectors/abcWallet/api/WalletApi.d.ts +4 -2
  114. package/dist/wallets/walletConnectors/abcWallet/api/WalletApi.js +7 -7
  115. package/dist/wallets/walletConnectors/abcWallet/api/WalletscanApi.d.ts +60 -0
  116. package/dist/wallets/walletConnectors/abcWallet/api/WalletscanApi.js +12 -0
  117. package/dist/wallets/walletConnectors/abcWallet/api/index.d.ts +24 -0
  118. package/dist/wallets/walletConnectors/abcWallet/api/index.js +35 -17
  119. package/dist/wallets/walletConnectors/abcWallet/constants.d.ts +39 -1
  120. package/dist/wallets/walletConnectors/abcWallet/constants.js +5 -1
  121. package/dist/wallets/walletConnectors/abcWallet/googleAuth.d.ts +6 -0
  122. package/dist/wallets/walletConnectors/abcWallet/googleAuth.js +37 -1
  123. package/dist/wallets/walletConnectors/abcWallet/index.d.ts +5 -3
  124. package/dist/wallets/walletConnectors/abcWallet/index.js +44 -31
  125. package/dist/wallets/walletConnectors/abcWallet/kakaoAuth.d.ts +27 -0
  126. package/dist/wallets/walletConnectors/abcWallet/kakaoAuth.js +290 -0
  127. package/dist/wallets/walletConnectors/abcWallet/networkConfig.d.ts +39 -3
  128. package/dist/wallets/walletConnectors/abcWallet/networkConfig.js +11 -3
  129. package/dist/wallets/walletConnectors/abcWallet/secure.js +2 -2
  130. package/dist/wallets/walletConnectors/abcWallet/sessionUtils.js +1 -1
  131. package/dist/wallets/walletConnectors/abcWallet/types.d.ts +369 -7
  132. package/dist/wallets/walletConnectors/abcWallet/types.js +5 -3
  133. package/dist/wallets/walletConnectors/abcWallet/utils.js +3 -3
  134. package/dist/wallets/walletConnectors/abcWallet/walletGeneration.d.ts +10 -19
  135. package/dist/wallets/walletConnectors/abcWallet/walletGeneration.js +2 -2
  136. package/dist/wallets/walletConnectors/berasigWallet/berasigWallet.js +2 -2
  137. package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
  138. package/dist/wallets/walletConnectors/binanceWallet/binanceWallet.js +2 -2
  139. package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
  140. package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
  141. package/dist/wallets/walletConnectors/chunk-25V3FW3O.js +282 -0
  142. package/dist/wallets/walletConnectors/chunk-27346T3J.js +134 -0
  143. package/dist/wallets/walletConnectors/chunk-5CNLMOB2.js +75 -0
  144. package/dist/wallets/walletConnectors/chunk-5K45TCAM.js +333 -0
  145. package/dist/wallets/walletConnectors/chunk-5VDSMZC4.js +286 -0
  146. package/dist/wallets/walletConnectors/chunk-5W7RBMPH.js +351 -0
  147. package/dist/wallets/walletConnectors/chunk-5XORKEWE.js +326 -0
  148. package/dist/wallets/walletConnectors/chunk-63WBO52A.js +77 -0
  149. package/dist/wallets/walletConnectors/chunk-7IRF225N.js +75 -0
  150. package/dist/wallets/walletConnectors/chunk-7QHCSJDN.js +726 -0
  151. package/dist/wallets/walletConnectors/chunk-A27H6PEU.js +739 -0
  152. package/dist/wallets/walletConnectors/chunk-A4WR3CFN.js +130 -0
  153. package/dist/wallets/walletConnectors/chunk-A6FUNQWF.js +572 -0
  154. package/dist/wallets/walletConnectors/chunk-AF4OCS7N.js +46 -0
  155. package/dist/wallets/walletConnectors/chunk-AFWBXEEC.js +66 -0
  156. package/dist/wallets/walletConnectors/chunk-AUGP2LJR.js +182 -0
  157. package/dist/wallets/walletConnectors/chunk-AWLDVQXC.js +317 -0
  158. package/dist/wallets/walletConnectors/chunk-BLEKTKBN.js +479 -0
  159. package/dist/wallets/walletConnectors/chunk-BVL6G5HI.js +1757 -0
  160. package/dist/wallets/walletConnectors/chunk-CMTGEHDI.js +485 -0
  161. package/dist/wallets/walletConnectors/chunk-D5EFTEOM.js +56 -0
  162. package/dist/wallets/walletConnectors/chunk-DM5NLSWD.js +346 -0
  163. package/dist/wallets/walletConnectors/chunk-EBGI4D2T.js +69 -0
  164. package/dist/wallets/walletConnectors/chunk-EEH2HMFG.js +47 -0
  165. package/dist/wallets/walletConnectors/chunk-F5JWDBKK.js +47 -0
  166. package/dist/wallets/walletConnectors/chunk-FN67MIIH.js +75 -0
  167. package/dist/wallets/walletConnectors/chunk-FWYVBX5F.js +75 -0
  168. package/dist/wallets/walletConnectors/chunk-GH6ZDY4K.js +58 -0
  169. package/dist/wallets/walletConnectors/chunk-GIJZMIBD.js +63 -0
  170. package/dist/wallets/walletConnectors/chunk-GO6OLTNF.js +479 -0
  171. package/dist/wallets/walletConnectors/chunk-HKXBK3NY.js +75 -0
  172. package/dist/wallets/walletConnectors/chunk-HMD2WWFQ.js +75 -0
  173. package/dist/wallets/walletConnectors/chunk-HO5Z2CTL.js +280 -0
  174. package/dist/wallets/walletConnectors/chunk-I3GFVK5O.js +151 -0
  175. package/dist/wallets/walletConnectors/chunk-IUHZ5ZCE.js +121 -0
  176. package/dist/wallets/walletConnectors/chunk-JODNZWWG.js +330 -0
  177. package/dist/wallets/walletConnectors/chunk-JTST3KMW.js +75 -0
  178. package/dist/wallets/walletConnectors/chunk-KH2L3ONV.js +1599 -0
  179. package/dist/wallets/walletConnectors/chunk-LHV22375.js +182 -0
  180. package/dist/wallets/walletConnectors/chunk-LZZE462U.js +315 -0
  181. package/dist/wallets/walletConnectors/chunk-MGCRUAHX.js +276 -0
  182. package/dist/wallets/walletConnectors/chunk-MURSKRMJ.js +63 -0
  183. package/dist/wallets/walletConnectors/chunk-NG7PSAPX.js +115 -0
  184. package/dist/wallets/walletConnectors/chunk-NHP6D6AH.js +204 -0
  185. package/dist/wallets/walletConnectors/chunk-O4AU63LK.js +181 -0
  186. package/dist/wallets/walletConnectors/chunk-OBS74J5N.js +221 -0
  187. package/dist/wallets/walletConnectors/chunk-ON4U54WO.js +115 -0
  188. package/dist/wallets/walletConnectors/chunk-PPYBE5TV.js +276 -0
  189. package/dist/wallets/walletConnectors/chunk-PWWSAM4G.js +309 -0
  190. package/dist/wallets/walletConnectors/chunk-QB5GDLRU.js +330 -0
  191. package/dist/wallets/walletConnectors/chunk-QMLG7MAP.js +107 -0
  192. package/dist/wallets/walletConnectors/chunk-RGIB7FFH.js +47 -0
  193. package/dist/wallets/walletConnectors/chunk-SHJBMDP4.js +278 -0
  194. package/dist/wallets/walletConnectors/chunk-SOBJYYIX.js +484 -0
  195. package/dist/wallets/walletConnectors/chunk-T66U3ADD.js +58 -0
  196. package/dist/wallets/walletConnectors/chunk-THCKLFSJ.js +75 -0
  197. package/dist/wallets/walletConnectors/chunk-TS466TDR.js +286 -0
  198. package/dist/wallets/walletConnectors/chunk-UJGFYQEV.js +459 -0
  199. package/dist/wallets/walletConnectors/chunk-UXNEBBUV.js +224 -0
  200. package/dist/wallets/walletConnectors/chunk-VRCNFVPM.js +276 -0
  201. package/dist/wallets/walletConnectors/chunk-WODNUC65.js +333 -0
  202. package/dist/wallets/walletConnectors/chunk-X6A2FSHK.js +484 -0
  203. package/dist/wallets/walletConnectors/chunk-XVRNEES5.js +1541 -0
  204. package/dist/wallets/walletConnectors/chunk-XWVM2Y5A.js +306 -0
  205. package/dist/wallets/walletConnectors/chunk-XXG7ABSJ.js +328 -0
  206. package/dist/wallets/walletConnectors/chunk-YJH4BHSB.js +254 -0
  207. package/dist/wallets/walletConnectors/chunk-YRDNIP2H.js +90 -0
  208. package/dist/wallets/walletConnectors/chunk-YTPAWPCA.js +156 -0
  209. package/dist/wallets/walletConnectors/chunk-ZCSHD7UG.js +562 -0
  210. package/dist/wallets/walletConnectors/chunk-ZZCZ3RJU.js +272 -0
  211. package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
  212. package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
  213. package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
  214. package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
  215. package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
  216. package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
  217. package/dist/wallets/walletConnectors/index.js +62 -61
  218. package/dist/wallets/walletConnectors/iopayWallet/iopayWallet.js +2 -2
  219. package/dist/wallets/walletConnectors/kaiaWallet/kaiaWallet.js +2 -2
  220. package/dist/wallets/walletConnectors/kaikasWallet/kaikasWallet.js +2 -2
  221. package/dist/wallets/walletConnectors/klipWallet/klipWallet.d.ts +3 -0
  222. package/dist/wallets/walletConnectors/klipWallet/klipWallet.js +8 -0
  223. package/dist/wallets/walletConnectors/klipWallet-PPTYYB5G.js +7 -0
  224. package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
  225. package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
  226. package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
  227. package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
  228. package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
  229. package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
  230. package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
  231. package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
  232. package/dist/wallets/walletConnectors/zealWallet/zealWallet.js +2 -2
  233. package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
  234. package/package.json +2 -1
@@ -0,0 +1,484 @@
1
+ "use client";
2
+ import {
3
+ BaseApiClient
4
+ } from "./chunk-XWVM2Y5A.js";
5
+ import {
6
+ createAbcError
7
+ } from "./chunk-BLEKTKBN.js";
8
+ import {
9
+ DEFAULT_HEADERS
10
+ } from "./chunk-OBS74J5N.js";
11
+
12
+ // src/wallets/walletConnectors/abcWallet/api/BitcoinApi.ts
13
+ var BitcoinApi = class extends BaseApiClient {
14
+ /**
15
+ * Generate Bitcoin wallet
16
+ * Uses V3 API with secp256k1 curve (same as EVM but compressed public key)
17
+ *
18
+ * @param pin - Hashed PIN (SHA-256)
19
+ * @param network - Bitcoin network (mainnet or testnet)
20
+ * @param addressType - Bitcoin address type (bech32 recommended)
21
+ * @returns Bitcoin wallet information
22
+ */
23
+ async generateBitcoinWallet(pin, network = "bitcoin", addressType = "bech32") {
24
+ console.log("[BitcoinApi] \u{1F527} Generating Bitcoin wallet...", {
25
+ network,
26
+ addressType
27
+ });
28
+ const response = await this.request("/v3/wallet/generate", {
29
+ method: "POST",
30
+ contentType: "json",
31
+ body: {
32
+ curve: "secp256k1",
33
+ // Same as EVM but compressed public key
34
+ password: pin,
35
+ network
36
+ }
37
+ });
38
+ if (response.status !== "success" || !response.result) {
39
+ console.error("[BitcoinApi] \u274C Generation failed:", response);
40
+ throw createAbcError(
41
+ "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
42
+ "Failed to generate Bitcoin wallet",
43
+ response
44
+ );
45
+ }
46
+ const result = response.result;
47
+ const addressResult = await this.getBitcoinAddress(
48
+ result.public_key,
49
+ network,
50
+ addressType
51
+ );
52
+ console.log(
53
+ "[BitcoinApi] \u2705 Bitcoin wallet generated:",
54
+ `${addressResult.substring(0, 6)}...${addressResult.substring(addressResult.length - 4)}`
55
+ );
56
+ return {
57
+ uid: result.uid || "",
58
+ sessionId: result.share_id,
59
+ shareId: result.share_id,
60
+ publicKey: result.public_key,
61
+ // Compressed (33 bytes, 0x02 or 0x03 prefix)
62
+ address: addressResult,
63
+ addressType,
64
+ keyId: result.key_id || result.share_id,
65
+ encryptedShare: result.encrypted_share || "",
66
+ network
67
+ };
68
+ }
69
+ /**
70
+ * Recover Bitcoin wallet
71
+ * Uses V3 API wallet recovery endpoint
72
+ *
73
+ * @param pin - Hashed PIN (SHA-256)
74
+ * @param network - Bitcoin network
75
+ * @param addressType - Bitcoin address type
76
+ * @returns Recovered Bitcoin wallet information
77
+ */
78
+ async recoverBitcoinWallet(pin, network = "bitcoin", addressType = "bech32") {
79
+ console.log("[BitcoinApi] \u{1F527} Recovering Bitcoin wallet...", {
80
+ network,
81
+ addressType
82
+ });
83
+ const response = await this.request("/v3/wallet/recover", {
84
+ method: "POST",
85
+ contentType: "json",
86
+ body: {
87
+ curve: "secp256k1",
88
+ password: pin,
89
+ network
90
+ }
91
+ });
92
+ if (response.status !== "success" || !response.result) {
93
+ console.error("[BitcoinApi] \u274C Recovery failed:", response);
94
+ throw createAbcError(
95
+ "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
96
+ "Failed to recover Bitcoin wallet",
97
+ response
98
+ );
99
+ }
100
+ const result = response.result;
101
+ const addressResult = await this.getBitcoinAddress(
102
+ result.public_key,
103
+ network,
104
+ addressType
105
+ );
106
+ console.log(
107
+ "[BitcoinApi] \u2705 Bitcoin wallet recovered:",
108
+ `${addressResult.substring(0, 6)}...${addressResult.substring(addressResult.length - 4)}`
109
+ );
110
+ return {
111
+ uid: result.uid || "",
112
+ sessionId: result.share_id,
113
+ shareId: result.share_id,
114
+ publicKey: result.public_key,
115
+ address: addressResult,
116
+ addressType,
117
+ keyId: result.key_id || result.share_id,
118
+ encryptedShare: result.encrypted_share || "",
119
+ network
120
+ };
121
+ }
122
+ /**
123
+ * Get Bitcoin address from compressed public key
124
+ * Converts compressed public key to Bitcoin address based on address type
125
+ *
126
+ * @param publicKey - Compressed public key (33 bytes, hex)
127
+ * @param network - Bitcoin network
128
+ * @param addressType - Address format type (currently not used by API)
129
+ * @returns Bitcoin address
130
+ */
131
+ async getBitcoinAddress(publicKey, network, _addressType = "bech32") {
132
+ const url = `${this.baseURL}/wapi/v2/btc/address`;
133
+ const params = new URLSearchParams({
134
+ pubkey: publicKey,
135
+ network
136
+ });
137
+ const response = await fetch(`${url}?${params}`, {
138
+ method: "GET",
139
+ headers: {
140
+ ...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
141
+ }
142
+ });
143
+ const data = await response.json();
144
+ if (!response.ok) {
145
+ throw createAbcError(
146
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
147
+ "Failed to get Bitcoin address",
148
+ data
149
+ );
150
+ }
151
+ return data.address;
152
+ }
153
+ /**
154
+ * Get UTXOs (Unspent Transaction Outputs) for address
155
+ * Bitcoin uses UTXO model unlike EVM/Solana account model
156
+ *
157
+ * @param address - Bitcoin address
158
+ * @param network - Bitcoin network
159
+ * @returns Array of UTXOs
160
+ */
161
+ async getUtxos(address, network) {
162
+ console.log(
163
+ "[BitcoinApi] \u{1F50D} Fetching UTXOs for:",
164
+ `${address.substring(0, 6)}...${address.substring(address.length - 4)}`
165
+ );
166
+ const url = `${this.baseURL}/wapi/v2/bitcoin/utxo/list`;
167
+ const params = new URLSearchParams({ network, address });
168
+ console.log("[BitcoinApi] \u{1F50D} Fetching UTXOs for:", address);
169
+ const response = await fetch(`${url}?${params}`, {
170
+ method: "GET",
171
+ headers: {
172
+ ...DEFAULT_HEADERS,
173
+ ...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
174
+ }
175
+ });
176
+ const data = await response.json();
177
+ if (!response.ok || data.status !== "success") {
178
+ throw createAbcError(
179
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
180
+ "Failed to get UTXOs",
181
+ data
182
+ );
183
+ }
184
+ const utxos = data.result?.utxos || [];
185
+ console.log(`[BitcoinApi] \u2705 Found ${utxos.length} UTXOs`);
186
+ return utxos;
187
+ }
188
+ /**
189
+ * Send Bitcoin transaction
190
+ * Broadcasts signed transaction to Bitcoin network
191
+ *
192
+ * @param params - Transaction broadcast parameters
193
+ * @returns Transaction hash
194
+ */
195
+ async sendBitcoinTransaction(params) {
196
+ const url = `${this.baseURL}/wapi/v2/bitcoin/tx/sendTransaction`;
197
+ console.log("[BitcoinApi] \u{1F4E1} Broadcasting Bitcoin transaction...");
198
+ const response = await fetch(url, {
199
+ method: "POST",
200
+ headers: {
201
+ ...DEFAULT_HEADERS,
202
+ ...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
203
+ },
204
+ body: JSON.stringify({
205
+ network: params.network,
206
+ rawTransaction: params.rawTransaction,
207
+ ...params.psbt && { psbt: params.psbt }
208
+ })
209
+ });
210
+ const data = await response.json();
211
+ if (!response.ok || data.status !== "success") {
212
+ console.error("[BitcoinApi] \u274C Transaction broadcast failed:", data);
213
+ throw createAbcError(
214
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
215
+ "Failed to send Bitcoin transaction",
216
+ data
217
+ );
218
+ }
219
+ const txHash = data.result?.data;
220
+ console.log("[BitcoinApi] \u2705 Transaction broadcasted:", txHash);
221
+ return {
222
+ txHash
223
+ };
224
+ }
225
+ /**
226
+ * Generate Bitcoin transaction (Step 1 of 3)
227
+ * Creates PSBT and returns hashes to sign
228
+ *
229
+ * @param params - Transaction parameters
230
+ * @returns Transaction data with hashes to sign
231
+ */
232
+ async generateTransaction(params) {
233
+ const url = `${this.baseURL}/wapi/v2/btc/transaction/generate`;
234
+ console.log("[BitcoinApi] \u{1F527} Generating transaction...", params);
235
+ const response = await fetch(url, {
236
+ method: "POST",
237
+ headers: {
238
+ "Content-Type": "application/json",
239
+ ...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
240
+ },
241
+ body: JSON.stringify(params)
242
+ });
243
+ const data = await response.json();
244
+ if (!response.ok || !data.hashes) {
245
+ const errorMsg = typeof data.error === "string" ? data.error : JSON.stringify(data.error || data);
246
+ console.error("[BitcoinApi] \u274C Generate failed:", errorMsg);
247
+ throw createAbcError(
248
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
249
+ `Failed to generate transaction: ${errorMsg}`,
250
+ data
251
+ );
252
+ }
253
+ console.log(
254
+ `[BitcoinApi] \u2705 Generated ${data.hashes.length} hashes to sign`
255
+ );
256
+ return data;
257
+ }
258
+ /**
259
+ * Sign transaction hash (Step 2 of 3)
260
+ * Uses Secure Channel encryption for signing
261
+ * Based on tg-wallet-frontend reference implementation
262
+ *
263
+ * @param hash - Transaction hash to sign
264
+ * @param wallet - Full wallet object with Bitcoin signing fields
265
+ * @param pinHash - Hashed PIN for device password
266
+ * @param secureService - Secure service instance for encryption
267
+ * @returns Signature hex string (r + s without 0x prefix on s)
268
+ */
269
+ async signHash(hash, wallet, pinHash, secureService) {
270
+ console.log("[BitcoinApi] \u{1F510} Signing hash:", `${hash.substring(0, 20)}...`);
271
+ if (!wallet.wid || !wallet.pvencstr) {
272
+ console.error("[BitcoinApi] \u274C Missing Bitcoin signing fields:", {
273
+ hasWid: !!wallet.wid,
274
+ hasPvencstr: !!wallet.pvencstr,
275
+ hasSid: !!wallet.sid,
276
+ hasUid: !!wallet.uid
277
+ });
278
+ throw createAbcError(
279
+ "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
280
+ "Wallet missing required fields for Bitcoin signing (wid, pvencstr)",
281
+ { hasWid: !!wallet.wid, hasPvencstr: !!wallet.pvencstr }
282
+ );
283
+ }
284
+ const encryptDevicePassword = await secureService.getEncryptPlain(
285
+ wallet.encryptDevicePassword || pinHash
286
+ );
287
+ const pvencstr = await secureService.getEncryptPlain(wallet.pvencstr);
288
+ const wid = await secureService.getEncryptPlain(wallet.wid);
289
+ const secureChannelId = await secureService.getSecureChannelId();
290
+ const params = new URLSearchParams({
291
+ uid: wallet.uid,
292
+ sid: wallet.sid || "",
293
+ // Handle optional sid
294
+ hash,
295
+ pvencstr,
296
+ wid,
297
+ encryptDevicePassword
298
+ });
299
+ const url = `${this.baseURL}/wapi/v2/sign/hash`;
300
+ const response = await fetch(url, {
301
+ method: "POST",
302
+ headers: {
303
+ "Content-Type": "application/x-www-form-urlencoded",
304
+ "Secure-Channel": secureChannelId,
305
+ ...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
306
+ },
307
+ body: params.toString()
308
+ });
309
+ const responseText = await response.text();
310
+ if (!responseText) {
311
+ throw createAbcError(
312
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
313
+ "Empty response from sign hash API",
314
+ { status: response.status }
315
+ );
316
+ }
317
+ let data;
318
+ try {
319
+ data = JSON.parse(responseText);
320
+ } catch (parseError) {
321
+ console.error("[BitcoinApi] \u274C JSON parse error:", parseError);
322
+ throw createAbcError(
323
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
324
+ "Invalid JSON response from sign hash API",
325
+ { responseText, parseError }
326
+ );
327
+ }
328
+ if (!response.ok || data.iserr === true || !data.signstr) {
329
+ const errorDetails = data.errmsg || data.errors?.[0] || data.message || data;
330
+ console.error("[BitcoinApi] \u274C Sign failed:", errorDetails);
331
+ throw createAbcError(
332
+ "SIGNATURE_FAILED" /* SIGNATURE_FAILED */,
333
+ `Failed to sign hash: ${JSON.stringify(errorDetails)}`,
334
+ data
335
+ );
336
+ }
337
+ const signstr = JSON.parse(data.signstr);
338
+ const sig_list = signstr.sig_list;
339
+ const signatures = [];
340
+ for (const sig of sig_list) {
341
+ const r = sig.r;
342
+ const s = sig.s.startsWith("0x") ? sig.s.substring(2) : sig.s;
343
+ const combinedSig = r + s;
344
+ signatures.push(combinedSig);
345
+ }
346
+ console.log(
347
+ "[BitcoinApi] \u2705 Signature generated:",
348
+ `${signatures[0].substring(0, 32)}...`
349
+ );
350
+ return signatures[0];
351
+ }
352
+ /**
353
+ * Finalize and broadcast transaction (Step 3 of 3)
354
+ * Broadcasts signed transaction to Bitcoin network
355
+ *
356
+ * @param params - Transaction parameters with signatures
357
+ * @returns Transaction hash
358
+ */
359
+ async finalizeTransaction(params) {
360
+ const url = `${this.baseURL}/wapi/v2/btc/transaction/finalize`;
361
+ const response = await fetch(url, {
362
+ method: "POST",
363
+ headers: {
364
+ "Content-Type": "application/json",
365
+ ...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
366
+ },
367
+ body: JSON.stringify(params)
368
+ });
369
+ const responseText = await response.text();
370
+ if (!responseText) {
371
+ throw createAbcError(
372
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
373
+ "Empty response from finalize API",
374
+ { status: response.status }
375
+ );
376
+ }
377
+ let data;
378
+ try {
379
+ data = JSON.parse(responseText);
380
+ } catch (parseError) {
381
+ console.error("[BitcoinApi] \u274C JSON parse error:", parseError);
382
+ throw createAbcError(
383
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
384
+ "Invalid JSON response from finalize API",
385
+ { responseText, parseError }
386
+ );
387
+ }
388
+ if (!response.ok) {
389
+ const errorMsg = data.error || data.message || data.errmsg || "Unknown error";
390
+ console.error("[BitcoinApi] \u274C Finalize failed:", errorMsg);
391
+ throw createAbcError(
392
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
393
+ `Failed to finalize transaction: ${errorMsg}`,
394
+ data
395
+ );
396
+ }
397
+ const txHash = data.result?.tx_hash || data.tx_hash || data.result?.txHash || data.txHash;
398
+ if (!txHash) {
399
+ console.error("[BitcoinApi] \u274C No tx_hash in response:", data);
400
+ throw createAbcError(
401
+ "NETWORK_ERROR" /* NETWORK_ERROR */,
402
+ "Transaction hash not found in response",
403
+ data
404
+ );
405
+ }
406
+ console.log("[BitcoinApi] \u2705 Transaction sent:", txHash);
407
+ return txHash;
408
+ }
409
+ /**
410
+ * Send Bitcoin transaction (Complete flow: generate → sign → finalize)
411
+ * High-level API that handles all 3 steps
412
+ *
413
+ * @param params - Transaction parameters
414
+ * @param wallet - EVM wallet credentials
415
+ * @param pinHash - Hashed PIN
416
+ * @param secureService - Secure service instance
417
+ * @returns Transaction hash
418
+ */
419
+ async sendTransaction(params, wallet, pinHash, secureService) {
420
+ console.log("[BitcoinApi] \u{1F4B8} Starting Bitcoin transaction flow...");
421
+ const generateData = await this.generateTransaction({
422
+ amount: params.amount,
423
+ pubkey: params.pubkey,
424
+ to: params.to,
425
+ feeRate: "2"
426
+ // Default fee rate
427
+ });
428
+ const { hashes, fee_rate } = generateData;
429
+ const signatureHex = [];
430
+ for (let i = 0; i < hashes.length; i++) {
431
+ const signature = await this.signHash(
432
+ hashes[i],
433
+ wallet,
434
+ pinHash,
435
+ secureService
436
+ );
437
+ signatureHex.push(signature);
438
+ }
439
+ const txHash = await this.finalizeTransaction({
440
+ network: params.network,
441
+ signatureHex,
442
+ feeRate: fee_rate,
443
+ amount: params.amount,
444
+ pubkey: params.pubkey,
445
+ to: params.to
446
+ });
447
+ console.log("[BitcoinApi] \u2705 Transaction complete:", txHash);
448
+ return txHash;
449
+ }
450
+ /**
451
+ * Estimate Bitcoin transaction fee
452
+ * Gets recommended fee rate (satoshis per byte) for target confirmation blocks
453
+ *
454
+ * @param network - Bitcoin network
455
+ * @param targetBlocks - Target confirmation blocks (default: 6)
456
+ * @returns Fee rate in satoshis per byte
457
+ */
458
+ async estimateFee(network, targetBlocks = 6) {
459
+ const url = `${this.baseURL}/wapi/v2/bitcoin/fee/estimate`;
460
+ const params = new URLSearchParams({
461
+ network,
462
+ targetBlocks: targetBlocks.toString()
463
+ });
464
+ const response = await fetch(`${url}?${params}`, {
465
+ method: "GET",
466
+ headers: {
467
+ ...DEFAULT_HEADERS,
468
+ ...this.accessToken ? { Authorization: `Bearer ${this.accessToken}` } : {}
469
+ }
470
+ });
471
+ const data = await response.json();
472
+ if (!response.ok || data.status !== "success") {
473
+ console.warn("[BitcoinApi] \u26A0\uFE0F Fee estimation failed, using fallback");
474
+ return 1;
475
+ }
476
+ const feeRate = data.result?.feeRate || 1;
477
+ console.log(`[BitcoinApi] \u26FD Estimated fee rate: ${feeRate} sat/byte`);
478
+ return feeRate;
479
+ }
480
+ };
481
+
482
+ export {
483
+ BitcoinApi
484
+ };