@atomiqlabs/sdk 7.0.11 → 8.0.7
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/README.md +45 -29
- package/dist/SmartChainAssets.d.ts +11 -3
- package/dist/SmartChainAssets.js +7 -3
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +68 -0
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +2 -0
- package/dist/bitcoin/LightningNetworkApi.d.ts +12 -0
- package/dist/bitcoin/LightningNetworkApi.js +2 -0
- package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -0
- package/dist/bitcoin/coinselect2/accumulative.js +52 -0
- package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -0
- package/dist/bitcoin/coinselect2/blackjack.js +38 -0
- package/dist/bitcoin/coinselect2/index.d.ts +19 -0
- package/dist/bitcoin/coinselect2/index.js +69 -0
- package/dist/bitcoin/coinselect2/utils.d.ts +71 -0
- package/dist/bitcoin/coinselect2/utils.js +123 -0
- package/dist/bitcoin/mempool/MempoolApi.d.ts +350 -0
- package/dist/bitcoin/mempool/MempoolApi.js +311 -0
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +44 -0
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +48 -0
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +119 -0
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +361 -0
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +22 -0
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +105 -0
- package/dist/bitcoin/wallet/BitcoinWallet.d.ts +93 -0
- package/dist/bitcoin/wallet/BitcoinWallet.js +273 -0
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +28 -0
- package/dist/bitcoin/wallet/IBitcoinWallet.js +20 -0
- package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.d.ts +21 -0
- package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.js +2 -0
- package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.d.ts +7 -0
- package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.js +2 -0
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +40 -0
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +86 -0
- package/dist/enums/FeeType.d.ts +8 -0
- package/dist/enums/FeeType.js +12 -0
- package/dist/enums/SwapAmountType.d.ts +8 -0
- package/dist/enums/SwapAmountType.js +12 -0
- package/dist/enums/SwapDirection.d.ts +8 -0
- package/dist/enums/SwapDirection.js +12 -0
- package/dist/enums/SwapType.d.ts +14 -0
- package/dist/enums/SwapType.js +18 -0
- package/dist/errors/IntermediaryError.d.ts +9 -0
- package/dist/errors/IntermediaryError.js +26 -0
- package/dist/errors/PaymentAuthError.d.ts +11 -0
- package/dist/errors/PaymentAuthError.js +23 -0
- package/dist/errors/RequestError.d.ts +18 -0
- package/dist/errors/RequestError.js +46 -0
- package/dist/errors/UserError.d.ts +7 -0
- package/dist/errors/UserError.js +15 -0
- package/dist/events/UnifiedSwapEventListener.d.ts +23 -0
- package/dist/events/UnifiedSwapEventListener.js +130 -0
- package/dist/http/HttpUtils.d.ts +27 -0
- package/dist/http/HttpUtils.js +91 -0
- package/dist/http/paramcoders/IParamReader.d.ts +8 -0
- package/dist/http/paramcoders/IParamReader.js +2 -0
- package/dist/http/paramcoders/ParamDecoder.d.ts +44 -0
- package/dist/http/paramcoders/ParamDecoder.js +132 -0
- package/dist/http/paramcoders/ParamEncoder.d.ts +20 -0
- package/dist/http/paramcoders/ParamEncoder.js +31 -0
- package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -0
- package/dist/http/paramcoders/SchemaVerifier.js +145 -0
- package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -0
- package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -0
- package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -0
- package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -0
- package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -0
- package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -0
- package/dist/index.d.ts +82 -4
- package/dist/index.js +128 -4
- package/dist/intermediaries/Intermediary.d.ts +111 -0
- package/dist/intermediaries/Intermediary.js +115 -0
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +166 -0
- package/dist/intermediaries/IntermediaryDiscovery.js +390 -0
- package/dist/intermediaries/apis/IntermediaryAPI.d.ts +436 -0
- package/dist/intermediaries/apis/IntermediaryAPI.js +600 -0
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +154 -0
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +136 -0
- package/dist/lnurl/LNURL.d.ts +102 -0
- package/dist/lnurl/LNURL.js +321 -0
- package/dist/prices/RedundantSwapPrice.d.ts +89 -0
- package/dist/prices/RedundantSwapPrice.js +202 -0
- package/dist/prices/SingleSwapPrice.d.ts +31 -0
- package/dist/prices/SingleSwapPrice.js +41 -0
- package/dist/prices/SwapPriceWithChain.d.ts +70 -0
- package/dist/prices/SwapPriceWithChain.js +91 -0
- package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -0
- package/dist/prices/abstract/ICachedSwapPrice.js +62 -0
- package/dist/prices/abstract/IPriceProvider.d.ts +81 -0
- package/dist/prices/abstract/IPriceProvider.js +74 -0
- package/dist/prices/abstract/ISwapPrice.d.ts +117 -0
- package/dist/prices/abstract/ISwapPrice.js +219 -0
- package/dist/prices/providers/BinancePriceProvider.d.ts +16 -0
- package/dist/prices/providers/BinancePriceProvider.js +23 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +17 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.js +23 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +19 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +23 -0
- package/dist/prices/providers/CustomPriceProvider.d.ts +13 -0
- package/dist/prices/providers/CustomPriceProvider.js +24 -0
- package/dist/prices/providers/KrakenPriceProvider.d.ts +29 -0
- package/dist/prices/providers/KrakenPriceProvider.js +36 -0
- package/dist/prices/providers/OKXPriceProvider.d.ts +28 -0
- package/dist/prices/providers/OKXPriceProvider.js +23 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +14 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +18 -0
- package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -0
- package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -0
- package/dist/storage/IUnifiedStorage.d.ts +73 -0
- package/dist/storage/IUnifiedStorage.js +2 -0
- package/dist/storage/UnifiedSwapStorage.d.ts +82 -0
- package/dist/storage/UnifiedSwapStorage.js +83 -0
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +39 -0
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +275 -0
- package/dist/{storage → storage-browser}/LocalStorageManager.d.ts +1 -0
- package/dist/{storage → storage-browser}/LocalStorageManager.js +2 -1
- package/dist/swapper/Swapper.d.ts +533 -0
- package/dist/swapper/Swapper.js +1566 -0
- package/dist/swapper/SwapperFactory.d.ts +87 -0
- package/dist/{SwapperFactory.js → swapper/SwapperFactory.js} +40 -22
- package/dist/swapper/SwapperUtils.d.ts +153 -0
- package/dist/swapper/SwapperUtils.js +420 -0
- package/dist/swapper/SwapperWithChain.d.ts +214 -0
- package/dist/swapper/SwapperWithChain.js +315 -0
- package/dist/swapper/SwapperWithSigner.d.ts +178 -0
- package/dist/swapper/SwapperWithSigner.js +172 -0
- package/dist/swaps/IAddressSwap.d.ts +13 -0
- package/dist/swaps/IAddressSwap.js +13 -0
- package/dist/swaps/IBTCWalletSwap.d.ts +55 -0
- package/dist/swaps/IBTCWalletSwap.js +17 -0
- package/dist/swaps/IClaimableSwap.d.ts +17 -0
- package/dist/swaps/IClaimableSwap.js +14 -0
- package/dist/swaps/IClaimableSwapWrapper.d.ts +5 -0
- package/dist/swaps/IClaimableSwapWrapper.js +2 -0
- package/dist/swaps/IRefundableSwap.d.ts +17 -0
- package/dist/swaps/IRefundableSwap.js +13 -0
- package/dist/swaps/ISwap.d.ts +207 -0
- package/dist/swaps/ISwap.js +264 -0
- package/dist/swaps/ISwapWithGasDrop.d.ts +15 -0
- package/dist/swaps/ISwapWithGasDrop.js +11 -0
- package/dist/swaps/ISwapWrapper.d.ts +153 -0
- package/dist/swaps/ISwapWrapper.js +227 -0
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +53 -0
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +116 -0
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +70 -0
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +132 -0
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +85 -0
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +122 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +86 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +115 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +93 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +121 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +45 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +65 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +263 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +933 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +110 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +307 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +236 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +898 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +125 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +393 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +245 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +841 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +120 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +294 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +228 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +721 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +37 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +93 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +86 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +213 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +170 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +50 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +109 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +93 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +217 -0
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +315 -0
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1098 -0
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +125 -0
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +631 -0
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +107 -0
- package/dist/swaps/trusted/ln/LnForGasSwap.js +343 -0
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +21 -0
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +62 -0
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +164 -0
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +520 -0
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +48 -0
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +74 -0
- package/dist/types/AmountData.d.ts +9 -0
- package/dist/types/AmountData.js +2 -0
- package/dist/types/CustomPriceFunction.d.ts +5 -0
- package/dist/types/CustomPriceFunction.js +2 -0
- package/dist/types/PriceInfoType.d.ts +28 -0
- package/dist/types/PriceInfoType.js +57 -0
- package/dist/types/SwapExecutionAction.d.ts +7 -0
- package/dist/types/SwapExecutionAction.js +2 -0
- package/dist/types/SwapWithSigner.d.ts +14 -0
- package/dist/types/SwapWithSigner.js +40 -0
- package/dist/types/Token.d.ts +53 -0
- package/dist/types/Token.js +58 -0
- package/dist/types/TokenAmount.d.ts +57 -0
- package/dist/types/TokenAmount.js +47 -0
- package/dist/types/fees/Fee.d.ts +49 -0
- package/dist/types/fees/Fee.js +2 -0
- package/dist/types/fees/FeeBreakdown.d.ts +10 -0
- package/dist/types/fees/FeeBreakdown.js +2 -0
- package/dist/types/fees/PercentagePPM.d.ts +15 -0
- package/dist/types/fees/PercentagePPM.js +17 -0
- package/dist/types/lnurl/LNURLPay.d.ts +54 -0
- package/dist/types/lnurl/LNURLPay.js +28 -0
- package/dist/types/lnurl/LNURLWithdraw.d.ts +42 -0
- package/dist/types/lnurl/LNURLWithdraw.js +24 -0
- package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -0
- package/dist/utils/AutomaticClockDriftCorrection.js +70 -0
- package/dist/utils/BitcoinUtils.d.ts +13 -0
- package/dist/utils/BitcoinUtils.js +98 -0
- package/dist/utils/BitcoinWalletUtils.d.ts +7 -0
- package/dist/utils/BitcoinWalletUtils.js +14 -0
- package/dist/utils/Logger.d.ts +7 -0
- package/dist/utils/Logger.js +12 -0
- package/dist/utils/RetryUtils.d.ts +21 -0
- package/dist/utils/RetryUtils.js +66 -0
- package/dist/utils/SwapUtils.d.ts +31 -0
- package/dist/utils/SwapUtils.js +18 -0
- package/dist/{Utils.d.ts → utils/TimeoutUtils.d.ts} +9 -3
- package/dist/utils/TimeoutUtils.js +55 -0
- package/dist/utils/TokenUtils.d.ts +11 -0
- package/dist/utils/TokenUtils.js +29 -0
- package/dist/utils/TypeUtils.d.ts +7 -0
- package/dist/utils/TypeUtils.js +2 -0
- package/dist/utils/Utils.d.ts +57 -0
- package/dist/utils/Utils.js +178 -0
- package/package.json +14 -6
- package/src/SmartChainAssets.ts +11 -3
- package/src/bitcoin/BitcoinRpcWithAddressIndex.ts +87 -0
- package/src/bitcoin/LightningNetworkApi.ts +16 -0
- package/src/bitcoin/coinselect2/accumulative.ts +68 -0
- package/src/bitcoin/coinselect2/blackjack.ts +49 -0
- package/src/bitcoin/coinselect2/index.ts +92 -0
- package/src/bitcoin/coinselect2/utils.ts +189 -0
- package/src/bitcoin/mempool/MempoolApi.ts +554 -0
- package/src/bitcoin/mempool/MempoolBitcoinBlock.ts +88 -0
- package/src/bitcoin/mempool/MempoolBitcoinRpc.ts +437 -0
- package/src/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.ts +134 -0
- package/src/bitcoin/wallet/BitcoinWallet.ts +375 -0
- package/src/bitcoin/wallet/IBitcoinWallet.ts +44 -0
- package/src/bitcoin/wallet/MinimalBitcoinWalletInterface.ts +19 -0
- package/src/bitcoin/wallet/MinimalLightningNetworkWalletInterface.ts +7 -0
- package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +108 -0
- package/src/enums/FeeType.ts +9 -0
- package/src/enums/SwapAmountType.ts +9 -0
- package/src/enums/SwapDirection.ts +9 -0
- package/src/enums/SwapType.ts +15 -0
- package/src/errors/IntermediaryError.ts +24 -0
- package/src/errors/PaymentAuthError.ts +26 -0
- package/src/errors/RequestError.ts +51 -0
- package/src/errors/UserError.ts +14 -0
- package/src/events/UnifiedSwapEventListener.ts +171 -0
- package/src/http/HttpUtils.ts +92 -0
- package/src/http/paramcoders/IParamReader.ts +10 -0
- package/src/http/paramcoders/ParamDecoder.ts +142 -0
- package/src/http/paramcoders/ParamEncoder.ts +37 -0
- package/src/http/paramcoders/SchemaVerifier.ts +153 -0
- package/src/http/paramcoders/client/ResponseParamDecoder.ts +58 -0
- package/src/http/paramcoders/client/StreamParamEncoder.ts +29 -0
- package/src/http/paramcoders/client/StreamingFetchPromise.ts +193 -0
- package/src/index.ts +102 -4
- package/src/intermediaries/Intermediary.ts +204 -0
- package/src/intermediaries/IntermediaryDiscovery.ts +485 -0
- package/src/intermediaries/apis/IntermediaryAPI.ts +940 -0
- package/src/intermediaries/apis/TrustedIntermediaryAPI.ts +257 -0
- package/src/lnurl/LNURL.ts +403 -0
- package/src/prices/RedundantSwapPrice.ts +245 -0
- package/src/prices/SingleSwapPrice.ts +47 -0
- package/src/prices/SwapPriceWithChain.ts +157 -0
- package/src/prices/abstract/ICachedSwapPrice.ts +86 -0
- package/src/prices/abstract/IPriceProvider.ts +128 -0
- package/src/prices/abstract/ISwapPrice.ts +328 -0
- package/src/prices/providers/BinancePriceProvider.ts +41 -0
- package/src/prices/providers/CoinGeckoPriceProvider.ts +40 -0
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +44 -0
- package/src/prices/providers/CustomPriceProvider.ts +29 -0
- package/src/prices/providers/KrakenPriceProvider.ts +74 -0
- package/src/prices/providers/OKXPriceProvider.ts +53 -0
- package/src/prices/providers/abstract/ExchangePriceProvider.ts +29 -0
- package/src/prices/providers/abstract/HttpPriceProvider.ts +15 -0
- package/src/storage/IUnifiedStorage.ts +83 -0
- package/src/storage/UnifiedSwapStorage.ts +104 -0
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +328 -0
- package/src/{storage → storage-browser}/LocalStorageManager.ts +2 -1
- package/src/swapper/Swapper.ts +2107 -0
- package/src/{SwapperFactory.ts → swapper/SwapperFactory.ts} +116 -75
- package/src/swapper/SwapperUtils.ts +510 -0
- package/src/swapper/SwapperWithChain.ts +464 -0
- package/src/swapper/SwapperWithSigner.ts +300 -0
- package/src/swaps/IAddressSwap.ts +20 -0
- package/src/swaps/IBTCWalletSwap.ts +77 -0
- package/src/swaps/IClaimableSwap.ts +30 -0
- package/src/swaps/IClaimableSwapWrapper.ts +9 -0
- package/src/swaps/IRefundableSwap.ts +29 -0
- package/src/swaps/ISwap.ts +490 -0
- package/src/swaps/ISwapWithGasDrop.ts +19 -0
- package/src/swaps/ISwapWrapper.ts +344 -0
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +168 -0
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +197 -0
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +210 -0
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +150 -0
- package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +219 -0
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +84 -0
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1082 -0
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +429 -0
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1078 -0
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +549 -0
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +974 -0
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +443 -0
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +860 -0
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +104 -0
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +256 -0
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +716 -0
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +151 -0
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +299 -0
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +1394 -0
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +796 -0
- package/src/swaps/trusted/ln/LnForGasSwap.ts +402 -0
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +70 -0
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +633 -0
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +110 -0
- package/src/types/AmountData.ts +9 -0
- package/src/types/CustomPriceFunction.ts +5 -0
- package/src/types/PriceInfoType.ts +67 -0
- package/src/types/SwapExecutionAction.ts +8 -0
- package/src/types/SwapWithSigner.ts +57 -0
- package/src/types/Token.ts +90 -0
- package/src/types/TokenAmount.ts +110 -0
- package/src/types/fees/Fee.ts +55 -0
- package/src/types/fees/FeeBreakdown.ts +11 -0
- package/src/types/fees/PercentagePPM.ts +24 -0
- package/src/types/lnurl/LNURLPay.ts +72 -0
- package/src/types/lnurl/LNURLWithdraw.ts +55 -0
- package/src/utils/AutomaticClockDriftCorrection.ts +71 -0
- package/src/utils/BitcoinUtils.ts +86 -0
- package/src/utils/BitcoinWalletUtils.ts +16 -0
- package/src/utils/Logger.ts +15 -0
- package/src/utils/RetryUtils.ts +71 -0
- package/src/utils/SwapUtils.ts +38 -0
- package/src/utils/TimeoutUtils.ts +50 -0
- package/src/utils/TokenUtils.ts +25 -0
- package/src/utils/TypeUtils.ts +9 -0
- package/src/utils/Utils.ts +182 -0
- package/dist/SwapperFactory.d.ts +0 -52
- package/dist/Utils.js +0 -37
- package/dist/fs-storage/FileSystemStorageManager.d.ts +0 -15
- package/dist/fs-storage/FileSystemStorageManager.js +0 -60
- package/dist/fs-storage/index.d.ts +0 -1
- package/dist/fs-storage/index.js +0 -17
- package/src/SmartChainAssets.js +0 -75
- package/src/SwapperFactory.js +0 -120
- package/src/Utils.js +0 -37
- package/src/Utils.ts +0 -31
- package/src/fs-storage/FileSystemStorageManager.ts +0 -71
- package/src/fs-storage/index.ts +0 -1
- package/src/index.js +0 -21
- package/src/storage/LocalStorageManager.js +0 -72
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
import {IntermediaryDiscovery, SwapBounds} from "../intermediaries/IntermediaryDiscovery";
|
|
2
|
+
import {SwapType} from "../enums/SwapType";
|
|
3
|
+
import {LnForGasSwap} from "../swaps/trusted/ln/LnForGasSwap";
|
|
4
|
+
import {ISwap} from "../swaps/ISwap";
|
|
5
|
+
import {IToBTCSwap} from "../swaps/escrow_swaps/tobtc/IToBTCSwap";
|
|
6
|
+
import {ChainIds, MultiChain, SupportsSwapType, Swapper} from "./Swapper";
|
|
7
|
+
import {FromBTCLNSwap} from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap";
|
|
8
|
+
import {FromBTCSwap} from "../swaps/escrow_swaps/frombtc/onchain/FromBTCSwap";
|
|
9
|
+
import {ToBTCLNSwap} from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap";
|
|
10
|
+
import {ToBTCSwap} from "../swaps/escrow_swaps/tobtc/onchain/ToBTCSwap";
|
|
11
|
+
import {SwapPriceWithChain} from "../prices/SwapPriceWithChain";
|
|
12
|
+
import {MempoolApi} from "../bitcoin/mempool/MempoolApi";
|
|
13
|
+
import {MempoolBitcoinRpc} from "../bitcoin/mempool/MempoolBitcoinRpc";
|
|
14
|
+
import {BTC_NETWORK} from "@scure/btc-signer/utils";
|
|
15
|
+
import {ToBTCOptions} from "../swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper";
|
|
16
|
+
import {InvoiceCreateService, ToBTCLNOptions} from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper";
|
|
17
|
+
import {FromBTCOptions} from "../swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper";
|
|
18
|
+
import {FromBTCLNOptions} from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper";
|
|
19
|
+
import {SwapperUtils} from "./SwapperUtils";
|
|
20
|
+
import {SpvFromBTCOptions} from "../swaps/spv_swaps/SpvFromBTCWrapper";
|
|
21
|
+
import {SpvFromBTCSwap} from "../swaps/spv_swaps/SpvFromBTCSwap";
|
|
22
|
+
import {OnchainForGasSwap} from "../swaps/trusted/onchain/OnchainForGasSwap";
|
|
23
|
+
import {SwapperWithSigner} from "./SwapperWithSigner";
|
|
24
|
+
import {FromBTCLNAutoOptions} from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper";
|
|
25
|
+
import {FromBTCLNAutoSwap} from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap";
|
|
26
|
+
import {SwapAmountType} from "../enums/SwapAmountType";
|
|
27
|
+
import {UserError} from "../errors/UserError";
|
|
28
|
+
import {IClaimableSwap} from "../swaps/IClaimableSwap";
|
|
29
|
+
import {TokenAmount} from "../types/TokenAmount";
|
|
30
|
+
import {BitcoinTokens, BtcToken, isSCToken, SCToken, Token} from "../types/Token";
|
|
31
|
+
import {LNURLWithdraw} from "../types/lnurl/LNURLWithdraw";
|
|
32
|
+
import {LNURLPay} from "../types/lnurl/LNURLPay";
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Chain-specific wrapper around Swapper for a particular blockchain
|
|
36
|
+
* @category Core
|
|
37
|
+
*/
|
|
38
|
+
export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends ChainIds<T>> {
|
|
39
|
+
|
|
40
|
+
readonly chainIdentifier: ChainIdentifier;
|
|
41
|
+
readonly swapper: Swapper<T>;
|
|
42
|
+
|
|
43
|
+
readonly prices: SwapPriceWithChain<T, ChainIdentifier>;
|
|
44
|
+
|
|
45
|
+
get intermediaryDiscovery(): IntermediaryDiscovery {
|
|
46
|
+
return this.swapper.intermediaryDiscovery;
|
|
47
|
+
}
|
|
48
|
+
get mempoolApi(): MempoolApi {
|
|
49
|
+
return this.swapper.mempoolApi;
|
|
50
|
+
}
|
|
51
|
+
get bitcoinRpc(): MempoolBitcoinRpc {
|
|
52
|
+
return this.swapper.bitcoinRpc;
|
|
53
|
+
}
|
|
54
|
+
get bitcoinNetwork(): BTC_NETWORK {
|
|
55
|
+
return this.swapper.bitcoinNetwork;
|
|
56
|
+
}
|
|
57
|
+
get Utils(): SwapperUtils<T> {
|
|
58
|
+
return this.swapper.Utils;
|
|
59
|
+
}
|
|
60
|
+
get SwapTypeInfo() {
|
|
61
|
+
return this.swapper.SwapTypeInfo;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
constructor(swapper: Swapper<T>, chainIdentifier: ChainIdentifier) {
|
|
65
|
+
this.swapper = swapper;
|
|
66
|
+
this.chainIdentifier = chainIdentifier;
|
|
67
|
+
this.prices = new SwapPriceWithChain<T, ChainIdentifier>(swapper.prices, chainIdentifier);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
createToBTCSwap(
|
|
71
|
+
signer: string,
|
|
72
|
+
tokenAddress: string,
|
|
73
|
+
address: string,
|
|
74
|
+
amount: bigint,
|
|
75
|
+
exactIn?: boolean,
|
|
76
|
+
additionalParams?: Record<string, any>,
|
|
77
|
+
options?: ToBTCOptions
|
|
78
|
+
): Promise<ToBTCSwap<T[ChainIdentifier]>> {
|
|
79
|
+
return this.swapper.createToBTCSwap(this.chainIdentifier, signer, tokenAddress, address, amount, exactIn, additionalParams, options);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
createToBTCLNSwap(
|
|
83
|
+
signer: string,
|
|
84
|
+
tokenAddress: string,
|
|
85
|
+
paymentRequest: string,
|
|
86
|
+
additionalParams?: Record<string, any>,
|
|
87
|
+
options?: ToBTCLNOptions & {comment?: string}
|
|
88
|
+
): Promise<ToBTCLNSwap<T[ChainIdentifier]>> {
|
|
89
|
+
return this.swapper.createToBTCLNSwap(this.chainIdentifier, signer, tokenAddress, paymentRequest, additionalParams, options);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
createToBTCLNSwapViaLNURL(
|
|
93
|
+
signer: string,
|
|
94
|
+
tokenAddress: string,
|
|
95
|
+
lnurlPay: string | LNURLPay,
|
|
96
|
+
amount: bigint,
|
|
97
|
+
exactIn?: boolean,
|
|
98
|
+
additionalParams?: Record<string, any>,
|
|
99
|
+
options?: ToBTCLNOptions
|
|
100
|
+
): Promise<ToBTCLNSwap<T[ChainIdentifier]>> {
|
|
101
|
+
return this.swapper.createToBTCLNSwapViaLNURL(this.chainIdentifier, signer, tokenAddress, lnurlPay, amount, exactIn, additionalParams, options);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
createToBTCLNSwapViaInvoiceCreateService(
|
|
105
|
+
signer: string,
|
|
106
|
+
tokenAddress: string,
|
|
107
|
+
service: InvoiceCreateService,
|
|
108
|
+
amount: bigint,
|
|
109
|
+
exactIn?: boolean,
|
|
110
|
+
additionalParams?: Record<string, any>,
|
|
111
|
+
options?: ToBTCLNOptions
|
|
112
|
+
): Promise<ToBTCLNSwap<T[ChainIdentifier]>> {
|
|
113
|
+
return this.swapper.createToBTCLNSwapViaInvoiceCreateService(this.chainIdentifier, signer, tokenAddress, service, amount, exactIn, additionalParams, options);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
createFromBTCSwap(
|
|
117
|
+
signer: string,
|
|
118
|
+
tokenAddress: string,
|
|
119
|
+
amount: bigint,
|
|
120
|
+
exactOut?: boolean,
|
|
121
|
+
additionalParams?: Record<string, any>,
|
|
122
|
+
options?: FromBTCOptions
|
|
123
|
+
): Promise<FromBTCSwap<T[ChainIdentifier]>> {
|
|
124
|
+
return this.swapper.createFromBTCSwap(this.chainIdentifier, signer, tokenAddress, amount, exactOut, additionalParams, options);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
createFromBTCLNSwap(
|
|
128
|
+
signer: string,
|
|
129
|
+
tokenAddress: string,
|
|
130
|
+
amount: bigint,
|
|
131
|
+
exactOut?: boolean,
|
|
132
|
+
additionalParams?: Record<string, any>,
|
|
133
|
+
options?: FromBTCLNOptions
|
|
134
|
+
): Promise<FromBTCLNSwap<T[ChainIdentifier]>> {
|
|
135
|
+
return this.swapper.createFromBTCLNSwap(this.chainIdentifier, signer, tokenAddress, amount, exactOut, additionalParams, options);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
createFromBTCLNSwapViaLNURL(
|
|
139
|
+
signer: string,
|
|
140
|
+
tokenAddress: string,
|
|
141
|
+
lnurl: string | LNURLWithdraw,
|
|
142
|
+
amount: bigint,
|
|
143
|
+
exactOut?: boolean,
|
|
144
|
+
additionalParams?: Record<string, any>
|
|
145
|
+
): Promise<FromBTCLNSwap<T[ChainIdentifier]>> {
|
|
146
|
+
return this.swapper.createFromBTCLNSwapViaLNURL(this.chainIdentifier, signer, tokenAddress, lnurl, amount, exactOut, additionalParams);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
createFromBTCLNSwapNew(
|
|
150
|
+
signer: string,
|
|
151
|
+
tokenAddress: string,
|
|
152
|
+
amount: bigint,
|
|
153
|
+
exactOut?: boolean,
|
|
154
|
+
additionalParams?: Record<string, any>,
|
|
155
|
+
options?: FromBTCLNAutoOptions
|
|
156
|
+
): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>> {
|
|
157
|
+
return this.swapper.createFromBTCLNSwapNew(this.chainIdentifier, signer, tokenAddress, amount, exactOut, additionalParams, options);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
createFromBTCLNSwapNewViaLNURL(
|
|
161
|
+
signer: string,
|
|
162
|
+
tokenAddress: string,
|
|
163
|
+
lnurl: string | LNURLWithdraw,
|
|
164
|
+
amount: bigint,
|
|
165
|
+
exactOut?: boolean,
|
|
166
|
+
additionalParams?: Record<string, any>,
|
|
167
|
+
options?: FromBTCLNAutoOptions
|
|
168
|
+
): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>> {
|
|
169
|
+
return this.swapper.createFromBTCLNSwapNewViaLNURL(this.chainIdentifier, signer, tokenAddress, lnurl, amount, exactOut, additionalParams, options);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
createTrustedLNForGasSwap(signer: string, amount: bigint, trustedIntermediaryUrl?: string): Promise<LnForGasSwap<T[ChainIdentifier]>> {
|
|
173
|
+
return this.swapper.createTrustedLNForGasSwap(this.chainIdentifier, signer, amount, trustedIntermediaryUrl);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
createTrustedOnchainForGasSwap(signer: string, amount: bigint, refundAddress?: string, trustedIntermediaryUrl?: string): Promise<OnchainForGasSwap<T[ChainIdentifier]>> {
|
|
177
|
+
return this.swapper.createTrustedOnchainForGasSwap(this.chainIdentifier, signer, amount, refundAddress, trustedIntermediaryUrl);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
create(signer: string, srcToken: BtcToken<true>, dstToken: SCToken<ChainIdentifier>, amount: bigint, exactIn: boolean, lnurlWithdraw?: string | LNURLWithdraw): Promise<SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T[ChainIdentifier]> : FromBTCLNSwap<T[ChainIdentifier]>>;
|
|
181
|
+
create(signer: string, srcToken: BtcToken<false>, dstToken: SCToken<ChainIdentifier>, amount: bigint, exactIn: boolean): Promise<(SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T[ChainIdentifier]> : FromBTCSwap<T[ChainIdentifier]>)>;
|
|
182
|
+
create(signer: string, srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<false>, amount: bigint, exactIn: boolean, address: string): Promise<ToBTCSwap<T[ChainIdentifier]>>;
|
|
183
|
+
create(signer: string, srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint, exactIn: boolean, lnurlPay: string | LNURLPay): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
|
|
184
|
+
create(signer: string, srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint, exactIn: false, lightningInvoice: string | LNURLWithdraw | LNURLPay): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
|
|
185
|
+
/**
|
|
186
|
+
* Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
|
|
187
|
+
* or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and
|
|
188
|
+
* invoice's pre-set amount is used instead.
|
|
189
|
+
* @deprecated Use swap() instead
|
|
190
|
+
*
|
|
191
|
+
* @param signer Smartchain (Solana, Starknet, etc.) address of the user
|
|
192
|
+
* @param srcToken Source token of the swap, user pays this token
|
|
193
|
+
* @param dstToken Destination token of the swap, user receives this token
|
|
194
|
+
* @param amount Amount of the swap
|
|
195
|
+
* @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
|
|
196
|
+
* @param addressLnurlLightningInvoice Bitcoin on-chain address, lightning invoice, LNURL-pay to pay or
|
|
197
|
+
* LNURL-withdrawal to withdraw money from
|
|
198
|
+
*/
|
|
199
|
+
create(signer: string, srcToken: Token<ChainIdentifier>, dstToken: Token<ChainIdentifier>, amount: bigint, exactIn: boolean, addressLnurlLightningInvoice?: string | LNURLWithdraw | LNURLPay): Promise<ISwap<T[ChainIdentifier]>> {
|
|
200
|
+
return this.swapper.create(signer, srcToken, dstToken, amount, exactIn, addressLnurlLightningInvoice);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
swap(srcToken: BtcToken<true>, dstToken: SCToken<ChainIdentifier>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dstSmartchainWallet: string, options?: (SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoOptions : FromBTCLNOptions)): Promise<SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T[ChainIdentifier]> : FromBTCLNSwap<T[ChainIdentifier]>>;
|
|
204
|
+
swap(srcToken: BtcToken<false>, dstToken: SCToken<ChainIdentifier>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string, dstSmartchainWallet: string, options?: (SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCOptions : FromBTCOptions)): Promise<(SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T[ChainIdentifier]> : FromBTCSwap<T[ChainIdentifier]>)>;
|
|
205
|
+
swap(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<false>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstAddress: string, options?: ToBTCOptions): Promise<ToBTCSwap<T[ChainIdentifier]>>;
|
|
206
|
+
swap(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstLnurlPayOrInvoiceCreateService: string | LNURLPay | InvoiceCreateService, options?: ToBTCLNOptions & {comment?: string}): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
|
|
207
|
+
swap(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint | string, exactIn: false | SwapAmountType.EXACT_OUT, src: string, dstLightningInvoice: string, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
|
|
208
|
+
swap(srcToken: Token<ChainIdentifier> | string, dstToken: Token<ChainIdentifier> | string, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dst: string | LNURLPay | InvoiceCreateService, options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | (ToBTCLNOptions & {comment?: string}) | FromBTCLNAutoOptions): Promise<ISwap<T[ChainIdentifier]>>;
|
|
209
|
+
/**
|
|
210
|
+
* Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
|
|
211
|
+
* or output amount (exactIn=false), NOTE: For regular SmartChain -> BTC-LN (lightning) swaps the passed amount is ignored and
|
|
212
|
+
* invoice's pre-set amount is used instead, use LNURL-pay for dynamic amounts
|
|
213
|
+
*
|
|
214
|
+
* @param srcToken Source token of the swap, user pays this token
|
|
215
|
+
* @param dstToken Destination token of the swap, user receives this token
|
|
216
|
+
* @param amount Amount of the swap
|
|
217
|
+
* @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
|
|
218
|
+
* @param src Source wallet/lnurl-withdraw of the swap
|
|
219
|
+
* @param dst Destination smart chain address, bitcoin on-chain address, lightning invoice, LNURL-pay
|
|
220
|
+
* @param options Options for the swap
|
|
221
|
+
*/
|
|
222
|
+
swap(
|
|
223
|
+
srcToken: Token<ChainIdentifier> | string,
|
|
224
|
+
dstToken: Token<ChainIdentifier> | string,
|
|
225
|
+
amount: bigint | string,
|
|
226
|
+
exactIn: boolean | SwapAmountType,
|
|
227
|
+
src: undefined | string | LNURLWithdraw,
|
|
228
|
+
dst: string | LNURLPay | InvoiceCreateService,
|
|
229
|
+
options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | ToBTCLNOptions | FromBTCLNAutoOptions
|
|
230
|
+
): Promise<ISwap<T[ChainIdentifier]>> {
|
|
231
|
+
if(typeof(srcToken)==="string") srcToken = this.getToken(srcToken);
|
|
232
|
+
if(typeof(dstToken)==="string") dstToken = this.getToken(dstToken);
|
|
233
|
+
return this.swapper.swap(srcToken, dstToken, amount, exactIn, src, dst, options);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address
|
|
238
|
+
*/
|
|
239
|
+
getAllSwaps(signer?: string): Promise<ISwap<T[ChainIdentifier]>[]> {
|
|
240
|
+
return this.swapper.getAllSwaps(this.chainIdentifier, signer);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address
|
|
245
|
+
*/
|
|
246
|
+
getActionableSwaps(signer?: string): Promise<ISwap<T[ChainIdentifier]>[]> {
|
|
247
|
+
return this.swapper.getActionableSwaps(this.chainIdentifier, signer);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Returns swaps that are refundable for the specific chain, optionally also for a specific signer's address
|
|
252
|
+
*/
|
|
253
|
+
getRefundableSwaps(signer?: string): Promise<IToBTCSwap<T[ChainIdentifier]>[]> {
|
|
254
|
+
return this.swapper.getRefundableSwaps(this.chainIdentifier, signer);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Returns swaps that are due to be claimed/settled manually for the specific chain,
|
|
259
|
+
* optionally also for a specific signer's address
|
|
260
|
+
*/
|
|
261
|
+
getClaimableSwaps(signer?: string): Promise<IClaimableSwap<T[ChainIdentifier]>[]> {
|
|
262
|
+
return this.swapper.getClaimableSwaps(this.chainIdentifier, signer);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Returns swap with a specific id (identifier) on a specific chain and optionally with a signer
|
|
267
|
+
*/
|
|
268
|
+
getSwapById(id: string, signer?: string): Promise<ISwap<T[ChainIdentifier]>> {
|
|
269
|
+
return this.swapper.getSwapById(id, this.chainIdentifier, signer);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
getToken(tickerOrAddress: string): Token<ChainIdentifier> {
|
|
273
|
+
//Btc tokens - BTC, BTCLN, BTC-LN
|
|
274
|
+
if(tickerOrAddress==="BTC") return BitcoinTokens.BTC;
|
|
275
|
+
if(tickerOrAddress==="BTCLN" || tickerOrAddress==="BTC-LN") return BitcoinTokens.BTCLN;
|
|
276
|
+
|
|
277
|
+
//Check if the ticker is in format <chainId>-<ticker>, i.e. SOLANA-USDC, STARKNET-WBTC
|
|
278
|
+
if(tickerOrAddress.includes("-")) {
|
|
279
|
+
const [chainId, ticker] = tickerOrAddress.split("-");
|
|
280
|
+
if(chainId!==this.chainIdentifier) throw new UserError(`Invalid chainId specified in ticker: ${chainId}, swapper chainId: ${this.chainIdentifier}`);
|
|
281
|
+
const token = this.swapper.tokensByTicker[this.chainIdentifier]?.[ticker];
|
|
282
|
+
if(token==null) throw new UserError(`Not found ticker: ${ticker} for chainId: ${chainId}`);
|
|
283
|
+
return token as Token<ChainIdentifier>;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
const chain = this.swapper.chains[this.chainIdentifier];
|
|
287
|
+
if(chain.chainInterface.isValidToken(tickerOrAddress)) {
|
|
288
|
+
//Try to find in known token addresses
|
|
289
|
+
const token = this.swapper.tokens[this.chainIdentifier]?.[tickerOrAddress];
|
|
290
|
+
if(token!=null) return token as Token<ChainIdentifier>;
|
|
291
|
+
} else {
|
|
292
|
+
//Check in known tickers
|
|
293
|
+
const token = this.swapper.tokensByTicker[this.chainIdentifier]?.[tickerOrAddress];
|
|
294
|
+
if(token!=null) return token as Token<ChainIdentifier>;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
throw new UserError(`Specified token address or ticker ${tickerOrAddress} not found for chainId: ${this.chainIdentifier}!`)
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Synchronizes swaps from chain, this is usually ran when SDK is initialized, deletes expired quotes
|
|
302
|
+
*/
|
|
303
|
+
async _syncSwaps(signer?: string): Promise<void> {
|
|
304
|
+
return this.swapper._syncSwaps<ChainIdentifier>(this.chainIdentifier, signer);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
supportsSwapType<
|
|
308
|
+
Type extends SwapType
|
|
309
|
+
>(swapType: Type): SupportsSwapType<T[ChainIdentifier], Type> {
|
|
310
|
+
return this.swapper.supportsSwapType(this.chainIdentifier, swapType);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Returns type of the swap based on input and output tokens specified
|
|
315
|
+
*
|
|
316
|
+
* @param srcToken
|
|
317
|
+
* @param dstToken
|
|
318
|
+
*/
|
|
319
|
+
getSwapType(srcToken: BtcToken<true>, dstToken: SCToken<ChainIdentifier>): (SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? SwapType.FROM_BTCLN_AUTO : SwapType.FROM_BTCLN);
|
|
320
|
+
getSwapType(srcToken: BtcToken<false>, dstToken: SCToken<ChainIdentifier>): (SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SwapType.SPV_VAULT_FROM_BTC : SwapType.FROM_BTC);
|
|
321
|
+
getSwapType(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<false>): SwapType.TO_BTC;
|
|
322
|
+
getSwapType(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>): SwapType.TO_BTCLN;
|
|
323
|
+
getSwapType(srcToken: Token<ChainIdentifier>, dstToken: Token<ChainIdentifier>): SwapType.FROM_BTCLN_AUTO | SwapType.FROM_BTCLN | SwapType.SPV_VAULT_FROM_BTC | SwapType.FROM_BTC | SwapType.TO_BTC | SwapType.TO_BTCLN;
|
|
324
|
+
getSwapType(srcToken: Token<ChainIdentifier>, dstToken: Token<ChainIdentifier>): SwapType.FROM_BTCLN_AUTO | SwapType.FROM_BTCLN | SwapType.SPV_VAULT_FROM_BTC | SwapType.FROM_BTC | SwapType.TO_BTC | SwapType.TO_BTCLN {
|
|
325
|
+
return this.swapper.getSwapType(srcToken, dstToken);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Returns minimum/maximum limits for inputs and outputs for a swap between given tokens
|
|
330
|
+
*
|
|
331
|
+
* @param srcToken
|
|
332
|
+
* @param dstToken
|
|
333
|
+
*/
|
|
334
|
+
getSwapLimits<A extends Token<ChainIdentifier>, B extends Token<ChainIdentifier>>(srcToken: A, dstToken: B): {
|
|
335
|
+
input: {min: TokenAmount<string, A>, max?: TokenAmount<string, A>},
|
|
336
|
+
output: {min: TokenAmount<string, B>, max?: TokenAmount<string, B>}
|
|
337
|
+
} {
|
|
338
|
+
return this.swapper.getSwapLimits<ChainIdentifier, A, B>(srcToken, dstToken);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Returns a set of supported tokens by all the intermediaries offering a specific swap service
|
|
343
|
+
*
|
|
344
|
+
* @param _swapType Swap service type to check supported tokens for
|
|
345
|
+
*/
|
|
346
|
+
private getSupportedTokens(_swapType: SwapType): SCToken<ChainIdentifier>[] {
|
|
347
|
+
const tokens: SCToken<ChainIdentifier>[] = [];
|
|
348
|
+
this.intermediaryDiscovery.intermediaries.forEach(lp => {
|
|
349
|
+
let swapType = _swapType;
|
|
350
|
+
if(swapType===SwapType.FROM_BTCLN && this.supportsSwapType(SwapType.FROM_BTCLN_AUTO)) swapType = SwapType.FROM_BTCLN_AUTO;
|
|
351
|
+
if(swapType===SwapType.FROM_BTC && this.supportsSwapType(SwapType.SPV_VAULT_FROM_BTC)) swapType = SwapType.SPV_VAULT_FROM_BTC;
|
|
352
|
+
const chainTokens = lp.services[swapType]?.chainTokens?.[this.chainIdentifier];
|
|
353
|
+
if(chainTokens==null) return;
|
|
354
|
+
for(let tokenAddress of chainTokens) {
|
|
355
|
+
const token = this.swapper.tokens?.[this.chainIdentifier]?.[tokenAddress];
|
|
356
|
+
if(token!=null) tokens.push(token as SCToken<ChainIdentifier>);
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
return tokens;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* Returns the set of supported tokens by all the intermediaries we know of offering a specific swapType service
|
|
364
|
+
*
|
|
365
|
+
* @param swapType Specific swap type for which to obtain supported tokens
|
|
366
|
+
*/
|
|
367
|
+
private getSupportedTokenAddresses(swapType: SwapType): Set<string> {
|
|
368
|
+
const set = new Set<string>();
|
|
369
|
+
this.intermediaryDiscovery.intermediaries.forEach(lp => {
|
|
370
|
+
const chainTokens = lp.services[swapType]?.chainTokens?.[this.chainIdentifier];
|
|
371
|
+
if(chainTokens==null) return;
|
|
372
|
+
chainTokens.forEach(token => set.add(token));
|
|
373
|
+
});
|
|
374
|
+
return set;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Returns tokens that you can swap to (if input=true) from a given token,
|
|
379
|
+
* or tokens that you can swap from (if input=false) to a given token
|
|
380
|
+
*/
|
|
381
|
+
getSwapCounterTokens(token: Token, input: boolean): Token<ChainIdentifier>[] {
|
|
382
|
+
if(isSCToken(token)) {
|
|
383
|
+
const result: Token<ChainIdentifier>[] = [];
|
|
384
|
+
if(input) {
|
|
385
|
+
//TO_BTC or TO_BTCLN
|
|
386
|
+
if(this.getSupportedTokenAddresses(SwapType.TO_BTCLN).has(token.address)) {
|
|
387
|
+
result.push(BitcoinTokens.BTCLN);
|
|
388
|
+
}
|
|
389
|
+
if(this.getSupportedTokenAddresses(SwapType.TO_BTC).has(token.address)) {
|
|
390
|
+
result.push(BitcoinTokens.BTC);
|
|
391
|
+
}
|
|
392
|
+
} else {
|
|
393
|
+
//FROM_BTC or FROM_BTCLN
|
|
394
|
+
const fromLightningSwapType = this.supportsSwapType(SwapType.FROM_BTCLN_AUTO) ? SwapType.FROM_BTCLN_AUTO : SwapType.FROM_BTCLN;
|
|
395
|
+
if(this.getSupportedTokenAddresses(fromLightningSwapType).has(token.address)) {
|
|
396
|
+
result.push(BitcoinTokens.BTCLN);
|
|
397
|
+
}
|
|
398
|
+
const fromOnchainSwapType = this.supportsSwapType(SwapType.SPV_VAULT_FROM_BTC) ? SwapType.SPV_VAULT_FROM_BTC : SwapType.FROM_BTC;
|
|
399
|
+
if(this.getSupportedTokenAddresses(fromOnchainSwapType).has(token.address)) {
|
|
400
|
+
result.push(BitcoinTokens.BTC);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return result;
|
|
404
|
+
} else {
|
|
405
|
+
if(input) {
|
|
406
|
+
if(token.lightning) {
|
|
407
|
+
return this.getSupportedTokens(SwapType.FROM_BTCLN);
|
|
408
|
+
} else {
|
|
409
|
+
return this.getSupportedTokens(SwapType.FROM_BTC);
|
|
410
|
+
}
|
|
411
|
+
} else {
|
|
412
|
+
if(token.lightning) {
|
|
413
|
+
return this.getSupportedTokens(SwapType.TO_BTCLN);
|
|
414
|
+
} else {
|
|
415
|
+
return this.getSupportedTokens(SwapType.TO_BTC);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Creates a child swapper instance with a signer
|
|
423
|
+
*
|
|
424
|
+
* @param signer Signer to use for the new swapper instance
|
|
425
|
+
*/
|
|
426
|
+
withChain(signer: T[ChainIdentifier]["Signer"]): SwapperWithSigner<T, ChainIdentifier> {
|
|
427
|
+
return new SwapperWithSigner<T, ChainIdentifier>(this, signer);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
///////////////////////////////////
|
|
432
|
+
/// Deprecated
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Returns swap bounds (minimums & maximums) for different swap types & tokens
|
|
436
|
+
* @deprecated Use getSwapLimits() instead!
|
|
437
|
+
*/
|
|
438
|
+
getSwapBounds(): SwapBounds {
|
|
439
|
+
return this.swapper.getSwapBounds(this.chainIdentifier);
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
/**
|
|
443
|
+
* Returns maximum possible swap amount
|
|
444
|
+
* @deprecated Use getSwapLimits() instead!
|
|
445
|
+
*
|
|
446
|
+
* @param type Type of the swap
|
|
447
|
+
* @param token Token of the swap
|
|
448
|
+
*/
|
|
449
|
+
getMaximum(type: SwapType, token: string): bigint {
|
|
450
|
+
return this.swapper.getMaximum(this.chainIdentifier, type, token);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* Returns minimum possible swap amount
|
|
455
|
+
* @deprecated Use getSwapLimits() instead!
|
|
456
|
+
*
|
|
457
|
+
* @param type Type of swap
|
|
458
|
+
* @param token Token of the swap
|
|
459
|
+
*/
|
|
460
|
+
getMinimum(type: SwapType, token: string): bigint {
|
|
461
|
+
return this.swapper.getMinimum(this.chainIdentifier, type, token);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
}
|