@atomiqlabs/sdk 8.1.7 → 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 +303 -222
- 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 +513 -379
- 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
|
@@ -19,6 +19,19 @@ import {CustomPriceFunction} from "../types/CustomPriceFunction";
|
|
|
19
19
|
import {MempoolApi, MempoolBitcoinRpc} from "@atomiqlabs/btc-mempool";
|
|
20
20
|
|
|
21
21
|
//Helper types
|
|
22
|
+
/**
|
|
23
|
+
* Token definitions for a specific chain
|
|
24
|
+
*/
|
|
25
|
+
type TypedChainTokens<T extends ChainInitializer<any, any, any>> = {
|
|
26
|
+
[val in keyof T["tokens"]]: SCToken<T["chainId"]>
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Token resolver for a specific chain
|
|
30
|
+
*/
|
|
31
|
+
type TypedChainTokenResolver<T extends ChainInitializer<any, any, any>> = {
|
|
32
|
+
getToken: (address: string) => SCToken<T["chainId"]>
|
|
33
|
+
};
|
|
34
|
+
|
|
22
35
|
type ChainTypeDict<T extends ChainInitializer<any, any, any>> = {[K in T["chainId"]]: T["chainType"]};
|
|
23
36
|
type ToMultichain<T extends readonly ChainInitializer<any, any, any>[]> =
|
|
24
37
|
(T extends readonly [infer First extends ChainInitializer<any, any, any>, ...infer Rest extends ChainInitializer<any, any, any>[]]
|
|
@@ -45,7 +58,8 @@ type GetAllOptions<T extends readonly ChainInitializer<any, any, any>[]> =
|
|
|
45
58
|
|
|
46
59
|
//Exported types
|
|
47
60
|
/**
|
|
48
|
-
* Configuration options for creating a
|
|
61
|
+
* Configuration options for creating a Swapper instance
|
|
62
|
+
*
|
|
49
63
|
* @category Core
|
|
50
64
|
*/
|
|
51
65
|
export type TypedSwapperOptions<T extends readonly ChainInitializer<any, any, any>[]> = {
|
|
@@ -58,15 +72,8 @@ export type TypedSwapperOptions<T extends readonly ChainInitializer<any, any, an
|
|
|
58
72
|
} & SwapperOptions;
|
|
59
73
|
|
|
60
74
|
/**
|
|
61
|
-
* Token
|
|
62
|
-
*
|
|
63
|
-
*/
|
|
64
|
-
export type TypedChainTokenResolver<T extends ChainInitializer<any, any, any>> = {
|
|
65
|
-
getToken: (address: string) => SCToken<T["chainId"]>
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Token resolvers for all chains
|
|
75
|
+
* Token resolvers for all chains, resolve tokens based on their address
|
|
76
|
+
*
|
|
70
77
|
* @category Core
|
|
71
78
|
*/
|
|
72
79
|
export type TypedTokenResolvers<T extends readonly ChainInitializer<any, any, any>[]> =
|
|
@@ -74,16 +81,9 @@ export type TypedTokenResolvers<T extends readonly ChainInitializer<any, any, an
|
|
|
74
81
|
? TokenResolverDict<First> & TypedTokenResolvers<Rest>
|
|
75
82
|
: unknown);
|
|
76
83
|
|
|
77
|
-
/**
|
|
78
|
-
* Token definitions for a specific chain
|
|
79
|
-
* @category Core
|
|
80
|
-
*/
|
|
81
|
-
export type TypedChainTokens<T extends ChainInitializer<any, any, any>> = {
|
|
82
|
-
[val in keyof T["tokens"]]: SCToken<T["chainId"]>
|
|
83
|
-
};
|
|
84
|
-
|
|
85
84
|
/**
|
|
86
85
|
* All tokens including Bitcoin tokens
|
|
86
|
+
*
|
|
87
87
|
* @category Core
|
|
88
88
|
*/
|
|
89
89
|
export type TypedTokens<T extends readonly ChainInitializer<any, ChainType, any>[]> = GetAllTokens<T> & {
|
|
@@ -95,12 +95,14 @@ export type TypedTokens<T extends readonly ChainInitializer<any, ChainType, any>
|
|
|
95
95
|
|
|
96
96
|
/**
|
|
97
97
|
* Type alias for a Swapper instance with typed chain support
|
|
98
|
+
*
|
|
98
99
|
* @category Core
|
|
99
100
|
*/
|
|
100
101
|
export type TypedSwapper<T extends readonly ChainInitializer<any, ChainType, any>[]> = Swapper<ToMultichain<T>>;
|
|
101
102
|
|
|
102
103
|
/**
|
|
103
|
-
* Type alias for a specific swap type
|
|
104
|
+
* Type alias for a specific swap type
|
|
105
|
+
*
|
|
104
106
|
* @category Core
|
|
105
107
|
*/
|
|
106
108
|
export type TypedSwap<
|
|
@@ -149,13 +151,20 @@ const nostrUrls: string[] = [
|
|
|
149
151
|
|
|
150
152
|
/**
|
|
151
153
|
* Factory class for creating and initializing Swapper instances with typed chain support
|
|
154
|
+
*
|
|
152
155
|
* @category Core
|
|
153
156
|
*/
|
|
154
157
|
export class SwapperFactory<T extends readonly ChainInitializer<any, ChainType, any>[]> {
|
|
155
158
|
|
|
159
|
+
/**
|
|
160
|
+
* All available tokens for the atomiq SDK
|
|
161
|
+
*/
|
|
156
162
|
Tokens: TypedTokens<T> = {
|
|
157
163
|
BITCOIN: BitcoinTokens
|
|
158
164
|
} as any;
|
|
165
|
+
/**
|
|
166
|
+
* Token resolvers for various smart chains supported by the SDK, allow fetching tokens based on their addresses
|
|
167
|
+
*/
|
|
159
168
|
TokenResolver: TypedTokenResolvers<T> = {} as any;
|
|
160
169
|
|
|
161
170
|
constructor(readonly initializers: T) {
|
|
@@ -184,6 +193,14 @@ export class SwapperFactory<T extends readonly ChainInitializer<any, ChainType,
|
|
|
184
193
|
});
|
|
185
194
|
}
|
|
186
195
|
|
|
196
|
+
/**
|
|
197
|
+
* Returns a new swapper instance with the passed options.
|
|
198
|
+
*
|
|
199
|
+
* The swapper returned here is not yet initialized, be sure to call {@link Swapper.init}, before
|
|
200
|
+
* calling any other functions in the swapper instance.
|
|
201
|
+
*
|
|
202
|
+
* @param options Options for customizing the swapper instance
|
|
203
|
+
*/
|
|
187
204
|
newSwapper(options: TypedSwapperOptions<T>): TypedSwapper<T> {
|
|
188
205
|
options.bitcoinNetwork ??= BitcoinNetwork.MAINNET;
|
|
189
206
|
options.storagePrefix ??= "atomiqsdk-"+options.bitcoinNetwork+"-";
|
|
@@ -193,11 +210,11 @@ export class SwapperFactory<T extends readonly ChainInitializer<any, ChainType,
|
|
|
193
210
|
|
|
194
211
|
let bitcoinRpc: MempoolBitcoinRpc;
|
|
195
212
|
if(options.mempoolApi!=null) {
|
|
196
|
-
bitcoinRpc = options.mempoolApi instanceof MempoolBitcoinRpc ? options.mempoolApi : new MempoolBitcoinRpc(options.mempoolApi);
|
|
213
|
+
bitcoinRpc = options.mempoolApi instanceof MempoolBitcoinRpc ? options.mempoolApi : new MempoolBitcoinRpc(options.mempoolApi, options.bitcoinNetwork);
|
|
197
214
|
} else {
|
|
198
215
|
const urls = mempoolUrls[options.bitcoinNetwork];
|
|
199
216
|
if(urls==null) throw new Error(`No pre-configured urls for ${BitcoinNetwork[options.bitcoinNetwork]} network were found, please explicitly pass mempoolApi parameter!`);
|
|
200
|
-
bitcoinRpc = new MempoolBitcoinRpc(urls);
|
|
217
|
+
bitcoinRpc = new MempoolBitcoinRpc(urls, options.bitcoinNetwork);
|
|
201
218
|
}
|
|
202
219
|
|
|
203
220
|
const pricingAssets: (RedundantSwapPriceAssets<ToMultichain<T>>[number] & {ticker: string, name: string})[] = [];
|
|
@@ -243,6 +260,12 @@ export class SwapperFactory<T extends readonly ChainInitializer<any, ChainType,
|
|
|
243
260
|
);
|
|
244
261
|
}
|
|
245
262
|
|
|
263
|
+
/**
|
|
264
|
+
* Returns a new and already initialized swapper instance with the passed options. There is no need
|
|
265
|
+
* to call {@link Swapper.init} anymore.
|
|
266
|
+
*
|
|
267
|
+
* @param options Options for customizing the swapper instance
|
|
268
|
+
*/
|
|
246
269
|
async newSwapperInitialized(options: TypedSwapperOptions<T>): Promise<TypedSwapper<T>> {
|
|
247
270
|
const swapper = this.newSwapper(options);
|
|
248
271
|
await swapper.init();
|
|
@@ -16,7 +16,9 @@ import {isLNURLPay, LNURLPay} from "../types/lnurl/LNURLPay";
|
|
|
16
16
|
import {toBitcoinWallet} from "../utils/BitcoinWalletUtils";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* Utility class providing helper methods for
|
|
19
|
+
* Utility class providing helper methods for address parsing, token balances, serialization
|
|
20
|
+
* and other miscellaneous things.
|
|
21
|
+
*
|
|
20
22
|
* @category Core
|
|
21
23
|
*/
|
|
22
24
|
export class SwapperUtils<T extends MultiChain> {
|
|
@@ -25,42 +27,48 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
25
27
|
private readonly root: Swapper<T>;
|
|
26
28
|
|
|
27
29
|
constructor(root: Swapper<T>) {
|
|
28
|
-
this.bitcoinNetwork = root.
|
|
30
|
+
this.bitcoinNetwork = root._btcNetwork;
|
|
29
31
|
this.root = root;
|
|
30
32
|
}
|
|
31
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Checks whether a passed address is a valid address on the smart chain
|
|
36
|
+
*
|
|
37
|
+
* @param address Address
|
|
38
|
+
* @param chainId Smart chain identifier string to check the address for
|
|
39
|
+
*/
|
|
32
40
|
isValidSmartChainAddress(address: string, chainId?: ChainIds<T>): boolean {
|
|
33
41
|
if(chainId!=null) {
|
|
34
|
-
if(this.root.
|
|
35
|
-
return this.root.
|
|
42
|
+
if(this.root._chains[chainId]==null) throw new Error(`Unknown chain id: ${chainId}`);
|
|
43
|
+
return this.root._chains[chainId].chainInterface.isValidAddress(address);
|
|
36
44
|
}
|
|
37
45
|
for(let chainId of this.root.getSmartChains()) {
|
|
38
|
-
if(this.root.
|
|
46
|
+
if(this.root._chains[chainId].chainInterface.isValidAddress(address)) return true;
|
|
39
47
|
}
|
|
40
48
|
return false;
|
|
41
49
|
}
|
|
42
50
|
|
|
43
51
|
/**
|
|
44
|
-
*
|
|
52
|
+
* Checks whether an address is a valid BOLT11 bitcoin lightning invoice
|
|
45
53
|
*
|
|
46
|
-
* @param
|
|
54
|
+
* @param address Address to check
|
|
47
55
|
*/
|
|
48
|
-
isLightningInvoice(
|
|
56
|
+
isLightningInvoice(address: string): boolean {
|
|
49
57
|
try {
|
|
50
|
-
bolt11Decode(
|
|
58
|
+
bolt11Decode(address);
|
|
51
59
|
return true;
|
|
52
60
|
} catch (e) {}
|
|
53
61
|
return false;
|
|
54
62
|
}
|
|
55
63
|
|
|
56
64
|
/**
|
|
57
|
-
*
|
|
65
|
+
* Checks whether an address is a valid bitcoin address
|
|
58
66
|
*
|
|
59
|
-
* @param
|
|
67
|
+
* @param address Address to check
|
|
60
68
|
*/
|
|
61
|
-
isValidBitcoinAddress(
|
|
69
|
+
isValidBitcoinAddress(address: string): boolean {
|
|
62
70
|
try {
|
|
63
|
-
Address(this.bitcoinNetwork).decode(
|
|
71
|
+
Address(this.bitcoinNetwork).decode(address);
|
|
64
72
|
return true;
|
|
65
73
|
} catch (e) {
|
|
66
74
|
return false;
|
|
@@ -68,32 +76,32 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
68
76
|
}
|
|
69
77
|
|
|
70
78
|
/**
|
|
71
|
-
*
|
|
79
|
+
* Checks whether an address is a valid BOLT11 bitcoin lightning invoice WITH AMOUNT
|
|
72
80
|
*
|
|
73
|
-
* @param
|
|
81
|
+
* @param address Address to check
|
|
74
82
|
*/
|
|
75
|
-
isValidLightningInvoice(
|
|
83
|
+
isValidLightningInvoice(address: string): boolean {
|
|
76
84
|
try {
|
|
77
|
-
const parsed = bolt11Decode(
|
|
85
|
+
const parsed = bolt11Decode(address);
|
|
78
86
|
if(parsed.millisatoshis!=null) return true;
|
|
79
87
|
} catch (e) {}
|
|
80
88
|
return false;
|
|
81
89
|
}
|
|
82
90
|
|
|
83
91
|
/**
|
|
84
|
-
*
|
|
92
|
+
* Checks whether an address is a valid LNURL (no checking on type is performed)
|
|
85
93
|
*
|
|
86
|
-
* @param
|
|
94
|
+
* @param address Address to check
|
|
87
95
|
*/
|
|
88
|
-
isValidLNURL(
|
|
89
|
-
return LNURL.isLNURL(
|
|
96
|
+
isValidLNURL(address: string): boolean {
|
|
97
|
+
return LNURL.isLNURL(address);
|
|
90
98
|
}
|
|
91
99
|
|
|
92
100
|
/**
|
|
93
101
|
* Returns type and data about an LNURL
|
|
94
102
|
*
|
|
95
|
-
* @param lnurl
|
|
96
|
-
* @param shouldRetry
|
|
103
|
+
* @param lnurl LNURL link to check, can be either `pay` or `withdraw` type
|
|
104
|
+
* @param shouldRetry Optional whether HTTP requests should retried on failure
|
|
97
105
|
*/
|
|
98
106
|
getLNURLTypeAndData(lnurl: string, shouldRetry?: boolean): Promise<LNURLPay | LNURLWithdraw | null> {
|
|
99
107
|
return LNURL.getLNURLType(lnurl, shouldRetry);
|
|
@@ -227,7 +235,7 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
227
235
|
max?: TokenAmount
|
|
228
236
|
} | null {
|
|
229
237
|
for(let chainId of this.root.getSmartChains()) {
|
|
230
|
-
if(this.root.
|
|
238
|
+
if(this.root._chains[chainId].chainInterface.isValidAddress(resultText)) {
|
|
231
239
|
return {
|
|
232
240
|
address: resultText,
|
|
233
241
|
type: chainId,
|
|
@@ -239,12 +247,12 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
239
247
|
}
|
|
240
248
|
|
|
241
249
|
/**
|
|
242
|
-
* General parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses
|
|
243
|
-
* (hence returns Promise)
|
|
250
|
+
* General parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses. Also fetches LNURL data
|
|
251
|
+
* (hence async and returns Promise).
|
|
244
252
|
*
|
|
245
253
|
* @param addressString Address to parse
|
|
246
254
|
* @throws {Error} Error in address parsing
|
|
247
|
-
* @returns Address data or null if address doesn't conform to any known format
|
|
255
|
+
* @returns Address data or `null` if address doesn't conform to any known format
|
|
248
256
|
*/
|
|
249
257
|
async parseAddress(addressString: string): Promise<{
|
|
250
258
|
address: string,
|
|
@@ -286,11 +294,11 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
286
294
|
|
|
287
295
|
/**
|
|
288
296
|
* Synchronous general parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses, doesn't fetch
|
|
289
|
-
* LNURL data,
|
|
297
|
+
* LNURL data, returns `swapType: null` instead to prevent returning a Promise
|
|
290
298
|
*
|
|
291
299
|
* @param addressString Address to parse
|
|
292
300
|
* @throws {Error} Error in address parsing
|
|
293
|
-
* @returns Address data or null if address doesn't conform to any known format
|
|
301
|
+
* @returns Address data or `null` if address doesn't conform to any known format
|
|
294
302
|
*/
|
|
295
303
|
parseAddressSync(addressString: string): {
|
|
296
304
|
address: string,
|
|
@@ -330,14 +338,15 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
330
338
|
}
|
|
331
339
|
|
|
332
340
|
/**
|
|
333
|
-
* Returns a random PSBT that can be used for fee estimation
|
|
334
|
-
*
|
|
341
|
+
* Returns a random PSBT that can be used for fee estimation for SPV vault (UTXO-controlled vault) based swaps
|
|
342
|
+
* {@link SwapType.SPV_VAULT_FROM_BTC}, the last output (the LP output) is omitted to allow for coinselection
|
|
343
|
+
* algorithm to determine maximum sendable amount there
|
|
335
344
|
*
|
|
336
|
-
* @param chainIdentifier
|
|
337
|
-
* @param includeGasToken
|
|
345
|
+
* @param chainIdentifier Smart chain to swap to
|
|
346
|
+
* @param includeGasToken Whether to return the PSBT also with the gas token amount (increases the vSize by 8)
|
|
338
347
|
*/
|
|
339
348
|
getRandomSpvVaultPsbt<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, includeGasToken?: boolean): Transaction {
|
|
340
|
-
const wrapper = this.root.
|
|
349
|
+
const wrapper = this.root._chains[chainIdentifier].wrappers[SwapType.SPV_VAULT_FROM_BTC];
|
|
341
350
|
if(wrapper==null) throw new Error("Chain doesn't support spv vault swaps!");
|
|
342
351
|
return wrapper.getDummySwapPsbt(includeGasToken);
|
|
343
352
|
}
|
|
@@ -345,8 +354,10 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
345
354
|
/**
|
|
346
355
|
* Returns the spendable balance of a bitcoin wallet
|
|
347
356
|
*
|
|
348
|
-
* @param wallet
|
|
349
|
-
*
|
|
357
|
+
* @param wallet Bitcoin wallet to check the spendable balance for, can either be a simple
|
|
358
|
+
* bitcoin address string or a wallet object
|
|
359
|
+
* @param targetChain Destination smart chain for the swap, the ensures proper spendable balance
|
|
360
|
+
* is estimated taking into consideration different swap primitives available on different chains
|
|
350
361
|
* @param options Additional options
|
|
351
362
|
*/
|
|
352
363
|
async getBitcoinSpendableBalance(
|
|
@@ -363,9 +374,9 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
363
374
|
}> {
|
|
364
375
|
let bitcoinWallet: IBitcoinWallet;
|
|
365
376
|
if(typeof(wallet)==="string") {
|
|
366
|
-
bitcoinWallet = new SingleAddressBitcoinWallet(this.root.
|
|
377
|
+
bitcoinWallet = new SingleAddressBitcoinWallet(this.root._bitcoinRpc, this.bitcoinNetwork, {address: wallet, publicKey: ""});
|
|
367
378
|
} else {
|
|
368
|
-
bitcoinWallet = toBitcoinWallet(wallet, this.root.
|
|
379
|
+
bitcoinWallet = toBitcoinWallet(wallet, this.root._bitcoinRpc, this.bitcoinNetwork);
|
|
369
380
|
}
|
|
370
381
|
|
|
371
382
|
let feeRate = options?.feeRate ?? await bitcoinWallet.getFeeRate();
|
|
@@ -385,14 +396,15 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
385
396
|
}
|
|
386
397
|
|
|
387
398
|
/**
|
|
388
|
-
* Returns the maximum spendable balance of the wallet, deducting the fee needed
|
|
399
|
+
* Returns the maximum spendable balance of the smart chain wallet, deducting the fee needed
|
|
400
|
+
* to initiate a swap for native balances
|
|
389
401
|
*/
|
|
390
402
|
async getSpendableBalance<ChainIdentifier extends ChainIds<T>>(wallet: string | T[ChainIdentifier]["Signer"] | T[ChainIdentifier]["NativeSigner"], token: SCToken<ChainIdentifier>, options?: {
|
|
391
403
|
feeMultiplier?: number,
|
|
392
404
|
feeRate?: any
|
|
393
405
|
}): Promise<TokenAmount> {
|
|
394
|
-
if(this.root.
|
|
395
|
-
const {swapContract, chainInterface} = this.root.
|
|
406
|
+
if(this.root._chains[token.chainId]==null) throw new Error("Invalid chain identifier! Unknown chain: "+token.chainId);
|
|
407
|
+
const {swapContract, chainInterface} = this.root._chains[token.chainId];
|
|
396
408
|
|
|
397
409
|
let signer: string;
|
|
398
410
|
if(typeof(wallet)==="string") {
|
|
@@ -433,11 +445,11 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
433
445
|
}
|
|
434
446
|
|
|
435
447
|
/**
|
|
436
|
-
* Returns the address of the native currency of the chain
|
|
448
|
+
* Returns the address of the native currency of the smart chain
|
|
437
449
|
*/
|
|
438
450
|
getNativeToken<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): SCToken<ChainIdentifier> {
|
|
439
|
-
if(this.root.
|
|
440
|
-
return this.root.
|
|
451
|
+
if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
|
|
452
|
+
return this.root._tokens[chainIdentifier][this.root._chains[chainIdentifier].chainInterface.getNativeCurrencyAddress()] as SCToken<ChainIdentifier>;
|
|
441
453
|
}
|
|
442
454
|
|
|
443
455
|
/**
|
|
@@ -446,8 +458,8 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
446
458
|
* @param chainIdentifier
|
|
447
459
|
*/
|
|
448
460
|
randomSigner<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): T[ChainIdentifier]["Signer"] {
|
|
449
|
-
if(this.root.
|
|
450
|
-
return this.root.
|
|
461
|
+
if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
|
|
462
|
+
return this.root._chains[chainIdentifier].chainInterface.randomSigner();
|
|
451
463
|
}
|
|
452
464
|
|
|
453
465
|
/**
|
|
@@ -456,12 +468,18 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
456
468
|
* @param chainIdentifier
|
|
457
469
|
*/
|
|
458
470
|
randomAddress<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): string {
|
|
459
|
-
if(this.root.
|
|
460
|
-
return this.root.
|
|
471
|
+
if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
|
|
472
|
+
return this.root._chains[chainIdentifier].chainInterface.randomAddress();
|
|
461
473
|
}
|
|
462
474
|
|
|
463
475
|
/**
|
|
464
476
|
* Signs and broadcasts the supplied smart chain transaction
|
|
477
|
+
*
|
|
478
|
+
* @param chainIdentifier Smart chain identifier string
|
|
479
|
+
* @param signer Signer to use for signing the transactions
|
|
480
|
+
* @param txs An array of transactions to sign
|
|
481
|
+
* @param abortSignal Abort signal
|
|
482
|
+
* @param onBeforePublish Callback invoked before a transaction is sent (invoked for every transaction to be sent)
|
|
465
483
|
*/
|
|
466
484
|
sendAndConfirm<ChainIdentifier extends ChainIds<T>>(
|
|
467
485
|
chainIdentifier: ChainIdentifier,
|
|
@@ -470,12 +488,17 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
470
488
|
abortSignal?: AbortSignal,
|
|
471
489
|
onBeforePublish?: (txId: string, rawTx: string) => Promise<void>
|
|
472
490
|
): Promise<string[]> {
|
|
473
|
-
if(this.root.
|
|
474
|
-
return this.root.
|
|
491
|
+
if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
|
|
492
|
+
return this.root._chains[chainIdentifier].chainInterface.sendAndConfirm(signer, txs, true, abortSignal, false, onBeforePublish);
|
|
475
493
|
}
|
|
476
494
|
|
|
477
495
|
/**
|
|
478
496
|
* Broadcasts already signed smart chain transactions
|
|
497
|
+
*
|
|
498
|
+
* @param chainIdentifier Smart chain identifier string
|
|
499
|
+
* @param txs An array of already signed transactions
|
|
500
|
+
* @param abortSignal Abort signal
|
|
501
|
+
* @param onBeforePublish Callback invoked before a transaction is sent (invoked for every transaction to be sent)
|
|
479
502
|
*/
|
|
480
503
|
sendSignedAndConfirm<ChainIdentifier extends ChainIds<T>>(
|
|
481
504
|
chainIdentifier: ChainIdentifier,
|
|
@@ -483,28 +506,52 @@ export class SwapperUtils<T extends MultiChain> {
|
|
|
483
506
|
abortSignal?: AbortSignal,
|
|
484
507
|
onBeforePublish?: (txId: string, rawTx: string) => Promise<void>
|
|
485
508
|
): Promise<string[]> {
|
|
486
|
-
if(this.root.
|
|
487
|
-
return this.root.
|
|
509
|
+
if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
|
|
510
|
+
return this.root._chains[chainIdentifier].chainInterface.sendSignedAndConfirm(txs, true, abortSignal, false, onBeforePublish);
|
|
488
511
|
}
|
|
489
512
|
|
|
513
|
+
/**
|
|
514
|
+
* Serializes an unsigned smart chain transaction
|
|
515
|
+
*
|
|
516
|
+
* @param chainIdentifier Smart chain string identifier
|
|
517
|
+
* @param tx An unsigned transaction to serialize
|
|
518
|
+
*/
|
|
490
519
|
serializeUnsignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: T[ChainIdentifier]["TX"]): Promise<string> {
|
|
491
|
-
if(this.root.
|
|
492
|
-
return this.root.
|
|
520
|
+
if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
|
|
521
|
+
return this.root._chains[chainIdentifier].chainInterface.serializeTx(tx);
|
|
493
522
|
}
|
|
494
523
|
|
|
524
|
+
/**
|
|
525
|
+
* Deserializes an unsigned smart chain transaction
|
|
526
|
+
*
|
|
527
|
+
* @param chainIdentifier Smart chain string identifier
|
|
528
|
+
* @param tx Serialized unsigned transaction
|
|
529
|
+
*/
|
|
495
530
|
deserializeUnsignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: string): Promise<T[ChainIdentifier]["TX"]> {
|
|
496
|
-
if(this.root.
|
|
497
|
-
return this.root.
|
|
531
|
+
if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
|
|
532
|
+
return this.root._chains[chainIdentifier].chainInterface.deserializeTx(tx);
|
|
498
533
|
}
|
|
499
534
|
|
|
535
|
+
/**
|
|
536
|
+
* Serializes a signed smart chain transaction
|
|
537
|
+
*
|
|
538
|
+
* @param chainIdentifier Smart chain string identifier
|
|
539
|
+
* @param tx A signed transaction to serialize
|
|
540
|
+
*/
|
|
500
541
|
serializeSignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: T[ChainIdentifier]["SignedTXType"]): Promise<string> {
|
|
501
|
-
if(this.root.
|
|
502
|
-
return this.root.
|
|
542
|
+
if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
|
|
543
|
+
return this.root._chains[chainIdentifier].chainInterface.serializeSignedTx(tx);
|
|
503
544
|
}
|
|
504
545
|
|
|
546
|
+
/**
|
|
547
|
+
* Deserializes a signed smart chain transaction
|
|
548
|
+
*
|
|
549
|
+
* @param chainIdentifier Smart chain string identifier
|
|
550
|
+
* @param tx Serialized signed transaction
|
|
551
|
+
*/
|
|
505
552
|
deserializeSignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: string): Promise<T[ChainIdentifier]["SignedTXType"]> {
|
|
506
|
-
if(this.root.
|
|
507
|
-
return this.root.
|
|
553
|
+
if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
|
|
554
|
+
return this.root._chains[chainIdentifier].chainInterface.deserializeSignedTx(tx);
|
|
508
555
|
}
|
|
509
556
|
|
|
510
557
|
}
|