@dynamic-labs-sdk/bitcoin 1.29.0 → 1.30.1

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 (84) hide show
  1. package/dist/{InvalidPsbtError-nAb75Fvm.esm.js → InvalidPsbtError---EksGFV.esm.js} +2 -2
  2. package/dist/InvalidPsbtError---EksGFV.esm.js.map +1 -0
  3. package/dist/{InvalidPsbtError-D0F2EZEI.cjs → InvalidPsbtError-Co4JpLEg.cjs} +3 -3
  4. package/dist/InvalidPsbtError-Co4JpLEg.cjs.map +1 -0
  5. package/dist/{addBitcoinInjectedWalletsExtension-DXYVv-LJ.cjs → addBitcoinInjectedWalletsExtension-Cjdtb-WZ.cjs} +3 -3
  6. package/dist/addBitcoinInjectedWalletsExtension-Cjdtb-WZ.cjs.map +1 -0
  7. package/dist/{addBitcoinInjectedWalletsExtension-Co7mtOVg.esm.js → addBitcoinInjectedWalletsExtension-DnM0BaED.esm.js} +2 -2
  8. package/dist/addBitcoinInjectedWalletsExtension-DnM0BaED.esm.js.map +1 -0
  9. package/dist/{addWaasBitcoinExtension-B_rWSexg.esm.js → addWaasBitcoinExtension-DoQJ97lm.esm.js} +2 -2
  10. package/dist/addWaasBitcoinExtension-DoQJ97lm.esm.js.map +1 -0
  11. package/dist/{addWaasBitcoinExtension-BJU5cWG0.cjs → addWaasBitcoinExtension-uxacWtB7.cjs} +2 -2
  12. package/dist/addWaasBitcoinExtension-uxacWtB7.cjs.map +1 -0
  13. package/dist/exports/index.d.ts +1 -0
  14. package/dist/exports/index.d.ts.map +1 -1
  15. package/dist/index.cjs +92 -3
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.esm.js +93 -5
  18. package/dist/index.esm.js.map +1 -1
  19. package/dist/injected/utils/binance/getBinanceBitcoinInjectedProvider/getBinanceBitcoinInjectedProvider.d.ts.map +1 -1
  20. package/dist/injected/utils/bitget/getBitgetBitcoinInjectedProvider/getBitgetBitcoinInjectedProvider.d.ts.map +1 -1
  21. package/dist/injected/utils/leather/getLeatherBitcoinInjectedProvider/getLeatherBitcoinInjectedProvider.d.ts +2 -1
  22. package/dist/injected/utils/leather/getLeatherBitcoinInjectedProvider/getLeatherBitcoinInjectedProvider.d.ts.map +1 -1
  23. package/dist/injected/utils/magicEden/getMagicEdenInjectedProvider/getMagicEdenInjectedProvider.d.ts.map +1 -1
  24. package/dist/injected/utils/okx/getOkxBitcoinInjectedProvider/getOkxBitcoinInjectedProvider.d.ts.map +1 -1
  25. package/dist/injected/utils/oneKey/getOneKeyBitcoinInjectedProvider/getOneKeyBitcoinInjectedProvider.d.ts.map +1 -1
  26. package/dist/injected/utils/oyl/getOylBitcoinInjectedProvider/getOylBitcoinInjectedProvider.d.ts.map +1 -1
  27. package/dist/injected/utils/phantom/getPhantomInjectedProvider/getPhantomInjectedProvider.d.ts.map +1 -1
  28. package/dist/injected/utils/unisat/getUnisatInjectedProvider/getUnisatInjectedProvider.d.ts.map +1 -1
  29. package/dist/injected/utils/xverse/getXverseInjectedProvider/getXverseInjectedProvider.d.ts.map +1 -1
  30. package/dist/injected.cjs +3 -3
  31. package/dist/injected.esm.js +2 -2
  32. package/dist/screenBitcoinTransactions/index.d.ts +2 -0
  33. package/dist/screenBitcoinTransactions/index.d.ts.map +1 -0
  34. package/dist/screenBitcoinTransactions/screenBitcoinTransactions.d.ts +66 -0
  35. package/dist/screenBitcoinTransactions/screenBitcoinTransactions.d.ts.map +1 -0
  36. package/dist/sendRawTransaction/sendRawTransaction.d.ts +4 -3
  37. package/dist/sendRawTransaction/sendRawTransaction.d.ts.map +1 -1
  38. package/dist/signMessageWithCustomOptions/signMessageWithCustomOptions.d.ts +4 -3
  39. package/dist/signMessageWithCustomOptions/signMessageWithCustomOptions.d.ts.map +1 -1
  40. package/dist/signPsbt/signPsbt.d.ts +4 -3
  41. package/dist/signPsbt/signPsbt.d.ts.map +1 -1
  42. package/dist/signPsbts/signPsbts.d.ts +4 -3
  43. package/dist/signPsbts/signPsbts.d.ts.map +1 -1
  44. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  45. package/dist/utils/bitcoinTransferAmount/bitcoinTransferAmount.d.ts +5 -3
  46. package/dist/utils/bitcoinTransferAmount/bitcoinTransferAmount.d.ts.map +1 -1
  47. package/dist/utils/convertNetworkIdForPsbt/convertNetworkIdForPsbt.d.ts.map +1 -1
  48. package/dist/utils/convertNetworkIdToSatsConnectNetworkType/convertNetworkIdToSatsConnectNetworkType.d.ts.map +1 -1
  49. package/dist/utils/createPsbtOptions/createPsbtOptions.d.ts +1 -1
  50. package/dist/utils/createPsbtOptions/createPsbtOptions.d.ts.map +1 -1
  51. package/dist/utils/getBitcoinScreeningChainId/getBitcoinScreeningChainId.d.ts +18 -0
  52. package/dist/utils/getBitcoinScreeningChainId/getBitcoinScreeningChainId.d.ts.map +1 -0
  53. package/dist/utils/getBitcoinScreeningChainId/index.d.ts +2 -0
  54. package/dist/utils/getBitcoinScreeningChainId/index.d.ts.map +1 -0
  55. package/dist/utils/getMempoolApiUrl/getMempoolApiUrl.d.ts +4 -1
  56. package/dist/utils/getMempoolApiUrl/getMempoolApiUrl.d.ts.map +1 -1
  57. package/dist/utils/getNetworkIdFromNetworkName/getNetworkIdFromNetworkName.d.ts +3 -2
  58. package/dist/utils/getNetworkIdFromNetworkName/getNetworkIdFromNetworkName.d.ts.map +1 -1
  59. package/dist/utils/getPsbtInputsToSignForSatsConnect/getPsbtInputsToSignForSatsConnect.d.ts +1 -1
  60. package/dist/utils/getPsbtInputsToSignForSatsConnect/getPsbtInputsToSignForSatsConnect.d.ts.map +1 -1
  61. package/dist/utils/getSigHashType/getSigHashType.d.ts +1 -1
  62. package/dist/utils/getSigHashType/getSigHashType.d.ts.map +1 -1
  63. package/dist/utils/parseBitcoinConnectionResult/parseBitcoinConnectionResult.d.ts +3 -2
  64. package/dist/utils/parseBitcoinConnectionResult/parseBitcoinConnectionResult.d.ts.map +1 -1
  65. package/dist/utils/satoshisToBtc/satoshisToBtc.d.ts.map +1 -1
  66. package/dist/utils/signMultipleTransactionsWithSatsConnect/signMultipleTransactionsWithSatsConnect.d.ts +4 -3
  67. package/dist/utils/signMultipleTransactionsWithSatsConnect/signMultipleTransactionsWithSatsConnect.d.ts.map +1 -1
  68. package/dist/utils/validatePsbt/validatePsbt.d.ts +1 -1
  69. package/dist/utils/validatePsbt/validatePsbt.d.ts.map +1 -1
  70. package/dist/utils/validatePsbt/validateSigHash/validateSigHash.d.ts.map +1 -1
  71. package/dist/utils/validatePsbt/validateSigningAddress/validateSigningAddress.d.ts.map +1 -1
  72. package/dist/waas/utils/selectUTXOsLargestFirst/selectUTXOsLargestFirst.d.ts +1 -1
  73. package/dist/waas/utils/selectUTXOsLargestFirst/selectUTXOsLargestFirst.d.ts.map +1 -1
  74. package/dist/waas/utils/validateAndSelectUTXOs/validateAndSelectUTXOs.d.ts +1 -1
  75. package/dist/waas/utils/validateAndSelectUTXOs/validateAndSelectUTXOs.d.ts.map +1 -1
  76. package/dist/waas.cjs +2 -2
  77. package/dist/waas.esm.js +2 -2
  78. package/package.json +3 -3
  79. package/dist/InvalidPsbtError-D0F2EZEI.cjs.map +0 -1
  80. package/dist/InvalidPsbtError-nAb75Fvm.esm.js.map +0 -1
  81. package/dist/addBitcoinInjectedWalletsExtension-Co7mtOVg.esm.js.map +0 -1
  82. package/dist/addBitcoinInjectedWalletsExtension-DXYVv-LJ.cjs.map +0 -1
  83. package/dist/addWaasBitcoinExtension-BJU5cWG0.cjs.map +0 -1
  84. package/dist/addWaasBitcoinExtension-B_rWSexg.esm.js.map +0 -1
