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