@atomiqlabs/sdk 8.1.8 → 8.3.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.
- package/dist/bitcoin/wallet/BitcoinWallet.d.ts +41 -5
- package/dist/bitcoin/wallet/BitcoinWallet.js +36 -1
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +52 -2
- package/dist/bitcoin/wallet/IBitcoinWallet.js +2 -1
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +42 -7
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +36 -1
- package/dist/enums/FeeType.d.ts +7 -0
- package/dist/enums/FeeType.js +7 -0
- package/dist/enums/SwapAmountType.d.ts +7 -0
- package/dist/enums/SwapAmountType.js +7 -0
- package/dist/enums/SwapDirection.d.ts +7 -0
- package/dist/enums/SwapDirection.js +7 -0
- package/dist/enums/SwapType.d.ts +62 -1
- package/dist/enums/SwapType.js +62 -1
- package/dist/errors/IntermediaryError.d.ts +4 -0
- package/dist/errors/IntermediaryError.js +1 -0
- package/dist/errors/RequestError.d.ts +15 -1
- package/dist/errors/RequestError.js +8 -0
- package/dist/errors/UserError.d.ts +1 -0
- package/dist/errors/UserError.js +1 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.js +3 -4
- package/dist/intermediaries/Intermediary.d.ts +57 -10
- package/dist/intermediaries/Intermediary.js +37 -10
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +55 -22
- package/dist/intermediaries/IntermediaryDiscovery.js +35 -22
- package/dist/prices/RedundantSwapPrice.d.ts +24 -3
- package/dist/prices/RedundantSwapPrice.js +21 -1
- package/dist/prices/SingleSwapPrice.d.ts +9 -6
- package/dist/prices/SingleSwapPrice.js +10 -7
- package/dist/prices/SwapPriceWithChain.d.ts +54 -16
- package/dist/prices/SwapPriceWithChain.js +58 -20
- package/dist/prices/abstract/ISwapPrice.d.ts +94 -45
- package/dist/prices/abstract/ISwapPrice.js +103 -55
- package/dist/prices/providers/BinancePriceProvider.d.ts +7 -0
- package/dist/prices/providers/BinancePriceProvider.js +7 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +6 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.js +6 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +6 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +6 -0
- package/dist/prices/providers/CustomPriceProvider.d.ts +11 -0
- package/dist/prices/providers/CustomPriceProvider.js +11 -0
- package/dist/prices/providers/KrakenPriceProvider.d.ts +9 -0
- package/dist/prices/providers/KrakenPriceProvider.js +9 -0
- package/dist/prices/providers/OKXPriceProvider.d.ts +6 -0
- package/dist/prices/providers/OKXPriceProvider.js +6 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +3 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +3 -0
- package/dist/storage/IUnifiedStorage.d.ts +19 -7
- package/dist/storage/UnifiedSwapStorage.d.ts +33 -3
- package/dist/storage/UnifiedSwapStorage.js +29 -1
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +31 -7
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +29 -6
- package/dist/storage-browser/LocalStorageManager.d.ts +25 -1
- package/dist/storage-browser/LocalStorageManager.js +25 -1
- package/dist/swapper/Swapper.d.ts +302 -221
- package/dist/swapper/Swapper.js +376 -344
- package/dist/swapper/SwapperFactory.d.ts +41 -17
- package/dist/swapper/SwapperFactory.js +23 -2
- package/dist/swapper/SwapperUtils.d.ts +75 -28
- package/dist/swapper/SwapperUtils.js +107 -60
- package/dist/swapper/SwapperWithChain.d.ts +286 -91
- package/dist/swapper/SwapperWithChain.js +218 -64
- package/dist/swapper/SwapperWithSigner.d.ts +229 -80
- package/dist/swapper/SwapperWithSigner.js +190 -44
- package/dist/swaps/IAddressSwap.d.ts +10 -1
- package/dist/swaps/IAddressSwap.js +2 -1
- package/dist/swaps/IBTCWalletSwap.d.ts +24 -6
- package/dist/swaps/IBTCWalletSwap.js +2 -1
- package/dist/swaps/IClaimableSwap.d.ts +36 -4
- package/dist/swaps/IClaimableSwap.js +2 -1
- package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
- package/dist/swaps/IRefundableSwap.d.ts +29 -3
- package/dist/swaps/IRefundableSwap.js +2 -1
- package/dist/swaps/ISwap.d.ts +159 -21
- package/dist/swaps/ISwap.js +90 -33
- package/dist/swaps/ISwapWithGasDrop.d.ts +6 -0
- package/dist/swaps/ISwapWithGasDrop.js +1 -0
- package/dist/swaps/ISwapWrapper.d.ts +157 -48
- package/dist/swaps/ISwapWrapper.js +130 -72
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +49 -6
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +22 -12
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +65 -12
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +38 -19
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +39 -9
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +30 -21
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +31 -15
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +33 -18
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +94 -29
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +90 -27
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +22 -9
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +24 -11
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +275 -58
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +516 -239
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +76 -25
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +131 -49
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +311 -51
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +542 -193
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +87 -26
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +147 -58
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +209 -53
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +449 -242
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +77 -23
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +116 -46
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +197 -56
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +326 -189
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +30 -5
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +44 -19
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +60 -19
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +74 -31
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +76 -50
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +106 -101
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +36 -13
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +65 -19
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +46 -17
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +82 -27
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +328 -92
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +460 -219
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +244 -124
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +146 -18
- package/dist/swaps/trusted/ln/LnForGasSwap.js +173 -43
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +29 -10
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +30 -11
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +200 -47
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +230 -78
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +34 -12
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +33 -14
- package/dist/types/AmountData.d.ts +2 -1
- package/dist/types/CustomPriceFunction.d.ts +7 -1
- package/dist/types/SwapExecutionAction.d.ts +74 -4
- package/dist/types/SwapWithSigner.d.ts +4 -1
- package/dist/types/SwapWithSigner.js +5 -2
- package/dist/types/Token.d.ts +11 -5
- package/dist/types/Token.js +6 -3
- package/dist/types/TokenAmount.d.ts +3 -0
- package/dist/types/TokenAmount.js +2 -0
- package/dist/types/fees/Fee.d.ts +2 -1
- package/dist/types/fees/FeeBreakdown.d.ts +2 -1
- package/dist/types/fees/PercentagePPM.d.ts +2 -0
- package/dist/types/fees/PercentagePPM.js +1 -0
- package/dist/types/lnurl/LNURLPay.d.ts +14 -6
- package/dist/types/lnurl/LNURLPay.js +6 -2
- package/dist/types/lnurl/LNURLWithdraw.d.ts +12 -5
- package/dist/types/lnurl/LNURLWithdraw.js +6 -2
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +20 -0
- package/dist/types/wallets/LightningInvoiceCreateService.js +15 -0
- package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +3 -1
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +3 -1
- package/dist/utils/BitcoinUtils.d.ts +1 -0
- package/dist/utils/BitcoinUtils.js +5 -1
- package/dist/utils/SwapUtils.d.ts +56 -1
- package/dist/utils/SwapUtils.js +53 -1
- package/dist/utils/TokenUtils.d.ts +10 -2
- package/dist/utils/TokenUtils.js +12 -4
- package/package.json +3 -3
- package/src/bitcoin/wallet/BitcoinWallet.ts +41 -5
- package/src/bitcoin/wallet/IBitcoinWallet.ts +57 -2
- package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +42 -6
- package/src/enums/FeeType.ts +7 -0
- package/src/enums/SwapAmountType.ts +7 -0
- package/src/enums/SwapDirection.ts +7 -0
- package/src/enums/SwapType.ts +62 -2
- package/src/errors/IntermediaryError.ts +4 -0
- package/src/errors/RequestError.ts +15 -1
- package/src/errors/UserError.ts +1 -0
- package/src/index.ts +6 -5
- package/src/intermediaries/Intermediary.ts +57 -10
- package/src/intermediaries/IntermediaryDiscovery.ts +60 -27
- package/src/prices/RedundantSwapPrice.ts +24 -4
- package/src/prices/SingleSwapPrice.ts +10 -7
- package/src/prices/SwapPriceWithChain.ts +59 -21
- package/src/prices/abstract/ISwapPrice.ts +114 -65
- package/src/prices/providers/BinancePriceProvider.ts +7 -0
- package/src/prices/providers/CoinGeckoPriceProvider.ts +6 -0
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +6 -0
- package/src/prices/providers/CustomPriceProvider.ts +11 -0
- package/src/prices/providers/KrakenPriceProvider.ts +9 -0
- package/src/prices/providers/OKXPriceProvider.ts +6 -0
- package/src/prices/providers/abstract/ExchangePriceProvider.ts +3 -0
- package/src/storage/IUnifiedStorage.ts +19 -7
- package/src/storage/UnifiedSwapStorage.ts +33 -3
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +31 -8
- package/src/storage-browser/LocalStorageManager.ts +25 -1
- package/src/swapper/Swapper.ts +512 -378
- package/src/swapper/SwapperFactory.ts +44 -21
- package/src/swapper/SwapperUtils.ts +107 -60
- package/src/swapper/SwapperWithChain.ts +320 -81
- package/src/swapper/SwapperWithSigner.ts +263 -56
- package/src/swaps/IAddressSwap.ts +11 -1
- package/src/swaps/IBTCWalletSwap.ts +24 -8
- package/src/swaps/IClaimableSwap.ts +39 -4
- package/src/swaps/IClaimableSwapWrapper.ts +11 -2
- package/src/swaps/IRefundableSwap.ts +32 -3
- package/src/swaps/ISwap.ts +221 -82
- package/src/swaps/ISwapWithGasDrop.ts +6 -0
- package/src/swaps/ISwapWrapper.ts +212 -94
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +62 -18
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +83 -37
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +61 -30
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +37 -19
- package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +120 -51
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +559 -256
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +155 -61
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +590 -226
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +470 -243
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +352 -193
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +86 -39
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +88 -33
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +534 -263
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +289 -148
- package/src/swaps/trusted/ln/LnForGasSwap.ts +184 -45
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +260 -86
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
- package/src/types/AmountData.ts +2 -1
- package/src/types/CustomPriceFunction.ts +7 -1
- package/src/types/SwapExecutionAction.ts +84 -5
- package/src/types/SwapWithSigner.ts +7 -3
- package/src/types/Token.ts +12 -5
- package/src/types/TokenAmount.ts +3 -0
- package/src/types/fees/Fee.ts +2 -1
- package/src/types/fees/FeeBreakdown.ts +2 -1
- package/src/types/fees/PercentagePPM.ts +2 -0
- package/src/types/lnurl/LNURLPay.ts +14 -6
- package/src/types/lnurl/LNURLWithdraw.ts +12 -5
- package/src/types/wallets/LightningInvoiceCreateService.ts +26 -0
- package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
- package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +3 -1
- package/src/utils/BitcoinUtils.ts +5 -0
- package/src/utils/SwapUtils.ts +61 -1
- package/src/utils/TokenUtils.ts +12 -4
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +0 -68
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +0 -2
- package/dist/bitcoin/LightningNetworkApi.d.ts +0 -12
- package/dist/bitcoin/LightningNetworkApi.js +0 -2
- package/dist/bitcoin/mempool/MempoolApi.d.ts +0 -350
- package/dist/bitcoin/mempool/MempoolApi.js +0 -311
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +0 -44
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +0 -48
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +0 -119
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +0 -361
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +0 -22
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +0 -105
- package/dist/errors/PaymentAuthError.d.ts +0 -11
- package/dist/errors/PaymentAuthError.js +0 -23
- package/src/errors/PaymentAuthError.ts +0 -26
|
@@ -14,47 +14,55 @@ const LNURLWithdraw_1 = require("../types/lnurl/LNURLWithdraw");
|
|
|
14
14
|
const LNURLPay_1 = require("../types/lnurl/LNURLPay");
|
|
15
15
|
const BitcoinWalletUtils_1 = require("../utils/BitcoinWalletUtils");
|
|
16
16
|
/**
|
|
17
|
-
* Utility class providing helper methods for
|
|
17
|
+
* Utility class providing helper methods for address parsing, token balances, serialization
|
|
18
|
+
* and other miscellaneous things.
|
|
19
|
+
*
|
|
18
20
|
* @category Core
|
|
19
21
|
*/
|
|
20
22
|
class SwapperUtils {
|
|
21
23
|
constructor(root) {
|
|
22
|
-
this.bitcoinNetwork = root.
|
|
24
|
+
this.bitcoinNetwork = root._btcNetwork;
|
|
23
25
|
this.root = root;
|
|
24
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Checks whether a passed address is a valid address on the smart chain
|
|
29
|
+
*
|
|
30
|
+
* @param address Address
|
|
31
|
+
* @param chainId Smart chain identifier string to check the address for
|
|
32
|
+
*/
|
|
25
33
|
isValidSmartChainAddress(address, chainId) {
|
|
26
34
|
if (chainId != null) {
|
|
27
|
-
if (this.root.
|
|
35
|
+
if (this.root._chains[chainId] == null)
|
|
28
36
|
throw new Error(`Unknown chain id: ${chainId}`);
|
|
29
|
-
return this.root.
|
|
37
|
+
return this.root._chains[chainId].chainInterface.isValidAddress(address);
|
|
30
38
|
}
|
|
31
39
|
for (let chainId of this.root.getSmartChains()) {
|
|
32
|
-
if (this.root.
|
|
40
|
+
if (this.root._chains[chainId].chainInterface.isValidAddress(address))
|
|
33
41
|
return true;
|
|
34
42
|
}
|
|
35
43
|
return false;
|
|
36
44
|
}
|
|
37
45
|
/**
|
|
38
|
-
*
|
|
46
|
+
* Checks whether an address is a valid BOLT11 bitcoin lightning invoice
|
|
39
47
|
*
|
|
40
|
-
* @param
|
|
48
|
+
* @param address Address to check
|
|
41
49
|
*/
|
|
42
|
-
isLightningInvoice(
|
|
50
|
+
isLightningInvoice(address) {
|
|
43
51
|
try {
|
|
44
|
-
(0, bolt11_1.decode)(
|
|
52
|
+
(0, bolt11_1.decode)(address);
|
|
45
53
|
return true;
|
|
46
54
|
}
|
|
47
55
|
catch (e) { }
|
|
48
56
|
return false;
|
|
49
57
|
}
|
|
50
58
|
/**
|
|
51
|
-
*
|
|
59
|
+
* Checks whether an address is a valid bitcoin address
|
|
52
60
|
*
|
|
53
|
-
* @param
|
|
61
|
+
* @param address Address to check
|
|
54
62
|
*/
|
|
55
|
-
isValidBitcoinAddress(
|
|
63
|
+
isValidBitcoinAddress(address) {
|
|
56
64
|
try {
|
|
57
|
-
(0, btc_signer_1.Address)(this.bitcoinNetwork).decode(
|
|
65
|
+
(0, btc_signer_1.Address)(this.bitcoinNetwork).decode(address);
|
|
58
66
|
return true;
|
|
59
67
|
}
|
|
60
68
|
catch (e) {
|
|
@@ -62,13 +70,13 @@ class SwapperUtils {
|
|
|
62
70
|
}
|
|
63
71
|
}
|
|
64
72
|
/**
|
|
65
|
-
*
|
|
73
|
+
* Checks whether an address is a valid BOLT11 bitcoin lightning invoice WITH AMOUNT
|
|
66
74
|
*
|
|
67
|
-
* @param
|
|
75
|
+
* @param address Address to check
|
|
68
76
|
*/
|
|
69
|
-
isValidLightningInvoice(
|
|
77
|
+
isValidLightningInvoice(address) {
|
|
70
78
|
try {
|
|
71
|
-
const parsed = (0, bolt11_1.decode)(
|
|
79
|
+
const parsed = (0, bolt11_1.decode)(address);
|
|
72
80
|
if (parsed.millisatoshis != null)
|
|
73
81
|
return true;
|
|
74
82
|
}
|
|
@@ -76,18 +84,18 @@ class SwapperUtils {
|
|
|
76
84
|
return false;
|
|
77
85
|
}
|
|
78
86
|
/**
|
|
79
|
-
*
|
|
87
|
+
* Checks whether an address is a valid LNURL (no checking on type is performed)
|
|
80
88
|
*
|
|
81
|
-
* @param
|
|
89
|
+
* @param address Address to check
|
|
82
90
|
*/
|
|
83
|
-
isValidLNURL(
|
|
84
|
-
return LNURL_1.LNURL.isLNURL(
|
|
91
|
+
isValidLNURL(address) {
|
|
92
|
+
return LNURL_1.LNURL.isLNURL(address);
|
|
85
93
|
}
|
|
86
94
|
/**
|
|
87
95
|
* Returns type and data about an LNURL
|
|
88
96
|
*
|
|
89
|
-
* @param lnurl
|
|
90
|
-
* @param shouldRetry
|
|
97
|
+
* @param lnurl LNURL link to check, can be either `pay` or `withdraw` type
|
|
98
|
+
* @param shouldRetry Optional whether HTTP requests should retried on failure
|
|
91
99
|
*/
|
|
92
100
|
getLNURLTypeAndData(lnurl, shouldRetry) {
|
|
93
101
|
return LNURL_1.LNURL.getLNURLType(lnurl, shouldRetry);
|
|
@@ -194,7 +202,7 @@ class SwapperUtils {
|
|
|
194
202
|
}
|
|
195
203
|
parseSmartchainAddress(resultText) {
|
|
196
204
|
for (let chainId of this.root.getSmartChains()) {
|
|
197
|
-
if (this.root.
|
|
205
|
+
if (this.root._chains[chainId].chainInterface.isValidAddress(resultText)) {
|
|
198
206
|
return {
|
|
199
207
|
address: resultText,
|
|
200
208
|
type: chainId,
|
|
@@ -205,12 +213,12 @@ class SwapperUtils {
|
|
|
205
213
|
return null;
|
|
206
214
|
}
|
|
207
215
|
/**
|
|
208
|
-
* General parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses
|
|
209
|
-
* (hence returns Promise)
|
|
216
|
+
* General parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses. Also fetches LNURL data
|
|
217
|
+
* (hence async and returns Promise).
|
|
210
218
|
*
|
|
211
219
|
* @param addressString Address to parse
|
|
212
220
|
* @throws {Error} Error in address parsing
|
|
213
|
-
* @returns Address data or null if address doesn't conform to any known format
|
|
221
|
+
* @returns Address data or `null` if address doesn't conform to any known format
|
|
214
222
|
*/
|
|
215
223
|
async parseAddress(addressString) {
|
|
216
224
|
if (addressString.startsWith("bitcoin:")) {
|
|
@@ -242,11 +250,11 @@ class SwapperUtils {
|
|
|
242
250
|
}
|
|
243
251
|
/**
|
|
244
252
|
* Synchronous general parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses, doesn't fetch
|
|
245
|
-
* LNURL data,
|
|
253
|
+
* LNURL data, returns `swapType: null` instead to prevent returning a Promise
|
|
246
254
|
*
|
|
247
255
|
* @param addressString Address to parse
|
|
248
256
|
* @throws {Error} Error in address parsing
|
|
249
|
-
* @returns Address data or null if address doesn't conform to any known format
|
|
257
|
+
* @returns Address data or `null` if address doesn't conform to any known format
|
|
250
258
|
*/
|
|
251
259
|
parseAddressSync(addressString) {
|
|
252
260
|
if (addressString.startsWith("bitcoin:")) {
|
|
@@ -277,14 +285,15 @@ class SwapperUtils {
|
|
|
277
285
|
return this.parseSmartchainAddress(addressString);
|
|
278
286
|
}
|
|
279
287
|
/**
|
|
280
|
-
* Returns a random PSBT that can be used for fee estimation
|
|
281
|
-
*
|
|
288
|
+
* Returns a random PSBT that can be used for fee estimation for SPV vault (UTXO-controlled vault) based swaps
|
|
289
|
+
* {@link SwapType.SPV_VAULT_FROM_BTC}, the last output (the LP output) is omitted to allow for coinselection
|
|
290
|
+
* algorithm to determine maximum sendable amount there
|
|
282
291
|
*
|
|
283
|
-
* @param chainIdentifier
|
|
284
|
-
* @param includeGasToken
|
|
292
|
+
* @param chainIdentifier Smart chain to swap to
|
|
293
|
+
* @param includeGasToken Whether to return the PSBT also with the gas token amount (increases the vSize by 8)
|
|
285
294
|
*/
|
|
286
295
|
getRandomSpvVaultPsbt(chainIdentifier, includeGasToken) {
|
|
287
|
-
const wrapper = this.root.
|
|
296
|
+
const wrapper = this.root._chains[chainIdentifier].wrappers[SwapType_1.SwapType.SPV_VAULT_FROM_BTC];
|
|
288
297
|
if (wrapper == null)
|
|
289
298
|
throw new Error("Chain doesn't support spv vault swaps!");
|
|
290
299
|
return wrapper.getDummySwapPsbt(includeGasToken);
|
|
@@ -292,17 +301,19 @@ class SwapperUtils {
|
|
|
292
301
|
/**
|
|
293
302
|
* Returns the spendable balance of a bitcoin wallet
|
|
294
303
|
*
|
|
295
|
-
* @param wallet
|
|
296
|
-
*
|
|
304
|
+
* @param wallet Bitcoin wallet to check the spendable balance for, can either be a simple
|
|
305
|
+
* bitcoin address string or a wallet object
|
|
306
|
+
* @param targetChain Destination smart chain for the swap, the ensures proper spendable balance
|
|
307
|
+
* is estimated taking into consideration different swap primitives available on different chains
|
|
297
308
|
* @param options Additional options
|
|
298
309
|
*/
|
|
299
310
|
async getBitcoinSpendableBalance(wallet, targetChain, options) {
|
|
300
311
|
let bitcoinWallet;
|
|
301
312
|
if (typeof (wallet) === "string") {
|
|
302
|
-
bitcoinWallet = new SingleAddressBitcoinWallet_1.SingleAddressBitcoinWallet(this.root.
|
|
313
|
+
bitcoinWallet = new SingleAddressBitcoinWallet_1.SingleAddressBitcoinWallet(this.root._bitcoinRpc, this.bitcoinNetwork, { address: wallet, publicKey: "" });
|
|
303
314
|
}
|
|
304
315
|
else {
|
|
305
|
-
bitcoinWallet = (0, BitcoinWalletUtils_1.toBitcoinWallet)(wallet, this.root.
|
|
316
|
+
bitcoinWallet = (0, BitcoinWalletUtils_1.toBitcoinWallet)(wallet, this.root._bitcoinRpc, this.bitcoinNetwork);
|
|
306
317
|
}
|
|
307
318
|
let feeRate = options?.feeRate ?? await bitcoinWallet.getFeeRate();
|
|
308
319
|
if (options?.minFeeRate != null)
|
|
@@ -320,12 +331,13 @@ class SwapperUtils {
|
|
|
320
331
|
};
|
|
321
332
|
}
|
|
322
333
|
/**
|
|
323
|
-
* Returns the maximum spendable balance of the wallet, deducting the fee needed
|
|
334
|
+
* Returns the maximum spendable balance of the smart chain wallet, deducting the fee needed
|
|
335
|
+
* to initiate a swap for native balances
|
|
324
336
|
*/
|
|
325
337
|
async getSpendableBalance(wallet, token, options) {
|
|
326
|
-
if (this.root.
|
|
338
|
+
if (this.root._chains[token.chainId] == null)
|
|
327
339
|
throw new Error("Invalid chain identifier! Unknown chain: " + token.chainId);
|
|
328
|
-
const { swapContract, chainInterface } = this.root.
|
|
340
|
+
const { swapContract, chainInterface } = this.root._chains[token.chainId];
|
|
329
341
|
let signer;
|
|
330
342
|
if (typeof (wallet) === "string") {
|
|
331
343
|
signer = wallet;
|
|
@@ -353,12 +365,12 @@ class SwapperUtils {
|
|
|
353
365
|
return (0, TokenAmount_1.toTokenAmount)(finalBalance, token, this.root.prices);
|
|
354
366
|
}
|
|
355
367
|
/**
|
|
356
|
-
* Returns the address of the native currency of the chain
|
|
368
|
+
* Returns the address of the native currency of the smart chain
|
|
357
369
|
*/
|
|
358
370
|
getNativeToken(chainIdentifier) {
|
|
359
|
-
if (this.root.
|
|
371
|
+
if (this.root._chains[chainIdentifier] == null)
|
|
360
372
|
throw new Error("Invalid chain identifier! Unknown chain: " + chainIdentifier);
|
|
361
|
-
return this.root.
|
|
373
|
+
return this.root._tokens[chainIdentifier][this.root._chains[chainIdentifier].chainInterface.getNativeCurrencyAddress()];
|
|
362
374
|
}
|
|
363
375
|
/**
|
|
364
376
|
* Returns a random signer for a given smart chain
|
|
@@ -366,9 +378,9 @@ class SwapperUtils {
|
|
|
366
378
|
* @param chainIdentifier
|
|
367
379
|
*/
|
|
368
380
|
randomSigner(chainIdentifier) {
|
|
369
|
-
if (this.root.
|
|
381
|
+
if (this.root._chains[chainIdentifier] == null)
|
|
370
382
|
throw new Error("Invalid chain identifier! Unknown chain: " + chainIdentifier);
|
|
371
|
-
return this.root.
|
|
383
|
+
return this.root._chains[chainIdentifier].chainInterface.randomSigner();
|
|
372
384
|
}
|
|
373
385
|
/**
|
|
374
386
|
* Returns a random address for a given smart chain
|
|
@@ -376,45 +388,80 @@ class SwapperUtils {
|
|
|
376
388
|
* @param chainIdentifier
|
|
377
389
|
*/
|
|
378
390
|
randomAddress(chainIdentifier) {
|
|
379
|
-
if (this.root.
|
|
391
|
+
if (this.root._chains[chainIdentifier] == null)
|
|
380
392
|
throw new Error("Invalid chain identifier! Unknown chain: " + chainIdentifier);
|
|
381
|
-
return this.root.
|
|
393
|
+
return this.root._chains[chainIdentifier].chainInterface.randomAddress();
|
|
382
394
|
}
|
|
383
395
|
/**
|
|
384
396
|
* Signs and broadcasts the supplied smart chain transaction
|
|
397
|
+
*
|
|
398
|
+
* @param chainIdentifier Smart chain identifier string
|
|
399
|
+
* @param signer Signer to use for signing the transactions
|
|
400
|
+
* @param txs An array of transactions to sign
|
|
401
|
+
* @param abortSignal Abort signal
|
|
402
|
+
* @param onBeforePublish Callback invoked before a transaction is sent (invoked for every transaction to be sent)
|
|
385
403
|
*/
|
|
386
404
|
sendAndConfirm(chainIdentifier, signer, txs, abortSignal, onBeforePublish) {
|
|
387
|
-
if (this.root.
|
|
405
|
+
if (this.root._chains[chainIdentifier] == null)
|
|
388
406
|
throw new Error("Invalid chain identifier! Unknown chain: " + chainIdentifier);
|
|
389
|
-
return this.root.
|
|
407
|
+
return this.root._chains[chainIdentifier].chainInterface.sendAndConfirm(signer, txs, true, abortSignal, false, onBeforePublish);
|
|
390
408
|
}
|
|
391
409
|
/**
|
|
392
410
|
* Broadcasts already signed smart chain transactions
|
|
411
|
+
*
|
|
412
|
+
* @param chainIdentifier Smart chain identifier string
|
|
413
|
+
* @param txs An array of already signed transactions
|
|
414
|
+
* @param abortSignal Abort signal
|
|
415
|
+
* @param onBeforePublish Callback invoked before a transaction is sent (invoked for every transaction to be sent)
|
|
393
416
|
*/
|
|
394
417
|
sendSignedAndConfirm(chainIdentifier, txs, abortSignal, onBeforePublish) {
|
|
395
|
-
if (this.root.
|
|
418
|
+
if (this.root._chains[chainIdentifier] == null)
|
|
396
419
|
throw new Error("Invalid chain identifier! Unknown chain: " + chainIdentifier);
|
|
397
|
-
return this.root.
|
|
420
|
+
return this.root._chains[chainIdentifier].chainInterface.sendSignedAndConfirm(txs, true, abortSignal, false, onBeforePublish);
|
|
398
421
|
}
|
|
422
|
+
/**
|
|
423
|
+
* Serializes an unsigned smart chain transaction
|
|
424
|
+
*
|
|
425
|
+
* @param chainIdentifier Smart chain string identifier
|
|
426
|
+
* @param tx An unsigned transaction to serialize
|
|
427
|
+
*/
|
|
399
428
|
serializeUnsignedTransaction(chainIdentifier, tx) {
|
|
400
|
-
if (this.root.
|
|
429
|
+
if (this.root._chains[chainIdentifier] == null)
|
|
401
430
|
throw new Error("Invalid chain identifier! Unknown chain: " + chainIdentifier);
|
|
402
|
-
return this.root.
|
|
431
|
+
return this.root._chains[chainIdentifier].chainInterface.serializeTx(tx);
|
|
403
432
|
}
|
|
433
|
+
/**
|
|
434
|
+
* Deserializes an unsigned smart chain transaction
|
|
435
|
+
*
|
|
436
|
+
* @param chainIdentifier Smart chain string identifier
|
|
437
|
+
* @param tx Serialized unsigned transaction
|
|
438
|
+
*/
|
|
404
439
|
deserializeUnsignedTransaction(chainIdentifier, tx) {
|
|
405
|
-
if (this.root.
|
|
440
|
+
if (this.root._chains[chainIdentifier] == null)
|
|
406
441
|
throw new Error("Invalid chain identifier! Unknown chain: " + chainIdentifier);
|
|
407
|
-
return this.root.
|
|
442
|
+
return this.root._chains[chainIdentifier].chainInterface.deserializeTx(tx);
|
|
408
443
|
}
|
|
444
|
+
/**
|
|
445
|
+
* Serializes a signed smart chain transaction
|
|
446
|
+
*
|
|
447
|
+
* @param chainIdentifier Smart chain string identifier
|
|
448
|
+
* @param tx A signed transaction to serialize
|
|
449
|
+
*/
|
|
409
450
|
serializeSignedTransaction(chainIdentifier, tx) {
|
|
410
|
-
if (this.root.
|
|
451
|
+
if (this.root._chains[chainIdentifier] == null)
|
|
411
452
|
throw new Error("Invalid chain identifier! Unknown chain: " + chainIdentifier);
|
|
412
|
-
return this.root.
|
|
453
|
+
return this.root._chains[chainIdentifier].chainInterface.serializeSignedTx(tx);
|
|
413
454
|
}
|
|
455
|
+
/**
|
|
456
|
+
* Deserializes a signed smart chain transaction
|
|
457
|
+
*
|
|
458
|
+
* @param chainIdentifier Smart chain string identifier
|
|
459
|
+
* @param tx Serialized signed transaction
|
|
460
|
+
*/
|
|
414
461
|
deserializeSignedTransaction(chainIdentifier, tx) {
|
|
415
|
-
if (this.root.
|
|
462
|
+
if (this.root._chains[chainIdentifier] == null)
|
|
416
463
|
throw new Error("Invalid chain identifier! Unknown chain: " + chainIdentifier);
|
|
417
|
-
return this.root.
|
|
464
|
+
return this.root._chains[chainIdentifier].chainInterface.deserializeSignedTx(tx);
|
|
418
465
|
}
|
|
419
466
|
}
|
|
420
467
|
exports.SwapperUtils = SwapperUtils;
|