@dynamic-labs-sdk/bitcoin 0.1.2 → 0.2.4

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 (377) hide show
  1. package/dist/BitcoinNetworkProvider.types.d.ts.map +1 -0
  2. package/dist/BitcoinWalletAccount.types.d.ts.map +1 -0
  3. package/dist/BitcoinWalletProvider.types.d.ts.map +1 -0
  4. package/{src → dist}/addBitcoinExtension/addBitcoinExtension.d.ts +1 -1
  5. package/dist/addBitcoinExtension/addBitcoinExtension.d.ts.map +1 -0
  6. package/dist/addBitcoinExtension/index.d.ts.map +1 -0
  7. package/dist/addBitcoinInjectedWalletsExtension-BJp1fgS7.cjs.js +1524 -0
  8. package/dist/addBitcoinInjectedWalletsExtension-BJp1fgS7.cjs.js.map +1 -0
  9. package/dist/addBitcoinInjectedWalletsExtension-DoOIj6RD.esm.js +1495 -0
  10. package/dist/addBitcoinInjectedWalletsExtension-DoOIj6RD.esm.js.map +1 -0
  11. package/dist/constants.d.ts.map +1 -0
  12. package/dist/errors/InvalidPsbtError.d.ts.map +1 -0
  13. package/dist/errors/NotBitcoinProviderError.d.ts.map +1 -0
  14. package/dist/errors/SendBitcoinRawTransactionError.d.ts.map +1 -0
  15. package/dist/exports/index.d.ts.map +1 -0
  16. package/dist/exports/injected.d.ts.map +1 -0
  17. package/dist/index.cjs.js +194 -0
  18. package/dist/index.cjs.js.map +1 -0
  19. package/dist/index.esm.js +186 -0
  20. package/dist/index.esm.js.map +1 -0
  21. package/{src → dist}/injected/addBitcoinInjectedWalletsExtension/addBitcoinInjectedWalletsExtension.d.ts +1 -1
  22. package/dist/injected/addBitcoinInjectedWalletsExtension/addBitcoinInjectedWalletsExtension.d.ts.map +1 -0
  23. package/dist/injected/addBitcoinInjectedWalletsExtension/index.d.ts.map +1 -0
  24. package/dist/injected/utils/binance/BinanceBitcoinInjectedProvider.types.d.ts.map +1 -0
  25. package/dist/injected/utils/binance/createBinanceBitcoinWalletProvider/createBinanceBitcoinWalletProvider.d.ts.map +1 -0
  26. package/dist/injected/utils/binance/createBinanceBitcoinWalletProvider/index.d.ts.map +1 -0
  27. package/dist/injected/utils/binance/getBinanceBitcoinInjectedProvider/getBinanceBitcoinInjectedProvider.d.ts +3 -0
  28. package/dist/injected/utils/binance/getBinanceBitcoinInjectedProvider/getBinanceBitcoinInjectedProvider.d.ts.map +1 -0
  29. package/dist/injected/utils/binance/getBinanceBitcoinInjectedProvider/index.d.ts.map +1 -0
  30. package/dist/injected/utils/bitget/createBitgetBitcoinWalletProvider/createBitgetBitcoinWalletProvider.d.ts.map +1 -0
  31. package/dist/injected/utils/bitget/createBitgetBitcoinWalletProvider/index.d.ts.map +1 -0
  32. package/dist/injected/utils/bitget/getBitgetBitcoinInjectedProvider/getBitgetBitcoinInjectedProvider.d.ts +3 -0
  33. package/dist/injected/utils/bitget/getBitgetBitcoinInjectedProvider/getBitgetBitcoinInjectedProvider.d.ts.map +1 -0
  34. package/dist/injected/utils/bitget/getBitgetBitcoinInjectedProvider/index.d.ts.map +1 -0
  35. package/dist/injected/utils/leather/LeatherBitcoinInjectedProvider.types.d.ts.map +1 -0
  36. package/dist/injected/utils/leather/convertNetworkIdToLeatherNetworkName/convertNetworkIdToLeatherNetworkName.d.ts.map +1 -0
  37. package/dist/injected/utils/leather/convertNetworkIdToLeatherNetworkName/index.d.ts.map +1 -0
  38. package/dist/injected/utils/leather/createLeatherBitcoinWalletProvider/createLeatherBitcoinWalletProvider.d.ts.map +1 -0
  39. package/dist/injected/utils/leather/createLeatherBitcoinWalletProvider/index.d.ts.map +1 -0
  40. package/dist/injected/utils/leather/getLeatherBitcoinInjectedProvider/getLeatherBitcoinInjectedProvider.d.ts +2 -0
  41. package/dist/injected/utils/leather/getLeatherBitcoinInjectedProvider/getLeatherBitcoinInjectedProvider.d.ts.map +1 -0
  42. package/dist/injected/utils/leather/getLeatherBitcoinInjectedProvider/index.d.ts.map +1 -0
  43. package/dist/injected/utils/magicEden/createMagicEdenBitcoinWalletProvider/createMagicEdenBitcoinWalletProvider.d.ts.map +1 -0
  44. package/dist/injected/utils/magicEden/createMagicEdenBitcoinWalletProvider/index.d.ts.map +1 -0
  45. package/dist/injected/utils/magicEden/getMagicEdenInjectedProvider/getMagicEdenInjectedProvider.d.ts +3 -0
  46. package/dist/injected/utils/magicEden/getMagicEdenInjectedProvider/getMagicEdenInjectedProvider.d.ts.map +1 -0
  47. package/dist/injected/utils/magicEden/getMagicEdenInjectedProvider/index.d.ts.map +1 -0
  48. package/dist/injected/utils/okx/OkxBitcoinInjectedProvider.types.d.ts.map +1 -0
  49. package/dist/injected/utils/okx/createOkxBitcoinWalletProvider/createOkxBitcoinWalletProvider.d.ts.map +1 -0
  50. package/dist/injected/utils/okx/createOkxBitcoinWalletProvider/index.d.ts.map +1 -0
  51. package/dist/injected/utils/okx/getOkxBitcoinInjectedProvider/getOkxBitcoinInjectedProvider.d.ts +3 -0
  52. package/dist/injected/utils/okx/getOkxBitcoinInjectedProvider/getOkxBitcoinInjectedProvider.d.ts.map +1 -0
  53. package/dist/injected/utils/okx/getOkxBitcoinInjectedProvider/index.d.ts.map +1 -0
  54. package/dist/injected/utils/oneKey/OneKeyBitcoinInjectedProvider.types.d.ts.map +1 -0
  55. package/dist/injected/utils/oneKey/createOneKeyBitcoinWalletProvider/createOneKeyBitcoinWalletProvider.d.ts.map +1 -0
  56. package/dist/injected/utils/oneKey/createOneKeyBitcoinWalletProvider/index.d.ts.map +1 -0
  57. package/dist/injected/utils/oneKey/getOneKeyBitcoinInjectedProvider/getOneKeyBitcoinInjectedProvider.d.ts +3 -0
  58. package/dist/injected/utils/oneKey/getOneKeyBitcoinInjectedProvider/getOneKeyBitcoinInjectedProvider.d.ts.map +1 -0
  59. package/dist/injected/utils/oneKey/getOneKeyBitcoinInjectedProvider/index.d.ts.map +1 -0
  60. package/dist/injected/utils/oyl/OylBitcoinInjectedProvider.types.d.ts.map +1 -0
  61. package/dist/injected/utils/oyl/createOylBitcoinWalletProvider/createOylBitcoinWalletProvider.d.ts.map +1 -0
  62. package/dist/injected/utils/oyl/createOylBitcoinWalletProvider/index.d.ts.map +1 -0
  63. package/dist/injected/utils/oyl/getOylBitcoinInjectedProvider/getOylBitcoinInjectedProvider.d.ts +3 -0
  64. package/dist/injected/utils/oyl/getOylBitcoinInjectedProvider/getOylBitcoinInjectedProvider.d.ts.map +1 -0
  65. package/dist/injected/utils/oyl/getOylBitcoinInjectedProvider/index.d.ts.map +1 -0
  66. package/dist/injected/utils/phantom/PhantomBitcoinInjectedProvider.types.d.ts.map +1 -0
  67. package/dist/injected/utils/phantom/createPhantomBitcoinWalletProvider/createPhantomBitcoinWalletProvider.d.ts.map +1 -0
  68. package/dist/injected/utils/phantom/createPhantomBitcoinWalletProvider/index.d.ts.map +1 -0
  69. package/dist/injected/utils/phantom/getPhantomInjectedProvider/getPhantomInjectedProvider.d.ts +3 -0
  70. package/dist/injected/utils/phantom/getPhantomInjectedProvider/getPhantomInjectedProvider.d.ts.map +1 -0
  71. package/dist/injected/utils/phantom/getPhantomInjectedProvider/index.d.ts.map +1 -0
  72. package/dist/injected/utils/unisat/UnisatInjectedProvider.types.d.ts.map +1 -0
  73. package/dist/injected/utils/unisat/createUnisatWalletProvider/createUnisatWalletProvider.d.ts.map +1 -0
  74. package/dist/injected/utils/unisat/createUnisatWalletProvider/index.d.ts.map +1 -0
  75. package/dist/injected/utils/unisat/getUnisatInjectedProvider/getUnisatInjectedProvider.d.ts +3 -0
  76. package/dist/injected/utils/unisat/getUnisatInjectedProvider/getUnisatInjectedProvider.d.ts.map +1 -0
  77. package/dist/injected/utils/unisat/getUnisatInjectedProvider/index.d.ts.map +1 -0
  78. package/dist/injected/utils/xverse/createXverseBitcoinWalletProvider/createXverseBitcoinWalletProvider.d.ts.map +1 -0
  79. package/dist/injected/utils/xverse/createXverseBitcoinWalletProvider/index.d.ts.map +1 -0
  80. package/dist/injected/utils/xverse/getXverseInjectedProvider/getXverseInjectedProvider.d.ts +3 -0
  81. package/dist/injected/utils/xverse/getXverseInjectedProvider/getXverseInjectedProvider.d.ts.map +1 -0
  82. package/dist/injected/utils/xverse/getXverseInjectedProvider/index.d.ts.map +1 -0
  83. package/dist/injected.cjs.js +9 -0
  84. package/dist/injected.cjs.js.map +1 -0
  85. package/dist/injected.esm.js +9 -0
  86. package/dist/injected.esm.js.map +1 -0
  87. package/dist/isBitcoinNetworkProvider/index.d.ts.map +1 -0
  88. package/dist/isBitcoinNetworkProvider/isBitcoinNetworkProvider.d.ts.map +1 -0
  89. package/dist/isBitcoinWalletAccount/index.d.ts.map +1 -0
  90. package/dist/isBitcoinWalletAccount/isBitcoinWalletAccount.d.ts.map +1 -0
  91. package/dist/isBitcoinWalletProvider/index.d.ts.map +1 -0
  92. package/dist/isBitcoinWalletProvider/isBitcoinWalletProvider.d.ts.map +1 -0
  93. package/dist/registerBitcoinNetworkProviderBuilder/index.d.ts.map +1 -0
  94. package/dist/registerBitcoinNetworkProviderBuilder/registerBitcoinNetworkProviderBuilder.d.ts.map +1 -0
  95. package/dist/sendBitcoin/index.d.ts.map +1 -0
  96. package/{src → dist}/sendBitcoin/sendBitcoin.d.ts +1 -1
  97. package/dist/sendBitcoin/sendBitcoin.d.ts.map +1 -0
  98. package/dist/sendRawTransaction/index.d.ts.map +1 -0
  99. package/{src → dist}/sendRawTransaction/sendRawTransaction.d.ts +1 -1
  100. package/dist/sendRawTransaction/sendRawTransaction.d.ts.map +1 -0
  101. package/{src/utils/signMultipleTransactionsWithSatsConnect → dist/signMessageWithCustomOptions}/index.d.ts.map +1 -1
  102. package/{src → dist}/signMessageWithCustomOptions/signMessageWithCustomOptions.d.ts +1 -1
  103. package/dist/signMessageWithCustomOptions/signMessageWithCustomOptions.d.ts.map +1 -0
  104. package/dist/signPsbt/index.d.ts.map +1 -0
  105. package/{src → dist}/signPsbt/signPsbt.d.ts +1 -1
  106. package/dist/signPsbt/signPsbt.d.ts.map +1 -0
  107. package/dist/signPsbts/index.d.ts.map +1 -0
  108. package/{src → dist}/signPsbts/signPsbts.d.ts +1 -1
  109. package/dist/signPsbts/signPsbts.d.ts.map +1 -0
  110. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  111. package/dist/utils/convertNetworkIdForPsbt/convertNetworkIdForPsbt.d.ts.map +1 -0
  112. package/dist/utils/convertNetworkIdForPsbt/index.d.ts.map +1 -0
  113. package/dist/utils/convertNetworkIdToSatsConnectNetworkType/convertNetworkIdToSatsConnectNetworkType.d.ts.map +1 -0
  114. package/dist/utils/convertNetworkIdToSatsConnectNetworkType/index.d.ts.map +1 -0
  115. package/dist/utils/createBitcoinNetworkProvider/createBitcoinNetworkProvider.d.ts.map +1 -0
  116. package/dist/utils/createBitcoinNetworkProvider/index.d.ts.map +1 -0
  117. package/dist/utils/createPsbtOptions/createPsbtOptions.d.ts.map +1 -0
  118. package/dist/utils/createPsbtOptions/index.d.ts.map +1 -0
  119. package/dist/utils/fetchBtcBalance/fetchBtcBalance.d.ts.map +1 -0
  120. package/dist/utils/fetchBtcBalance/index.d.ts.map +1 -0
  121. package/dist/utils/getMempoolApiUrl/getMempoolApiUrl.d.ts +2 -0
  122. package/dist/utils/getMempoolApiUrl/getMempoolApiUrl.d.ts.map +1 -0
  123. package/dist/utils/getMempoolApiUrl/index.d.ts.map +1 -0
  124. package/{src → dist}/utils/getNetworkIdFromNetworkName/getNetworkIdFromNetworkName.d.ts +1 -1
  125. package/dist/utils/getNetworkIdFromNetworkName/getNetworkIdFromNetworkName.d.ts.map +1 -0
  126. package/dist/utils/getNetworkIdFromNetworkName/index.d.ts.map +1 -0
  127. package/dist/utils/getPsbtInputsToSignForSatsConnect/getPsbtInputsToSignForSatsConnect.d.ts.map +1 -0
  128. package/dist/utils/getPsbtInputsToSignForSatsConnect/index.d.ts.map +1 -0
  129. package/dist/utils/getSatsConnectSigningProtocol/getSatsConnectSigningProtocol.d.ts.map +1 -0
  130. package/dist/utils/getSatsConnectSigningProtocol/index.d.ts.map +1 -0
  131. package/dist/utils/getSigHashType/getSigHashType.d.ts.map +1 -0
  132. package/dist/utils/getSigHashType/index.d.ts.map +1 -0
  133. package/dist/utils/parseBitcoinConnectionResult/index.d.ts.map +1 -0
  134. package/{src → dist}/utils/parseBitcoinConnectionResult/parseBitcoinConnectionResult.d.ts +1 -0
  135. package/dist/utils/parseBitcoinConnectionResult/parseBitcoinConnectionResult.d.ts.map +1 -0
  136. package/dist/utils/satoshisToBtc/index.d.ts.map +1 -0
  137. package/dist/utils/satoshisToBtc/satoshisToBtc.d.ts.map +1 -0
  138. package/dist/utils/signMultipleTransactionsWithSatsConnect/index.d.ts.map +1 -0
  139. package/dist/utils/signMultipleTransactionsWithSatsConnect/signMultipleTransactionsWithSatsConnect.d.ts.map +1 -0
  140. package/dist/utils/validatePsbt/extractAddressFromInput/extractAddressFromInput.d.ts.map +1 -0
  141. package/dist/utils/validatePsbt/extractAddressFromInput/index.d.ts.map +1 -0
  142. package/dist/utils/validatePsbt/index.d.ts.map +1 -0
  143. package/dist/utils/validatePsbt/validatePsbt.d.ts.map +1 -0
  144. package/dist/utils/validatePsbt/validateSigHash/index.d.ts.map +1 -0
  145. package/dist/utils/validatePsbt/validateSigHash/validateSigHash.d.ts.map +1 -0
  146. package/dist/utils/validatePsbt/validateSigningAddress/index.d.ts.map +1 -0
  147. package/dist/utils/validatePsbt/validateSigningAddress/validateSigningAddress.d.ts.map +1 -0
  148. package/package.json +28 -14
  149. package/CHANGELOG.md +0 -606
  150. package/addBitcoinInjectedWalletsExtension.cjs.js +0 -1958
  151. package/addBitcoinInjectedWalletsExtension.esm.js +0 -1952
  152. package/index.cjs.d.ts +0 -1
  153. package/index.cjs.js +0 -205
  154. package/index.esm.d.ts +0 -1
  155. package/index.esm.js +0 -196
  156. package/injected.cjs.d.ts +0 -1
  157. package/injected.cjs.js +0 -14
  158. package/injected.esm.d.ts +0 -1
  159. package/injected.esm.js +0 -11
  160. package/src/BitcoinNetworkProvider.types.d.ts.map +0 -1
  161. package/src/BitcoinWalletAccount.types.d.ts.map +0 -1
  162. package/src/BitcoinWalletProvider.types.d.ts.map +0 -1
  163. package/src/addBitcoinExtension/addBitcoinExtension.d.ts.map +0 -1
  164. package/src/addBitcoinExtension/index.d.ts.map +0 -1
  165. package/src/constants.d.ts.map +0 -1
  166. package/src/errors/InvalidPsbtError.d.ts.map +0 -1
  167. package/src/errors/NotBitcoinProviderError.d.ts.map +0 -1
  168. package/src/errors/SendBitcoinRawTransactionError.d.ts.map +0 -1
  169. package/src/exports/index.d.ts.map +0 -1
  170. package/src/exports/injected.d.ts.map +0 -1
  171. package/src/injected/addBitcoinInjectedWalletsExtension/addBitcoinInjectedWalletsExtension.d.ts.map +0 -1
  172. package/src/injected/addBitcoinInjectedWalletsExtension/index.d.ts.map +0 -1
  173. package/src/injected/utils/binance/BinanceBitcoinInjectedProvider.types.d.ts.map +0 -1
  174. package/src/injected/utils/binance/createBinanceBitcoinWalletProvider/createBinanceBitcoinWalletProvider.d.ts.map +0 -1
  175. package/src/injected/utils/binance/createBinanceBitcoinWalletProvider/index.d.ts.map +0 -1
  176. package/src/injected/utils/binance/getBinanceBitcoinInjectedProvider/getBinanceBitcoinInjectedProvider.d.ts +0 -2
  177. package/src/injected/utils/binance/getBinanceBitcoinInjectedProvider/getBinanceBitcoinInjectedProvider.d.ts.map +0 -1
  178. package/src/injected/utils/binance/getBinanceBitcoinInjectedProvider/index.d.ts.map +0 -1
  179. package/src/injected/utils/bitget/createBitgetBitcoinWalletProvider/createBitgetBitcoinWalletProvider.d.ts.map +0 -1
  180. package/src/injected/utils/bitget/createBitgetBitcoinWalletProvider/index.d.ts.map +0 -1
  181. package/src/injected/utils/bitget/getBitgetBitcoinInjectedProvider/getBitgetBitcoinInjectedProvider.d.ts +0 -2
  182. package/src/injected/utils/bitget/getBitgetBitcoinInjectedProvider/getBitgetBitcoinInjectedProvider.d.ts.map +0 -1
  183. package/src/injected/utils/bitget/getBitgetBitcoinInjectedProvider/index.d.ts.map +0 -1
  184. package/src/injected/utils/leather/LeatherBitcoinInjectedProvider.types.d.ts.map +0 -1
  185. package/src/injected/utils/leather/convertNetworkIdToLeatherNetworkName/convertNetworkIdToLeatherNetworkName.d.ts.map +0 -1
  186. package/src/injected/utils/leather/convertNetworkIdToLeatherNetworkName/index.d.ts.map +0 -1
  187. package/src/injected/utils/leather/createLeatherBitcoinWalletProvider/createLeatherBitcoinWalletProvider.d.ts.map +0 -1
  188. package/src/injected/utils/leather/createLeatherBitcoinWalletProvider/index.d.ts.map +0 -1
  189. package/src/injected/utils/leather/getLeatherBitcoinInjectedProvider/getLeatherBitcoinInjectedProvider.d.ts +0 -2
  190. package/src/injected/utils/leather/getLeatherBitcoinInjectedProvider/getLeatherBitcoinInjectedProvider.d.ts.map +0 -1
  191. package/src/injected/utils/leather/getLeatherBitcoinInjectedProvider/index.d.ts.map +0 -1
  192. package/src/injected/utils/magicEden/createMagicEdenBitcoinWalletProvider/createMagicEdenBitcoinWalletProvider.d.ts.map +0 -1
  193. package/src/injected/utils/magicEden/createMagicEdenBitcoinWalletProvider/index.d.ts.map +0 -1
  194. package/src/injected/utils/magicEden/getMagicEdenInjectedProvider/getMagicEdenInjectedProvider.d.ts +0 -2
  195. package/src/injected/utils/magicEden/getMagicEdenInjectedProvider/getMagicEdenInjectedProvider.d.ts.map +0 -1
  196. package/src/injected/utils/magicEden/getMagicEdenInjectedProvider/index.d.ts.map +0 -1
  197. package/src/injected/utils/okx/OkxBitcoinInjectedProvider.types.d.ts.map +0 -1
  198. package/src/injected/utils/okx/createOkxBitcoinWalletProvider/createOkxBitcoinWalletProvider.d.ts.map +0 -1
  199. package/src/injected/utils/okx/createOkxBitcoinWalletProvider/index.d.ts.map +0 -1
  200. package/src/injected/utils/okx/getOkxBitcoinInjectedProvider/getOkxBitcoinInjectedProvider.d.ts +0 -2
  201. package/src/injected/utils/okx/getOkxBitcoinInjectedProvider/getOkxBitcoinInjectedProvider.d.ts.map +0 -1
  202. package/src/injected/utils/okx/getOkxBitcoinInjectedProvider/index.d.ts.map +0 -1
  203. package/src/injected/utils/oneKey/OneKeyBitcoinInjectedProvider.types.d.ts.map +0 -1
  204. package/src/injected/utils/oneKey/createOneKeyBitcoinWalletProvider/createOneKeyBitcoinWalletProvider.d.ts.map +0 -1
  205. package/src/injected/utils/oneKey/createOneKeyBitcoinWalletProvider/index.d.ts.map +0 -1
  206. package/src/injected/utils/oneKey/getOneKeyBitcoinInjectedProvider/getOneKeyBitcoinInjectedProvider.d.ts +0 -2
  207. package/src/injected/utils/oneKey/getOneKeyBitcoinInjectedProvider/getOneKeyBitcoinInjectedProvider.d.ts.map +0 -1
  208. package/src/injected/utils/oneKey/getOneKeyBitcoinInjectedProvider/index.d.ts.map +0 -1
  209. package/src/injected/utils/oyl/OylBitcoinInjectedProvider.types.d.ts.map +0 -1
  210. package/src/injected/utils/oyl/createOylBitcoinWalletProvider/createOylBitcoinWalletProvider.d.ts.map +0 -1
  211. package/src/injected/utils/oyl/createOylBitcoinWalletProvider/index.d.ts.map +0 -1
  212. package/src/injected/utils/oyl/getOylBitcoinInjectedProvider/getOylBitcoinInjectedProvider.d.ts +0 -2
  213. package/src/injected/utils/oyl/getOylBitcoinInjectedProvider/getOylBitcoinInjectedProvider.d.ts.map +0 -1
  214. package/src/injected/utils/oyl/getOylBitcoinInjectedProvider/index.d.ts.map +0 -1
  215. package/src/injected/utils/phantom/PhantomBitcoinInjectedProvider.types.d.ts.map +0 -1
  216. package/src/injected/utils/phantom/createPhantomBitcoinWalletProvider/createPhantomBitcoinWalletProvider.d.ts.map +0 -1
  217. package/src/injected/utils/phantom/createPhantomBitcoinWalletProvider/index.d.ts.map +0 -1
  218. package/src/injected/utils/phantom/getPhantomInjectedProvider/getPhantomInjectedProvider.d.ts +0 -2
  219. package/src/injected/utils/phantom/getPhantomInjectedProvider/getPhantomInjectedProvider.d.ts.map +0 -1
  220. package/src/injected/utils/phantom/getPhantomInjectedProvider/index.d.ts.map +0 -1
  221. package/src/injected/utils/unisat/UnisatInjectedProvider.types.d.ts.map +0 -1
  222. package/src/injected/utils/unisat/createUnisatWalletProvider/createUnisatWalletProvider.d.ts.map +0 -1
  223. package/src/injected/utils/unisat/createUnisatWalletProvider/index.d.ts.map +0 -1
  224. package/src/injected/utils/unisat/getUnisatInjectedProvider/getUnisatInjectedProvider.d.ts +0 -2
  225. package/src/injected/utils/unisat/getUnisatInjectedProvider/getUnisatInjectedProvider.d.ts.map +0 -1
  226. package/src/injected/utils/unisat/getUnisatInjectedProvider/index.d.ts.map +0 -1
  227. package/src/injected/utils/xverse/createXverseBitcoinWalletProvider/createXverseBitcoinWalletProvider.d.ts.map +0 -1
  228. package/src/injected/utils/xverse/createXverseBitcoinWalletProvider/index.d.ts.map +0 -1
  229. package/src/injected/utils/xverse/getXverseInjectedProvider/getXverseInjectedProvider.d.ts +0 -2
  230. package/src/injected/utils/xverse/getXverseInjectedProvider/getXverseInjectedProvider.d.ts.map +0 -1
  231. package/src/injected/utils/xverse/getXverseInjectedProvider/index.d.ts.map +0 -1
  232. package/src/isBitcoinNetworkProvider/index.d.ts.map +0 -1
  233. package/src/isBitcoinNetworkProvider/isBitcoinNetworkProvider.d.ts.map +0 -1
  234. package/src/isBitcoinWalletAccount/index.d.ts.map +0 -1
  235. package/src/isBitcoinWalletAccount/isBitcoinWalletAccount.d.ts.map +0 -1
  236. package/src/isBitcoinWalletProvider/index.d.ts.map +0 -1
  237. package/src/isBitcoinWalletProvider/isBitcoinWalletProvider.d.ts.map +0 -1
  238. package/src/registerBitcoinNetworkProviderBuilder/index.d.ts.map +0 -1
  239. package/src/registerBitcoinNetworkProviderBuilder/registerBitcoinNetworkProviderBuilder.d.ts.map +0 -1
  240. package/src/sendBitcoin/index.d.ts.map +0 -1
  241. package/src/sendBitcoin/sendBitcoin.d.ts.map +0 -1
  242. package/src/sendRawTransaction/index.d.ts.map +0 -1
  243. package/src/sendRawTransaction/sendRawTransaction.d.ts.map +0 -1
  244. package/src/signMessageWithCustomOptions/index.d.ts.map +0 -1
  245. package/src/signMessageWithCustomOptions/signMessageWithCustomOptions.d.ts.map +0 -1
  246. package/src/signPsbt/index.d.ts.map +0 -1
  247. package/src/signPsbt/signPsbt.d.ts.map +0 -1
  248. package/src/signPsbts/index.d.ts.map +0 -1
  249. package/src/signPsbts/signPsbts.d.ts.map +0 -1
  250. package/src/utils/convertNetworkIdForPsbt/convertNetworkIdForPsbt.d.ts.map +0 -1
  251. package/src/utils/convertNetworkIdForPsbt/index.d.ts.map +0 -1
  252. package/src/utils/convertNetworkIdToSatsConnectNetworkType/convertNetworkIdToSatsConnectNetworkType.d.ts.map +0 -1
  253. package/src/utils/convertNetworkIdToSatsConnectNetworkType/index.d.ts.map +0 -1
  254. package/src/utils/createBitcoinNetworkProvider/createBitcoinNetworkProvider.d.ts.map +0 -1
  255. package/src/utils/createBitcoinNetworkProvider/index.d.ts.map +0 -1
  256. package/src/utils/createPsbtOptions/createPsbtOptions.d.ts.map +0 -1
  257. package/src/utils/createPsbtOptions/index.d.ts.map +0 -1
  258. package/src/utils/fetchBtcBalance/fetchBtcBalance.d.ts.map +0 -1
  259. package/src/utils/fetchBtcBalance/index.d.ts.map +0 -1
  260. package/src/utils/getMempoolApiUrl/getMempoolApiUrl.d.ts +0 -2
  261. package/src/utils/getMempoolApiUrl/getMempoolApiUrl.d.ts.map +0 -1
  262. package/src/utils/getMempoolApiUrl/index.d.ts.map +0 -1
  263. package/src/utils/getNetworkIdFromNetworkName/getNetworkIdFromNetworkName.d.ts.map +0 -1
  264. package/src/utils/getNetworkIdFromNetworkName/index.d.ts.map +0 -1
  265. package/src/utils/getPsbtInputsToSignForSatsConnect/getPsbtInputsToSignForSatsConnect.d.ts.map +0 -1
  266. package/src/utils/getPsbtInputsToSignForSatsConnect/index.d.ts.map +0 -1
  267. package/src/utils/getSatsConnectSigningProtocol/getSatsConnectSigningProtocol.d.ts.map +0 -1
  268. package/src/utils/getSatsConnectSigningProtocol/index.d.ts.map +0 -1
  269. package/src/utils/getSigHashType/getSigHashType.d.ts.map +0 -1
  270. package/src/utils/getSigHashType/index.d.ts.map +0 -1
  271. package/src/utils/parseBitcoinConnectionResult/index.d.ts.map +0 -1
  272. package/src/utils/parseBitcoinConnectionResult/parseBitcoinConnectionResult.d.ts.map +0 -1
  273. package/src/utils/satoshisToBtc/index.d.ts.map +0 -1
  274. package/src/utils/satoshisToBtc/satoshisToBtc.d.ts.map +0 -1
  275. package/src/utils/signMultipleTransactionsWithSatsConnect/signMultipleTransactionsWithSatsConnect.d.ts.map +0 -1
  276. package/src/utils/validatePsbt/extractAddressFromInput/extractAddressFromInput.d.ts.map +0 -1
  277. package/src/utils/validatePsbt/extractAddressFromInput/index.d.ts.map +0 -1
  278. package/src/utils/validatePsbt/index.d.ts.map +0 -1
  279. package/src/utils/validatePsbt/validatePsbt.d.ts.map +0 -1
  280. package/src/utils/validatePsbt/validateSigHash/index.d.ts.map +0 -1
  281. package/src/utils/validatePsbt/validateSigHash/validateSigHash.d.ts.map +0 -1
  282. package/src/utils/validatePsbt/validateSigningAddress/index.d.ts.map +0 -1
  283. package/src/utils/validatePsbt/validateSigningAddress/validateSigningAddress.d.ts.map +0 -1
  284. /package/{src → dist}/BitcoinNetworkProvider.types.d.ts +0 -0
  285. /package/{src → dist}/BitcoinWalletAccount.types.d.ts +0 -0
  286. /package/{src → dist}/BitcoinWalletProvider.types.d.ts +0 -0
  287. /package/{src → dist}/addBitcoinExtension/index.d.ts +0 -0
  288. /package/{src → dist}/constants.d.ts +0 -0
  289. /package/{src → dist}/errors/InvalidPsbtError.d.ts +0 -0
  290. /package/{src → dist}/errors/NotBitcoinProviderError.d.ts +0 -0
  291. /package/{src → dist}/errors/SendBitcoinRawTransactionError.d.ts +0 -0
  292. /package/{src → dist}/exports/index.d.ts +0 -0
  293. /package/{src → dist}/exports/injected.d.ts +0 -0
  294. /package/{src → dist}/injected/addBitcoinInjectedWalletsExtension/index.d.ts +0 -0
  295. /package/{src → dist}/injected/utils/binance/BinanceBitcoinInjectedProvider.types.d.ts +0 -0
  296. /package/{src → dist}/injected/utils/binance/createBinanceBitcoinWalletProvider/createBinanceBitcoinWalletProvider.d.ts +0 -0
  297. /package/{src → dist}/injected/utils/binance/createBinanceBitcoinWalletProvider/index.d.ts +0 -0
  298. /package/{src → dist}/injected/utils/binance/getBinanceBitcoinInjectedProvider/index.d.ts +0 -0
  299. /package/{src → dist}/injected/utils/bitget/createBitgetBitcoinWalletProvider/createBitgetBitcoinWalletProvider.d.ts +0 -0
  300. /package/{src → dist}/injected/utils/bitget/createBitgetBitcoinWalletProvider/index.d.ts +0 -0
  301. /package/{src → dist}/injected/utils/bitget/getBitgetBitcoinInjectedProvider/index.d.ts +0 -0
  302. /package/{src → dist}/injected/utils/leather/LeatherBitcoinInjectedProvider.types.d.ts +0 -0
  303. /package/{src → dist}/injected/utils/leather/convertNetworkIdToLeatherNetworkName/convertNetworkIdToLeatherNetworkName.d.ts +0 -0
  304. /package/{src → dist}/injected/utils/leather/convertNetworkIdToLeatherNetworkName/index.d.ts +0 -0
  305. /package/{src → dist}/injected/utils/leather/createLeatherBitcoinWalletProvider/createLeatherBitcoinWalletProvider.d.ts +0 -0
  306. /package/{src → dist}/injected/utils/leather/createLeatherBitcoinWalletProvider/index.d.ts +0 -0
  307. /package/{src → dist}/injected/utils/leather/getLeatherBitcoinInjectedProvider/index.d.ts +0 -0
  308. /package/{src → dist}/injected/utils/magicEden/createMagicEdenBitcoinWalletProvider/createMagicEdenBitcoinWalletProvider.d.ts +0 -0
  309. /package/{src → dist}/injected/utils/magicEden/createMagicEdenBitcoinWalletProvider/index.d.ts +0 -0
  310. /package/{src → dist}/injected/utils/magicEden/getMagicEdenInjectedProvider/index.d.ts +0 -0
  311. /package/{src → dist}/injected/utils/okx/OkxBitcoinInjectedProvider.types.d.ts +0 -0
  312. /package/{src → dist}/injected/utils/okx/createOkxBitcoinWalletProvider/createOkxBitcoinWalletProvider.d.ts +0 -0
  313. /package/{src → dist}/injected/utils/okx/createOkxBitcoinWalletProvider/index.d.ts +0 -0
  314. /package/{src → dist}/injected/utils/okx/getOkxBitcoinInjectedProvider/index.d.ts +0 -0
  315. /package/{src → dist}/injected/utils/oneKey/OneKeyBitcoinInjectedProvider.types.d.ts +0 -0
  316. /package/{src → dist}/injected/utils/oneKey/createOneKeyBitcoinWalletProvider/createOneKeyBitcoinWalletProvider.d.ts +0 -0
  317. /package/{src → dist}/injected/utils/oneKey/createOneKeyBitcoinWalletProvider/index.d.ts +0 -0
  318. /package/{src → dist}/injected/utils/oneKey/getOneKeyBitcoinInjectedProvider/index.d.ts +0 -0
  319. /package/{src → dist}/injected/utils/oyl/OylBitcoinInjectedProvider.types.d.ts +0 -0
  320. /package/{src → dist}/injected/utils/oyl/createOylBitcoinWalletProvider/createOylBitcoinWalletProvider.d.ts +0 -0
  321. /package/{src → dist}/injected/utils/oyl/createOylBitcoinWalletProvider/index.d.ts +0 -0
  322. /package/{src → dist}/injected/utils/oyl/getOylBitcoinInjectedProvider/index.d.ts +0 -0
  323. /package/{src → dist}/injected/utils/phantom/PhantomBitcoinInjectedProvider.types.d.ts +0 -0
  324. /package/{src → dist}/injected/utils/phantom/createPhantomBitcoinWalletProvider/createPhantomBitcoinWalletProvider.d.ts +0 -0
  325. /package/{src → dist}/injected/utils/phantom/createPhantomBitcoinWalletProvider/index.d.ts +0 -0
  326. /package/{src → dist}/injected/utils/phantom/getPhantomInjectedProvider/index.d.ts +0 -0
  327. /package/{src → dist}/injected/utils/unisat/UnisatInjectedProvider.types.d.ts +0 -0
  328. /package/{src → dist}/injected/utils/unisat/createUnisatWalletProvider/createUnisatWalletProvider.d.ts +0 -0
  329. /package/{src → dist}/injected/utils/unisat/createUnisatWalletProvider/index.d.ts +0 -0
  330. /package/{src → dist}/injected/utils/unisat/getUnisatInjectedProvider/index.d.ts +0 -0
  331. /package/{src → dist}/injected/utils/xverse/createXverseBitcoinWalletProvider/createXverseBitcoinWalletProvider.d.ts +0 -0
  332. /package/{src → dist}/injected/utils/xverse/createXverseBitcoinWalletProvider/index.d.ts +0 -0
  333. /package/{src → dist}/injected/utils/xverse/getXverseInjectedProvider/index.d.ts +0 -0
  334. /package/{src → dist}/isBitcoinNetworkProvider/index.d.ts +0 -0
  335. /package/{src → dist}/isBitcoinNetworkProvider/isBitcoinNetworkProvider.d.ts +0 -0
  336. /package/{src → dist}/isBitcoinWalletAccount/index.d.ts +0 -0
  337. /package/{src → dist}/isBitcoinWalletAccount/isBitcoinWalletAccount.d.ts +0 -0
  338. /package/{src → dist}/isBitcoinWalletProvider/index.d.ts +0 -0
  339. /package/{src → dist}/isBitcoinWalletProvider/isBitcoinWalletProvider.d.ts +0 -0
  340. /package/{src → dist}/registerBitcoinNetworkProviderBuilder/index.d.ts +0 -0
  341. /package/{src → dist}/registerBitcoinNetworkProviderBuilder/registerBitcoinNetworkProviderBuilder.d.ts +0 -0
  342. /package/{src → dist}/sendBitcoin/index.d.ts +0 -0
  343. /package/{src → dist}/sendRawTransaction/index.d.ts +0 -0
  344. /package/{src → dist}/signMessageWithCustomOptions/index.d.ts +0 -0
  345. /package/{src → dist}/signPsbt/index.d.ts +0 -0
  346. /package/{src → dist}/signPsbts/index.d.ts +0 -0
  347. /package/{src → dist}/utils/convertNetworkIdForPsbt/convertNetworkIdForPsbt.d.ts +0 -0
  348. /package/{src → dist}/utils/convertNetworkIdForPsbt/index.d.ts +0 -0
  349. /package/{src → dist}/utils/convertNetworkIdToSatsConnectNetworkType/convertNetworkIdToSatsConnectNetworkType.d.ts +0 -0
  350. /package/{src → dist}/utils/convertNetworkIdToSatsConnectNetworkType/index.d.ts +0 -0
  351. /package/{src → dist}/utils/createBitcoinNetworkProvider/createBitcoinNetworkProvider.d.ts +0 -0
  352. /package/{src → dist}/utils/createBitcoinNetworkProvider/index.d.ts +0 -0
  353. /package/{src → dist}/utils/createPsbtOptions/createPsbtOptions.d.ts +0 -0
  354. /package/{src → dist}/utils/createPsbtOptions/index.d.ts +0 -0
  355. /package/{src → dist}/utils/fetchBtcBalance/fetchBtcBalance.d.ts +0 -0
  356. /package/{src → dist}/utils/fetchBtcBalance/index.d.ts +0 -0
  357. /package/{src → dist}/utils/getMempoolApiUrl/index.d.ts +0 -0
  358. /package/{src → dist}/utils/getNetworkIdFromNetworkName/index.d.ts +0 -0
  359. /package/{src → dist}/utils/getPsbtInputsToSignForSatsConnect/getPsbtInputsToSignForSatsConnect.d.ts +0 -0
  360. /package/{src → dist}/utils/getPsbtInputsToSignForSatsConnect/index.d.ts +0 -0
  361. /package/{src → dist}/utils/getSatsConnectSigningProtocol/getSatsConnectSigningProtocol.d.ts +0 -0
  362. /package/{src → dist}/utils/getSatsConnectSigningProtocol/index.d.ts +0 -0
  363. /package/{src → dist}/utils/getSigHashType/getSigHashType.d.ts +0 -0
  364. /package/{src → dist}/utils/getSigHashType/index.d.ts +0 -0
  365. /package/{src → dist}/utils/parseBitcoinConnectionResult/index.d.ts +0 -0
  366. /package/{src → dist}/utils/satoshisToBtc/index.d.ts +0 -0
  367. /package/{src → dist}/utils/satoshisToBtc/satoshisToBtc.d.ts +0 -0
  368. /package/{src → dist}/utils/signMultipleTransactionsWithSatsConnect/index.d.ts +0 -0
  369. /package/{src → dist}/utils/signMultipleTransactionsWithSatsConnect/signMultipleTransactionsWithSatsConnect.d.ts +0 -0
  370. /package/{src → dist}/utils/validatePsbt/extractAddressFromInput/extractAddressFromInput.d.ts +0 -0
  371. /package/{src → dist}/utils/validatePsbt/extractAddressFromInput/index.d.ts +0 -0
  372. /package/{src → dist}/utils/validatePsbt/index.d.ts +0 -0
  373. /package/{src → dist}/utils/validatePsbt/validatePsbt.d.ts +0 -0
  374. /package/{src → dist}/utils/validatePsbt/validateSigHash/index.d.ts +0 -0
  375. /package/{src → dist}/utils/validatePsbt/validateSigHash/validateSigHash.d.ts +0 -0
  376. /package/{src → dist}/utils/validatePsbt/validateSigningAddress/index.d.ts +0 -0
  377. /package/{src → dist}/utils/validatePsbt/validateSigningAddress/validateSigningAddress.d.ts +0 -0