@@ -1,5 +1,8 @@
1
1
  import type { DynamicClient } from '@dynamic-labs-sdk/client';
2
2
  import { type TransferAmountParams } from '@dynamic-labs-sdk/client/core';
3
+ type BitcoinTransferAmountResult = {
4
+ transactionHash: string;
5
+ };
3
6
  /**
4
7
  * Transfers native BTC from one wallet to another.
5
8
  *
@@ -13,7 +16,6 @@ import { type TransferAmountParams } from '@dynamic-labs-sdk/client/core';
13
16
  * @returns An object containing the transaction hash.
14
17
  * @notInstrumented
15
18
  */
16
- export declare const bitcoinTransferAmount: ({ amount, recipient, walletAccount }: TransferAmountParams, client: DynamicClient) => Promise<{
17
- transactionHash: string;
18
- }>;
19
+ export declare const bitcoinTransferAmount: ({ amount, recipient, walletAccount }: TransferAmountParams, client: DynamicClient) => Promise<BitcoinTransferAmountResult>;
20
+ export {};
19
21
  //# sourceMappingURL=bitcoinTransferAmount.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoinTransferAmount.d.ts","sourceRoot":"","sources":["../../../src/utils/bitcoinTransferAmount/bitcoinTransferAmount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,+BAA+B,CAAC;AAOvC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,yCACM,oBAAoB,UAClD,aAAa,KACpB,OAAO,CAAC;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,CAqBrC,CAAC"}
