@atomiqlabs/sdk 8.6.6 → 8.6.8

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 (226) hide show
  1. package/dist/SmartChainAssets.d.ts +181 -181
  2. package/dist/SmartChainAssets.js +181 -181
  3. package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -6
  4. package/dist/bitcoin/coinselect2/accumulative.js +52 -51
  5. package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -6
  6. package/dist/bitcoin/coinselect2/blackjack.js +38 -37
  7. package/dist/bitcoin/coinselect2/index.d.ts +19 -17
  8. package/dist/bitcoin/coinselect2/index.js +69 -69
  9. package/dist/bitcoin/coinselect2/utils.d.ts +77 -75
  10. package/dist/bitcoin/coinselect2/utils.js +123 -123
  11. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +130 -128
  12. package/dist/bitcoin/wallet/BitcoinWallet.js +322 -322
  13. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +78 -78
  14. package/dist/bitcoin/wallet/IBitcoinWallet.js +21 -20
  15. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +101 -99
  16. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +190 -176
  17. package/dist/enums/FeeType.d.ts +15 -15
  18. package/dist/enums/FeeType.js +19 -19
  19. package/dist/enums/SwapAmountType.d.ts +15 -15
  20. package/dist/enums/SwapAmountType.js +19 -19
  21. package/dist/enums/SwapDirection.d.ts +15 -15
  22. package/dist/enums/SwapDirection.js +19 -19
  23. package/dist/enums/SwapSide.d.ts +15 -15
  24. package/dist/enums/SwapSide.js +19 -19
  25. package/dist/enums/SwapType.d.ts +75 -75
  26. package/dist/enums/SwapType.js +79 -79
  27. package/dist/errors/IntermediaryError.d.ts +13 -13
  28. package/dist/errors/IntermediaryError.js +27 -27
  29. package/dist/errors/RequestError.d.ts +32 -32
  30. package/dist/errors/RequestError.js +54 -54
  31. package/dist/errors/UserError.d.ts +8 -8
  32. package/dist/errors/UserError.js +16 -16
  33. package/dist/events/UnifiedSwapEventListener.d.ts +23 -23
  34. package/dist/events/UnifiedSwapEventListener.js +130 -130
  35. package/dist/http/HttpUtils.d.ts +27 -27
  36. package/dist/http/HttpUtils.js +91 -90
  37. package/dist/http/paramcoders/IParamReader.d.ts +8 -8
  38. package/dist/http/paramcoders/IParamReader.js +2 -2
  39. package/dist/http/paramcoders/ParamDecoder.d.ts +44 -42
  40. package/dist/http/paramcoders/ParamDecoder.js +137 -137
  41. package/dist/http/paramcoders/ParamEncoder.d.ts +20 -18
  42. package/dist/http/paramcoders/ParamEncoder.js +36 -36
  43. package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
  44. package/dist/http/paramcoders/SchemaVerifier.js +145 -145
  45. package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
  46. package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
  47. package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -11
  48. package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
  49. package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -16
  50. package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -173
  51. package/dist/index.d.ts +85 -85
  52. package/dist/index.js +158 -158
  53. package/dist/intermediaries/Intermediary.d.ts +157 -157
  54. package/dist/intermediaries/Intermediary.js +142 -142
  55. package/dist/intermediaries/IntermediaryDiscovery.d.ts +199 -198
  56. package/dist/intermediaries/IntermediaryDiscovery.js +406 -406
  57. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +439 -437
  58. package/dist/intermediaries/apis/IntermediaryAPI.js +603 -603
  59. package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
  60. package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
  61. package/dist/lnurl/LNURL.d.ts +102 -102
  62. package/dist/lnurl/LNURL.js +321 -321
  63. package/dist/prices/RedundantSwapPrice.d.ts +110 -110
  64. package/dist/prices/RedundantSwapPrice.js +222 -222
  65. package/dist/prices/SingleSwapPrice.d.ts +34 -34
  66. package/dist/prices/SingleSwapPrice.js +44 -44
  67. package/dist/prices/SwapPriceWithChain.d.ts +107 -107
  68. package/dist/prices/SwapPriceWithChain.js +128 -128
  69. package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
  70. package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
  71. package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
  72. package/dist/prices/abstract/IPriceProvider.js +74 -74
  73. package/dist/prices/abstract/ISwapPrice.d.ts +168 -168
  74. package/dist/prices/abstract/ISwapPrice.js +279 -279
  75. package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
  76. package/dist/prices/providers/BinancePriceProvider.js +30 -30
  77. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
  78. package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
  79. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
  80. package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
  81. package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
  82. package/dist/prices/providers/CustomPriceProvider.js +35 -35
  83. package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
  84. package/dist/prices/providers/KrakenPriceProvider.js +45 -45
  85. package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
  86. package/dist/prices/providers/OKXPriceProvider.js +29 -29
  87. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
  88. package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
  89. package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
  90. package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
  91. package/dist/storage/IUnifiedStorage.d.ts +85 -85
  92. package/dist/storage/IUnifiedStorage.js +2 -2
  93. package/dist/storage/UnifiedSwapStorage.d.ts +114 -114
  94. package/dist/storage/UnifiedSwapStorage.js +116 -116
  95. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
  96. package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
  97. package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
  98. package/dist/storage-browser/LocalStorageManager.js +93 -93
  99. package/dist/swapper/Swapper.d.ts +687 -686
  100. package/dist/swapper/Swapper.js +1603 -1603
  101. package/dist/swapper/SwapperFactory.d.ts +135 -135
  102. package/dist/swapper/SwapperFactory.js +162 -162
  103. package/dist/swapper/SwapperUtils.d.ts +200 -200
  104. package/dist/swapper/SwapperUtils.js +467 -467
  105. package/dist/swapper/SwapperWithChain.d.ts +404 -404
  106. package/dist/swapper/SwapperWithChain.js +469 -469
  107. package/dist/swapper/SwapperWithSigner.d.ts +322 -322
  108. package/dist/swapper/SwapperWithSigner.js +318 -318
  109. package/dist/swaps/IAddressSwap.d.ts +22 -22
  110. package/dist/swaps/IAddressSwap.js +14 -13
  111. package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
  112. package/dist/swaps/IBTCWalletSwap.js +18 -17
  113. package/dist/swaps/IClaimableSwap.d.ts +49 -49
  114. package/dist/swaps/IClaimableSwap.js +15 -14
  115. package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
  116. package/dist/swaps/IClaimableSwapWrapper.js +2 -2
  117. package/dist/swaps/IRefundableSwap.d.ts +43 -43
  118. package/dist/swaps/IRefundableSwap.js +14 -13
  119. package/dist/swaps/ISwap.d.ts +387 -386
  120. package/dist/swaps/ISwap.js +346 -346
  121. package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
  122. package/dist/swaps/ISwapWithGasDrop.js +12 -11
  123. package/dist/swaps/ISwapWrapper.d.ts +285 -283
  124. package/dist/swaps/ISwapWrapper.js +353 -353
  125. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
  126. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
  127. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +135 -133
  128. package/dist/swaps/escrow_swaps/IEscrowSwap.js +169 -169
  129. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +115 -114
  130. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +134 -134
  131. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +101 -98
  132. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
  133. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
  134. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
  135. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +58 -58
  136. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +78 -78
  137. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +531 -529
  138. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
  139. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +184 -181
  140. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +418 -418
  141. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +583 -581
  142. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1371 -1371
  143. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +228 -225
  144. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +506 -506
  145. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +458 -458
  146. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1126 -1126
  147. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +191 -190
  148. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +378 -378
  149. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +403 -403
  150. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +924 -924
  151. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +62 -62
  152. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +112 -112
  153. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +127 -125
  154. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
  155. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +242 -241
  156. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -520
  157. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
  158. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
  159. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +128 -127
  160. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +278 -278
  161. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +630 -630
  162. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1443 -1443
  163. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +214 -213
  164. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +756 -756
  165. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +261 -261
  166. package/dist/swaps/trusted/ln/LnForGasSwap.js +511 -511
  167. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
  168. package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
  169. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +342 -342
  170. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +715 -715
  171. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +69 -68
  172. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +92 -92
  173. package/dist/types/AmountData.d.ts +10 -10
  174. package/dist/types/AmountData.js +2 -2
  175. package/dist/types/CustomPriceFunction.d.ts +11 -11
  176. package/dist/types/CustomPriceFunction.js +2 -2
  177. package/dist/types/PriceInfoType.d.ts +28 -28
  178. package/dist/types/PriceInfoType.js +57 -56
  179. package/dist/types/SwapExecutionAction.d.ts +88 -88
  180. package/dist/types/SwapExecutionAction.js +2 -2
  181. package/dist/types/SwapStateInfo.d.ts +5 -5
  182. package/dist/types/SwapStateInfo.js +2 -2
  183. package/dist/types/SwapWithSigner.d.ts +17 -17
  184. package/dist/types/SwapWithSigner.js +43 -42
  185. package/dist/types/Token.d.ts +99 -99
  186. package/dist/types/Token.js +76 -76
  187. package/dist/types/TokenAmount.d.ts +69 -69
  188. package/dist/types/TokenAmount.js +60 -59
  189. package/dist/types/fees/Fee.d.ts +50 -50
  190. package/dist/types/fees/Fee.js +2 -2
  191. package/dist/types/fees/FeeBreakdown.d.ts +11 -11
  192. package/dist/types/fees/FeeBreakdown.js +2 -2
  193. package/dist/types/fees/PercentagePPM.d.ts +17 -17
  194. package/dist/types/fees/PercentagePPM.js +18 -17
  195. package/dist/types/lnurl/LNURLPay.d.ts +61 -61
  196. package/dist/types/lnurl/LNURLPay.js +31 -30
  197. package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
  198. package/dist/types/lnurl/LNURLWithdraw.js +27 -26
  199. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
  200. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -14
  201. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
  202. package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
  203. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
  204. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
  205. package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
  206. package/dist/utils/AutomaticClockDriftCorrection.js +70 -69
  207. package/dist/utils/BitcoinUtils.d.ts +14 -12
  208. package/dist/utils/BitcoinUtils.js +102 -101
  209. package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
  210. package/dist/utils/BitcoinWalletUtils.js +14 -13
  211. package/dist/utils/Logger.d.ts +7 -7
  212. package/dist/utils/Logger.js +12 -11
  213. package/dist/utils/RetryUtils.d.ts +22 -22
  214. package/dist/utils/RetryUtils.js +67 -66
  215. package/dist/utils/SwapUtils.d.ts +88 -88
  216. package/dist/utils/SwapUtils.js +72 -72
  217. package/dist/utils/TimeoutUtils.d.ts +17 -17
  218. package/dist/utils/TimeoutUtils.js +55 -54
  219. package/dist/utils/TokenUtils.d.ts +19 -19
  220. package/dist/utils/TokenUtils.js +37 -36
  221. package/dist/utils/TypeUtils.d.ts +7 -7
  222. package/dist/utils/TypeUtils.js +2 -2
  223. package/dist/utils/Utils.d.ts +58 -56
  224. package/dist/utils/Utils.js +194 -193
  225. package/package.json +1 -1
  226. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +14 -2
