@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,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IFromBTCSelfInitSwap = void 0;
|
|
4
|
+
const base_1 = require("@atomiqlabs/base");
|
|
5
|
+
const IEscrowSelfInitSwap_1 = require("../IEscrowSelfInitSwap");
|
|
6
|
+
const FeeType_1 = require("../../../enums/FeeType");
|
|
7
|
+
const PercentagePPM_1 = require("../../../types/fees/PercentagePPM");
|
|
8
|
+
const TokenAmount_1 = require("../../../types/TokenAmount");
|
|
9
|
+
class IFromBTCSelfInitSwap extends IEscrowSelfInitSwap_1.IEscrowSelfInitSwap {
|
|
10
|
+
constructor(wrapper, initOrObj) {
|
|
11
|
+
super(wrapper, initOrObj);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* In case swapFee in BTC is not supplied it recalculates it based on swap price
|
|
15
|
+
* @protected
|
|
16
|
+
*/
|
|
17
|
+
tryRecomputeSwapPrice() {
|
|
18
|
+
if (this.swapFeeBtc == null) {
|
|
19
|
+
this.swapFeeBtc = this.swapFee * this.getInput().rawAmount / this.getOutAmountWithoutFee();
|
|
20
|
+
}
|
|
21
|
+
super.tryRecomputeSwapPrice();
|
|
22
|
+
}
|
|
23
|
+
_getInitiator() {
|
|
24
|
+
return this.getSwapData().getClaimer();
|
|
25
|
+
}
|
|
26
|
+
getOutputTxId() {
|
|
27
|
+
return this.claimTxId ?? null;
|
|
28
|
+
}
|
|
29
|
+
getOutputAddress() {
|
|
30
|
+
return this._getInitiator();
|
|
31
|
+
}
|
|
32
|
+
requiresAction() {
|
|
33
|
+
return this.isClaimable();
|
|
34
|
+
}
|
|
35
|
+
//////////////////////////////
|
|
36
|
+
//// Amounts & fees
|
|
37
|
+
getOutAmountWithoutFee() {
|
|
38
|
+
return this.getSwapData().getAmount() + this.swapFee;
|
|
39
|
+
}
|
|
40
|
+
getSwapFee() {
|
|
41
|
+
if (this.pricingInfo == null)
|
|
42
|
+
throw new Error("No pricing info known, cannot estimate fee!");
|
|
43
|
+
const feeWithoutBaseFee = this.swapFeeBtc - this.pricingInfo.satsBaseFee;
|
|
44
|
+
const swapFeePPM = feeWithoutBaseFee * 1000000n / this.getInputWithoutFee().rawAmount;
|
|
45
|
+
const amountInSrcToken = (0, TokenAmount_1.toTokenAmount)(this.swapFeeBtc, this.inputToken, this.wrapper.prices, this.pricingInfo);
|
|
46
|
+
return {
|
|
47
|
+
amountInSrcToken,
|
|
48
|
+
amountInDstToken: (0, TokenAmount_1.toTokenAmount)(this.swapFee, this.wrapper.tokens[this.getSwapData().getToken()], this.wrapper.prices, this.pricingInfo),
|
|
49
|
+
currentUsdValue: amountInSrcToken.currentUsdValue,
|
|
50
|
+
usdValue: amountInSrcToken.usdValue,
|
|
51
|
+
pastUsdValue: amountInSrcToken.pastUsdValue,
|
|
52
|
+
composition: {
|
|
53
|
+
base: (0, TokenAmount_1.toTokenAmount)(this.pricingInfo.satsBaseFee, this.inputToken, this.wrapper.prices, this.pricingInfo),
|
|
54
|
+
percentage: (0, PercentagePPM_1.ppmToPercentage)(swapFeePPM)
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
getFee() {
|
|
59
|
+
return this.getSwapFee();
|
|
60
|
+
}
|
|
61
|
+
getFeeBreakdown() {
|
|
62
|
+
return [{
|
|
63
|
+
type: FeeType_1.FeeType.SWAP,
|
|
64
|
+
fee: this.getSwapFee()
|
|
65
|
+
}];
|
|
66
|
+
}
|
|
67
|
+
getOutputToken() {
|
|
68
|
+
return this.wrapper.tokens[this.getSwapData().getToken()];
|
|
69
|
+
}
|
|
70
|
+
getOutput() {
|
|
71
|
+
return (0, TokenAmount_1.toTokenAmount)(this.getSwapData().getAmount(), this.wrapper.tokens[this.getSwapData().getToken()], this.wrapper.prices, this.pricingInfo);
|
|
72
|
+
}
|
|
73
|
+
getInputWithoutFee() {
|
|
74
|
+
return (0, TokenAmount_1.toTokenAmount)(this.getInput().rawAmount - this.swapFeeBtc, this.inputToken, this.wrapper.prices, this.pricingInfo);
|
|
75
|
+
}
|
|
76
|
+
getSecurityDeposit() {
|
|
77
|
+
return (0, TokenAmount_1.toTokenAmount)(this.getSwapData().getSecurityDeposit(), this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo);
|
|
78
|
+
}
|
|
79
|
+
getTotalDeposit() {
|
|
80
|
+
return (0, TokenAmount_1.toTokenAmount)(this.getSwapData().getTotalDeposit(), this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo);
|
|
81
|
+
}
|
|
82
|
+
async hasEnoughForTxFees() {
|
|
83
|
+
const [balance, commitFee] = await Promise.all([
|
|
84
|
+
this.wrapper.contract.getBalance(this._getInitiator(), this.wrapper.chain.getNativeCurrencyAddress(), false),
|
|
85
|
+
this.getCommitFee()
|
|
86
|
+
]);
|
|
87
|
+
const totalFee = commitFee + this.getSwapData().getTotalDeposit();
|
|
88
|
+
return {
|
|
89
|
+
enoughBalance: balance >= totalFee,
|
|
90
|
+
balance: (0, TokenAmount_1.toTokenAmount)(balance, this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo),
|
|
91
|
+
required: (0, TokenAmount_1.toTokenAmount)(totalFee, this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo)
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//////////////////////////////
|
|
95
|
+
//// Commit
|
|
96
|
+
/**
|
|
97
|
+
* Returns the transactions required for committing the swap on-chain, locking the tokens from the intermediary
|
|
98
|
+
* in an HTLC or PTLC
|
|
99
|
+
*
|
|
100
|
+
* @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
|
|
101
|
+
* (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
|
|
102
|
+
* @throws {Error} When in invalid state to commit the swap
|
|
103
|
+
*/
|
|
104
|
+
async txsCommit(skipChecks) {
|
|
105
|
+
if (!this.canCommit())
|
|
106
|
+
throw new Error("Must be in CREATED state!");
|
|
107
|
+
if (this.data == null || this.signatureData == null)
|
|
108
|
+
throw new Error("data or signature data is null, invalid state?");
|
|
109
|
+
if (!this.initiated) {
|
|
110
|
+
this.initiated = true;
|
|
111
|
+
await this._saveAndEmit();
|
|
112
|
+
}
|
|
113
|
+
return await this.wrapper.contract.txsInit(this._getInitiator(), this.data, this.signatureData, skipChecks, this.feeRate).catch(e => Promise.reject(e instanceof base_1.SignatureVerificationError ? new Error("Request timed out") : e));
|
|
114
|
+
}
|
|
115
|
+
//////////////////////////////
|
|
116
|
+
//// Claim
|
|
117
|
+
getClaimFee() {
|
|
118
|
+
return this.wrapper.contract.getClaimFee(this._getInitiator(), this.getSwapData());
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.IFromBTCSelfInitSwap = IFromBTCSelfInitSwap;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ISwapWrapperOptions } from "../../ISwapWrapper";
|
|
2
|
+
import { Intermediary } from "../../../intermediaries/Intermediary";
|
|
3
|
+
import { ChainType } from "@atomiqlabs/base";
|
|
4
|
+
import { IEscrowSwapDefinition, IEscrowSwapWrapper } from "../IEscrowSwapWrapper";
|
|
5
|
+
import { IEscrowSwap } from "../IEscrowSwap";
|
|
6
|
+
import { AmountData } from "../../../types/AmountData";
|
|
7
|
+
export type IFromBTCDefinition<T extends ChainType, W extends IFromBTCWrapper<T, any>, S extends IEscrowSwap<T>> = IEscrowSwapDefinition<T, W, S>;
|
|
8
|
+
export declare abstract class IFromBTCWrapper<T extends ChainType, D extends IFromBTCDefinition<T, IFromBTCWrapper<T, D>, IEscrowSwap<T, D>>, O extends ISwapWrapperOptions = ISwapWrapperOptions> extends IEscrowSwapWrapper<T, D, O> {
|
|
9
|
+
/**
|
|
10
|
+
* Returns a random sequence to be used for swaps
|
|
11
|
+
*
|
|
12
|
+
* @protected
|
|
13
|
+
* @returns Random 64-bit sequence number
|
|
14
|
+
*/
|
|
15
|
+
protected getRandomSequence(): bigint;
|
|
16
|
+
/**
|
|
17
|
+
* Pre-fetches feeRate for a given swap
|
|
18
|
+
*
|
|
19
|
+
* @param signer Address initiating the swap
|
|
20
|
+
* @param amountData
|
|
21
|
+
* @param claimHash optional claim hash of the swap or null
|
|
22
|
+
* @param abortController
|
|
23
|
+
* @protected
|
|
24
|
+
* @returns Fee rate
|
|
25
|
+
*/
|
|
26
|
+
protected preFetchFeeRate(signer: string, amountData: AmountData, claimHash: string | undefined, abortController: AbortController): Promise<string | undefined>;
|
|
27
|
+
/**
|
|
28
|
+
* Pre-fetches intermediary's available SC on-chain liquidity
|
|
29
|
+
* @param amountData
|
|
30
|
+
* @param lp Intermediary
|
|
31
|
+
* @param abortController
|
|
32
|
+
* @protected
|
|
33
|
+
* @returns Intermediary's liquidity balance
|
|
34
|
+
*/
|
|
35
|
+
protected preFetchIntermediaryLiquidity(amountData: AmountData, lp: Intermediary, abortController: AbortController): Promise<bigint | undefined>;
|
|
36
|
+
/**
|
|
37
|
+
* Verifies whether the intermediary has enough available liquidity such that we can initiate the swap
|
|
38
|
+
*
|
|
39
|
+
* @param amount Swap amount that we should receive
|
|
40
|
+
* @param liquidityPromise pre-fetched liquidity promise as obtained from preFetchIntermediaryLiquidity()
|
|
41
|
+
* @protected
|
|
42
|
+
* @throws {IntermediaryError} if intermediary's liquidity is lower than what's required for the swap
|
|
43
|
+
*/
|
|
44
|
+
protected verifyIntermediaryLiquidity(amount: bigint, liquidityPromise: Promise<bigint>): Promise<void>;
|
|
45
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IFromBTCWrapper = void 0;
|
|
4
|
+
const IntermediaryError_1 = require("../../../errors/IntermediaryError");
|
|
5
|
+
const Utils_1 = require("../../../utils/Utils");
|
|
6
|
+
const base_1 = require("@atomiqlabs/base");
|
|
7
|
+
const IEscrowSwapWrapper_1 = require("../IEscrowSwapWrapper");
|
|
8
|
+
class IFromBTCWrapper extends IEscrowSwapWrapper_1.IEscrowSwapWrapper {
|
|
9
|
+
/**
|
|
10
|
+
* Returns a random sequence to be used for swaps
|
|
11
|
+
*
|
|
12
|
+
* @protected
|
|
13
|
+
* @returns Random 64-bit sequence number
|
|
14
|
+
*/
|
|
15
|
+
getRandomSequence() {
|
|
16
|
+
return base_1.BigIntBufferUtils.fromBuffer((0, Utils_1.randomBytes)(8));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Pre-fetches feeRate for a given swap
|
|
20
|
+
*
|
|
21
|
+
* @param signer Address initiating the swap
|
|
22
|
+
* @param amountData
|
|
23
|
+
* @param claimHash optional claim hash of the swap or null
|
|
24
|
+
* @param abortController
|
|
25
|
+
* @protected
|
|
26
|
+
* @returns Fee rate
|
|
27
|
+
*/
|
|
28
|
+
preFetchFeeRate(signer, amountData, claimHash, abortController) {
|
|
29
|
+
return this.contract.getInitFeeRate(this.chain.randomAddress(), signer, amountData.token, claimHash)
|
|
30
|
+
.catch(e => {
|
|
31
|
+
this.logger.warn("preFetchFeeRate(): Error: ", e);
|
|
32
|
+
abortController.abort(e);
|
|
33
|
+
return undefined;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Pre-fetches intermediary's available SC on-chain liquidity
|
|
38
|
+
* @param amountData
|
|
39
|
+
* @param lp Intermediary
|
|
40
|
+
* @param abortController
|
|
41
|
+
* @protected
|
|
42
|
+
* @returns Intermediary's liquidity balance
|
|
43
|
+
*/
|
|
44
|
+
preFetchIntermediaryLiquidity(amountData, lp, abortController) {
|
|
45
|
+
return lp.getLiquidity(this.chainIdentifier, this.contract, amountData.token.toString(), abortController.signal).catch(e => {
|
|
46
|
+
this.logger.warn("preFetchIntermediaryLiquidity(): Error: ", e);
|
|
47
|
+
abortController.abort(e);
|
|
48
|
+
return undefined;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Verifies whether the intermediary has enough available liquidity such that we can initiate the swap
|
|
53
|
+
*
|
|
54
|
+
* @param amount Swap amount that we should receive
|
|
55
|
+
* @param liquidityPromise pre-fetched liquidity promise as obtained from preFetchIntermediaryLiquidity()
|
|
56
|
+
* @protected
|
|
57
|
+
* @throws {IntermediaryError} if intermediary's liquidity is lower than what's required for the swap
|
|
58
|
+
*/
|
|
59
|
+
async verifyIntermediaryLiquidity(amount, liquidityPromise) {
|
|
60
|
+
const liquidity = await liquidityPromise;
|
|
61
|
+
if (liquidity < amount)
|
|
62
|
+
throw new IntermediaryError_1.IntermediaryError("Intermediary doesn't have enough liquidity");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.IFromBTCWrapper = IFromBTCWrapper;
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { FromBTCLNDefinition, FromBTCLNWrapper } from "./FromBTCLNWrapper";
|
|
4
|
+
import { IFromBTCSelfInitSwap } from "../IFromBTCSelfInitSwap";
|
|
5
|
+
import { SwapType } from "../../../../enums/SwapType";
|
|
6
|
+
import { ChainType, SignatureData, SwapCommitState, SwapData } from "@atomiqlabs/base";
|
|
7
|
+
import { Buffer } from "buffer";
|
|
8
|
+
import { MinimalLightningNetworkWalletInterface } from "../../../../bitcoin/wallet/MinimalLightningNetworkWalletInterface";
|
|
9
|
+
import { IClaimableSwap } from "../../../IClaimableSwap";
|
|
10
|
+
import { IAddressSwap } from "../../../IAddressSwap";
|
|
11
|
+
import { IEscrowSelfInitSwapInit } from "../../IEscrowSelfInitSwap";
|
|
12
|
+
import { TokenAmount } from "../../../../types/TokenAmount";
|
|
13
|
+
import { BtcToken, SCToken } from "../../../../types/Token";
|
|
14
|
+
import { LoggerType } from "../../../../utils/Logger";
|
|
15
|
+
import { LNURLWithdraw } from "../../../../types/lnurl/LNURLWithdraw";
|
|
16
|
+
/**
|
|
17
|
+
* State enum for FromBTCLN swaps
|
|
18
|
+
* @category Swaps
|
|
19
|
+
*/
|
|
20
|
+
export declare enum FromBTCLNSwapState {
|
|
21
|
+
FAILED = -4,
|
|
22
|
+
QUOTE_EXPIRED = -3,
|
|
23
|
+
QUOTE_SOFT_EXPIRED = -2,
|
|
24
|
+
EXPIRED = -1,
|
|
25
|
+
PR_CREATED = 0,
|
|
26
|
+
PR_PAID = 1,
|
|
27
|
+
CLAIM_COMMITED = 2,
|
|
28
|
+
CLAIM_CLAIMED = 3
|
|
29
|
+
}
|
|
30
|
+
export type FromBTCLNSwapInit<T extends SwapData> = IEscrowSelfInitSwapInit<T> & {
|
|
31
|
+
pr: string;
|
|
32
|
+
secret: string;
|
|
33
|
+
initialSwapData: T;
|
|
34
|
+
lnurl?: string;
|
|
35
|
+
lnurlK1?: string;
|
|
36
|
+
lnurlCallback?: string;
|
|
37
|
+
};
|
|
38
|
+
export declare function isFromBTCLNSwapInit<T extends SwapData>(obj: any): obj is FromBTCLNSwapInit<T>;
|
|
39
|
+
export declare class FromBTCLNSwap<T extends ChainType = ChainType> extends IFromBTCSelfInitSwap<T, FromBTCLNDefinition<T>, FromBTCLNSwapState> implements IAddressSwap, IClaimableSwap<T, FromBTCLNDefinition<T>, FromBTCLNSwapState> {
|
|
40
|
+
protected readonly logger: LoggerType;
|
|
41
|
+
protected readonly inputToken: BtcToken<true>;
|
|
42
|
+
protected readonly TYPE = SwapType.FROM_BTCLN;
|
|
43
|
+
protected readonly lnurlFailSignal: AbortController;
|
|
44
|
+
protected readonly pr: string;
|
|
45
|
+
protected readonly secret: string;
|
|
46
|
+
protected initialSwapData: T["Data"];
|
|
47
|
+
lnurl?: string;
|
|
48
|
+
lnurlK1?: string;
|
|
49
|
+
lnurlCallback?: string;
|
|
50
|
+
prPosted?: boolean;
|
|
51
|
+
protected getSwapData(): T["Data"];
|
|
52
|
+
constructor(wrapper: FromBTCLNWrapper<T>, init: FromBTCLNSwapInit<T["Data"]>);
|
|
53
|
+
constructor(wrapper: FromBTCLNWrapper<T>, obj: any);
|
|
54
|
+
protected upgradeVersion(): void;
|
|
55
|
+
protected getIdentifierHash(): Buffer;
|
|
56
|
+
protected getPaymentHash(): Buffer;
|
|
57
|
+
protected canCommit(): boolean;
|
|
58
|
+
getInputAddress(): string | null;
|
|
59
|
+
getInputTxId(): string;
|
|
60
|
+
/**
|
|
61
|
+
* Returns the lightning network BOLT11 invoice that needs to be paid as an input to the swap
|
|
62
|
+
*/
|
|
63
|
+
getAddress(): string;
|
|
64
|
+
getHyperlink(): string;
|
|
65
|
+
/**
|
|
66
|
+
* Returns the timeout time (in UNIX milliseconds) when the swap will definitelly be considered as expired
|
|
67
|
+
* if the LP doesn't make it expired sooner
|
|
68
|
+
*/
|
|
69
|
+
getDefinitiveExpiryTime(): number;
|
|
70
|
+
/**
|
|
71
|
+
* Returns timeout time (in UNIX milliseconds) when the LN invoice will expire
|
|
72
|
+
*/
|
|
73
|
+
getTimeoutTime(): number;
|
|
74
|
+
/**
|
|
75
|
+
* Returns timeout time (in UNIX milliseconds) when the swap htlc will expire
|
|
76
|
+
*/
|
|
77
|
+
getHtlcTimeoutTime(): number;
|
|
78
|
+
isFinished(): boolean;
|
|
79
|
+
isClaimable(): boolean;
|
|
80
|
+
isSuccessful(): boolean;
|
|
81
|
+
isFailed(): boolean;
|
|
82
|
+
isQuoteExpired(): boolean;
|
|
83
|
+
isQuoteSoftExpired(): boolean;
|
|
84
|
+
_verifyQuoteDefinitelyExpired(): Promise<boolean>;
|
|
85
|
+
verifyQuoteValid(): Promise<boolean>;
|
|
86
|
+
getInputToken(): BtcToken<true>;
|
|
87
|
+
getInput(): TokenAmount<T["ChainId"], BtcToken<true>>;
|
|
88
|
+
getSmartChainNetworkFee(): Promise<TokenAmount<T["ChainId"], SCToken<T["ChainId"]>>>;
|
|
89
|
+
hasEnoughForTxFees(): Promise<{
|
|
90
|
+
enoughBalance: boolean;
|
|
91
|
+
balance: TokenAmount;
|
|
92
|
+
required: TokenAmount;
|
|
93
|
+
}>;
|
|
94
|
+
/**
|
|
95
|
+
* Executes the swap with the provided bitcoin lightning network wallet or LNURL
|
|
96
|
+
*
|
|
97
|
+
* @param dstSigner Signer on the destination network, needs to have the same address as the one specified when
|
|
98
|
+
* quote was created, this is required for legacy swaps because the destination wallet needs to actively claim
|
|
99
|
+
* the swap funds on the destination (this also means you need native token to cover gas costs)
|
|
100
|
+
* @param walletOrLnurlWithdraw Bitcoin lightning wallet to use to pay the lightning network invoice, or an LNURL-withdraw
|
|
101
|
+
* link, wallet is not required and the LN invoice can be paid externally as well (just pass null or undefined here)
|
|
102
|
+
* @param callbacks Callbacks to track the progress of the swap
|
|
103
|
+
* @param options Optional options for the swap like feeRate, AbortSignal, and timeouts/intervals
|
|
104
|
+
*/
|
|
105
|
+
execute(dstSigner: T["Signer"] | T["NativeSigner"], walletOrLnurlWithdraw?: MinimalLightningNetworkWalletInterface | LNURLWithdraw | string | null | undefined, callbacks?: {
|
|
106
|
+
onSourceTransactionReceived?: (sourceTxId: string) => void;
|
|
107
|
+
onDestinationCommitSent?: (destinationCommitTxId: string) => void;
|
|
108
|
+
onDestinationClaimSent?: (destinationClaimTxId: string) => void;
|
|
109
|
+
onSwapSettled?: (destinationTxId: string) => void;
|
|
110
|
+
}, options?: {
|
|
111
|
+
abortSignal?: AbortSignal;
|
|
112
|
+
lightningTxCheckIntervalSeconds?: number;
|
|
113
|
+
delayBetweenCommitAndClaimSeconds?: number;
|
|
114
|
+
}): Promise<void>;
|
|
115
|
+
txsExecute(options?: {
|
|
116
|
+
skipChecks?: boolean;
|
|
117
|
+
}): Promise<{
|
|
118
|
+
name: "Payment";
|
|
119
|
+
description: string;
|
|
120
|
+
chain: string;
|
|
121
|
+
txs: {
|
|
122
|
+
address: string;
|
|
123
|
+
hyperlink: string;
|
|
124
|
+
}[];
|
|
125
|
+
}[] | ({
|
|
126
|
+
name: "Commit";
|
|
127
|
+
description: string;
|
|
128
|
+
chain: T["ChainId"];
|
|
129
|
+
txs: T["TX"][];
|
|
130
|
+
} | {
|
|
131
|
+
name: "Claim";
|
|
132
|
+
description: string;
|
|
133
|
+
chain: T["ChainId"];
|
|
134
|
+
txs: T["TX"][];
|
|
135
|
+
})[]>;
|
|
136
|
+
/**
|
|
137
|
+
* Checks whether the LP received the LN payment and we can continue by committing & claiming the HTLC on-chain
|
|
138
|
+
*
|
|
139
|
+
* @param save If the new swap state should be saved
|
|
140
|
+
*/
|
|
141
|
+
_checkIntermediaryPaymentReceived(save?: boolean): Promise<boolean | null>;
|
|
142
|
+
/**
|
|
143
|
+
* Checks the data returned by the intermediary in the payment auth request
|
|
144
|
+
*
|
|
145
|
+
* @param signer Smart chain signer's address initiating the swap
|
|
146
|
+
* @param data Parsed swap data as returned by the intermediary
|
|
147
|
+
* @param signature Signature data as returned by the intermediary
|
|
148
|
+
* @protected
|
|
149
|
+
* @throws {IntermediaryError} If the returned are not valid
|
|
150
|
+
* @throws {SignatureVerificationError} If the returned signature is not valid
|
|
151
|
+
* @throws {Error} If the swap is already committed on-chain
|
|
152
|
+
*/
|
|
153
|
+
protected checkIntermediaryReturnedAuthData(signer: string, data: T["Data"], signature: SignatureData): Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Waits till an LN payment is received by the intermediary and client can continue commiting & claiming the HTLC
|
|
156
|
+
*
|
|
157
|
+
* @param onPaymentReceived Callback as for when the LP reports having received the ln payment
|
|
158
|
+
* @param abortSignal Abort signal to stop waiting for payment
|
|
159
|
+
* @param checkIntervalSeconds How often to poll the intermediary for answer
|
|
160
|
+
*/
|
|
161
|
+
waitForPayment(onPaymentReceived?: (txId: string) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
|
|
162
|
+
/**
|
|
163
|
+
* Commits the swap on-chain, locking the tokens from the intermediary in an HTLC
|
|
164
|
+
*
|
|
165
|
+
* @param _signer Signer to sign the transactions with, must be the same as used in the initialization
|
|
166
|
+
* @param abortSignal Abort signal to stop waiting for the transaction confirmation and abort
|
|
167
|
+
* @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
|
|
168
|
+
* (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
|
|
169
|
+
* @param onBeforeTxSent
|
|
170
|
+
* @throws {Error} If invalid signer is provided that doesn't match the swap data
|
|
171
|
+
*/
|
|
172
|
+
commit(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean, onBeforeTxSent?: (txId: string) => void): Promise<string>;
|
|
173
|
+
waitTillCommited(abortSignal?: AbortSignal): Promise<void>;
|
|
174
|
+
/**
|
|
175
|
+
* Unsafe txs claim getter without state checking!
|
|
176
|
+
*
|
|
177
|
+
* @param _signer
|
|
178
|
+
* @private
|
|
179
|
+
*/
|
|
180
|
+
private _txsClaim;
|
|
181
|
+
/**
|
|
182
|
+
* Returns transactions required for claiming the HTLC and finishing the swap by revealing the HTLC secret
|
|
183
|
+
* (hash preimage)
|
|
184
|
+
*
|
|
185
|
+
* @param _signer Optional signer address to use for claiming the swap, can also be different from the initializer
|
|
186
|
+
* @throws {Error} If in invalid state (must be CLAIM_COMMITED)
|
|
187
|
+
*/
|
|
188
|
+
txsClaim(_signer?: T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
|
|
189
|
+
/**
|
|
190
|
+
* Claims and finishes the swap
|
|
191
|
+
*
|
|
192
|
+
* @param _signer Signer to sign the transactions with, can also be different to the initializer
|
|
193
|
+
* @param abortSignal Abort signal to stop waiting for transaction confirmation
|
|
194
|
+
* @param onBeforeTxSent
|
|
195
|
+
*/
|
|
196
|
+
claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, onBeforeTxSent?: (txId: string) => void): Promise<string>;
|
|
197
|
+
/**
|
|
198
|
+
* Waits till the swap is successfully claimed
|
|
199
|
+
*
|
|
200
|
+
* @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled
|
|
201
|
+
* @param abortSignal AbortSignal
|
|
202
|
+
* @throws {Error} If swap is in invalid state (must be BTC_TX_CONFIRMED)
|
|
203
|
+
* @throws {Error} If the LP refunded sooner than we were able to claim
|
|
204
|
+
* @returns {boolean} whether the swap was claimed in time or not
|
|
205
|
+
*/
|
|
206
|
+
waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
|
|
207
|
+
/**
|
|
208
|
+
* Estimated transaction fee for commit & claim txs combined
|
|
209
|
+
*/
|
|
210
|
+
getCommitAndClaimFee(): Promise<bigint>;
|
|
211
|
+
canCommitAndClaimInOneShot(): boolean;
|
|
212
|
+
/**
|
|
213
|
+
* Returns transactions for both commit & claim operation together, such that they can be signed all at once by
|
|
214
|
+
* the wallet. CAUTION: transactions must be sent sequentially, such that the claim (2nd) transaction is only
|
|
215
|
+
* sent after the commit (1st) transaction confirms. Failure to do so can reveal the HTLC pre-image too soon,
|
|
216
|
+
* opening a possibility for the LP to steal funds.
|
|
217
|
+
*
|
|
218
|
+
* @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
|
|
219
|
+
* (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
|
|
220
|
+
*
|
|
221
|
+
* @throws {Error} If in invalid state (must be PR_PAID or CLAIM_COMMITED)
|
|
222
|
+
*/
|
|
223
|
+
txsCommitAndClaim(skipChecks?: boolean): Promise<T["TX"][]>;
|
|
224
|
+
/**
|
|
225
|
+
* Commits and claims the swap, in a way that the transactions can be signed together by the underlying provider and
|
|
226
|
+
* then sent sequentially
|
|
227
|
+
*
|
|
228
|
+
* @param _signer Signer to sign the transactions with, must be the same as used in the initialization
|
|
229
|
+
* @param abortSignal Abort signal to stop waiting for the transaction confirmation and abort
|
|
230
|
+
* @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
|
|
231
|
+
* (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
|
|
232
|
+
* @param onBeforeCommitTxSent
|
|
233
|
+
* @param onBeforeClaimTxSent
|
|
234
|
+
* @throws {Error} If in invalid state (must be PR_PAID or CLAIM_COMMITED)
|
|
235
|
+
* @throws {Error} If invalid signer is provided that doesn't match the swap data
|
|
236
|
+
*/
|
|
237
|
+
commitAndClaim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean, onBeforeCommitTxSent?: (txId: string) => void, onBeforeClaimTxSent?: (txId: string) => void): Promise<string[]>;
|
|
238
|
+
/**
|
|
239
|
+
* Is this an LNURL-withdraw swap?
|
|
240
|
+
*/
|
|
241
|
+
isLNURL(): boolean;
|
|
242
|
+
/**
|
|
243
|
+
* Gets the used LNURL or null if this is not an LNURL-withdraw swap
|
|
244
|
+
*/
|
|
245
|
+
getLNURL(): string | null;
|
|
246
|
+
/**
|
|
247
|
+
* Pay the generated lightning network invoice with LNURL-withdraw
|
|
248
|
+
*/
|
|
249
|
+
settleWithLNURLWithdraw(lnurl: string | LNURLWithdraw): Promise<void>;
|
|
250
|
+
serialize(): any;
|
|
251
|
+
/**
|
|
252
|
+
* Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
|
|
253
|
+
* data
|
|
254
|
+
*
|
|
255
|
+
* @private
|
|
256
|
+
*/
|
|
257
|
+
private syncStateFromChain;
|
|
258
|
+
_shouldFetchExpiryStatus(): boolean;
|
|
259
|
+
_shouldFetchCommitStatus(): boolean;
|
|
260
|
+
_shouldCheckIntermediary(): boolean;
|
|
261
|
+
_sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState, skipLpCheck?: boolean): Promise<boolean>;
|
|
262
|
+
_tick(save?: boolean): Promise<boolean>;
|
|
263
|
+
}
|