1
+ {"version":3,"file":"bitcoinTransferAmount.d.ts","sourceRoot":"","sources":["../../../src/utils/bitcoinTransferAmount/bitcoinTransferAmount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,+BAA+B,CAAC;AAOvC,KAAK,2BAA2B,GAAG;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,yCACM,oBAAoB,UAClD,aAAa,KACpB,OAAO,CAAC,2BAA2B,CAqBrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"convertNetworkIdForPsbt.d.ts","sourceRoot":"","sources":["../../../src/utils/convertNetworkIdForPsbt/convertNetworkIdForPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,uBAAuB;AAEvB,eAAO,MAAM,uBAAuB,cAAe,MAAM,iCAWxD,CAAC"}
1
+ {"version":3,"file":"convertNetworkIdForPsbt.d.ts","sourceRoot":"","sources":["../../../src/utils/convertNetworkIdForPsbt/convertNetworkIdForPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,uBAAuB;AAEvB,eAAO,MAAM,uBAAuB,cACvB,MAAM,KAChB,QAAQ,CAAC,OAAO,GAAG,SAWrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"convertNetworkIdToSatsConnectNetworkType.d.ts","sourceRoot":"","sources":["../../../src/utils/convertNetworkIdToSatsConnectNetworkType/convertNetworkIdToSatsConnectNetworkType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,uBAAuB;AAEvB,eAAO,MAAM,wCAAwC,cAAe,MAAM,wFAWzE,CAAC"}
1
+ {"version":3,"file":"convertNetworkIdToSatsConnectNetworkType.d.ts","sourceRoot":"","sources":["../../../src/utils/convertNetworkIdToSatsConnectNetworkType/convertNetworkIdToSatsConnectNetworkType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,uBAAuB;AAEvB,eAAO,MAAM,wCAAwC,cACxC,MAAM,KAEf,kBAAkB,CAAC,OAAO,GAC1B,kBAAkB,CAAC,OAAO,GAC1B,kBAAkB,CAAC,MAWtB,CAAC"}
@@ -8,7 +8,7 @@ type CreatePsbtOptionsParams = {
8
8
  * This method will create the psbt sign options for the given request
9
9
  * It will validate the psbt against the signature data provided in the request
10
10
  * It will return the psbt sign options with the toSignInputs added if the signature data is provided
11
- * @notInstrumented
11
+ * @notInstrumented
12
12
  */
13
13
  export declare const createPsbtOptions: ({ psbt, request, }: CreatePsbtOptionsParams) => SignPsbtOptions;
14
14
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"createPsbtOptions.d.ts","sourceRoot":"","sources":["../../../src/utils/createPsbtOptions/createPsbtOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EAChB,MAAM,mCAAmC,CAAC;AAG3C,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,sBAAsB,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,uBAG3B,uBAAuB,oBAiCzB,CAAC"}
1
+ {"version":3,"file":"createPsbtOptions.d.ts","sourceRoot":"","sources":["../../../src/utils/createPsbtOptions/createPsbtOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EAChB,MAAM,mCAAmC,CAAC;AAG3C,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,sBAAsB,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,uBAG3B,uBAAuB,KAAG,eAiC5B,CAAC"}
@@ -0,0 +1,18 @@
1
+ type GetBitcoinScreeningChainIdParams = {
2
+ networkId: string | undefined;
3
+ };
4
+ /**
5
+ * Maps a Dynamic Bitcoin network id to the identifier the transaction
6
+ * screening contract uses.
7
+ *
8
+ * The contract only distinguishes mainnet from testnet, so signet — and any
9
+ * network id we cannot resolve — screens as testnet: neither is mainnet, and
10
+ * the value is recorded for audit rather than used to pick a provider.
11
+ *
12
+ * @param params.networkId - The wallet provider's active network id.
13
+ * @returns The screening chain identifier.
14
+ * @notInstrumented
15
+ */
16
+ export declare const getBitcoinScreeningChainId: ({ networkId, }: GetBitcoinScreeningChainIdParams) => string;
17
+ export {};
18
+ //# sourceMappingURL=getBitcoinScreeningChainId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBitcoinScreeningChainId.d.ts","sourceRoot":"","sources":["../../../src/utils/getBitcoinScreeningChainId/getBitcoinScreeningChainId.ts"],"names":[],"mappings":"AAOA,KAAK,gCAAgC,GAAG;IACtC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,mBAEpC,gCAAgC,KAAG,MAGN,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { getBitcoinScreeningChainId } from './getBitcoinScreeningChainId';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/getBitcoinScreeningChainId/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,3 +1,6 @@
1
+ import { MEMPOOL_API_URL, MEMPOOL_API_URL_TESTNET } from '../../constants';
2
+ type MempoolApiUrl = typeof MEMPOOL_API_URL | typeof MEMPOOL_API_URL_TESTNET;
1
3
  /** @notInstrumented */
2
- export declare const getMempoolApiUrl: (address: string) => "https://mempool.space/api" | "https://mempool.space/testnet/api";
4
+ export declare const getMempoolApiUrl: (address: string) => MempoolApiUrl;
5
+ export {};
3
6
  //# sourceMappingURL=getMempoolApiUrl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMempoolApiUrl.d.ts","sourceRoot":"","sources":["../../../src/utils/getMempoolApiUrl/getMempoolApiUrl.ts"],"names":[],"mappings":"AAEA,uBAAuB;AACvB,eAAO,MAAM,gBAAgB,YAAa,MAAM,sEACqB,CAAC"}
1
+ {"version":3,"file":"getMempoolApiUrl.d.ts","sourceRoot":"","sources":["../../../src/utils/getMempoolApiUrl/getMempoolApiUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,KAAK,aAAa,GAAG,OAAO,eAAe,GAAG,OAAO,uBAAuB,CAAC;AAE7E,uBAAuB;AACvB,eAAO,MAAM,gBAAgB,YAAa,MAAM,KAAG,aACkB,CAAC"}
@@ -2,9 +2,10 @@ import type { DynamicClient } from '@dynamic-labs-sdk/client';
2
2
  type getNetworkIdFromNetworkNameParams = {
3
3
  networkName: string;
4
4
  };
5
- /** @notInstrumented */
6
- export declare const getNetworkIdFromNetworkName: ({ networkName }: getNetworkIdFromNetworkNameParams, client: DynamicClient) => {
5
+ type GetNetworkIdFromNetworkNameResult = {
7
6
  networkId: string;
8
7
  };
8
+ /** @notInstrumented */
9
+ export declare const getNetworkIdFromNetworkName: ({ networkName }: getNetworkIdFromNetworkNameParams, client: DynamicClient) => GetNetworkIdFromNetworkNameResult;
9
10
  export {};
10
11
  //# sourceMappingURL=getNetworkIdFromNetworkName.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getNetworkIdFromNetworkName.d.ts","sourceRoot":"","sources":["../../../src/utils/getNetworkIdFromNetworkName/getNetworkIdFromNetworkName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,KAAK,iCAAiC,GAAG;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,2BAA2B,oBACrB,iCAAiC,UAC1C,aAAa;;CAYtB,CAAC"}
1
+ {"version":3,"file":"getNetworkIdFromNetworkName.d.ts","sourceRoot":"","sources":["../../../src/utils/getNetworkIdFromNetworkName/getNetworkIdFromNetworkName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,KAAK,iCAAiC,GAAG;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,iCAAiC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D,uBAAuB;AACvB,eAAO,MAAM,2BAA2B,oBACrB,iCAAiC,UAC1C,aAAa,KACpB,iCAWF,CAAC"}
@@ -10,7 +10,7 @@ type GetPsbtInputsToSignForSatsConnectParams = {
10
10
  * This method will create the psbt sign options for SatsConnect for the given request
11
11
  * It will validate the psbt against the signature data provided in the request
12
12
  * It will return the inputs to sign if the signature data is provided
13
- * @notInstrumented
13
+ * @notInstrumented
14
14
  */
15
15
  export declare const getPsbtInputsToSignForSatsConnect: ({ psbt, request, isLegacySatsConnect, }: GetPsbtInputsToSignForSatsConnectParams) => InputToSign[];
16
16
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"getPsbtInputsToSignForSatsConnect.d.ts","sourceRoot":"","sources":["../../../src/utils/getPsbtInputsToSignForSatsConnect/getPsbtInputsToSignForSatsConnect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAIhF,KAAK,uCAAuC,GAAG;IAC7C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,sBAAsB,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,4CAI3C,uCAAuC,kBA4BzC,CAAC"}
1
+ {"version":3,"file":"getPsbtInputsToSignForSatsConnect.d.ts","sourceRoot":"","sources":["../../../src/utils/getPsbtInputsToSignForSatsConnect/getPsbtInputsToSignForSatsConnect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAIhF,KAAK,uCAAuC,GAAG;IAC7C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,sBAAsB,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,4CAI3C,uCAAuC,KAAG,WAAW,EA4BvD,CAAC"}
@@ -7,7 +7,7 @@ type GetSigHashTypeParams = {
7
7
  * If there is a sighashType, it will return that
8
8
  * If there is a witnessUtxo AND it is a taproot address, then it will return SIGHASH_DEFAULT
9
9
  * Otherwise, it will return SIGHASH_ALL
10
- * @notInstrumented
10
+ * @notInstrumented
11
11
  */
12
12
  export declare const getSigHashType: ({ input }: GetSigHashTypeParams) => number;
13
13
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"getSigHashType.d.ts","sourceRoot":"","sources":["../../../src/utils/getSigHashType/getSigHashType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAyB,MAAM,eAAe,CAAC;AAEjE,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,cAAe,oBAAoB,WAqB7D,CAAC"}
1
+ {"version":3,"file":"getSigHashType.d.ts","sourceRoot":"","sources":["../../../src/utils/getSigHashType/getSigHashType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAyB,MAAM,eAAe,CAAC;AAEjE,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,cAAe,oBAAoB,KAAG,MAqBhE,CAAC"}
@@ -6,9 +6,10 @@ type ParseBitcoinConnectionResultParams = {
6
6
  purpose: string;
7
7
  }[];
8
8
  };
9
- /** @notInstrumented */
10
- export declare const parseBitcoinConnectionResult: ({ connectedAddresses, }: ParseBitcoinConnectionResultParams) => {
9
+ type ParsedBitcoinConnection = {
11
10
  addresses: WalletProviderConnectAddress[];
12
11
  };
12
+ /** @notInstrumented */
13
+ export declare const parseBitcoinConnectionResult: ({ connectedAddresses, }: ParseBitcoinConnectionResultParams) => ParsedBitcoinConnection;
13
14
  export {};
14
15
  //# sourceMappingURL=parseBitcoinConnectionResult.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseBitcoinConnectionResult.d.ts","sourceRoot":"","sources":["../../../src/utils/parseBitcoinConnectionResult/parseBitcoinConnectionResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAElF,KAAK,kCAAkC,GAAG;IACxC,kBAAkB,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,4BAA4B,4BAEtC,kCAAkC;;CAqBpC,CAAC"}
1
+ {"version":3,"file":"parseBitcoinConnectionResult.d.ts","sourceRoot":"","sources":["../../../src/utils/parseBitcoinConnectionResult/parseBitcoinConnectionResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAElF,KAAK,kCAAkC,GAAG;IACxC,kBAAkB,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,SAAS,EAAE,4BAA4B,EAAE,CAAC;CAC3C,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,4BAA4B,4BAEtC,kCAAkC,KAAG,uBAqBvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"satoshisToBtc.d.ts","sourceRoot":"","sources":["../../../src/utils/satoshisToBtc/satoshisToBtc.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,eAAO,MAAM,aAAa,aAAc,MAAM,WAAyB,CAAC"}
1
+ {"version":3,"file":"satoshisToBtc.d.ts","sourceRoot":"","sources":["../../../src/utils/satoshisToBtc/satoshisToBtc.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,eAAO,MAAM,aAAa,aAAc,MAAM,KAAG,MAA8B,CAAC"}
@@ -4,9 +4,10 @@ type SignMultipleTransactionsWithSatsConnectParams = {
4
4
  provider?: BitcoinProvider;
5
5
  psbts: SignMultiplePsbtPayload[];
6
6
  };
7
- /** @notInstrumented */
8
- export declare const signMultipleTransactionsWithSatsConnect: ({ network, psbts, provider, }: SignMultipleTransactionsWithSatsConnectParams) => Promise<{
7
+ type SignMultipleTransactionsWithSatsConnectResult = {
9
8
  signedPsbts: string[];
10
- }>;
9
+ };
10
+ /** @notInstrumented */
11
+ export declare const signMultipleTransactionsWithSatsConnect: ({ network, psbts, provider, }: SignMultipleTransactionsWithSatsConnectParams) => Promise<SignMultipleTransactionsWithSatsConnectResult>;
11
12
  export {};
12
13
  //# sourceMappingURL=signMultipleTransactionsWithSatsConnect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signMultipleTransactionsWithSatsConnect.d.ts","sourceRoot":"","sources":["../../../src/utils/signMultipleTransactionsWithSatsConnect/signMultipleTransactionsWithSatsConnect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAGtB,KAAK,6CAA6C,GAAG;IACnD,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,uBAAuB,EAAE,CAAC;CAClC,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,uCAAuC,kCAIjD,6CAA6C,KAAG,OAAO,CAAC;IACzD,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CA2BA,CAAC"}
1
+ {"version":3,"file":"signMultipleTransactionsWithSatsConnect.d.ts","sourceRoot":"","sources":["../../../src/utils/signMultipleTransactionsWithSatsConnect/signMultipleTransactionsWithSatsConnect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAGtB,KAAK,6CAA6C,GAAG;IACnD,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,uBAAuB,EAAE,CAAC;CAClC,CAAC;AAEF,KAAK,6CAA6C,GAAG;IACnD,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,uCAAuC,kCAIjD,6CAA6C,KAAG,OAAO,CAAC,6CAA6C,CA2BvG,CAAC"}
@@ -12,7 +12,7 @@ type ValidatePsbtParams = {
12
12
  * - That the address provided in the request matches the address in the input,
13
13
  * unless the disableAddressValidation flag is set
14
14
  * - That the sigHashType of the input is a member of the allowedSigHashTypes array
15
- * @notInstrumented
15
+ * @notInstrumented
16
16
  */
17
17
  export declare const validatePsbt: ({ allowedSigHashTypes, psbt, signatureData, }: ValidatePsbtParams) => void;
18
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"validatePsbt.d.ts","sourceRoot":"","sources":["../../../src/utils/validatePsbt/validatePsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAKzF,KAAK,kBAAkB,GAAG;IACxB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,CAAC,EAAE,+BAA+B,EAAE,CAAC;CACnD,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,kDAItB,kBAAkB,SAwCpB,CAAC"}
1
+ {"version":3,"file":"validatePsbt.d.ts","sourceRoot":"","sources":["../../../src/utils/validatePsbt/validatePsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAKzF,KAAK,kBAAkB,GAAG;IACxB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,CAAC,EAAE,+BAA+B,EAAE,CAAC;CACnD,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,kDAItB,kBAAkB,KAAG,IAwCvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateSigHash.d.ts","sourceRoot":"","sources":["../../../../src/utils/validatePsbt/validateSigHash/validateSigHash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAK1C,KAAK,qBAAqB,GAAG;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,eAAe,oCAGzB,qBAAqB,SAavB,CAAC"}
1
+ {"version":3,"file":"validateSigHash.d.ts","sourceRoot":"","sources":["../../../../src/utils/validatePsbt/validateSigHash/validateSigHash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAK1C,KAAK,qBAAqB,GAAG;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,eAAe,oCAGzB,qBAAqB,KAAG,IAa1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateSigningAddress.d.ts","sourceRoot":"","sources":["../../../../src/utils/validatePsbt/validateSigningAddress/validateSigningAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAK1C,KAAK,4BAA4B,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,EAAE,IAAI,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,sBAAsB,mDAKhC,4BAA4B,SAoB9B,CAAC"}
1
+ {"version":3,"file":"validateSigningAddress.d.ts","sourceRoot":"","sources":["../../../../src/utils/validatePsbt/validateSigningAddress/validateSigningAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAK1C,KAAK,4BAA4B,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,EAAE,IAAI,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,sBAAsB,mDAKhC,4BAA4B,KAAG,IAoBjC,CAAC"}
@@ -10,7 +10,7 @@ type SelectUTXOsLargestFirstOptions = {
10
10
  * @param options.targetAmount - Target amount in satoshis (amount + fees + dust limit)
11
11
  * @param options.utxos - Array of available UTXOs to select from
12
12
  * @returns Selected UTXOs
13
- * @notInstrumented
13
+ * @notInstrumented
14
14
  */
15
15
  export declare const selectUTXOsLargestFirst: (options: SelectUTXOsLargestFirstOptions) => UTXO[];
16
16
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"selectUTXOsLargestFirst.d.ts","sourceRoot":"","sources":["../../../../src/waas/utils/selectUTXOsLargestFirst/selectUTXOsLargestFirst.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AAElE,KAAK,8BAA8B,GAAG;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,YACzB,8BAA8B,WAmBxC,CAAC"}
1
+ {"version":3,"file":"selectUTXOsLargestFirst.d.ts","sourceRoot":"","sources":["../../../../src/waas/utils/selectUTXOsLargestFirst/selectUTXOsLargestFirst.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AAElE,KAAK,8BAA8B,GAAG;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,YACzB,8BAA8B,KACtC,IAAI,EAkBN,CAAC"}
@@ -16,7 +16,7 @@ type ValidateAndSelectUTXOsOptions = {
16
16
  * @param options.selectedUTXOs - Array of initially selected UTXOs
17
17
  * @returns Validated selected UTXOs
18
18
  * @throws InsufficientFundsError if insufficient funds
19
- * @notInstrumented
19
+ * @notInstrumented
20
20
  */
21
21
  export declare const validateAndSelectUTXOs: (options: ValidateAndSelectUTXOsOptions) => UTXO[];
22
22
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"validateAndSelectUTXOs.d.ts","sourceRoot":"","sources":["../../../../src/waas/utils/validateAndSelectUTXOs/validateAndSelectUTXOs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AAGlE,KAAK,6BAA6B,GAAG;IACnC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,IAAI,EAAE,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,YACxB,6BAA6B,WAiCvC,CAAC"}
1
+ {"version":3,"file":"validateAndSelectUTXOs.d.ts","sourceRoot":"","sources":["../../../../src/waas/utils/validateAndSelectUTXOs/validateAndSelectUTXOs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AAGlE,KAAK,6BAA6B,GAAG;IACnC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,IAAI,EAAE,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,YACxB,6BAA6B,KACrC,IAAI,EAgCN,CAAC"}
package/dist/waas.cjs CHANGED
@@ -1,5 +1,5 @@
1
- const require_addWaasBitcoinExtension = require('./addWaasBitcoinExtension-BJU5cWG0.cjs');
2
- const require_InvalidPsbtError = require('./InvalidPsbtError-D0F2EZEI.cjs');
1
+ const require_addWaasBitcoinExtension = require('./addWaasBitcoinExtension-uxacWtB7.cjs');
2
+ const require_InvalidPsbtError = require('./InvalidPsbtError-Co4JpLEg.cjs');
3
3
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
4
4
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
5
5
  let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
package/dist/waas.esm.js CHANGED
@@ -1,5 +1,5 @@
1
- import { h as version, i as NotBitcoinProviderError, m as name, s as isBitcoinWalletProvider } from "./InvalidPsbtError-nAb75Fvm.esm.js";
2
- import { n as getWaasBitcoinAddressForNetwork, r as getActiveBitcoinNetworkConfig, t as addWaasBitcoinExtension } from "./addWaasBitcoinExtension-B_rWSexg.esm.js";
1
+ import { h as version, i as NotBitcoinProviderError, m as name, s as isBitcoinWalletProvider } from "./InvalidPsbtError---EksGFV.esm.js";
2
+ import { n as getWaasBitcoinAddressForNetwork, r as getActiveBitcoinNetworkConfig, t as addWaasBitcoinExtension } from "./addWaasBitcoinExtension-DoQJ97lm.esm.js";
3
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
4
4
  import { MethodNotImplementedError, getWalletProviderFromWalletAccount } from "@dynamic-labs-sdk/client/core";
5
5
  import { getDefaultClient as getDefaultClient$1 } from "@dynamic-labs-sdk/client";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs-sdk/bitcoin",
3
- "version": "1.29.0",
3
+ "version": "1.30.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.esm.js",
@@ -34,8 +34,8 @@
34
34
  "ecpair": "3.0.0",
35
35
  "jsontokens": "4.0.1",
36
36
  "sats-connect": "4.2.1",
37
- "@dynamic-labs-sdk/assert-package-version": "1.29.0",
38
- "@dynamic-labs-sdk/client": "1.29.0"
37
+ "@dynamic-labs-sdk/assert-package-version": "1.30.1",
38
+ "@dynamic-labs-sdk/client": "1.30.1"
39
39
  },
40
40
  "devDependencies": {
41
41
  "vitest": "4.1.6"
@@ -1 +0,0 @@
1
- {"version":3,"file":"InvalidPsbtError-D0F2EZEI.cjs","names":["BaseError","InvalidParamError","Psbt","BaseError","MethodNotImplementedError","InvalidParamError","BaseError"],"sources":["../package.json","../src/constants.ts","../src/utils/getMempoolApiUrl/getMempoolApiUrl.ts","../src/utils/satoshisToBtc/satoshisToBtc.ts","../src/utils/fetchBtcBalance/fetchBtcBalance.ts","../src/utils/createBitcoinNetworkProvider/createBitcoinNetworkProvider.ts","../src/registerBitcoinNetworkProviderBuilder/registerBitcoinNetworkProviderBuilder.ts","../src/isBitcoinWalletAccount/isBitcoinWalletAccount.ts","../src/isBitcoinWalletProvider/isBitcoinWalletProvider.ts","../src/errors/SendBitcoinRawTransactionError.ts","../src/sendRawTransaction/sendRawTransaction.ts","../src/utils/convertPsbtToBase64/convertPsbtToBase64.ts","../src/utils/bitcoinExecuteSwapTransaction/bitcoinExecuteSwapTransaction.ts","../src/errors/NotBitcoinProviderError.ts","../src/sendBitcoin/sendBitcoin.ts","../src/utils/bitcoinTransferAmount/bitcoinTransferAmount.ts","../src/errors/InvalidPsbtError.ts"],"sourcesContent":["","export const MEMPOOL_API_URL = 'https://mempool.space/api';\nexport const MEMPOOL_API_URL_TESTNET = 'https://mempool.space/testnet/api';\nexport const MEMPOOL_API_URL_SIGNET = 'https://mempool.space/signet/api';\n","import { MEMPOOL_API_URL, MEMPOOL_API_URL_TESTNET } from '../../constants';\n\n/** @notInstrumented */\nexport const getMempoolApiUrl = (address: string) =>\n address.startsWith('t') ? MEMPOOL_API_URL_TESTNET : MEMPOOL_API_URL;\n","/** @notInstrumented */\nexport const satoshisToBtc = (satoshis: number) => satoshis / 100000000;\n","import { getMempoolApiUrl } from '../getMempoolApiUrl';\nimport { satoshisToBtc } from '../satoshisToBtc';\n\n/** @notInstrumented */\nexport const fetchBtcBalance = async ({\n address,\n}: {\n address: string;\n}): Promise<string | null> => {\n const API_URL = getMempoolApiUrl(address);\n\n const response = await fetch(`${API_URL}/address/${address}`);\n\n if (!response.ok) {\n return null;\n }\n\n const addressInfo = await response.json();\n\n if (!addressInfo?.chain_stats || !addressInfo?.mempool_stats) {\n return null;\n }\n\n const confirmedBalanceInSats =\n Number(addressInfo.chain_stats.funded_txo_sum) -\n Number(addressInfo.chain_stats.spent_txo_sum);\n\n const unconfirmedBalanceInSats =\n Number(addressInfo.mempool_stats.funded_txo_sum) -\n Number(addressInfo.mempool_stats.spent_txo_sum);\n\n const balance = satoshisToBtc(\n confirmedBalanceInSats + unconfirmedBalanceInSats\n );\n\n return balance.toString();\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { BitcoinNetworkProvider } from '../../BitcoinNetworkProvider.types';\nimport { fetchBtcBalance } from '../fetchBtcBalance';\n\n/** @notInstrumented */\nexport const createBitcoinNetworkProvider = (\n networkData: NetworkData\n): BitcoinNetworkProvider => ({\n ...createBaseNetworkProvider('BTC', networkData),\n cluster: networkData.cluster,\n getBalance: async ({ address }) => ({\n balance: await fetchBtcBalance({\n address,\n }),\n }),\n});\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createBitcoinNetworkProvider } from '../utils/createBitcoinNetworkProvider';\n\n/** @notInstrumented */\nexport const registerBitcoinNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n /**\n * If the Bitcoin network provider builder is already registered, return.\n */\n if (networkProviderBuilderRegistry.get().get('BTC')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: createBitcoinNetworkProvider,\n chain: 'BTC',\n });\n};\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { BitcoinWalletAccount } from '../BitcoinWalletAccount.types';\n\n/**\n * Type guard function to check if a wallet account is a Bitcoin wallet account.\n *\n * @example\n * ```ts\n * const accounts = getWalletAccounts();\n * const btcAccounts = accounts.filter(isBitcoinWalletAccount);\n * ```\n *\n * @param walletAccount - The wallet account to check.\n * @returns True if the wallet account is a Bitcoin wallet account, false otherwise.\n * @see isBitcoinNetworkProvider\n * @see addBitcoinExtension\n * @notInstrumented\n */\nexport const isBitcoinWalletAccount = (\n walletAccount: WalletAccount\n): walletAccount is BitcoinWalletAccount => walletAccount.chain === 'BTC';\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { BitcoinWalletProvider } from '../BitcoinWalletProvider.types';\n\n/** @notInstrumented */\nexport const isBitcoinWalletProvider = (\n provider: WalletProvider\n): provider is BitcoinWalletProvider => {\n return provider.chain === 'BTC';\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\ntype SendBitcoinRawTransactionErrorParams = {\n originalError: unknown;\n};\n\nexport class SendBitcoinRawTransactionError extends BaseError {\n constructor({ originalError }: SendBitcoinRawTransactionErrorParams) {\n const cause = originalError instanceof Error ? originalError : null;\n\n super({\n cause,\n code: 'send_bitcoin_raw_transaction_error',\n docsUrl: null,\n name: 'SendBitcoinRawTransactionError',\n shortMessage: 'Failed to send Bitcoin raw transaction',\n });\n }\n}\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\n\nimport type { BitcoinWalletAccount } from '../BitcoinWalletAccount.types';\nimport { SendBitcoinRawTransactionError } from '../errors/SendBitcoinRawTransactionError';\nimport { getMempoolApiUrl } from '../utils/getMempoolApiUrl';\n\ntype SendRawTransactionParams = {\n rawTransaction: string;\n walletAccount: BitcoinWalletAccount;\n};\n\n/**\n * Sends a raw transaction using the mempool.space API.\n *\n * @example\n * ```ts\n * const { transactionId } = await sendRawTransaction({\n * walletAccount: btcAccount,\n * rawTransaction: '0200000001...',\n * });\n * ```\n *\n * @param params.rawTransaction - The raw transaction hex to broadcast.\n * @param params.walletAccount - The wallet account whose network determines the API endpoint.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the transaction id.\n * @throws {SendBitcoinRawTransactionError} If the mempool API returns an error.\n * @see sendBitcoin\n * @see signPsbt\n * @notInstrumented\n */\nexport const sendRawTransaction = async (\n { rawTransaction, walletAccount }: SendRawTransactionParams,\n client = getDefaultClient()\n): Promise<{\n transactionId: string;\n}> => {\n const fetchService = getCore(client).fetch;\n\n const API_URL = getMempoolApiUrl(walletAccount.address);\n\n const response = await fetchService(`${API_URL}/tx`, {\n body: rawTransaction,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n method: 'POST',\n });\n\n if (!response.ok) {\n throw new SendBitcoinRawTransactionError({\n originalError: await response.text(),\n });\n }\n\n // this endpoint returns the transaction ID\n const transactionId = await response.text();\n\n return { transactionId };\n};\n","import { getBuffer } from '@dynamic-labs-sdk/client/core';\n\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport const convertPsbtToBase64 = (psbt: string): string => {\n // Lowercase to handle uppercase hex encoding (e.g., 70736274FF)\n const psbtBase64 = psbt.toLowerCase().startsWith('70736274ff')\n ? getBuffer().from(psbt, 'hex').toString('base64')\n : psbt;\n\n return psbtBase64;\n};\n","import {\n type DynamicClient,\n InvalidParamError,\n} from '@dynamic-labs-sdk/client';\nimport type {\n ExecuteSwapTransactionParams,\n ExecuteSwapTransactionResult,\n} from '@dynamic-labs-sdk/client/core';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\nimport { Psbt } from 'bitcoinjs-lib';\n\nimport { isBitcoinWalletAccount } from '../../isBitcoinWalletAccount';\nimport { isBitcoinWalletProvider } from '../../isBitcoinWalletProvider';\nimport { sendRawTransaction } from '../../sendRawTransaction';\nimport { convertPsbtToBase64 } from '../convertPsbtToBase64';\n\n/** @notInstrumented */\nexport const bitcoinExecuteSwapTransaction = async (\n { onStepChange, signingPayload, walletAccount }: ExecuteSwapTransactionParams,\n client: DynamicClient\n): Promise<ExecuteSwapTransactionResult> => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (\n !isBitcoinWalletAccount(walletAccount) ||\n !isBitcoinWalletProvider(provider)\n ) {\n throw new InvalidParamError(\n 'Wallet account is not a Bitcoin wallet account'\n );\n }\n\n if (!signingPayload.psbt) {\n throw new InvalidParamError(\n 'Signing payload is missing PSBT transaction data'\n );\n }\n\n onStepChange?.('transaction');\n\n // make sure the psbt is base64 encoded, no matter if it comes as hex or base64\n const psbtBase64 = convertPsbtToBase64(signingPayload.psbt);\n\n // Parse the unsigned PSBT to determine which inputs need signing.\n // Explicitly passing signingIndexes ensures all wallet providers\n // (including Phantom, which requires it) know which inputs to sign.\n const unsignedPsbt = Psbt.fromBase64(psbtBase64);\n const signingIndexes = unsignedPsbt.txInputs.map((_, i) => i);\n\n const { signedPsbt } = await provider.signPsbt({\n request: {\n allowedSighash: [1],\n signature: [\n {\n address: walletAccount.address,\n signingIndexes,\n },\n ],\n unsignedPsbtBase64: psbtBase64,\n },\n walletAccount,\n });\n\n const psbt = Psbt.fromBase64(signedPsbt);\n\n // Some wallets return an already-finalized PSBT; only finalize\n // inputs that haven't been finalized yet.\n psbt.data.inputs.forEach((input, idx) => {\n if (!input.finalScriptSig && !input.finalScriptWitness) {\n psbt.finalizeInput(idx);\n }\n });\n\n const rawTxHex = psbt.extractTransaction().toHex();\n\n const { transactionId } = await sendRawTransaction(\n { rawTransaction: rawTxHex, walletAccount },\n client\n );\n\n return { transactionHash: transactionId };\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotBitcoinProviderError extends BaseError {\n public readonly providerKey: string;\n\n constructor(params: { providerKey: string }) {\n super({\n cause: null,\n code: 'not_bitcoin_provider_error',\n docsUrl: null,\n name: 'NotBitcoinProviderError',\n shortMessage: 'Provider is not a Bitcoin wallet provider',\n });\n\n this.providerKey = params.providerKey;\n }\n}\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport {\n MethodNotImplementedError,\n getWalletProviderFromWalletAccount,\n} from '@dynamic-labs-sdk/client/core';\n\nimport type { BitcoinWalletAccount } from '../BitcoinWalletAccount.types';\nimport type {\n BitcoinSendTransactionResponse,\n BitcoinTransaction,\n} from '../BitcoinWalletProvider.types';\nimport { NotBitcoinProviderError } from '../errors/NotBitcoinProviderError';\nimport { isBitcoinWalletProvider } from '../isBitcoinWalletProvider';\n\ntype SendBitcoinParams = {\n transaction: BitcoinTransaction;\n walletAccount: BitcoinWalletAccount;\n};\n\n/**\n * Sends a Bitcoin transaction.\n *\n * @example\n * ```ts\n * const { transactionId } = await sendBitcoin({\n * walletAccount: btcAccount,\n * transaction: { recipientAddress: 'bc1q...', amount: 50000n },\n * });\n * ```\n *\n * @param params.transaction - The transaction to send.\n * @param params.walletAccount - The wallet account to send the transaction from.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the transaction id.\n * @throws {MethodNotImplementedError} If the wallet provider does not implement the sendBitcoin method.\n * @throws {NotBitcoinProviderError} If the wallet account is not a valid BitcoinWalletAccount.\n * @see sendRawTransaction\n * @see signPsbt\n * @notInstrumented\n */\nexport const sendBitcoin = async (\n { walletAccount, transaction }: SendBitcoinParams,\n client = getDefaultClient()\n): Promise<BitcoinSendTransactionResponse> => {\n const provider = getWalletProviderFromWalletAccount(\n {\n walletAccount,\n },\n client\n );\n\n if (!isBitcoinWalletProvider(provider)) {\n throw new NotBitcoinProviderError({ providerKey: provider.key });\n }\n\n if (!provider.sendBitcoin) {\n throw new MethodNotImplementedError('sendBitcoin');\n }\n\n return provider.sendBitcoin({ transaction, walletAccount });\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { InvalidParamError } from '@dynamic-labs-sdk/client';\nimport {\n type TransferAmountParams,\n parseAmountToSmallestUnit,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { isBitcoinWalletAccount } from '../../isBitcoinWalletAccount';\nimport { sendBitcoin } from '../../sendBitcoin';\n\nconst BTC_DECIMALS = 8;\n\n/**\n * Transfers native BTC from one wallet to another.\n *\n * Converts the human-readable BTC amount string to satoshis (8 decimals)\n * and delegates to `sendBitcoin`.\n *\n * @param params.amount - The amount in BTC as a decimal string (e.g. \"0.001\").\n * @param params.recipient - The recipient Bitcoin address.\n * @param params.walletAccount - The wallet account to send from.\n * @param client - The Dynamic client instance.\n * @returns An object containing the transaction hash.\n * @notInstrumented\n */\nexport const bitcoinTransferAmount = async (\n { amount, recipient, walletAccount }: TransferAmountParams,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n if (!isBitcoinWalletAccount(walletAccount)) {\n throw new InvalidParamError(\n 'Wallet account is not a Bitcoin wallet account'\n );\n }\n\n const satoshis = parseAmountToSmallestUnit({ amount, decimals: BTC_DECIMALS });\n\n const result = await sendBitcoin(\n {\n transaction: {\n amount: satoshis,\n recipientAddress: recipient,\n },\n walletAccount,\n },\n client\n );\n\n return { transactionHash: result.transactionId };\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class InvalidPsbtError extends BaseError {\n // eslint-disable-next-line custom-rules/require-single-object-param\n constructor(message: string) {\n super({\n cause: null,\n code: 'invalid_psbt_error',\n docsUrl: null,\n name: 'InvalidPsbtError',\n shortMessage: message,\n });\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InvalidPsbtError-nAb75Fvm.esm.js","names":["address","address","getDefaultClient","getDefaultClient"],"sources":["../package.json","../src/constants.ts","../src/utils/getMempoolApiUrl/getMempoolApiUrl.ts","../src/utils/satoshisToBtc/satoshisToBtc.ts","../src/utils/fetchBtcBalance/fetchBtcBalance.ts","../src/utils/createBitcoinNetworkProvider/createBitcoinNetworkProvider.ts","../src/registerBitcoinNetworkProviderBuilder/registerBitcoinNetworkProviderBuilder.ts","../src/isBitcoinWalletAccount/isBitcoinWalletAccount.ts","../src/isBitcoinWalletProvider/isBitcoinWalletProvider.ts","../src/errors/SendBitcoinRawTransactionError.ts","../src/sendRawTransaction/sendRawTransaction.ts","../src/utils/convertPsbtToBase64/convertPsbtToBase64.ts","../src/utils/bitcoinExecuteSwapTransaction/bitcoinExecuteSwapTransaction.ts","../src/errors/NotBitcoinProviderError.ts","../src/sendBitcoin/sendBitcoin.ts","../src/utils/bitcoinTransferAmount/bitcoinTransferAmount.ts","../src/errors/InvalidPsbtError.ts"],"sourcesContent":["","export const MEMPOOL_API_URL = 'https://mempool.space/api';\nexport const MEMPOOL_API_URL_TESTNET = 'https://mempool.space/testnet/api';\nexport const MEMPOOL_API_URL_SIGNET = 'https://mempool.space/signet/api';\n","import { MEMPOOL_API_URL, MEMPOOL_API_URL_TESTNET } from '../../constants';\n\n/** @notInstrumented */\nexport const getMempoolApiUrl = (address: string) =>\n address.startsWith('t') ? MEMPOOL_API_URL_TESTNET : MEMPOOL_API_URL;\n","/** @notInstrumented */\nexport const satoshisToBtc = (satoshis: number) => satoshis / 100000000;\n","import { getMempoolApiUrl } from '../getMempoolApiUrl';\nimport { satoshisToBtc } from '../satoshisToBtc';\n\n/** @notInstrumented */\nexport const fetchBtcBalance = async ({\n address,\n}: {\n address: string;\n}): Promise<string | null> => {\n const API_URL = getMempoolApiUrl(address);\n\n const response = await fetch(`${API_URL}/address/${address}`);\n\n if (!response.ok) {\n return null;\n }\n\n const addressInfo = await response.json();\n\n if (!addressInfo?.chain_stats || !addressInfo?.mempool_stats) {\n return null;\n }\n\n const confirmedBalanceInSats =\n Number(addressInfo.chain_stats.funded_txo_sum) -\n Number(addressInfo.chain_stats.spent_txo_sum);\n\n const unconfirmedBalanceInSats =\n Number(addressInfo.mempool_stats.funded_txo_sum) -\n Number(addressInfo.mempool_stats.spent_txo_sum);\n\n const balance = satoshisToBtc(\n confirmedBalanceInSats + unconfirmedBalanceInSats\n );\n\n return balance.toString();\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { BitcoinNetworkProvider } from '../../BitcoinNetworkProvider.types';\nimport { fetchBtcBalance } from '../fetchBtcBalance';\n\n/** @notInstrumented */\nexport const createBitcoinNetworkProvider = (\n networkData: NetworkData\n): BitcoinNetworkProvider => ({\n ...createBaseNetworkProvider('BTC', networkData),\n cluster: networkData.cluster,\n getBalance: async ({ address }) => ({\n balance: await fetchBtcBalance({\n address,\n }),\n }),\n});\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createBitcoinNetworkProvider } from '../utils/createBitcoinNetworkProvider';\n\n/** @notInstrumented */\nexport const registerBitcoinNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n /**\n * If the Bitcoin network provider builder is already registered, return.\n */\n if (networkProviderBuilderRegistry.get().get('BTC')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: createBitcoinNetworkProvider,\n chain: 'BTC',\n });\n};\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { BitcoinWalletAccount } from '../BitcoinWalletAccount.types';\n\n/**\n * Type guard function to check if a wallet account is a Bitcoin wallet account.\n *\n * @example\n * ```ts\n * const accounts = getWalletAccounts();\n * const btcAccounts = accounts.filter(isBitcoinWalletAccount);\n * ```\n *\n * @param walletAccount - The wallet account to check.\n * @returns True if the wallet account is a Bitcoin wallet account, false otherwise.\n * @see isBitcoinNetworkProvider\n * @see addBitcoinExtension\n * @notInstrumented\n */\nexport const isBitcoinWalletAccount = (\n walletAccount: WalletAccount\n): walletAccount is BitcoinWalletAccount => walletAccount.chain === 'BTC';\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { BitcoinWalletProvider } from '../BitcoinWalletProvider.types';\n\n/** @notInstrumented */\nexport const isBitcoinWalletProvider = (\n provider: WalletProvider\n): provider is BitcoinWalletProvider => {\n return provider.chain === 'BTC';\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\ntype SendBitcoinRawTransactionErrorParams = {\n originalError: unknown;\n};\n\nexport class SendBitcoinRawTransactionError extends BaseError {\n constructor({ originalError }: SendBitcoinRawTransactionErrorParams) {\n const cause = originalError instanceof Error ? originalError : null;\n\n super({\n cause,\n code: 'send_bitcoin_raw_transaction_error',\n docsUrl: null,\n name: 'SendBitcoinRawTransactionError',\n shortMessage: 'Failed to send Bitcoin raw transaction',\n });\n }\n}\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\n\nimport type { BitcoinWalletAccount } from '../BitcoinWalletAccount.types';\nimport { SendBitcoinRawTransactionError } from '../errors/SendBitcoinRawTransactionError';\nimport { getMempoolApiUrl } from '../utils/getMempoolApiUrl';\n\ntype SendRawTransactionParams = {\n rawTransaction: string;\n walletAccount: BitcoinWalletAccount;\n};\n\n/**\n * Sends a raw transaction using the mempool.space API.\n *\n * @example\n * ```ts\n * const { transactionId } = await sendRawTransaction({\n * walletAccount: btcAccount,\n * rawTransaction: '0200000001...',\n * });\n * ```\n *\n * @param params.rawTransaction - The raw transaction hex to broadcast.\n * @param params.walletAccount - The wallet account whose network determines the API endpoint.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the transaction id.\n * @throws {SendBitcoinRawTransactionError} If the mempool API returns an error.\n * @see sendBitcoin\n * @see signPsbt\n * @notInstrumented\n */\nexport const sendRawTransaction = async (\n { rawTransaction, walletAccount }: SendRawTransactionParams,\n client = getDefaultClient()\n): Promise<{\n transactionId: string;\n}> => {\n const fetchService = getCore(client).fetch;\n\n const API_URL = getMempoolApiUrl(walletAccount.address);\n\n const response = await fetchService(`${API_URL}/tx`, {\n body: rawTransaction,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n method: 'POST',\n });\n\n if (!response.ok) {\n throw new SendBitcoinRawTransactionError({\n originalError: await response.text(),\n });\n }\n\n // this endpoint returns the transaction ID\n const transactionId = await response.text();\n\n return { transactionId };\n};\n","import { getBuffer } from '@dynamic-labs-sdk/client/core';\n\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport const convertPsbtToBase64 = (psbt: string): string => {\n // Lowercase to handle uppercase hex encoding (e.g., 70736274FF)\n const psbtBase64 = psbt.toLowerCase().startsWith('70736274ff')\n ? getBuffer().from(psbt, 'hex').toString('base64')\n : psbt;\n\n return psbtBase64;\n};\n","import {\n type DynamicClient,\n InvalidParamError,\n} from '@dynamic-labs-sdk/client';\nimport type {\n ExecuteSwapTransactionParams,\n ExecuteSwapTransactionResult,\n} from '@dynamic-labs-sdk/client/core';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\nimport { Psbt } from 'bitcoinjs-lib';\n\nimport { isBitcoinWalletAccount } from '../../isBitcoinWalletAccount';\nimport { isBitcoinWalletProvider } from '../../isBitcoinWalletProvider';\nimport { sendRawTransaction } from '../../sendRawTransaction';\nimport { convertPsbtToBase64 } from '../convertPsbtToBase64';\n\n/** @notInstrumented */\nexport const bitcoinExecuteSwapTransaction = async (\n { onStepChange, signingPayload, walletAccount }: ExecuteSwapTransactionParams,\n client: DynamicClient\n): Promise<ExecuteSwapTransactionResult> => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (\n !isBitcoinWalletAccount(walletAccount) ||\n !isBitcoinWalletProvider(provider)\n ) {\n throw new InvalidParamError(\n 'Wallet account is not a Bitcoin wallet account'\n );\n }\n\n if (!signingPayload.psbt) {\n throw new InvalidParamError(\n 'Signing payload is missing PSBT transaction data'\n );\n }\n\n onStepChange?.('transaction');\n\n // make sure the psbt is base64 encoded, no matter if it comes as hex or base64\n const psbtBase64 = convertPsbtToBase64(signingPayload.psbt);\n\n // Parse the unsigned PSBT to determine which inputs need signing.\n // Explicitly passing signingIndexes ensures all wallet providers\n // (including Phantom, which requires it) know which inputs to sign.\n const unsignedPsbt = Psbt.fromBase64(psbtBase64);\n const signingIndexes = unsignedPsbt.txInputs.map((_, i) => i);\n\n const { signedPsbt } = await provider.signPsbt({\n request: {\n allowedSighash: [1],\n signature: [\n {\n address: walletAccount.address,\n signingIndexes,\n },\n ],\n unsignedPsbtBase64: psbtBase64,\n },\n walletAccount,\n });\n\n const psbt = Psbt.fromBase64(signedPsbt);\n\n // Some wallets return an already-finalized PSBT; only finalize\n // inputs that haven't been finalized yet.\n psbt.data.inputs.forEach((input, idx) => {\n if (!input.finalScriptSig && !input.finalScriptWitness) {\n psbt.finalizeInput(idx);\n }\n });\n\n const rawTxHex = psbt.extractTransaction().toHex();\n\n const { transactionId } = await sendRawTransaction(\n { rawTransaction: rawTxHex, walletAccount },\n client\n );\n\n return { transactionHash: transactionId };\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotBitcoinProviderError extends BaseError {\n public readonly providerKey: string;\n\n constructor(params: { providerKey: string }) {\n super({\n cause: null,\n code: 'not_bitcoin_provider_error',\n docsUrl: null,\n name: 'NotBitcoinProviderError',\n shortMessage: 'Provider is not a Bitcoin wallet provider',\n });\n\n this.providerKey = params.providerKey;\n }\n}\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport {\n MethodNotImplementedError,\n getWalletProviderFromWalletAccount,\n} from '@dynamic-labs-sdk/client/core';\n\nimport type { BitcoinWalletAccount } from '../BitcoinWalletAccount.types';\nimport type {\n BitcoinSendTransactionResponse,\n BitcoinTransaction,\n} from '../BitcoinWalletProvider.types';\nimport { NotBitcoinProviderError } from '../errors/NotBitcoinProviderError';\nimport { isBitcoinWalletProvider } from '../isBitcoinWalletProvider';\n\ntype SendBitcoinParams = {\n transaction: BitcoinTransaction;\n walletAccount: BitcoinWalletAccount;\n};\n\n/**\n * Sends a Bitcoin transaction.\n *\n * @example\n * ```ts\n * const { transactionId } = await sendBitcoin({\n * walletAccount: btcAccount,\n * transaction: { recipientAddress: 'bc1q...', amount: 50000n },\n * });\n * ```\n *\n * @param params.transaction - The transaction to send.\n * @param params.walletAccount - The wallet account to send the transaction from.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the transaction id.\n * @throws {MethodNotImplementedError} If the wallet provider does not implement the sendBitcoin method.\n * @throws {NotBitcoinProviderError} If the wallet account is not a valid BitcoinWalletAccount.\n * @see sendRawTransaction\n * @see signPsbt\n * @notInstrumented\n */\nexport const sendBitcoin = async (\n { walletAccount, transaction }: SendBitcoinParams,\n client = getDefaultClient()\n): Promise<BitcoinSendTransactionResponse> => {\n const provider = getWalletProviderFromWalletAccount(\n {\n walletAccount,\n },\n client\n );\n\n if (!isBitcoinWalletProvider(provider)) {\n throw new NotBitcoinProviderError({ providerKey: provider.key });\n }\n\n if (!provider.sendBitcoin) {\n throw new MethodNotImplementedError('sendBitcoin');\n }\n\n return provider.sendBitcoin({ transaction, walletAccount });\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { InvalidParamError } from '@dynamic-labs-sdk/client';\nimport {\n type TransferAmountParams,\n parseAmountToSmallestUnit,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { isBitcoinWalletAccount } from '../../isBitcoinWalletAccount';\nimport { sendBitcoin } from '../../sendBitcoin';\n\nconst BTC_DECIMALS = 8;\n\n/**\n * Transfers native BTC from one wallet to another.\n *\n * Converts the human-readable BTC amount string to satoshis (8 decimals)\n * and delegates to `sendBitcoin`.\n *\n * @param params.amount - The amount in BTC as a decimal string (e.g. \"0.001\").\n * @param params.recipient - The recipient Bitcoin address.\n * @param params.walletAccount - The wallet account to send from.\n * @param client - The Dynamic client instance.\n * @returns An object containing the transaction hash.\n * @notInstrumented\n */\nexport const bitcoinTransferAmount = async (\n { amount, recipient, walletAccount }: TransferAmountParams,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n if (!isBitcoinWalletAccount(walletAccount)) {\n throw new InvalidParamError(\n 'Wallet account is not a Bitcoin wallet account'\n );\n }\n\n const satoshis = parseAmountToSmallestUnit({ amount, decimals: BTC_DECIMALS });\n\n const result = await sendBitcoin(\n {\n transaction: {\n amount: satoshis,\n recipientAddress: recipient,\n },\n walletAccount,\n },\n client\n );\n\n return { transactionHash: result.transactionId };\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class InvalidPsbtError extends BaseError {\n // eslint-disable-next-line custom-rules/require-single-object-param\n constructor(message: string) {\n super({\n cause: null,\n code: 'invalid_psbt_error',\n docsUrl: null,\n name: 'InvalidPsbtError',\n shortMessage: message,\n });\n }\n}\n"],"mappings":"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"}