@@ -1,176 +1,190 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SingleAddressBitcoinWallet = void 0;
4
- const utils_1 = require("@scure/btc-signer/utils");
5
- const btc_signer_1 = require("@scure/btc-signer");
6
- const buffer_1 = require("buffer");
7
- const BitcoinWallet_1 = require("./BitcoinWallet");
8
- const bip32_1 = require("@scure/bip32");
9
- const bip39_1 = require("@scure/bip39");
10
- const english_js_1 = require("@scure/bip39/wordlists/english.js");
11
- const sha2_1 = require("@noble/hashes/sha2");
12
- /**
13
- * Bitcoin wallet implementation deriving a single address from a WIF encoded private key
14
- *
15
- * @category Bitcoin
16
- */
17
- class SingleAddressBitcoinWallet extends BitcoinWallet_1.BitcoinWallet {
18
- constructor(mempoolApi, _network, addressDataOrWIF, feeMultiplier = 1.25, feeOverride) {
19
- const network = typeof (_network) === "object"
20
- ? _network
21
- : BitcoinWallet_1.BitcoinWallet.bitcoinNetworkToObject(_network);
22
- super(mempoolApi, network, feeMultiplier, feeOverride);
23
- if (typeof (addressDataOrWIF) === "string") {
24
- try {
25
- this.privKey = (0, btc_signer_1.WIF)(network).decode(addressDataOrWIF);
26
- }
27
- catch (e) {
28
- this.privKey = (0, btc_signer_1.WIF)().decode(addressDataOrWIF);
29
- }
30
- this.pubkey = (0, utils_1.pubECDSA)(this.privKey);
31
- const address = (0, btc_signer_1.getAddress)("wpkh", this.privKey, network);
32
- if (address == null)
33
- throw new Error("Failed to generate p2wpkh address from the provided private key!");
34
- this.address = address;
35
- }
36
- else {
37
- this.address = addressDataOrWIF.address;
38
- this.pubkey = buffer_1.Buffer.from(addressDataOrWIF.publicKey, "hex");
39
- }
40
- this.addressType = (0, BitcoinWallet_1.identifyAddressType)(this.address, network);
41
- }
42
- /**
43
- * Returns all the wallet addresses controlled by the wallet
44
- *
45
- * @protected
46
- */
47
- toBitcoinWalletAccounts() {
48
- return [{
49
- pubkey: buffer_1.Buffer.from(this.pubkey).toString("hex"), address: this.address, addressType: this.addressType
50
- }];
51
- }
52
- /**
53
- * @inheritDoc
54
- */
55
- async sendTransaction(address, amount, feeRate) {
56
- if (!this.privKey)
57
- throw new Error("Not supported.");
58
- const { psbt, fee } = await super._getPsbt(this.toBitcoinWalletAccounts(), address, Number(amount), feeRate);
59
- if (psbt == null)
60
- throw new Error(`Not enough funds, required for fee: ${fee} sats!`);
61
- psbt.sign(this.privKey);
62
- psbt.finalize();
63
- const txHex = buffer_1.Buffer.from(psbt.extract()).toString("hex");
64
- return await super._sendTransaction(txHex);
65
- }
66
- /**
67
- * @inheritDoc
68
- */
69
- async fundPsbt(inputPsbt, feeRate) {
70
- const { psbt } = await super._fundPsbt(this.toBitcoinWalletAccounts(), inputPsbt, feeRate);
71
- if (psbt == null) {
72
- throw new Error("Not enough balance!");
73
- }
74
- return psbt;
75
- }
76
- /**
77
- * @inheritDoc
78
- */
79
- async signPsbt(psbt, signInputs) {
80
- if (!this.privKey)
81
- throw new Error("Not supported.");
82
- for (let signInput of signInputs) {
83
- psbt.signIdx(this.privKey, signInput);
84
- }
85
- return psbt;
86
- }
87
- /**
88
- * @inheritDoc
89
- */
90
- async getTransactionFee(address, amount, feeRate) {
91
- const { fee } = await super._getPsbt(this.toBitcoinWalletAccounts(), address, Number(amount), feeRate);
92
- return fee;
93
- }
94
- /**
95
- * @inheritDoc
96
- */
97
- async getFundedPsbtFee(basePsbt, feeRate) {
98
- const { fee } = await super._fundPsbt(this.toBitcoinWalletAccounts(), basePsbt, feeRate);
99
- return fee;
100
- }
101
- /**
102
- * @inheritDoc
103
- */
104
- getReceiveAddress() {
105
- return this.address;
106
- }
107
- /**
108
- * Returns the public key of the wallet
109
- */
110
- getPublicKey() {
111
- return buffer_1.Buffer.from(this.pubkey).toString("hex");
112
- }
113
- /**
114
- * @inheritDoc
115
- */
116
- getBalance() {
117
- return this._getBalance(this.address);
118
- }
119
- /**
120
- * @inheritDoc
121
- */
122
- getSpendableBalance(psbt, feeRate) {
123
- return this._getSpendableBalance([{ address: this.address, addressType: this.addressType }], psbt, feeRate);
124
- }
125
- /**
126
- * Generates a new random private key WIF that can be used to instantiate the bitcoin wallet instance
127
- *
128
- * @returns A WIF encoded bitcoin private key
129
- */
130
- static generateRandomPrivateKey(network) {
131
- const networkObject = network == null || typeof (network) === "object"
132
- ? network
133
- : BitcoinWallet_1.BitcoinWallet.bitcoinNetworkToObject(network);
134
- return (0, btc_signer_1.WIF)(networkObject).encode((0, utils_1.randomPrivateKeyBytes)());
135
- }
136
- /**
137
- * Generates a 12-word long mnemonic from any entropy source with 128-bits or more, the entropy is first hashed
138
- * using sha256, and the first 16 bytes of the hash are used to generate the mnemonic
139
- *
140
- * @param entropy Entropy to use for generating the mnemonic
141
- */
142
- static mnemonicFromEntropy(entropy) {
143
- if (entropy.length < 16)
144
- throw new Error("Requires at least 128-bit entropy (16 bytes)");
145
- const entropyHash = buffer_1.Buffer.from((0, sha2_1.sha256)(entropy)).subarray(0, 16);
146
- return (0, bip39_1.entropyToMnemonic)(entropyHash, english_js_1.wordlist);
147
- }
148
- /**
149
- * Generates a random 12-word long mnemonic
150
- */
151
- static generateRandomMnemonic() {
152
- return (0, bip39_1.generateMnemonic)(english_js_1.wordlist, 128);
153
- }
154
- /**
155
- * Generates a WIF private key from mnemonic phrase
156
- *
157
- * @param mnemonic Mnemonic to generate the WIF key from
158
- * @param network Optional bitcoin network to generate the WIF for
159
- * @param derivationPath Optional custom derivation path to use for deriving the wallet
160
- */
161
- static async mnemonicToPrivateKey(mnemonic, network, derivationPath) {
162
- const networkObject = network == null || typeof (network) === "object"
163
- ? network
164
- : BitcoinWallet_1.BitcoinWallet.bitcoinNetworkToObject(network);
165
- derivationPath = networkObject == null || networkObject.bech32 === utils_1.NETWORK.bech32
166
- ? "m/84'/0'/0'/0/0" //Mainnet
167
- : "m/84'/1'/0'/0/0"; //Testnet
168
- const seed = await (0, bip39_1.mnemonicToSeed)(mnemonic);
169
- const hdKey = bip32_1.HDKey.fromMasterSeed(seed);
170
- const privateKey = hdKey.derive(derivationPath).privateKey;
171
- if (privateKey == null)
172
- throw new Error("Cannot derive private key from the mnemonic!");
173
- return (0, btc_signer_1.WIF)(networkObject).encode(privateKey);
174
- }
175
- }
176
- exports.SingleAddressBitcoinWallet = SingleAddressBitcoinWallet;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SingleAddressBitcoinWallet = void 0;
4
+ const utils_1 = require("@scure/btc-signer/utils");
5
+ const btc_signer_1 = require("@scure/btc-signer");
6
+ const buffer_1 = require("buffer");
7
+ const BitcoinWallet_1 = require("./BitcoinWallet");
8
+ const base_1 = require("@atomiqlabs/base");
9
+ const bip32_1 = require("@scure/bip32");
10
+ const bip39_1 = require("@scure/bip39");
11
+ const english_js_1 = require("@scure/bip39/wordlists/english.js");
12
+ const sha2_1 = require("@noble/hashes/sha2");
13
+ const logger = (0, base_1.getLogger)("SingleAddressBitcoinWallet: ");
14
+ /**
15
+ * Bitcoin wallet implementation deriving a single address from a WIF encoded private key
16
+ *
17
+ * @category Bitcoin
18
+ */
19
+ class SingleAddressBitcoinWallet extends BitcoinWallet_1.BitcoinWallet {
20
+ constructor(mempoolApi, _network, addressDataOrWIF, feeMultiplier = 1.25, feeOverride) {
21
+ const network = typeof (_network) === "object"
22
+ ? _network
23
+ : BitcoinWallet_1.BitcoinWallet.bitcoinNetworkToObject(_network);
24
+ super(mempoolApi, network, feeMultiplier, feeOverride);
25
+ if (typeof (addressDataOrWIF) === "string") {
26
+ try {
27
+ this.privKey = (0, btc_signer_1.WIF)(network).decode(addressDataOrWIF);
28
+ }
29
+ catch (e) {
30
+ this.privKey = (0, btc_signer_1.WIF)().decode(addressDataOrWIF);
31
+ }
32
+ this.pubkey = (0, utils_1.pubECDSA)(this.privKey);
33
+ const address = (0, btc_signer_1.getAddress)("wpkh", this.privKey, network);
34
+ if (address == null)
35
+ throw new Error("Failed to generate p2wpkh address from the provided private key!");
36
+ this.address = address;
37
+ this.addressType = (0, BitcoinWallet_1.identifyAddressType)(this.address, network);
38
+ }
39
+ else {
40
+ this.address = addressDataOrWIF.address;
41
+ this.addressType = (0, BitcoinWallet_1.identifyAddressType)(this.address, network);
42
+ this.pubkey = buffer_1.Buffer.from(addressDataOrWIF.publicKey, "hex");
43
+ // Some wallets seem to be returning a full 33-byte compressed pubkey instead of a taproot
44
+ // 32-byte long X-only key. Handle these cases here
45
+ if (this.addressType === "p2tr") {
46
+ if (this.pubkey.length !== 33)
47
+ return;
48
+ const leadingByte = this.pubkey[0];
49
+ if (leadingByte !== 0x03 && leadingByte !== 0x02)
50
+ throw new Error("Invalid public key passed for taproot bitcoin wallet, expected an X-only 32-byte public key, or a compressed 33-byte public key");
51
+ logger.debug(`constructor(): Converting compressed public key ${addressDataOrWIF.publicKey} to taproot X-only 32-byte public key`);
52
+ this.pubkey = this.pubkey.slice(1);
53
+ }
54
+ }
55
+ }
56
+ /**
57
+ * Returns all the wallet addresses controlled by the wallet
58
+ *
59
+ * @protected
60
+ */
61
+ toBitcoinWalletAccounts() {
62
+ return [{
63
+ pubkey: buffer_1.Buffer.from(this.pubkey).toString("hex"), address: this.address, addressType: this.addressType
64
+ }];
65
+ }
66
+ /**
67
+ * @inheritDoc
68
+ */
69
+ async sendTransaction(address, amount, feeRate) {
70
+ if (!this.privKey)
71
+ throw new Error("Not supported.");
72
+ const { psbt, fee } = await super._getPsbt(this.toBitcoinWalletAccounts(), address, Number(amount), feeRate);
73
+ if (psbt == null)
74
+ throw new Error(`Not enough funds, required for fee: ${fee} sats!`);
75
+ psbt.sign(this.privKey);
76
+ psbt.finalize();
77
+ const txHex = buffer_1.Buffer.from(psbt.extract()).toString("hex");
78
+ return await super._sendTransaction(txHex);
79
+ }
80
+ /**
81
+ * @inheritDoc
82
+ */
83
+ async fundPsbt(inputPsbt, feeRate) {
84
+ const { psbt } = await super._fundPsbt(this.toBitcoinWalletAccounts(), inputPsbt, feeRate);
85
+ if (psbt == null) {
86
+ throw new Error("Not enough balance!");
87
+ }
88
+ return psbt;
89
+ }
90
+ /**
91
+ * @inheritDoc
92
+ */
93
+ async signPsbt(psbt, signInputs) {
94
+ if (!this.privKey)
95
+ throw new Error("Not supported.");
96
+ for (let signInput of signInputs) {
97
+ psbt.signIdx(this.privKey, signInput);
98
+ }
99
+ return psbt;
100
+ }
101
+ /**
102
+ * @inheritDoc
103
+ */
104
+ async getTransactionFee(address, amount, feeRate) {
105
+ const { fee } = await super._getPsbt(this.toBitcoinWalletAccounts(), address, Number(amount), feeRate);
106
+ return fee;
107
+ }
108
+ /**
109
+ * @inheritDoc
110
+ */
111
+ async getFundedPsbtFee(basePsbt, feeRate) {
112
+ const { fee } = await super._fundPsbt(this.toBitcoinWalletAccounts(), basePsbt, feeRate);
113
+ return fee;
114
+ }
115
+ /**
116
+ * @inheritDoc
117
+ */
118
+ getReceiveAddress() {
119
+ return this.address;
120
+ }
121
+ /**
122
+ * Returns the public key of the wallet
123
+ */
124
+ getPublicKey() {
125
+ return buffer_1.Buffer.from(this.pubkey).toString("hex");
126
+ }
127
+ /**
128
+ * @inheritDoc
129
+ */
130
+ getBalance() {
131
+ return this._getBalance(this.address);
132
+ }
133
+ /**
134
+ * @inheritDoc
135
+ */
136
+ getSpendableBalance(psbt, feeRate) {
137
+ return this._getSpendableBalance([{ address: this.address, addressType: this.addressType }], psbt, feeRate);
138
+ }
139
+ /**
140
+ * Generates a new random private key WIF that can be used to instantiate the bitcoin wallet instance
141
+ *
142
+ * @returns A WIF encoded bitcoin private key
143
+ */
144
+ static generateRandomPrivateKey(network) {
145
+ const networkObject = network == null || typeof (network) === "object"
146
+ ? network
147
+ : BitcoinWallet_1.BitcoinWallet.bitcoinNetworkToObject(network);
148
+ return (0, btc_signer_1.WIF)(networkObject).encode((0, utils_1.randomPrivateKeyBytes)());
149
+ }
150
+ /**
151
+ * Generates a 12-word long mnemonic from any entropy source with 128-bits or more, the entropy is first hashed
152
+ * using sha256, and the first 16 bytes of the hash are used to generate the mnemonic
153
+ *
154
+ * @param entropy Entropy to use for generating the mnemonic
155
+ */
156
+ static mnemonicFromEntropy(entropy) {
157
+ if (entropy.length < 16)
158
+ throw new Error("Requires at least 128-bit entropy (16 bytes)");
159
+ const entropyHash = buffer_1.Buffer.from((0, sha2_1.sha256)(entropy)).subarray(0, 16);
160
+ return (0, bip39_1.entropyToMnemonic)(entropyHash, english_js_1.wordlist);
161
+ }
162
+ /**
163
+ * Generates a random 12-word long mnemonic
164
+ */
165
+ static generateRandomMnemonic() {
166
+ return (0, bip39_1.generateMnemonic)(english_js_1.wordlist, 128);
167
+ }
168
+ /**
169
+ * Generates a WIF private key from mnemonic phrase
170
+ *
171
+ * @param mnemonic Mnemonic to generate the WIF key from
172
+ * @param network Optional bitcoin network to generate the WIF for
173
+ * @param derivationPath Optional custom derivation path to use for deriving the wallet
174
+ */
175
+ static async mnemonicToPrivateKey(mnemonic, network, derivationPath) {
176
+ const networkObject = network == null || typeof (network) === "object"
177
+ ? network
178
+ : BitcoinWallet_1.BitcoinWallet.bitcoinNetworkToObject(network);
179
+ derivationPath = networkObject == null || networkObject.bech32 === utils_1.NETWORK.bech32
180
+ ? "m/84'/0'/0'/0/0" //Mainnet
181
+ : "m/84'/1'/0'/0/0"; //Testnet
182
+ const seed = await (0, bip39_1.mnemonicToSeed)(mnemonic);
183
+ const hdKey = bip32_1.HDKey.fromMasterSeed(seed);
184
+ const privateKey = hdKey.derive(derivationPath).privateKey;
185
+ if (privateKey == null)
186
+ throw new Error("Cannot derive private key from the mnemonic!");
187
+ return (0, btc_signer_1.WIF)(networkObject).encode(privateKey);
188
+ }
189
+ }
190
+ exports.SingleAddressBitcoinWallet = SingleAddressBitcoinWallet;
@@ -1,15 +1,15 @@
1
- /**
2
- * Enum representing types of fees in a swap
3
- *
4
- * @category Pricing
5
- */
6
- export declare enum FeeType {
7
- /**
8
- * Swap fee taken by the LP
9
- */
10
- SWAP = 0,
11
- /**
12
- * Network fee to cover the transactions on the destination (output) network
13
- */
14
- NETWORK_OUTPUT = 1
15
- }
1
+ /**
2
+ * Enum representing types of fees in a swap
3
+ *
4
+ * @category Pricing
5
+ */
6
+ export declare enum FeeType {
7
+ /**
8
+ * Swap fee taken by the LP
9
+ */
10
+ SWAP = 0,
11
+ /**
12
+ * Network fee to cover the transactions on the destination (output) network
13
+ */
14
+ NETWORK_OUTPUT = 1
15
+ }
@@ -1,19 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FeeType = void 0;
4
- /**
5
- * Enum representing types of fees in a swap
6
- *
7
- * @category Pricing
8
- */
9
- var FeeType;
10
- (function (FeeType) {
11
- /**
12
- * Swap fee taken by the LP
13
- */
14
- FeeType[FeeType["SWAP"] = 0] = "SWAP";
15
- /**
16
- * Network fee to cover the transactions on the destination (output) network
17
- */
18
- FeeType[FeeType["NETWORK_OUTPUT"] = 1] = "NETWORK_OUTPUT";
19
- })(FeeType || (exports.FeeType = FeeType = {}));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FeeType = void 0;
4
+ /**
5
+ * Enum representing types of fees in a swap
6
+ *
7
+ * @category Pricing
8
+ */
9
+ var FeeType;
10
+ (function (FeeType) {
11
+ /**
12
+ * Swap fee taken by the LP
13
+ */
14
+ FeeType[FeeType["SWAP"] = 0] = "SWAP";
15
+ /**
16
+ * Network fee to cover the transactions on the destination (output) network
17
+ */
18
+ FeeType[FeeType["NETWORK_OUTPUT"] = 1] = "NETWORK_OUTPUT";
19
+ })(FeeType = exports.FeeType || (exports.FeeType = {}));
@@ -1,15 +1,15 @@
1
- /**
2
- * Enum representing whether the swap amount is exact input or exact output
3
- *
4
- * @category Core
5
- */
6
- export declare enum SwapAmountType {
7
- /**
8
- * Swap amount specified in the input token
9
- */
10
- EXACT_IN = 1,
11
- /**
12
- * Swap amount specified in the output token
13
- */
14
- EXACT_OUT = 0
15
- }
1
+ /**
2
+ * Enum representing whether the swap amount is exact input or exact output
3
+ *
4
+ * @category Core
5
+ */
6
+ export declare enum SwapAmountType {
7
+ /**
8
+ * Swap amount specified in the input token
9
+ */
10
+ EXACT_IN = 1,
11
+ /**
12
+ * Swap amount specified in the output token
13
+ */
14
+ EXACT_OUT = 0
15
+ }
@@ -1,19 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SwapAmountType = void 0;
4
- /**
5
- * Enum representing whether the swap amount is exact input or exact output
6
- *
7
- * @category Core
8
- */
9
- var SwapAmountType;
10
- (function (SwapAmountType) {
11
- /**
12
- * Swap amount specified in the input token
13
- */
14
- SwapAmountType[SwapAmountType["EXACT_IN"] = 1] = "EXACT_IN";
15
- /**
16
- * Swap amount specified in the output token
17
- */
18
- SwapAmountType[SwapAmountType["EXACT_OUT"] = 0] = "EXACT_OUT";
19
- })(SwapAmountType || (exports.SwapAmountType = SwapAmountType = {}));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwapAmountType = void 0;
4
+ /**
5
+ * Enum representing whether the swap amount is exact input or exact output
6
+ *
7
+ * @category Core
8
+ */
9
+ var SwapAmountType;
10
+ (function (SwapAmountType) {
11
+ /**
12
+ * Swap amount specified in the input token
13
+ */
14
+ SwapAmountType[SwapAmountType["EXACT_IN"] = 1] = "EXACT_IN";
15
+ /**
16
+ * Swap amount specified in the output token
17
+ */
18
+ SwapAmountType[SwapAmountType["EXACT_OUT"] = 0] = "EXACT_OUT";
19
+ })(SwapAmountType = exports.SwapAmountType || (exports.SwapAmountType = {}));
@@ -1,15 +1,15 @@
1
- /**
2
- * Enum representing the direction of a swap (from or to Bitcoin)
3
- *
4
- * @category Core
5
- */
6
- export declare enum SwapDirection {
7
- /**
8
- * Swaps from bitcoin to smart chains (Solana, Starknet, EVM, etc.)
9
- */
10
- FROM_BTC = 0,
11
- /**
12
- * Swaps from smart chains (Solana, Starknet, EVM, etc.) to bitcoin
13
- */
14
- TO_BTC = 1
15
- }
1
+ /**
2
+ * Enum representing the direction of a swap (from or to Bitcoin)
3
+ *
4
+ * @category Core
5
+ */
6
+ export declare enum SwapDirection {
7
+ /**
8
+ * Swaps from bitcoin to smart chains (Solana, Starknet, EVM, etc.)
9
+ */
10
+ FROM_BTC = 0,
11
+ /**
12
+ * Swaps from smart chains (Solana, Starknet, EVM, etc.) to bitcoin
13
+ */
14
+ TO_BTC = 1
15
+ }
@@ -1,19 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SwapDirection = void 0;
4
- /**
5
- * Enum representing the direction of a swap (from or to Bitcoin)
6
- *
7
- * @category Core
8
- */
9
- var SwapDirection;
10
- (function (SwapDirection) {
11
- /**
12
- * Swaps from bitcoin to smart chains (Solana, Starknet, EVM, etc.)
13
- */
14
- SwapDirection[SwapDirection["FROM_BTC"] = 0] = "FROM_BTC";
15
- /**
16
- * Swaps from smart chains (Solana, Starknet, EVM, etc.) to bitcoin
17
- */
18
- SwapDirection[SwapDirection["TO_BTC"] = 1] = "TO_BTC";
19
- })(SwapDirection || (exports.SwapDirection = SwapDirection = {}));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwapDirection = void 0;
4
+ /**
5
+ * Enum representing the direction of a swap (from or to Bitcoin)
6
+ *
7
+ * @category Core
8
+ */
9
+ var SwapDirection;
10
+ (function (SwapDirection) {
11
+ /**
12
+ * Swaps from bitcoin to smart chains (Solana, Starknet, EVM, etc.)
13
+ */
14
+ SwapDirection[SwapDirection["FROM_BTC"] = 0] = "FROM_BTC";
15
+ /**
16
+ * Swaps from smart chains (Solana, Starknet, EVM, etc.) to bitcoin
17
+ */
18
+ SwapDirection[SwapDirection["TO_BTC"] = 1] = "TO_BTC";
19
+ })(SwapDirection = exports.SwapDirection || (exports.SwapDirection = {}));
@@ -1,15 +1,15 @@
1
- /**
2
- * Enum representing the side of the swap for querying available input/output tokens
3
- *
4
- * @category Core
5
- */
6
- export declare enum SwapSide {
7
- /**
8
- * Represents input / source side of the swap
9
- */
10
- INPUT = 1,
11
- /**
12
- * Represents output / destination side of the swap
13
- */
14
- OUTPUT = 0
15
- }
1
+ /**
2
+ * Enum representing the side of the swap for querying available input/output tokens
3
+ *
4
+ * @category Core
5
+ */
6
+ export declare enum SwapSide {
7
+ /**
8
+ * Represents input / source side of the swap
9
+ */
10
+ INPUT = 1,
11
+ /**
12
+ * Represents output / destination side of the swap
13
+ */
14
+ OUTPUT = 0
15
+ }