@@ -1,1958 +0,0 @@
1
- 'use strict';
2
-
3
- var core = require('@dynamic-labs-sdk/client/core');
4
- var client = require('@dynamic-labs-sdk/client');
5
- var sdkApiCore = require('@dynamic-labs/sdk-api-core');
6
- var bitcoinjsLib = require('bitcoinjs-lib');
7
- var jsontokens = require('jsontokens');
8
- var satsConnect = require('sats-connect');
9
-
10
- var name = "@dynamic-labs-sdk/bitcoin";
11
- var version = "0.1.2";
12
-
13
- function _extends() {
14
- _extends = Object.assign || function assign(target) {
15
- for(var i = 1; i < arguments.length; i++){
16
- var source = arguments[i];
17
- for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
18
- }
19
- return target;
20
- };
21
- return _extends.apply(this, arguments);
22
- }
23
-
24
- const MEMPOOL_API_URL = 'https://mempool.space/api';
25
- const MEMPOOL_API_URL_TESTNET = 'https://mempool.space/testnet/api';
26
-
27
- const getMempoolApiUrl = (address)=>address.startsWith('t') ? MEMPOOL_API_URL_TESTNET : MEMPOOL_API_URL;
28
-
29
- const satoshisToBtc = (satoshis)=>satoshis / 100000000;
30
-
31
- const fetchBtcBalance = async ({ address })=>{
32
- const API_URL = getMempoolApiUrl(address);
33
- const response = await fetch(`${API_URL}/address/${address}`);
34
- if (!response.ok) {
35
- return null;
36
- }
37
- const addressInfo = await response.json();
38
- if (!(addressInfo == null ? void 0 : addressInfo.chain_stats) || !(addressInfo == null ? void 0 : addressInfo.mempool_stats)) {
39
- return null;
40
- }
41
- const confirmedBalanceInSats = Number(addressInfo.chain_stats.funded_txo_sum) - Number(addressInfo.chain_stats.spent_txo_sum);
42
- const unconfirmedBalanceInSats = Number(addressInfo.mempool_stats.funded_txo_sum) - Number(addressInfo.mempool_stats.spent_txo_sum);
43
- const balance = satoshisToBtc(confirmedBalanceInSats + unconfirmedBalanceInSats);
44
- return balance.toString();
45
- };
46
-
47
- const createBitcoinNetworkProvider = (networkData)=>_extends({}, core.createBaseNetworkProvider('BTC', networkData), {
48
- cluster: networkData.cluster,
49
- getBalance: async ({ address })=>({
50
- balance: await fetchBtcBalance({
51
- address
52
- })
53
- })
54
- });
55
-
56
- const registerBitcoinNetworkProviderBuilder = (client)=>{
57
- const networkProviderBuilderRegistry = core.getNetworkProviderBuilderRegistry(client);
58
- /**
59
- * If the Bitcoin network provider builder is already registered, return.
60
- */ if (networkProviderBuilderRegistry.get().get('BTC')) {
61
- return;
62
- }
63
- networkProviderBuilderRegistry.register({
64
- builder: createBitcoinNetworkProvider,
65
- chain: 'BTC'
66
- });
67
- };
68
-
69
- class InvalidPsbtError extends client.BaseError {
70
- constructor(message){
71
- super({
72
- cause: null,
73
- code: 'invalid_psbt_error',
74
- docsUrl: null,
75
- name: 'InvalidPsbtError',
76
- shortMessage: message
77
- });
78
- }
79
- }
80
-
81
- /**
82
- * This method will return the signature hash type for the current input.
83
- * If there is a sighashType, it will return that
84
- * If there is a witnessUtxo AND it is a taproot address, then it will return SIGHASH_DEFAULT
85
- * Otherwise, it will return SIGHASH_ALL
86
- */ const getSigHashType = ({ input })=>{
87
- var _input_witnessUtxo;
88
- if (input == null ? void 0 : input.sighashType) {
89
- return input.sighashType;
90
- }
91
- let isTaprootAddress = false;
92
- if ((_input_witnessUtxo = input.witnessUtxo) == null ? void 0 : _input_witnessUtxo.script) {
93
- try {
94
- bitcoinjsLib.payments.p2tr({
95
- output: input.witnessUtxo.script
96
- });
97
- isTaprootAddress = true;
98
- } catch (e) {
99
- // do nothing - address is not taproot
100
- }
101
- }
102
- return isTaprootAddress ? bitcoinjsLib.Transaction.SIGHASH_DEFAULT : bitcoinjsLib.Transaction.SIGHASH_ALL;
103
- };
104
-
105
- const validateSigHash = ({ allowedSigHashTypes, input })=>{
106
- const sigHashType = getSigHashType({
107
- input
108
- });
109
- // if the request has allowedSigHashTypes, then we need to make sure that the sigHashType
110
- // is a member of that array before continuing
111
- if ((allowedSigHashTypes == null ? void 0 : allowedSigHashTypes.length) && !allowedSigHashTypes.includes(sigHashType)) {
112
- throw new InvalidPsbtError(`sigHashType ${sigHashType} not in allowed list`);
113
- }
114
- };
115
-
116
- /**
117
- * This method extracts the address from the input data of the psbt.
118
- * The address is stored as script (Buffer) in either the witnessUtxo or nonWitnessUtxo as an output
119
- */ const extractAddressFromInput = ({ index, input, psbt })=>{
120
- let extractedAddress;
121
- try {
122
- var _input_witnessUtxo;
123
- if ((_input_witnessUtxo = input.witnessUtxo) == null ? void 0 : _input_witnessUtxo.script) {
124
- extractedAddress = bitcoinjsLib.address.fromOutputScript(input.witnessUtxo.script);
125
- }
126
- if (input.nonWitnessUtxo) {
127
- const nonWitnessTxn = bitcoinjsLib.Transaction.fromBuffer(input.nonWitnessUtxo);
128
- const txOut = nonWitnessTxn.outs[psbt.txInputs[index].index];
129
- extractedAddress = bitcoinjsLib.address.fromOutputScript(txOut.script);
130
- }
131
- return extractedAddress;
132
- } catch (e) {
133
- return extractedAddress;
134
- }
135
- };
136
-
137
- const validateSigningAddress = ({ index, inputAtIndex, psbt, signingAddress })=>{
138
- // we need to extract the address from the input at the current signing index
139
- // to be able to compare it to the address provided in the request for the current index
140
- const extractedAddress = extractAddressFromInput({
141
- index,
142
- input: inputAtIndex,
143
- psbt
144
- });
145
- if (!extractedAddress) {
146
- throw new InvalidPsbtError(`Could not extract address from input at index ${index}`);
147
- }
148
- if (extractedAddress !== signingAddress) {
149
- throw new InvalidPsbtError(`Signing address does not match with address extracted from input at index ${index}`);
150
- }
151
- };
152
-
153
- /**
154
- * This method will validate the psbt against the signature data provided in the request
155
- * It checks 3 things:
156
- * - That the signing index exists in the input
157
- * - That the address provided in the request matches the address in the input,
158
- * unless the disableAddressValidation flag is set
159
- * - That the sigHashType of the input is a member of the allowedSigHashTypes array
160
- */ const validatePsbt = ({ allowedSigHashTypes, psbt, signatureData })=>{
161
- if (!(signatureData == null ? void 0 : signatureData.length)) {
162
- return;
163
- }
164
- for (const input of signatureData){
165
- const { address: signingAddress, signingIndexes, // request from ME in cases of multi-sig. Steven wanted this defaulted to true
166
- disableAddressValidation = true } = input;
167
- if (!(signingIndexes == null ? void 0 : signingIndexes.length)) {
168
- return;
169
- }
170
- if (!signingAddress) {
171
- throw new InvalidPsbtError('Missing signing address');
172
- }
173
- for (const index of signingIndexes){
174
- const inputAtIndex = psbt.data.inputs[index];
175
- if (!inputAtIndex) {
176
- throw new InvalidPsbtError(`Missing input for index ${index}`);
177
- }
178
- if (!disableAddressValidation) {
179
- validateSigningAddress({
180
- index,
181
- inputAtIndex,
182
- psbt,
183
- signingAddress
184
- });
185
- }
186
- validateSigHash({
187
- allowedSigHashTypes,
188
- input: inputAtIndex
189
- });
190
- }
191
- }
192
- };
193
-
194
- /**
195
- * This method will create the psbt sign options for the given request
196
- * It will validate the psbt against the signature data provided in the request
197
- * It will return the psbt sign options with the toSignInputs added if the signature data is provided
198
- */ const createPsbtOptions = ({ psbt, request })=>{
199
- const psbtSignOptions = {
200
- autoFinalized: false
201
- };
202
- if (!request.signature) {
203
- return psbtSignOptions;
204
- }
205
- validatePsbt({
206
- allowedSigHashTypes: request.allowedSighash,
207
- psbt,
208
- signatureData: request.signature
209
- });
210
- const toSignInputs = [];
211
- for (const signature of request.signature){
212
- var _signature_signingIndexes;
213
- if ((_signature_signingIndexes = signature.signingIndexes) == null ? void 0 : _signature_signingIndexes.length) {
214
- for (const index of signature.signingIndexes){
215
- toSignInputs.push({
216
- address: signature.address,
217
- disableAddressValidation: signature.disableAddressValidation,
218
- index,
219
- sighashTypes: request.allowedSighash
220
- });
221
- }
222
- }
223
- }
224
- psbtSignOptions.toSignInputs = toSignInputs;
225
- return psbtSignOptions;
226
- };
227
-
228
- const getNetworkIdFromNetworkName = ({ networkName }, client$1)=>{
229
- var _btcNetworkData_find;
230
- const networksData = client.getNetworksData(client$1);
231
- const btcNetworkData = networksData.filter((data)=>data.chain === 'BTC');
232
- var _btcNetworkData_find_networkId;
233
- // try to find the correct networkId based on the network name (cluster)
234
- // if not found, default to mainnet ('1');
235
- const networkId = (_btcNetworkData_find_networkId = (_btcNetworkData_find = btcNetworkData.find((data)=>data.cluster === networkName)) == null ? void 0 : _btcNetworkData_find.networkId) != null ? _btcNetworkData_find_networkId : '1';
236
- return {
237
- networkId
238
- };
239
- };
240
-
241
- const BINANCE_METADATA = {
242
- displayName: 'Binance Wallet',
243
- icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#onekey`
244
- };
245
- const createBinanceBitcoinWalletProvider = ({ dynamicClient, injectedProvider })=>{
246
- const chain = 'BTC';
247
- const walletProviderType = sdkApiCore.WalletProviderEnum.BrowserExtension;
248
- const key = core.formatWalletProviderKey({
249
- chain,
250
- displayName: BINANCE_METADATA.displayName,
251
- walletProviderType
252
- });
253
- const connect = async ()=>{
254
- const accounts = await injectedProvider.requestAccounts();
255
- const address = accounts[0];
256
- const publicKey = await injectedProvider.getPublicKey();
257
- return {
258
- addresses: [
259
- {
260
- address,
261
- publicKey
262
- }
263
- ]
264
- };
265
- };
266
- const getActiveNetworkId = async ()=>{
267
- const network = await injectedProvider.getNetwork();
268
- return getNetworkIdFromNetworkName({
269
- networkName: network
270
- }, dynamicClient);
271
- };
272
- const getConnectedAddresses = async ()=>{
273
- const accounts = await injectedProvider.getAccounts();
274
- return {
275
- addresses: accounts
276
- };
277
- };
278
- const signMessage = async ({ message, walletAccount, protocol })=>{
279
- core.assertDefined(walletAccount, 'Wallet account not found');
280
- await client.assertWalletAccountSigningAvailability({
281
- walletAccount
282
- }, dynamicClient);
283
- const signedMessage = await injectedProvider.signMessage(message, protocol);
284
- return {
285
- signature: signedMessage
286
- };
287
- };
288
- const signPsbt = async ({ request, walletAccount })=>{
289
- await client.assertWalletAccountSigningAvailability({
290
- walletAccount
291
- }, dynamicClient);
292
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64);
293
- const psbtOptions = createPsbtOptions({
294
- psbt: psbtFromBase64,
295
- request
296
- });
297
- const signedPsbtHex = await injectedProvider.signPsbt(psbtFromBase64.toHex(), {
298
- autoFinalized: false,
299
- toSignInputs: psbtOptions.toSignInputs || []
300
- });
301
- return {
302
- signedPsbt: bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64()
303
- };
304
- };
305
- const signPsbts = async ({ requests, walletAccount })=>{
306
- await client.assertWalletAccountSigningAvailability({
307
- walletAccount
308
- }, dynamicClient);
309
- const signedPsbts = [];
310
- for (const request of requests){
311
- const signedPsbtResponse = await signPsbt({
312
- request,
313
- walletAccount
314
- });
315
- if (signedPsbtResponse) {
316
- signedPsbts.push(signedPsbtResponse.signedPsbt);
317
- }
318
- }
319
- return {
320
- signedPsbts
321
- };
322
- };
323
- const { getEventEmitter, cleanupEventEmitter } = core.createWalletProviderEventEmitter({
324
- removeEventListeners: ()=>{
325
- injectedProvider == null ? void 0 : injectedProvider.removeAllListeners();
326
- },
327
- setupEventListeners: ({ handleAccountsChanged, handleNetworkChanged })=>{
328
- injectedProvider == null ? void 0 : injectedProvider.on('accountsChanged', (addresses)=>{
329
- handleAccountsChanged({
330
- addresses
331
- });
332
- });
333
- injectedProvider == null ? void 0 : injectedProvider.on('networkChanged', (network)=>{
334
- handleNetworkChanged({
335
- networkId: network
336
- });
337
- });
338
- },
339
- supportedEvents: [
340
- 'accountsChanged',
341
- 'networkChanged'
342
- ]
343
- });
344
- const terminate = async ()=>{
345
- cleanupEventEmitter();
346
- };
347
- return {
348
- chain,
349
- connect,
350
- get events () {
351
- return getEventEmitter();
352
- },
353
- getActiveNetworkId,
354
- getConnectedAddresses,
355
- groupKey: core.formatWalletProviderGroupKey(BINANCE_METADATA.displayName),
356
- key,
357
- metadata: BINANCE_METADATA,
358
- signMessage,
359
- signPsbt,
360
- signPsbts,
361
- terminate,
362
- walletProviderType
363
- };
364
- };
365
-
366
- const BINANCE_BITCOIN_PROVIDER_LOCATOR = 'binancew3w.bitcoin';
367
- const getBinanceBitcoinInjectedProvider = ()=>{
368
- return core.getInjectedProviderFromWindow(BINANCE_BITCOIN_PROVIDER_LOCATOR);
369
- };
370
-
371
- const UNISAT_METADATA = {
372
- displayName: 'UniSat',
373
- icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#unisat`
374
- };
375
- const createUnisatWalletProvider = ({ dynamicClient, injectedProvider })=>{
376
- const chain = 'BTC';
377
- const walletProviderType = sdkApiCore.WalletProviderEnum.BrowserExtension;
378
- const key = core.formatWalletProviderKey({
379
- chain,
380
- displayName: UNISAT_METADATA.displayName,
381
- walletProviderType
382
- });
383
- const connect = async ()=>{
384
- const addresses = await injectedProvider.requestAccounts();
385
- return {
386
- addresses: addresses.map((address)=>({
387
- address
388
- }))
389
- };
390
- };
391
- const disconnect = async ()=>{
392
- return injectedProvider.disconnect();
393
- };
394
- const getActiveNetworkId = async ()=>{
395
- const chain = await injectedProvider.getChain();
396
- let networkName = 'mainnet';
397
- if (chain.enum === 'BITCOIN_TESTNET') {
398
- networkName = 'testnet';
399
- } else if (chain.enum === 'BITCOIN_SIGNET') {
400
- networkName = 'signet';
401
- }
402
- return getNetworkIdFromNetworkName({
403
- networkName
404
- }, dynamicClient);
405
- };
406
- const getConnectedAddresses = async ()=>{
407
- const accounts = await injectedProvider.getAccounts();
408
- return {
409
- addresses: accounts
410
- };
411
- };
412
- const sendBitcoin = async ({ transaction, walletAccount })=>{
413
- await client.assertWalletAccountSigningAvailability({
414
- walletAccount
415
- }, dynamicClient);
416
- const transactionId = await injectedProvider.sendBitcoin(transaction.recipientAddress, Number(transaction.amount));
417
- return {
418
- transactionId
419
- };
420
- };
421
- const signMessage = async ({ message, walletAccount, protocol })=>{
422
- core.assertDefined(walletAccount, 'Wallet account not found');
423
- await client.assertWalletAccountSigningAvailability({
424
- walletAccount
425
- }, dynamicClient);
426
- const signedMessage = await injectedProvider.signMessage(message, protocol);
427
- return {
428
- signature: signedMessage
429
- };
430
- };
431
- const signPsbt = async ({ request, walletAccount })=>{
432
- await client.assertWalletAccountSigningAvailability({
433
- walletAccount
434
- }, dynamicClient);
435
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64);
436
- const signedPsbtHex = await injectedProvider.signPsbt(psbtFromBase64.toHex(), createPsbtOptions({
437
- psbt: psbtFromBase64,
438
- request
439
- }));
440
- return {
441
- signedPsbt: bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64()
442
- };
443
- };
444
- const signPsbts = async ({ requests, walletAccount })=>{
445
- await client.assertWalletAccountSigningAvailability({
446
- walletAccount
447
- }, dynamicClient);
448
- const psbtHexs = [];
449
- const psbtOptions = [];
450
- for (const request of requests){
451
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64);
452
- psbtHexs.push(psbtFromBase64.toHex());
453
- psbtOptions.push(createPsbtOptions({
454
- psbt: psbtFromBase64,
455
- request
456
- }));
457
- }
458
- const signedPsbtHexs = await injectedProvider.signPsbts(psbtHexs, psbtOptions);
459
- return {
460
- signedPsbts: signedPsbtHexs.map((signedPsbtHex)=>bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64())
461
- };
462
- };
463
- const { getEventEmitter, cleanupEventEmitter } = core.createWalletProviderEventEmitter({
464
- removeEventListeners: ()=>{
465
- injectedProvider == null ? void 0 : injectedProvider.removeAllListeners();
466
- },
467
- setupEventListeners: ({ handleAccountsChanged, handleNetworkChanged })=>{
468
- injectedProvider == null ? void 0 : injectedProvider.on('accountsChanged', (addresses)=>{
469
- handleAccountsChanged({
470
- addresses
471
- });
472
- });
473
- injectedProvider == null ? void 0 : injectedProvider.on('networkChanged', (network)=>{
474
- handleNetworkChanged({
475
- networkId: network
476
- });
477
- });
478
- },
479
- supportedEvents: [
480
- 'accountsChanged',
481
- 'networkChanged'
482
- ]
483
- });
484
- const terminate = async ()=>{
485
- cleanupEventEmitter();
486
- };
487
- return {
488
- chain,
489
- connect,
490
- disconnect,
491
- get events () {
492
- return getEventEmitter();
493
- },
494
- getActiveNetworkId,
495
- getConnectedAddresses,
496
- groupKey: core.formatWalletProviderGroupKey(UNISAT_METADATA.displayName),
497
- key,
498
- metadata: UNISAT_METADATA,
499
- sendBitcoin,
500
- signMessage,
501
- signPsbt,
502
- signPsbts,
503
- terminate,
504
- walletProviderType
505
- };
506
- };
507
-
508
- const BITGET_METADATA = {
509
- displayName: 'Bitget Wallet',
510
- icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#bitgetwallet`
511
- };
512
- // The Bitget provider interface is the same as Unisat provider interface
513
- // https://docs.bitkeep.com/en/docs/guide/wallet/btc.html
514
- const createBitgetBitcoinWalletProvider = ({ dynamicClient, injectedProvider })=>{
515
- const unisatWalletProvider = createUnisatWalletProvider({
516
- dynamicClient,
517
- injectedProvider
518
- });
519
- return _extends({}, unisatWalletProvider, {
520
- groupKey: core.formatWalletProviderGroupKey(BITGET_METADATA.displayName),
521
- key: core.formatWalletProviderKey({
522
- chain: unisatWalletProvider.chain,
523
- displayName: BITGET_METADATA.displayName,
524
- walletProviderType: unisatWalletProvider.walletProviderType
525
- }),
526
- metadata: BITGET_METADATA
527
- });
528
- };
529
-
530
- const BITGET_BITCOIN_PROVIDER_LOCATOR = 'bitkeep.unisat';
531
- // The Bitget provider interface is the same as Unisat provider interface
532
- // https://docs.bitkeep.com/en/docs/guide/wallet/btc.html
533
- const getBitgetBitcoinInjectedProvider = ()=>{
534
- return core.getInjectedProviderFromWindow(BITGET_BITCOIN_PROVIDER_LOCATOR);
535
- };
536
-
537
- const convertNetworkIdForPsbt = (networkId)=>{
538
- if (networkId === '1') {
539
- return bitcoinjsLib.networks.bitcoin;
540
- }
541
- // use networks.testnet for both testnet and signet
542
- if (networkId === '2' || networkId === '3') {
543
- return bitcoinjsLib.networks.testnet;
544
- }
545
- return undefined;
546
- };
547
-
548
- const convertNetworkIdToLeatherNetworkName = (networkId)=>{
549
- if (networkId === '1') {
550
- return 'mainnet';
551
- }
552
- if (networkId === '2') {
553
- return 'testnet';
554
- }
555
- if (networkId === '3') {
556
- return 'signet';
557
- }
558
- return undefined;
559
- };
560
-
561
- const LEATHER_METADATA = {
562
- displayName: 'Leather',
563
- icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#leather`
564
- };
565
- const createLeatherBitcoinWalletProvider = ({ dynamicClient, injectedProvider })=>{
566
- const chain = 'BTC';
567
- const walletProviderType = sdkApiCore.WalletProviderEnum.BrowserExtension;
568
- const key = core.formatWalletProviderKey({
569
- chain,
570
- displayName: LEATHER_METADATA.displayName,
571
- walletProviderType
572
- });
573
- const getNetworkPayload = async ()=>{
574
- const { networkId } = await getActiveNetworkId();
575
- const networkName = convertNetworkIdToLeatherNetworkName(networkId);
576
- return {
577
- networkId,
578
- networkName
579
- };
580
- };
581
- const connect = async ()=>{
582
- const response = await injectedProvider.request('getAddresses').catch(({ error })=>{
583
- throw error;
584
- });
585
- const connectedAddresses = response.result.addresses;
586
- const addresses = [];
587
- const ordinalsAddress = connectedAddresses == null ? void 0 : connectedAddresses.find((address)=>address.type === 'p2tr');
588
- if (ordinalsAddress) {
589
- addresses.push({
590
- address: ordinalsAddress.address,
591
- publicKey: ordinalsAddress.publicKey,
592
- type: 'ordinals'
593
- });
594
- }
595
- const paymentAddress = connectedAddresses == null ? void 0 : connectedAddresses.find((address)=>address.type === 'p2wpkh');
596
- if (paymentAddress) {
597
- addresses.push({
598
- address: paymentAddress.address,
599
- publicKey: paymentAddress.publicKey,
600
- type: 'payment'
601
- });
602
- }
603
- return {
604
- addresses
605
- };
606
- };
607
- const getActiveNetworkId = async ()=>core.getActiveNetworkIdFromLastKnownRegistry({
608
- client: dynamicClient,
609
- walletProviderKey: key
610
- });
611
- // there's no specific method to get connected addresses in Leather
612
- const getConnectedAddresses = async ()=>{
613
- const accounts = await connect();
614
- return {
615
- addresses: accounts.addresses.map((address)=>address.address)
616
- };
617
- };
618
- const sendBitcoin = async ({ transaction })=>{
619
- const { networkName } = await getNetworkPayload();
620
- const response = await injectedProvider.request('sendTransfer', {
621
- account: 0,
622
- address: transaction.recipientAddress,
623
- amount: transaction.amount.toString(),
624
- // network is required, so fallback to mainnet
625
- network: networkName != null ? networkName : 'mainnet'
626
- }).catch(({ error })=>{
627
- throw error;
628
- });
629
- return {
630
- transactionId: response.result.txid
631
- };
632
- };
633
- const signMessage = async ({ message, walletAccount, addressType })=>{
634
- core.assertDefined(walletAccount, 'Wallet account not found');
635
- let paymentType = 'p2tr';
636
- if (addressType === 'payment') {
637
- paymentType = 'p2wpkh';
638
- }
639
- const { networkName } = await getNetworkPayload();
640
- const response = await injectedProvider.request('signMessage', {
641
- message,
642
- network: networkName,
643
- paymentType
644
- }).catch(({ error })=>{
645
- throw error;
646
- });
647
- return {
648
- signature: response.result.signature
649
- };
650
- };
651
- const signPsbt = async ({ request })=>{
652
- var _request_signature;
653
- const { networkId, networkName } = await getNetworkPayload();
654
- const psbtNetwork = convertNetworkIdForPsbt(networkId);
655
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64, {
656
- network: psbtNetwork
657
- });
658
- const signAtIndex = (_request_signature = request.signature) == null ? void 0 : _request_signature.flatMap((sig)=>sig.signingIndexes).filter(Number.isInteger);
659
- const response = await injectedProvider.request('signPsbt', {
660
- account: 0,
661
- allowedSighash: request.allowedSighash,
662
- broadcast: false,
663
- hex: psbtFromBase64.toHex(),
664
- // network is required, so fallback to mainnet
665
- network: networkName != null ? networkName : 'mainnet',
666
- signAtIndex
667
- }).catch(({ error })=>{
668
- throw error;
669
- });
670
- const signedPsbtHex = response.result.hex;
671
- return {
672
- signedPsbt: bitcoinjsLib.Psbt.fromHex(signedPsbtHex, {
673
- network: psbtNetwork
674
- }).toBase64()
675
- };
676
- };
677
- const signPsbts = async ({ requests, walletAccount })=>{
678
- const signedPsbts = [];
679
- for (const request of requests){
680
- const signedPsbtResponse = await signPsbt({
681
- request});
682
- if (signedPsbtResponse) {
683
- signedPsbts.push(signedPsbtResponse.signedPsbt);
684
- }
685
- }
686
- return {
687
- signedPsbts
688
- };
689
- };
690
- return {
691
- chain,
692
- connect,
693
- getActiveNetworkId,
694
- getConnectedAddresses,
695
- groupKey: core.formatWalletProviderGroupKey(LEATHER_METADATA.displayName),
696
- key,
697
- metadata: LEATHER_METADATA,
698
- sendBitcoin,
699
- signMessage,
700
- signPsbt,
701
- signPsbts,
702
- walletProviderType
703
- };
704
- };
705
-
706
- const LEATHER_BITCOIN_PROVIDER_LOCATOR = 'LeatherProvider';
707
- const getLeatherBitcoinInjectedProvider = ()=>{
708
- return core.getInjectedProviderFromWindow(LEATHER_BITCOIN_PROVIDER_LOCATOR);
709
- };
710
-
711
- const convertNetworkIdToSatsConnectNetworkType = (networkId)=>{
712
- if (networkId === '2') {
713
- return satsConnect.BitcoinNetworkType.Testnet;
714
- }
715
- if (networkId === '3') {
716
- return satsConnect.BitcoinNetworkType.Signet;
717
- }
718
- // fallback to mainnet
719
- return satsConnect.BitcoinNetworkType.Mainnet;
720
- };
721
-
722
- /**
723
- * This method will create the psbt sign options for SatsConnect for the given request
724
- * It will validate the psbt against the signature data provided in the request
725
- * It will return the inputs to sign if the signature data is provided
726
- */ const getPsbtInputsToSignForSatsConnect = ({ psbt, request, isLegacySatsConnect })=>{
727
- if (!request.signature) {
728
- return [];
729
- }
730
- validatePsbt({
731
- allowedSigHashTypes: request.allowedSighash,
732
- psbt,
733
- signatureData: request.signature
734
- });
735
- const inputsToSign = [];
736
- for (const signature of request.signature){
737
- var _signature_signingIndexes;
738
- if ((_signature_signingIndexes = signature.signingIndexes) == null ? void 0 : _signature_signingIndexes.length) {
739
- for (const index of signature.signingIndexes){
740
- inputsToSign.push({
741
- address: signature.address,
742
- sigHash: isLegacySatsConnect ? getSigHashType({
743
- input: psbt.data.inputs[index]
744
- }) : request.allowedSighash[0],
745
- signingIndexes: [
746
- index
747
- ]
748
- });
749
- }
750
- }
751
- }
752
- return inputsToSign;
753
- };
754
-
755
- const getSatsConnectSigningProtocol = (protocol)=>{
756
- if (!protocol) {
757
- return undefined;
758
- }
759
- return protocol === 'ecdsa' ? satsConnect.MessageSigningProtocols.ECDSA : satsConnect.MessageSigningProtocols.BIP322;
760
- };
761
-
762
- const parseBitcoinConnectionResult = ({ connectedAddresses })=>{
763
- // Xverse will return other addresses/types that we don't support
764
- // so we filter them out
765
- const filteredAddresses = connectedAddresses.filter((address)=>address.purpose === 'ordinals' || address.purpose === 'payment');
766
- const addresses = filteredAddresses.map((account)=>({
767
- address: account.address,
768
- publicKey: account.publicKey,
769
- type: account.purpose === 'payment' ? 'payment' : 'ordinals'
770
- }));
771
- // put ordinals addresses first, as they should be the main walletAccount address
772
- addresses.sort((a)=>a.type === 'ordinals' ? -1 : 1);
773
- return {
774
- addresses
775
- };
776
- };
777
-
778
- const MAGIC_EDEN_METADATA = {
779
- displayName: 'Magic Eden',
780
- icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#magiceden`
781
- };
782
- // https://docs-wallet.magiceden.io/bitcoin/detecting-the-provider
783
- const createMagicEdenBitcoinWalletProvider = ({ dynamicClient, satsConnectProvider })=>{
784
- const chain = 'BTC';
785
- const walletProviderType = sdkApiCore.WalletProviderEnum.BrowserExtension;
786
- const key = core.formatWalletProviderKey({
787
- chain,
788
- displayName: MAGIC_EDEN_METADATA.displayName,
789
- walletProviderType
790
- });
791
- const getNetworkPayload = async ()=>{
792
- const activeNetworkId = await getActiveNetworkId();
793
- const networkType = convertNetworkIdToSatsConnectNetworkType(activeNetworkId.networkId);
794
- return {
795
- network: {
796
- type: networkType
797
- }
798
- };
799
- };
800
- const connect = async ()=>{
801
- const { network } = await getNetworkPayload();
802
- return new Promise((resolve, reject)=>{
803
- void satsConnect.getAddress({
804
- getProvider: async ()=>satsConnectProvider,
805
- onCancel: ()=>{
806
- reject(new client.UserRejectedError({
807
- action: 'connect'
808
- }));
809
- },
810
- onFinish: async (response)=>{
811
- const { addresses: connectedAddresses } = response;
812
- const { addresses } = parseBitcoinConnectionResult({
813
- connectedAddresses
814
- });
815
- resolve({
816
- addresses
817
- });
818
- },
819
- payload: {
820
- message: 'Address for receiving Ordinals and payments',
821
- network,
822
- purposes: [
823
- satsConnect.AddressPurpose.Ordinals,
824
- satsConnect.AddressPurpose.Payment
825
- ]
826
- }
827
- });
828
- });
829
- };
830
- const getActiveNetworkId = async ()=>core.getActiveNetworkIdFromLastKnownRegistry({
831
- client: dynamicClient,
832
- walletProviderKey: key
833
- });
834
- // there's no specific method to get connected addresses in Magic Eden
835
- // so we use the connect method to get the addresses
836
- const getConnectedAddresses = async ()=>{
837
- const { addresses } = await connect();
838
- return {
839
- addresses: addresses.map((address)=>address.address)
840
- };
841
- };
842
- const sendBitcoin = async ({ transaction, walletAccount })=>{
843
- await client.assertWalletAccountSigningAvailability({
844
- walletAccount
845
- }, dynamicClient);
846
- var _getWalletAccountAddressByType;
847
- // should use payment address if available
848
- const senderAddress = (_getWalletAccountAddressByType = client.getWalletAccountAddressByType({
849
- type: 'payment',
850
- walletAccount
851
- })) != null ? _getWalletAccountAddressByType : walletAccount.address;
852
- const { network } = await getNetworkPayload();
853
- return new Promise((resolve, reject)=>{
854
- void satsConnect.sendBtcTransaction({
855
- getProvider: async ()=>satsConnectProvider,
856
- onCancel: ()=>{
857
- reject(new client.UserRejectedError({
858
- action: 'sendBitcoin'
859
- }));
860
- },
861
- onFinish: (response)=>{
862
- resolve({
863
- transactionId: response
864
- });
865
- },
866
- payload: {
867
- network,
868
- recipients: [
869
- {
870
- address: transaction.recipientAddress,
871
- amountSats: BigInt(transaction.amount)
872
- }
873
- ],
874
- senderAddress
875
- }
876
- });
877
- });
878
- };
879
- const signMessage = async ({ message, walletAccount, protocol, addressType })=>{
880
- core.assertDefined(walletAccount, 'Wallet account not found');
881
- await client.assertWalletAccountSigningAvailability({
882
- walletAccount
883
- }, dynamicClient);
884
- const { network } = await getNetworkPayload();
885
- let addressToSignWith = walletAccount.address;
886
- if (addressType) {
887
- var _getWalletAccountAddressByType;
888
- addressToSignWith = (_getWalletAccountAddressByType = client.getWalletAccountAddressByType({
889
- type: addressType,
890
- walletAccount
891
- })) != null ? _getWalletAccountAddressByType : addressToSignWith;
892
- }
893
- return new Promise((resolve, reject)=>{
894
- void satsConnect.signMessage({
895
- getProvider: async ()=>satsConnectProvider,
896
- onCancel: ()=>{
897
- reject(new client.UserRejectedError({
898
- action: 'signMessage'
899
- }));
900
- },
901
- onFinish: async (response)=>{
902
- resolve({
903
- signature: response
904
- });
905
- },
906
- payload: {
907
- address: addressToSignWith,
908
- message: message,
909
- network,
910
- protocol: getSatsConnectSigningProtocol(protocol)
911
- }
912
- });
913
- });
914
- };
915
- const signPsbt = async ({ request, walletAccount })=>{
916
- if (!request.allowedSighash.length) {
917
- throw new InvalidPsbtError('allowedSighash cannot be an empty array');
918
- }
919
- await client.assertWalletAccountSigningAvailability({
920
- walletAccount
921
- }, dynamicClient);
922
- const activeNetworkId = await getActiveNetworkId();
923
- const network = convertNetworkIdForPsbt(activeNetworkId.networkId);
924
- const { network: networkPayload } = await getNetworkPayload();
925
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64, {
926
- network
927
- });
928
- const inputsToSign = getPsbtInputsToSignForSatsConnect({
929
- isLegacySatsConnect: true,
930
- psbt: psbtFromBase64,
931
- request
932
- });
933
- return new Promise((resolve, reject)=>{
934
- void satsConnect.signTransaction({
935
- getProvider: async ()=>satsConnectProvider,
936
- onCancel: ()=>{
937
- reject(new client.UserRejectedError({
938
- action: 'signPsbt'
939
- }));
940
- },
941
- onFinish: (response)=>{
942
- resolve({
943
- signedPsbt: response.psbtBase64
944
- });
945
- },
946
- payload: {
947
- broadcast: false,
948
- inputsToSign,
949
- message: 'Sign Pbst',
950
- network: networkPayload,
951
- psbtBase64: request.unsignedPsbtBase64
952
- }
953
- });
954
- });
955
- };
956
- const signPsbts = async ({ requests, walletAccount })=>{
957
- await client.assertWalletAccountSigningAvailability({
958
- walletAccount
959
- }, dynamicClient);
960
- const activeNetworkId = await getActiveNetworkId();
961
- const network = convertNetworkIdForPsbt(activeNetworkId.networkId);
962
- const { network: networkPayload } = await getNetworkPayload();
963
- const psbtsToSign = [];
964
- for (const request of requests){
965
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64, {
966
- network
967
- });
968
- const inputsToSign = getPsbtInputsToSignForSatsConnect({
969
- isLegacySatsConnect: true,
970
- psbt: psbtFromBase64,
971
- request
972
- });
973
- psbtsToSign.push({
974
- inputsToSign,
975
- psbtBase64: request.unsignedPsbtBase64
976
- });
977
- }
978
- const signMultipleTransactionPayload = {
979
- message: 'Sign Pbsts',
980
- network: networkPayload,
981
- psbts: psbtsToSign
982
- };
983
- // Magic Eden has implemented their own signTransactions feature, and have requested us
984
- // to ensure we use it rather than the general Sats Connect API for this method
985
- const request = jsontokens.createUnsecuredToken(signMultipleTransactionPayload);
986
- const response = await satsConnectProvider.signMultipleTransactions(request);
987
- return {
988
- signedPsbts: response.map((response)=>response.psbtBase64)
989
- };
990
- };
991
- const { getEventEmitter, cleanupEventEmitter } = core.createWalletProviderEventEmitter({
992
- removeEventListeners: ({ setupReturnValue })=>{
993
- core.assertDefined(setupReturnValue, 'Setup return value not defined');
994
- setupReturnValue.removeAccountChangeListener();
995
- },
996
- setupEventListeners: ({ handleAccountsChanged })=>{
997
- const removeAccountChangeListener = satsConnect.addListener('accountsChanged', (accounts)=>{
998
- if (!accounts) {
999
- return;
1000
- }
1001
- handleAccountsChanged({
1002
- addresses: accounts.map((account)=>account.address)
1003
- });
1004
- });
1005
- return {
1006
- removeAccountChangeListener
1007
- };
1008
- },
1009
- supportedEvents: [
1010
- 'accountsChanged'
1011
- ]
1012
- });
1013
- const terminate = async ()=>{
1014
- cleanupEventEmitter();
1015
- };
1016
- return {
1017
- chain,
1018
- connect,
1019
- get events () {
1020
- return getEventEmitter();
1021
- },
1022
- getActiveNetworkId,
1023
- getConnectedAddresses,
1024
- groupKey: core.formatWalletProviderGroupKey(MAGIC_EDEN_METADATA.displayName),
1025
- key,
1026
- metadata: MAGIC_EDEN_METADATA,
1027
- sendBitcoin,
1028
- signMessage,
1029
- signPsbt,
1030
- signPsbts,
1031
- terminate,
1032
- walletProviderType
1033
- };
1034
- };
1035
-
1036
- const MAGIC_EDEN_BITCOIN_PROVIDER_LOCATOR = 'magicEden.bitcoin';
1037
- const getMagicEdenInjectedProvider = ()=>{
1038
- return core.getInjectedProviderFromWindow(MAGIC_EDEN_BITCOIN_PROVIDER_LOCATOR);
1039
- };
1040
-
1041
- const OKX_METADATA = {
1042
- displayName: 'OKX Wallet',
1043
- icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#okx`
1044
- };
1045
- const createOkxBitcoinWalletProvider = ({ dynamicClient, injectedProvider })=>{
1046
- const chain = 'BTC';
1047
- const walletProviderType = sdkApiCore.WalletProviderEnum.BrowserExtension;
1048
- const key = core.formatWalletProviderKey({
1049
- chain,
1050
- displayName: OKX_METADATA.displayName,
1051
- walletProviderType
1052
- });
1053
- const connect = async ()=>{
1054
- const { address, publicKey } = await injectedProvider.connect();
1055
- return {
1056
- addresses: [
1057
- {
1058
- address,
1059
- publicKey
1060
- }
1061
- ]
1062
- };
1063
- };
1064
- const getActiveNetworkId = async ()=>{
1065
- const network = await injectedProvider.getNetwork();
1066
- return getNetworkIdFromNetworkName({
1067
- networkName: network
1068
- }, dynamicClient);
1069
- };
1070
- const getConnectedAddresses = async ()=>{
1071
- const accounts = await injectedProvider.getAccounts();
1072
- return {
1073
- addresses: accounts
1074
- };
1075
- };
1076
- const sendBitcoin = async ({ transaction, walletAccount })=>{
1077
- await client.assertWalletAccountSigningAvailability({
1078
- walletAccount
1079
- }, dynamicClient);
1080
- const transactionId = await injectedProvider.sendBitcoin(transaction.recipientAddress, transaction.amount.toString());
1081
- return {
1082
- transactionId
1083
- };
1084
- };
1085
- const signMessage = async ({ message, walletAccount, protocol })=>{
1086
- core.assertDefined(walletAccount, 'Wallet account not found');
1087
- await client.assertWalletAccountSigningAvailability({
1088
- walletAccount
1089
- }, dynamicClient);
1090
- const signedMessage = await injectedProvider.signMessage(message, protocol);
1091
- return {
1092
- signature: signedMessage
1093
- };
1094
- };
1095
- const signPsbt = async ({ request, walletAccount })=>{
1096
- await client.assertWalletAccountSigningAvailability({
1097
- walletAccount
1098
- }, dynamicClient);
1099
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64);
1100
- const signedPsbtHex = await injectedProvider.signPsbt(psbtFromBase64.toHex(), createPsbtOptions({
1101
- psbt: psbtFromBase64,
1102
- request
1103
- }));
1104
- return {
1105
- signedPsbt: bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64()
1106
- };
1107
- };
1108
- const signPsbts = async ({ requests, walletAccount })=>{
1109
- await client.assertWalletAccountSigningAvailability({
1110
- walletAccount
1111
- }, dynamicClient);
1112
- const psbtHexs = [];
1113
- const psbtOptions = [];
1114
- for (const request of requests){
1115
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64);
1116
- psbtHexs.push(psbtFromBase64.toHex());
1117
- psbtOptions.push(createPsbtOptions({
1118
- psbt: psbtFromBase64,
1119
- request
1120
- }));
1121
- }
1122
- const signedPsbtHexs = await injectedProvider.signPsbts(psbtHexs, psbtOptions);
1123
- return {
1124
- signedPsbts: signedPsbtHexs.map((signedPsbtHex)=>bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64())
1125
- };
1126
- };
1127
- const { getEventEmitter, cleanupEventEmitter } = core.createWalletProviderEventEmitter({
1128
- removeEventListeners: ()=>{
1129
- injectedProvider == null ? void 0 : injectedProvider.removeAllListeners();
1130
- },
1131
- setupEventListeners: ({ handleAccountsChanged })=>{
1132
- injectedProvider == null ? void 0 : injectedProvider.on('accountsChanged', (addresses)=>{
1133
- handleAccountsChanged({
1134
- addresses
1135
- });
1136
- });
1137
- },
1138
- supportedEvents: [
1139
- 'accountsChanged'
1140
- ]
1141
- });
1142
- const terminate = async ()=>{
1143
- cleanupEventEmitter();
1144
- };
1145
- return {
1146
- chain,
1147
- connect,
1148
- get events () {
1149
- return getEventEmitter();
1150
- },
1151
- getActiveNetworkId,
1152
- getConnectedAddresses,
1153
- groupKey: core.formatWalletProviderGroupKey(OKX_METADATA.displayName),
1154
- key,
1155
- metadata: OKX_METADATA,
1156
- sendBitcoin,
1157
- signMessage,
1158
- signPsbt,
1159
- signPsbts,
1160
- terminate,
1161
- walletProviderType
1162
- };
1163
- };
1164
-
1165
- const OKX_BITCOIN_PROVIDER_LOCATOR = 'okxwallet.bitcoin';
1166
- const getOkxBitcoinInjectedProvider = ()=>{
1167
- return core.getInjectedProviderFromWindow(OKX_BITCOIN_PROVIDER_LOCATOR);
1168
- };
1169
-
1170
- const ONEKEY_METADATA = {
1171
- displayName: 'OneKey',
1172
- icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#onekey`
1173
- };
1174
- const createOneKeyBitcoinWalletProvider = ({ dynamicClient, injectedProvider })=>{
1175
- const chain = 'BTC';
1176
- const walletProviderType = sdkApiCore.WalletProviderEnum.BrowserExtension;
1177
- const key = core.formatWalletProviderKey({
1178
- chain,
1179
- displayName: ONEKEY_METADATA.displayName,
1180
- walletProviderType
1181
- });
1182
- const connect = async ()=>{
1183
- const accounts = await injectedProvider.requestAccounts();
1184
- const address = accounts[0];
1185
- const publicKey = await injectedProvider.getPublicKey();
1186
- return {
1187
- addresses: [
1188
- {
1189
- address,
1190
- publicKey
1191
- }
1192
- ]
1193
- };
1194
- };
1195
- const getActiveNetworkId = async ()=>{
1196
- const network = await injectedProvider.getNetwork();
1197
- return getNetworkIdFromNetworkName({
1198
- networkName: network
1199
- }, dynamicClient);
1200
- };
1201
- const getConnectedAddresses = async ()=>{
1202
- const accounts = await injectedProvider.getAccounts();
1203
- return {
1204
- addresses: accounts
1205
- };
1206
- };
1207
- const sendBitcoin = async ({ transaction, walletAccount })=>{
1208
- await client.assertWalletAccountSigningAvailability({
1209
- walletAccount
1210
- }, dynamicClient);
1211
- const transactionId = await injectedProvider.sendBitcoin(transaction.recipientAddress, transaction.amount.toString());
1212
- return {
1213
- transactionId
1214
- };
1215
- };
1216
- const signMessage = async ({ message, walletAccount, protocol })=>{
1217
- core.assertDefined(walletAccount, 'Wallet account not found');
1218
- await client.assertWalletAccountSigningAvailability({
1219
- walletAccount
1220
- }, dynamicClient);
1221
- const signedMessage = await injectedProvider.signMessage(message, protocol);
1222
- return {
1223
- signature: signedMessage
1224
- };
1225
- };
1226
- const signPsbt = async ({ request, walletAccount })=>{
1227
- await client.assertWalletAccountSigningAvailability({
1228
- walletAccount
1229
- }, dynamicClient);
1230
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64);
1231
- const signedPsbtHex = await injectedProvider.signPsbt(psbtFromBase64.toHex(), {
1232
- autoFinalized: false
1233
- });
1234
- return {
1235
- signedPsbt: bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64()
1236
- };
1237
- };
1238
- const signPsbts = async ({ requests, walletAccount })=>{
1239
- await client.assertWalletAccountSigningAvailability({
1240
- walletAccount
1241
- }, dynamicClient);
1242
- const psbtHexs = [];
1243
- for (const request of requests){
1244
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64);
1245
- psbtHexs.push(psbtFromBase64.toHex());
1246
- }
1247
- const signedPsbtHexs = await injectedProvider.signPsbts(psbtHexs, {
1248
- autoFinalized: false
1249
- });
1250
- return {
1251
- signedPsbts: signedPsbtHexs.map((signedPsbtHex)=>bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64())
1252
- };
1253
- };
1254
- const { getEventEmitter, cleanupEventEmitter } = core.createWalletProviderEventEmitter({
1255
- removeEventListeners: ()=>{
1256
- injectedProvider == null ? void 0 : injectedProvider.removeAllListeners();
1257
- },
1258
- setupEventListeners: ({ handleAccountsChanged, handleNetworkChanged })=>{
1259
- injectedProvider == null ? void 0 : injectedProvider.on('accountsChanged', (addresses)=>{
1260
- handleAccountsChanged({
1261
- addresses
1262
- });
1263
- });
1264
- injectedProvider == null ? void 0 : injectedProvider.on('networkChanged', (network)=>{
1265
- handleNetworkChanged({
1266
- networkId: network
1267
- });
1268
- });
1269
- },
1270
- supportedEvents: [
1271
- 'accountsChanged',
1272
- 'networkChanged'
1273
- ]
1274
- });
1275
- const terminate = async ()=>{
1276
- cleanupEventEmitter();
1277
- };
1278
- return {
1279
- chain,
1280
- connect,
1281
- get events () {
1282
- return getEventEmitter();
1283
- },
1284
- getActiveNetworkId,
1285
- getConnectedAddresses,
1286
- groupKey: core.formatWalletProviderGroupKey(ONEKEY_METADATA.displayName),
1287
- key,
1288
- metadata: ONEKEY_METADATA,
1289
- sendBitcoin,
1290
- signMessage,
1291
- signPsbt,
1292
- signPsbts,
1293
- terminate,
1294
- walletProviderType
1295
- };
1296
- };
1297
-
1298
- const ONEKEY_BITCOIN_PROVIDER_LOCATOR = '$onekey.btc';
1299
- const getOneKeyBitcoinInjectedProvider = ()=>{
1300
- return core.getInjectedProviderFromWindow(ONEKEY_BITCOIN_PROVIDER_LOCATOR);
1301
- };
1302
-
1303
- const OYL_METADATA = {
1304
- displayName: 'Oyl Wallet',
1305
- icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#oyl`
1306
- };
1307
- const createOylBitcoinWalletProvider = ({ dynamicClient, injectedProvider })=>{
1308
- const chain = 'BTC';
1309
- const walletProviderType = sdkApiCore.WalletProviderEnum.BrowserExtension;
1310
- const key = core.formatWalletProviderKey({
1311
- chain,
1312
- displayName: OYL_METADATA.displayName,
1313
- walletProviderType
1314
- });
1315
- const connect = async ()=>{
1316
- const connectedAddresses = await injectedProvider.getAddresses();
1317
- const addresses = [];
1318
- const ordinalsAddress = connectedAddresses.taproot;
1319
- if (ordinalsAddress) {
1320
- addresses.push({
1321
- address: ordinalsAddress.address,
1322
- publicKey: ordinalsAddress.publicKey,
1323
- type: 'ordinals'
1324
- });
1325
- }
1326
- const paymentAddress = connectedAddresses.nativeSegwit;
1327
- if (paymentAddress) {
1328
- addresses.push({
1329
- address: paymentAddress.address,
1330
- publicKey: paymentAddress.publicKey,
1331
- type: 'payment'
1332
- });
1333
- }
1334
- return {
1335
- addresses
1336
- };
1337
- };
1338
- const getActiveNetworkId = async ()=>{
1339
- const network = await injectedProvider.getNetwork();
1340
- return getNetworkIdFromNetworkName({
1341
- networkName: network
1342
- }, dynamicClient);
1343
- };
1344
- // there's no specific method to get connected addresses in Oyl
1345
- // so we check if the selected account is connected and return the addresses
1346
- // if not, we return an empty array
1347
- const getConnectedAddresses = async ()=>{
1348
- const isSelectedAccountConnected = await injectedProvider.isConnected();
1349
- if (!isSelectedAccountConnected) {
1350
- return {
1351
- addresses: []
1352
- };
1353
- }
1354
- // calling connect won't prompt the user to connect again if isConnected is true
1355
- const { addresses } = await connect();
1356
- return {
1357
- addresses: addresses.map((address)=>address.address)
1358
- };
1359
- };
1360
- const signMessage = async ({ message, walletAccount, addressType, protocol })=>{
1361
- core.assertDefined(walletAccount, 'Wallet account not found');
1362
- await client.assertWalletAccountSigningAvailability({
1363
- walletAccount
1364
- }, dynamicClient);
1365
- let addressToSignWith = walletAccount.address;
1366
- if (addressType) {
1367
- var _getWalletAccountAddressByType;
1368
- addressToSignWith = (_getWalletAccountAddressByType = client.getWalletAccountAddressByType({
1369
- type: addressType,
1370
- walletAccount
1371
- })) != null ? _getWalletAccountAddressByType : addressToSignWith;
1372
- }
1373
- const result = await injectedProvider.signMessage({
1374
- address: addressToSignWith,
1375
- message,
1376
- // Oyl Wallet calls it just bip322 instead of bip322-simple
1377
- protocol: protocol === 'bip322-simple' ? 'bip322' : protocol
1378
- });
1379
- return {
1380
- signature: result.signature
1381
- };
1382
- };
1383
- const signPsbt = async ({ request, walletAccount })=>{
1384
- await client.assertWalletAccountSigningAvailability({
1385
- walletAccount
1386
- }, dynamicClient);
1387
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64);
1388
- const { psbt: signedPsbtHex } = await injectedProvider.signPsbt({
1389
- broadcast: false,
1390
- finalize: false,
1391
- psbt: psbtFromBase64.toHex()
1392
- });
1393
- return {
1394
- signedPsbt: bitcoinjsLib.Psbt.fromHex(signedPsbtHex).toBase64()
1395
- };
1396
- };
1397
- const signPsbts = async ({ requests, walletAccount })=>{
1398
- await client.assertWalletAccountSigningAvailability({
1399
- walletAccount
1400
- }, dynamicClient);
1401
- const signedPsbts = [];
1402
- for (const request of requests){
1403
- const signedPsbtResponse = await signPsbt({
1404
- request,
1405
- walletAccount
1406
- });
1407
- if (signedPsbtResponse) {
1408
- signedPsbts.push(signedPsbtResponse.signedPsbt);
1409
- }
1410
- }
1411
- return {
1412
- signedPsbts
1413
- };
1414
- };
1415
- return {
1416
- chain,
1417
- connect,
1418
- getActiveNetworkId,
1419
- getConnectedAddresses,
1420
- groupKey: core.formatWalletProviderGroupKey(OYL_METADATA.displayName),
1421
- key,
1422
- metadata: OYL_METADATA,
1423
- signMessage,
1424
- signPsbt,
1425
- signPsbts,
1426
- walletProviderType
1427
- };
1428
- };
1429
-
1430
- const OYL_BITCOIN_PROVIDER_LOCATOR = 'oyl';
1431
- const getOylBitcoinInjectedProvider = ()=>{
1432
- return core.getInjectedProviderFromWindow(OYL_BITCOIN_PROVIDER_LOCATOR);
1433
- };
1434
-
1435
- const PHANTOM_METADATA = {
1436
- displayName: 'Phantom',
1437
- icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#phantom`
1438
- };
1439
- const createPhantomBitcoinWalletProvider = ({ dynamicClient, injectedProvider })=>{
1440
- const chain = 'BTC';
1441
- const walletProviderType = sdkApiCore.WalletProviderEnum.BrowserExtension;
1442
- const key = core.formatWalletProviderKey({
1443
- chain,
1444
- displayName: PHANTOM_METADATA.displayName,
1445
- walletProviderType
1446
- });
1447
- const connect = async ()=>{
1448
- const accounts = await injectedProvider.requestAccounts();
1449
- const addresses = accounts.map((account)=>({
1450
- address: account.address,
1451
- publicKey: account.publicKey,
1452
- type: account.purpose === 'payment' ? 'payment' : 'ordinals'
1453
- }));
1454
- // put ordinals addresses first, as they should be the main walletAccount address
1455
- addresses.sort((a)=>a.type === 'ordinals' ? -1 : 1);
1456
- return {
1457
- addresses
1458
- };
1459
- };
1460
- const getActiveNetworkId = async ()=>core.getActiveNetworkIdFromLastKnownRegistry({
1461
- client: dynamicClient,
1462
- walletProviderKey: key
1463
- });
1464
- // there's no specific method to get connected addresses in Phantom
1465
- // so we use the connect method to get the addresses
1466
- const getConnectedAddresses = async ()=>{
1467
- const { addresses } = await connect();
1468
- return {
1469
- addresses: addresses.map((address)=>address.address)
1470
- };
1471
- };
1472
- const signMessage = async ({ message, walletAccount, addressType })=>{
1473
- core.assertDefined(walletAccount, 'Wallet account not found');
1474
- await client.assertWalletAccountSigningAvailability({
1475
- walletAccount
1476
- }, dynamicClient);
1477
- let addressToSignWith = walletAccount.address;
1478
- if (addressType) {
1479
- var _getWalletAccountAddressByType;
1480
- addressToSignWith = (_getWalletAccountAddressByType = client.getWalletAccountAddressByType({
1481
- type: addressType,
1482
- walletAccount
1483
- })) != null ? _getWalletAccountAddressByType : addressToSignWith;
1484
- }
1485
- const result = await injectedProvider.signMessage(addressToSignWith, new TextEncoder().encode(message));
1486
- return {
1487
- signature: core.getBuffer().from(result.signature).toString('base64')
1488
- };
1489
- };
1490
- const signPsbt = async ({ request, walletAccount })=>{
1491
- var _request_signature;
1492
- await client.assertWalletAccountSigningAvailability({
1493
- walletAccount
1494
- }, dynamicClient);
1495
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64);
1496
- var _request_signature_map;
1497
- const inputsToSign = (_request_signature_map = (_request_signature = request.signature) == null ? void 0 : _request_signature.map((sig)=>{
1498
- var _sig_signingIndexes;
1499
- return {
1500
- address: sig.address,
1501
- sigHash: request.allowedSighash[0],
1502
- signingIndexes: (_sig_signingIndexes = sig.signingIndexes) != null ? _sig_signingIndexes : []
1503
- };
1504
- })) != null ? _request_signature_map : [];
1505
- const signedPsbt = await injectedProvider.signPSBT(psbtFromBase64.toBuffer(), {
1506
- inputsToSign
1507
- });
1508
- return {
1509
- signedPsbt: bitcoinjsLib.Psbt.fromBuffer(signedPsbt).toBase64()
1510
- };
1511
- };
1512
- const signPsbts = async ({ requests, walletAccount })=>{
1513
- await client.assertWalletAccountSigningAvailability({
1514
- walletAccount
1515
- }, dynamicClient);
1516
- const signedPsbts = [];
1517
- for (const request of requests){
1518
- const signedPsbtResponse = await signPsbt({
1519
- request,
1520
- walletAccount
1521
- });
1522
- if (signedPsbtResponse) {
1523
- signedPsbts.push(signedPsbtResponse.signedPsbt);
1524
- }
1525
- }
1526
- return {
1527
- signedPsbts
1528
- };
1529
- };
1530
- const { getEventEmitter, cleanupEventEmitter } = core.createWalletProviderEventEmitter({
1531
- removeEventListeners: ()=>{
1532
- injectedProvider == null ? void 0 : injectedProvider.removeAllListeners();
1533
- },
1534
- setupEventListeners: ({ handleAccountsChanged })=>{
1535
- injectedProvider == null ? void 0 : injectedProvider.on('accountsChanged', (accounts)=>{
1536
- handleAccountsChanged({
1537
- addresses: accounts.map((account)=>account.address)
1538
- });
1539
- });
1540
- },
1541
- supportedEvents: [
1542
- 'accountsChanged'
1543
- ]
1544
- });
1545
- const terminate = async ()=>{
1546
- cleanupEventEmitter();
1547
- };
1548
- return {
1549
- chain,
1550
- connect,
1551
- get events () {
1552
- return getEventEmitter();
1553
- },
1554
- getActiveNetworkId,
1555
- getConnectedAddresses,
1556
- groupKey: core.formatWalletProviderGroupKey(PHANTOM_METADATA.displayName),
1557
- key,
1558
- metadata: PHANTOM_METADATA,
1559
- signMessage,
1560
- signPsbt,
1561
- signPsbts,
1562
- terminate,
1563
- walletProviderType
1564
- };
1565
- };
1566
-
1567
- const PHANTOM_BITCOIN_PROVIDER_LOCATOR = 'phantom.bitcoin';
1568
- const getPhantomInjectedProvider = ()=>{
1569
- return core.getInjectedProviderFromWindow(PHANTOM_BITCOIN_PROVIDER_LOCATOR);
1570
- };
1571
-
1572
- // using `unisat_wallet` instead of `unisat` to avoid conflicts with other wallets
1573
- // injecting themselves into the window.unisat object, like OneKey wallet.
1574
- const UNISAT_PROVIDER_LOCATOR = 'unisat_wallet';
1575
- const getUnisatInjectedProvider = ()=>{
1576
- return core.getInjectedProviderFromWindow(UNISAT_PROVIDER_LOCATOR);
1577
- };
1578
-
1579
- const signMultipleTransactionsWithSatsConnect = async ({ network, psbts, provider })=>{
1580
- const response = await new Promise((resolve, reject)=>{
1581
- void satsConnect.signMultipleTransactions({
1582
- getProvider: ()=>Promise.resolve(provider),
1583
- onCancel: ()=>{
1584
- reject(new client.UserRejectedError({
1585
- action: 'sign psbts'
1586
- }));
1587
- },
1588
- onFinish: (response)=>{
1589
- resolve(response);
1590
- },
1591
- payload: {
1592
- message: 'Sign Psbts',
1593
- network,
1594
- psbts
1595
- }
1596
- });
1597
- });
1598
- return {
1599
- signedPsbts: response.map((response)=>response.psbtBase64)
1600
- };
1601
- };
1602
-
1603
- const XVERSE_METADATA = {
1604
- displayName: 'Xverse',
1605
- icon: `${core.DYNAMIC_ICONIC_SPRITE_URL}#xverse`
1606
- };
1607
- // https://docs.xverse.app/sats-connect/wallet-methods/request-methods
1608
- const createXverseBitcoinWalletProvider = ({ dynamicClient, satsConnectProvider })=>{
1609
- const chain = 'BTC';
1610
- const walletProviderType = sdkApiCore.WalletProviderEnum.BrowserExtension;
1611
- const key = core.formatWalletProviderKey({
1612
- chain,
1613
- displayName: XVERSE_METADATA.displayName,
1614
- walletProviderType
1615
- });
1616
- const requestPermissions = async ()=>{
1617
- const response = await satsConnect.request('wallet_requestPermissions', undefined);
1618
- if (response.status === 'success') {
1619
- return;
1620
- }
1621
- throw response.error;
1622
- };
1623
- const connect = async ()=>{
1624
- // requesting permissions on initial connect will avoid
1625
- // connection prompt for other requests
1626
- await requestPermissions();
1627
- const response = await satsConnect.request('wallet_connect', null);
1628
- if (response.status !== 'success') {
1629
- throw response.error;
1630
- }
1631
- const { addresses: connectedAddresses } = response.result;
1632
- const { addresses } = parseBitcoinConnectionResult({
1633
- connectedAddresses
1634
- });
1635
- return {
1636
- addresses
1637
- };
1638
- };
1639
- const disconnect = async ()=>{
1640
- await satsConnect.request('wallet_renouncePermissions', null);
1641
- };
1642
- const getActiveNetworkId = async ()=>{
1643
- const response = await satsConnect.request('wallet_getNetwork', null);
1644
- let networkName = 'mainnet';
1645
- if (response.status === 'success') {
1646
- networkName = response.result.bitcoin.name.toLowerCase();
1647
- }
1648
- return getNetworkIdFromNetworkName({
1649
- networkName
1650
- }, dynamicClient);
1651
- };
1652
- const getConnectedAddresses = async ()=>{
1653
- const response = await satsConnect.request('wallet_getAccount', null);
1654
- if (response.status === 'success') {
1655
- return {
1656
- addresses: response.result.addresses.map((address)=>address.address)
1657
- };
1658
- }
1659
- if (response.error.code !== satsConnect.RpcErrorCode.ACCESS_DENIED) {
1660
- throw response.error;
1661
- }
1662
- // if error is access denied, it means that the selected account is not
1663
- // connected to the app, so return empty array
1664
- return {
1665
- addresses: []
1666
- };
1667
- };
1668
- const sendBitcoin = async ({ transaction, walletAccount })=>{
1669
- await client.assertWalletAccountSigningAvailability({
1670
- walletAccount
1671
- }, dynamicClient);
1672
- const response = await satsConnect.request('sendTransfer', {
1673
- recipients: [
1674
- {
1675
- address: transaction.recipientAddress,
1676
- amount: Number(transaction.amount)
1677
- }
1678
- ]
1679
- });
1680
- if (response.status !== 'success') {
1681
- throw response.error;
1682
- }
1683
- return {
1684
- transactionId: response.result.txid
1685
- };
1686
- };
1687
- const signMessage = async ({ message, walletAccount, protocol, addressType })=>{
1688
- core.assertDefined(walletAccount, 'Wallet account not found');
1689
- await client.assertWalletAccountSigningAvailability({
1690
- walletAccount
1691
- }, dynamicClient);
1692
- let addressToSignWith = walletAccount.address;
1693
- if (addressType) {
1694
- var _getWalletAccountAddressByType;
1695
- addressToSignWith = (_getWalletAccountAddressByType = client.getWalletAccountAddressByType({
1696
- type: addressType,
1697
- walletAccount
1698
- })) != null ? _getWalletAccountAddressByType : addressToSignWith;
1699
- }
1700
- const response = await satsConnect.request('signMessage', {
1701
- address: addressToSignWith,
1702
- message,
1703
- protocol: getSatsConnectSigningProtocol(protocol)
1704
- });
1705
- if (response.status !== 'success') {
1706
- throw response.error;
1707
- }
1708
- return {
1709
- signature: response.result.signature
1710
- };
1711
- };
1712
- const signPsbt = async ({ request, walletAccount })=>{
1713
- if (!request.allowedSighash.length) {
1714
- throw new InvalidPsbtError('allowedSighash cannot be an empty array');
1715
- }
1716
- await client.assertWalletAccountSigningAvailability({
1717
- walletAccount
1718
- }, dynamicClient);
1719
- const activeNetworkId = await getActiveNetworkId();
1720
- const network = convertNetworkIdForPsbt(activeNetworkId.networkId);
1721
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64, {
1722
- network
1723
- });
1724
- const inputsToSign = getPsbtInputsToSignForSatsConnect({
1725
- psbt: psbtFromBase64,
1726
- request
1727
- });
1728
- const signPbstPayload = {
1729
- broadcast: false,
1730
- psbt: request.unsignedPsbtBase64,
1731
- // we have to combine signing indexes for like addresses
1732
- signInputs: inputsToSign.reduce((accum, curr)=>{
1733
- if (!accum[curr.address]) {
1734
- accum[curr.address] = [];
1735
- }
1736
- accum[curr.address].push(...curr.signingIndexes);
1737
- return accum;
1738
- }, {})
1739
- };
1740
- const response = await satsConnect.request('signPsbt', signPbstPayload);
1741
- if (response.status !== 'success') {
1742
- throw response.error;
1743
- }
1744
- return {
1745
- signedPsbt: response.result.psbt
1746
- };
1747
- };
1748
- const signPsbts = async ({ requests, walletAccount })=>{
1749
- await client.assertWalletAccountSigningAvailability({
1750
- walletAccount
1751
- }, dynamicClient);
1752
- const activeNetworkId = await getActiveNetworkId();
1753
- const network = convertNetworkIdForPsbt(activeNetworkId.networkId);
1754
- const networkType = convertNetworkIdToSatsConnectNetworkType(activeNetworkId.networkId);
1755
- const psbtsToSign = [];
1756
- for (const request of requests){
1757
- const psbtFromBase64 = bitcoinjsLib.Psbt.fromBase64(request.unsignedPsbtBase64, {
1758
- network
1759
- });
1760
- const inputsToSign = getPsbtInputsToSignForSatsConnect({
1761
- psbt: psbtFromBase64,
1762
- request
1763
- });
1764
- psbtsToSign.push({
1765
- inputsToSign,
1766
- psbtBase64: request.unsignedPsbtBase64
1767
- });
1768
- }
1769
- const response = await signMultipleTransactionsWithSatsConnect({
1770
- network: {
1771
- type: networkType
1772
- },
1773
- provider: satsConnectProvider,
1774
- psbts: psbtsToSign
1775
- });
1776
- return {
1777
- signedPsbts: response.signedPsbts
1778
- };
1779
- };
1780
- const { getEventEmitter, cleanupEventEmitter } = core.createWalletProviderEventEmitter({
1781
- removeEventListeners: ({ setupReturnValue })=>{
1782
- core.assertDefined(setupReturnValue, 'Setup return value not defined');
1783
- setupReturnValue.removeAccountChangeListener();
1784
- setupReturnValue.accountDisconnectedListener();
1785
- },
1786
- setupEventListeners: ({ handleAccountsChanged, handleDisconnected })=>{
1787
- const removeAccountChangeListener = satsConnect.addListener('accountChange', ({ addresses })=>{
1788
- if (!addresses) {
1789
- return;
1790
- }
1791
- handleAccountsChanged({
1792
- addresses: addresses.map((address)=>address.address)
1793
- });
1794
- });
1795
- const accountDisconnectedListener = satsConnect.addListener('accountDisconnected', ()=>{
1796
- handleDisconnected();
1797
- });
1798
- return {
1799
- accountDisconnectedListener,
1800
- removeAccountChangeListener
1801
- };
1802
- },
1803
- supportedEvents: [
1804
- 'accountsChanged',
1805
- 'disconnected'
1806
- ]
1807
- });
1808
- const terminate = async ()=>{
1809
- cleanupEventEmitter();
1810
- };
1811
- return {
1812
- chain,
1813
- connect,
1814
- disconnect,
1815
- get events () {
1816
- return getEventEmitter();
1817
- },
1818
- getActiveNetworkId,
1819
- getConnectedAddresses,
1820
- groupKey: core.formatWalletProviderGroupKey(XVERSE_METADATA.displayName),
1821
- key,
1822
- metadata: XVERSE_METADATA,
1823
- sendBitcoin,
1824
- signMessage,
1825
- signPsbt,
1826
- signPsbts,
1827
- terminate,
1828
- walletProviderType
1829
- };
1830
- };
1831
-
1832
- const XVERSE_BITCOIN_PROVIDER_LOCATOR = 'XverseProviders.BitcoinProvider';
1833
- const getXverseInjectedProvider = ()=>{
1834
- return core.getInjectedProviderFromWindow(XVERSE_BITCOIN_PROVIDER_LOCATOR);
1835
- };
1836
-
1837
- const BITCOIN_INJECTED_WALLETS_EXTENSION_KEY = 'bitcoinInjectedWallets';
1838
- /**
1839
- * Adds the Bitcoin Injected Wallets extension to the Dynamic client.
1840
- *
1841
- * This extension enables integration with many Bitcoin wallets, like MagicEden, Xverse, Unisat, Phantom, and more.
1842
- *
1843
- * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
1844
- */ const addBitcoinInjectedWalletsExtension = (client = core.getDefaultClient())=>{
1845
- if (core.hasExtension({
1846
- extensionKey: BITCOIN_INJECTED_WALLETS_EXTENSION_KEY
1847
- }, client)) {
1848
- return;
1849
- }
1850
- core.registerExtension({
1851
- extensionKey: BITCOIN_INJECTED_WALLETS_EXTENSION_KEY
1852
- }, client);
1853
- registerBitcoinNetworkProviderBuilder(client);
1854
- const walletProviderRegistry = core.getWalletProviderRegistry(client);
1855
- const injectedWalletProviders = [];
1856
- // Create and register Unisat wallet provider
1857
- const unisatInjectedProvider = getUnisatInjectedProvider();
1858
- if (unisatInjectedProvider) {
1859
- const unisatWalletProvider = createUnisatWalletProvider({
1860
- dynamicClient: client,
1861
- injectedProvider: unisatInjectedProvider
1862
- });
1863
- injectedWalletProviders.push(unisatWalletProvider);
1864
- }
1865
- // Create and register Phantom wallet provider
1866
- const phantomInjectedProvider = getPhantomInjectedProvider();
1867
- if (phantomInjectedProvider) {
1868
- const phantomWalletProvider = createPhantomBitcoinWalletProvider({
1869
- dynamicClient: client,
1870
- injectedProvider: phantomInjectedProvider
1871
- });
1872
- injectedWalletProviders.push(phantomWalletProvider);
1873
- }
1874
- // Create and register Xverse wallet provider
1875
- const xverseInjectedProvider = getXverseInjectedProvider();
1876
- if (xverseInjectedProvider) {
1877
- const xverseWalletProvider = createXverseBitcoinWalletProvider({
1878
- dynamicClient: client,
1879
- satsConnectProvider: xverseInjectedProvider
1880
- });
1881
- injectedWalletProviders.push(xverseWalletProvider);
1882
- }
1883
- // Create and register MagicEden wallet provider
1884
- const magicEdenInjectedProvider = getMagicEdenInjectedProvider();
1885
- if (magicEdenInjectedProvider) {
1886
- const magicEdenWalletProvider = createMagicEdenBitcoinWalletProvider({
1887
- dynamicClient: client,
1888
- satsConnectProvider: magicEdenInjectedProvider
1889
- });
1890
- injectedWalletProviders.push(magicEdenWalletProvider);
1891
- }
1892
- // Create and register OKX wallet provider
1893
- const okxInjectedProvider = getOkxBitcoinInjectedProvider();
1894
- if (okxInjectedProvider) {
1895
- const okxWalletProvider = createOkxBitcoinWalletProvider({
1896
- dynamicClient: client,
1897
- injectedProvider: okxInjectedProvider
1898
- });
1899
- injectedWalletProviders.push(okxWalletProvider);
1900
- }
1901
- // Create and register OneKey wallet provider
1902
- const oneKeyInjectedProvider = getOneKeyBitcoinInjectedProvider();
1903
- if (oneKeyInjectedProvider) {
1904
- const oneKeyWalletProvider = createOneKeyBitcoinWalletProvider({
1905
- dynamicClient: client,
1906
- injectedProvider: oneKeyInjectedProvider
1907
- });
1908
- injectedWalletProviders.push(oneKeyWalletProvider);
1909
- }
1910
- // Create and register Bitget wallet provider
1911
- const bitgetInjectedProvider = getBitgetBitcoinInjectedProvider();
1912
- if (bitgetInjectedProvider) {
1913
- const bitgetWalletProvider = createBitgetBitcoinWalletProvider({
1914
- dynamicClient: client,
1915
- injectedProvider: bitgetInjectedProvider
1916
- });
1917
- injectedWalletProviders.push(bitgetWalletProvider);
1918
- }
1919
- // Create and register Binance wallet provider
1920
- const binanceInjectedProvider = getBinanceBitcoinInjectedProvider();
1921
- if (binanceInjectedProvider) {
1922
- const binanceWalletProvider = createBinanceBitcoinWalletProvider({
1923
- dynamicClient: client,
1924
- injectedProvider: binanceInjectedProvider
1925
- });
1926
- injectedWalletProviders.push(binanceWalletProvider);
1927
- }
1928
- // Create and register OYL wallet provider
1929
- const oylInjectedProvider = getOylBitcoinInjectedProvider();
1930
- if (oylInjectedProvider) {
1931
- const oylWalletProvider = createOylBitcoinWalletProvider({
1932
- dynamicClient: client,
1933
- injectedProvider: oylInjectedProvider
1934
- });
1935
- injectedWalletProviders.push(oylWalletProvider);
1936
- }
1937
- // Create and register Leather wallet provider
1938
- const leatherInjectedProvider = getLeatherBitcoinInjectedProvider();
1939
- if (leatherInjectedProvider) {
1940
- const leatherWalletProvider = createLeatherBitcoinWalletProvider({
1941
- dynamicClient: client,
1942
- injectedProvider: leatherInjectedProvider
1943
- });
1944
- injectedWalletProviders.push(leatherWalletProvider);
1945
- }
1946
- injectedWalletProviders.forEach((walletProvider)=>{
1947
- walletProviderRegistry.register({
1948
- priority: core.WalletProviderPriority.WINDOW_INJECT,
1949
- walletProvider
1950
- });
1951
- });
1952
- };
1953
-
1954
- exports.InvalidPsbtError = InvalidPsbtError;
1955
- exports.addBitcoinInjectedWalletsExtension = addBitcoinInjectedWalletsExtension;
1956
- exports.getMempoolApiUrl = getMempoolApiUrl;
1957
- exports.name = name;
1958
- exports.version = version;