@atomiqlabs/sdk 7.0.12 → 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} +37 -19
- 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} +113 -72
- 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,110 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
/// <reference types="node" />
|
|
4
|
+
import { FromBTCLNSwap, FromBTCLNSwapState } from "./FromBTCLNSwap";
|
|
5
|
+
import { ChainType, ClaimEvent, InitializeEvent, RefundEvent } from "@atomiqlabs/base";
|
|
6
|
+
import { Intermediary } from "../../../../intermediaries/Intermediary";
|
|
7
|
+
import { Buffer } from "buffer";
|
|
8
|
+
import { SwapType } from "../../../../enums/SwapType";
|
|
9
|
+
import { LightningNetworkApi } from "../../../../bitcoin/LightningNetworkApi";
|
|
10
|
+
import { ISwapPrice } from "../../../../prices/abstract/ISwapPrice";
|
|
11
|
+
import { EventEmitter } from "events";
|
|
12
|
+
import { ISwapWrapperOptions, WrapperCtorTokens } from "../../../ISwapWrapper";
|
|
13
|
+
import { UnifiedSwapEventListener } from "../../../../events/UnifiedSwapEventListener";
|
|
14
|
+
import { UnifiedSwapStorage } from "../../../../storage/UnifiedSwapStorage";
|
|
15
|
+
import { ISwap } from "../../../ISwap";
|
|
16
|
+
import { IFromBTCLNDefinition, IFromBTCLNWrapper } from "../IFromBTCLNWrapper";
|
|
17
|
+
import { IClaimableSwapWrapper } from "../../../IClaimableSwapWrapper";
|
|
18
|
+
import { AmountData } from "../../../../types/AmountData";
|
|
19
|
+
import { LNURLWithdrawParamsWithUrl } from "../../../../types/lnurl/LNURLWithdraw";
|
|
20
|
+
import { AllOptional } from "../../../../utils/TypeUtils";
|
|
21
|
+
export type FromBTCLNOptions = {
|
|
22
|
+
descriptionHash?: Buffer;
|
|
23
|
+
unsafeSkipLnNodeCheck?: boolean;
|
|
24
|
+
};
|
|
25
|
+
export type FromBTCLNWrapperOptions = ISwapWrapperOptions & {
|
|
26
|
+
unsafeSkipLnNodeCheck: boolean;
|
|
27
|
+
safetyFactor: number;
|
|
28
|
+
bitcoinBlocktime: number;
|
|
29
|
+
};
|
|
30
|
+
export type FromBTCLNDefinition<T extends ChainType> = IFromBTCLNDefinition<T, FromBTCLNWrapper<T>, FromBTCLNSwap<T>>;
|
|
31
|
+
/**
|
|
32
|
+
* Factory wrapper for creating Lightning BTC to Smart Chain swaps
|
|
33
|
+
* @category Swaps
|
|
34
|
+
*/
|
|
35
|
+
export declare class FromBTCLNWrapper<T extends ChainType> extends IFromBTCLNWrapper<T, FromBTCLNDefinition<T>, FromBTCLNWrapperOptions> implements IClaimableSwapWrapper<FromBTCLNSwap<T>> {
|
|
36
|
+
readonly claimableSwapStates: FromBTCLNSwapState[];
|
|
37
|
+
readonly TYPE = SwapType.FROM_BTCLN;
|
|
38
|
+
readonly swapDeserializer: typeof FromBTCLNSwap;
|
|
39
|
+
/**
|
|
40
|
+
* @param chainIdentifier
|
|
41
|
+
* @param unifiedStorage Storage interface for the current environment
|
|
42
|
+
* @param unifiedChainEvents On-chain event listener
|
|
43
|
+
* @param chain
|
|
44
|
+
* @param contract Underlying contract handling the swaps
|
|
45
|
+
* @param prices Swap pricing handler
|
|
46
|
+
* @param tokens
|
|
47
|
+
* @param swapDataDeserializer Deserializer for SwapData
|
|
48
|
+
* @param lnApi
|
|
49
|
+
* @param options
|
|
50
|
+
* @param events Instance to use for emitting events
|
|
51
|
+
*/
|
|
52
|
+
constructor(chainIdentifier: string, unifiedStorage: UnifiedSwapStorage<T>, unifiedChainEvents: UnifiedSwapEventListener<T>, chain: T["ChainInterface"], contract: T["Contract"], prices: ISwapPrice, tokens: WrapperCtorTokens, swapDataDeserializer: new (data: any) => T["Data"], lnApi: LightningNetworkApi, options?: AllOptional<FromBTCLNWrapperOptions>, events?: EventEmitter<{
|
|
53
|
+
swapState: [ISwap];
|
|
54
|
+
}>);
|
|
55
|
+
readonly pendingSwapStates: FromBTCLNSwapState[];
|
|
56
|
+
readonly tickSwapState: FromBTCLNSwapState[];
|
|
57
|
+
protected processEventInitialize(swap: FromBTCLNSwap<T>, event: InitializeEvent<T["Data"]>): Promise<boolean>;
|
|
58
|
+
protected processEventClaim(swap: FromBTCLNSwap<T>, event: ClaimEvent<T["Data"]>): Promise<boolean>;
|
|
59
|
+
protected processEventRefund(swap: FromBTCLNSwap<T>, event: RefundEvent<T["Data"]>): Promise<boolean>;
|
|
60
|
+
/**
|
|
61
|
+
* Verifies response returned from intermediary
|
|
62
|
+
*
|
|
63
|
+
* @param resp Response as returned by the intermediary
|
|
64
|
+
* @param amountData
|
|
65
|
+
* @param lp Intermediary
|
|
66
|
+
* @param options Options as passed to the swap creation function
|
|
67
|
+
* @param decodedPr Decoded bolt11 lightning network invoice
|
|
68
|
+
* @param paymentHash Expected payment hash of the bolt11 lightning network invoice
|
|
69
|
+
* @private
|
|
70
|
+
* @throws {IntermediaryError} in case the response is invalid
|
|
71
|
+
*/
|
|
72
|
+
private verifyReturnedData;
|
|
73
|
+
/**
|
|
74
|
+
* Returns a newly created swap, receiving 'amount' on lightning network
|
|
75
|
+
*
|
|
76
|
+
* @param signer Smart chain signer's address intiating the swap
|
|
77
|
+
* @param amountData Amount of token & amount to swap
|
|
78
|
+
* @param lps LPs (liquidity providers) to get the quotes from
|
|
79
|
+
* @param options Quote options
|
|
80
|
+
* @param additionalParams Additional parameters sent to the LP when creating the swap
|
|
81
|
+
* @param abortSignal Abort signal for aborting the process
|
|
82
|
+
* @param preFetches
|
|
83
|
+
*/
|
|
84
|
+
create(signer: string, amountData: AmountData, lps: Intermediary[], options?: FromBTCLNOptions, additionalParams?: Record<string, any>, abortSignal?: AbortSignal, preFetches?: {
|
|
85
|
+
usdPricePrefetchPromise: Promise<number | undefined>;
|
|
86
|
+
pricePrefetchPromise?: Promise<bigint | undefined>;
|
|
87
|
+
feeRatePromise?: Promise<string | undefined>;
|
|
88
|
+
}): {
|
|
89
|
+
quote: Promise<FromBTCLNSwap<T>>;
|
|
90
|
+
intermediary: Intermediary;
|
|
91
|
+
}[];
|
|
92
|
+
/**
|
|
93
|
+
* Returns a newly created swap, receiving 'amount' from the lnurl-withdraw
|
|
94
|
+
*
|
|
95
|
+
* @param signer Smart chains signer's address intiating the swap
|
|
96
|
+
* @param lnurl LNURL-withdraw to withdraw funds from
|
|
97
|
+
* @param amountData Amount of token & amount to swap
|
|
98
|
+
* @param lps LPs (liquidity providers) to get the quotes from
|
|
99
|
+
* @param additionalParams Additional parameters sent to the LP when creating the swap
|
|
100
|
+
* @param abortSignal Abort signal for aborting the process
|
|
101
|
+
*/
|
|
102
|
+
createViaLNURL(signer: string, lnurl: string | LNURLWithdrawParamsWithUrl, amountData: AmountData, lps: Intermediary[], additionalParams?: Record<string, any>, abortSignal?: AbortSignal): Promise<{
|
|
103
|
+
quote: Promise<FromBTCLNSwap<T>>;
|
|
104
|
+
intermediary: Intermediary;
|
|
105
|
+
}[]>;
|
|
106
|
+
protected _checkPastSwaps(pastSwaps: FromBTCLNSwap<T>[]): Promise<{
|
|
107
|
+
changedSwaps: FromBTCLNSwap<T>[];
|
|
108
|
+
removeSwaps: FromBTCLNSwap<T>[];
|
|
109
|
+
}>;
|
|
110
|
+
}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FromBTCLNWrapper = void 0;
|
|
4
|
+
const FromBTCLNSwap_1 = require("./FromBTCLNSwap");
|
|
5
|
+
const bolt11_1 = require("@atomiqlabs/bolt11");
|
|
6
|
+
const base_1 = require("@atomiqlabs/base");
|
|
7
|
+
const buffer_1 = require("buffer");
|
|
8
|
+
const UserError_1 = require("../../../../errors/UserError");
|
|
9
|
+
const IntermediaryError_1 = require("../../../../errors/IntermediaryError");
|
|
10
|
+
const SwapType_1 = require("../../../../enums/SwapType");
|
|
11
|
+
const Utils_1 = require("../../../../utils/Utils");
|
|
12
|
+
const IntermediaryAPI_1 = require("../../../../intermediaries/apis/IntermediaryAPI");
|
|
13
|
+
const RequestError_1 = require("../../../../errors/RequestError");
|
|
14
|
+
const IFromBTCLNWrapper_1 = require("../IFromBTCLNWrapper");
|
|
15
|
+
const RetryUtils_1 = require("../../../../utils/RetryUtils");
|
|
16
|
+
/**
|
|
17
|
+
* Factory wrapper for creating Lightning BTC to Smart Chain swaps
|
|
18
|
+
* @category Swaps
|
|
19
|
+
*/
|
|
20
|
+
class FromBTCLNWrapper extends IFromBTCLNWrapper_1.IFromBTCLNWrapper {
|
|
21
|
+
/**
|
|
22
|
+
* @param chainIdentifier
|
|
23
|
+
* @param unifiedStorage Storage interface for the current environment
|
|
24
|
+
* @param unifiedChainEvents On-chain event listener
|
|
25
|
+
* @param chain
|
|
26
|
+
* @param contract Underlying contract handling the swaps
|
|
27
|
+
* @param prices Swap pricing handler
|
|
28
|
+
* @param tokens
|
|
29
|
+
* @param swapDataDeserializer Deserializer for SwapData
|
|
30
|
+
* @param lnApi
|
|
31
|
+
* @param options
|
|
32
|
+
* @param events Instance to use for emitting events
|
|
33
|
+
*/
|
|
34
|
+
constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, contract, prices, tokens, swapDataDeserializer, lnApi, options, events) {
|
|
35
|
+
super(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, contract, prices, tokens, swapDataDeserializer, lnApi, {
|
|
36
|
+
safetyFactor: options?.safetyFactor ?? 2,
|
|
37
|
+
bitcoinBlocktime: options?.bitcoinBlocktime ?? 10 * 60,
|
|
38
|
+
unsafeSkipLnNodeCheck: options?.unsafeSkipLnNodeCheck ?? false
|
|
39
|
+
}, events);
|
|
40
|
+
this.claimableSwapStates = [FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_COMMITED];
|
|
41
|
+
this.TYPE = SwapType_1.SwapType.FROM_BTCLN;
|
|
42
|
+
this.swapDeserializer = FromBTCLNSwap_1.FromBTCLNSwap;
|
|
43
|
+
this.pendingSwapStates = [
|
|
44
|
+
FromBTCLNSwap_1.FromBTCLNSwapState.PR_CREATED,
|
|
45
|
+
FromBTCLNSwap_1.FromBTCLNSwapState.QUOTE_SOFT_EXPIRED,
|
|
46
|
+
FromBTCLNSwap_1.FromBTCLNSwapState.PR_PAID,
|
|
47
|
+
FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_COMMITED,
|
|
48
|
+
FromBTCLNSwap_1.FromBTCLNSwapState.EXPIRED
|
|
49
|
+
];
|
|
50
|
+
this.tickSwapState = [
|
|
51
|
+
FromBTCLNSwap_1.FromBTCLNSwapState.PR_CREATED,
|
|
52
|
+
FromBTCLNSwap_1.FromBTCLNSwapState.PR_PAID,
|
|
53
|
+
FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_COMMITED
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
processEventInitialize(swap, event) {
|
|
57
|
+
if (swap.state === FromBTCLNSwap_1.FromBTCLNSwapState.PR_PAID || swap.state === FromBTCLNSwap_1.FromBTCLNSwapState.QUOTE_SOFT_EXPIRED) {
|
|
58
|
+
swap.state = FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_COMMITED;
|
|
59
|
+
return Promise.resolve(true);
|
|
60
|
+
}
|
|
61
|
+
return Promise.resolve(false);
|
|
62
|
+
}
|
|
63
|
+
processEventClaim(swap, event) {
|
|
64
|
+
if (swap.state !== FromBTCLNSwap_1.FromBTCLNSwapState.FAILED && swap.state !== FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_CLAIMED) {
|
|
65
|
+
swap.state = FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_CLAIMED;
|
|
66
|
+
return Promise.resolve(true);
|
|
67
|
+
}
|
|
68
|
+
return Promise.resolve(false);
|
|
69
|
+
}
|
|
70
|
+
processEventRefund(swap, event) {
|
|
71
|
+
if (swap.state !== FromBTCLNSwap_1.FromBTCLNSwapState.CLAIM_CLAIMED && swap.state !== FromBTCLNSwap_1.FromBTCLNSwapState.FAILED) {
|
|
72
|
+
swap.state = FromBTCLNSwap_1.FromBTCLNSwapState.FAILED;
|
|
73
|
+
return Promise.resolve(true);
|
|
74
|
+
}
|
|
75
|
+
return Promise.resolve(false);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Verifies response returned from intermediary
|
|
79
|
+
*
|
|
80
|
+
* @param resp Response as returned by the intermediary
|
|
81
|
+
* @param amountData
|
|
82
|
+
* @param lp Intermediary
|
|
83
|
+
* @param options Options as passed to the swap creation function
|
|
84
|
+
* @param decodedPr Decoded bolt11 lightning network invoice
|
|
85
|
+
* @param paymentHash Expected payment hash of the bolt11 lightning network invoice
|
|
86
|
+
* @private
|
|
87
|
+
* @throws {IntermediaryError} in case the response is invalid
|
|
88
|
+
*/
|
|
89
|
+
verifyReturnedData(resp, amountData, lp, options, decodedPr, paymentHash) {
|
|
90
|
+
if (lp.getAddress(this.chainIdentifier) !== resp.intermediaryKey)
|
|
91
|
+
throw new IntermediaryError_1.IntermediaryError("Invalid intermediary address/pubkey");
|
|
92
|
+
if (options.descriptionHash != null && decodedPr.tagsObject.purpose_commit_hash !== options.descriptionHash.toString("hex"))
|
|
93
|
+
throw new IntermediaryError_1.IntermediaryError("Invalid pr returned - description hash");
|
|
94
|
+
if (decodedPr.tagsObject.payment_hash == null ||
|
|
95
|
+
!buffer_1.Buffer.from(decodedPr.tagsObject.payment_hash, "hex").equals(paymentHash))
|
|
96
|
+
throw new IntermediaryError_1.IntermediaryError("Invalid pr returned - payment hash");
|
|
97
|
+
if (decodedPr.millisatoshis == null)
|
|
98
|
+
throw new IntermediaryError_1.IntermediaryError("Invalid pr returned - msat field");
|
|
99
|
+
if (!amountData.exactIn) {
|
|
100
|
+
if (resp.total != amountData.amount)
|
|
101
|
+
throw new IntermediaryError_1.IntermediaryError("Invalid amount returned");
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
const amountIn = (BigInt(decodedPr.millisatoshis) + 999n) / 1000n;
|
|
105
|
+
if (amountIn !== amountData.amount)
|
|
106
|
+
throw new IntermediaryError_1.IntermediaryError("Invalid payment request returned, amount mismatch");
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Returns a newly created swap, receiving 'amount' on lightning network
|
|
111
|
+
*
|
|
112
|
+
* @param signer Smart chain signer's address intiating the swap
|
|
113
|
+
* @param amountData Amount of token & amount to swap
|
|
114
|
+
* @param lps LPs (liquidity providers) to get the quotes from
|
|
115
|
+
* @param options Quote options
|
|
116
|
+
* @param additionalParams Additional parameters sent to the LP when creating the swap
|
|
117
|
+
* @param abortSignal Abort signal for aborting the process
|
|
118
|
+
* @param preFetches
|
|
119
|
+
*/
|
|
120
|
+
create(signer, amountData, lps, options, additionalParams, abortSignal, preFetches) {
|
|
121
|
+
if (options == null)
|
|
122
|
+
options = {};
|
|
123
|
+
options.unsafeSkipLnNodeCheck ??= this.options.unsafeSkipLnNodeCheck;
|
|
124
|
+
if (options.descriptionHash != null && options.descriptionHash.length !== 32)
|
|
125
|
+
throw new UserError_1.UserError("Invalid description hash length");
|
|
126
|
+
const { secret, paymentHash } = this.getSecretAndHash();
|
|
127
|
+
const claimHash = this.contract.getHashForHtlc(paymentHash);
|
|
128
|
+
const nativeTokenAddress = this.chain.getNativeCurrencyAddress();
|
|
129
|
+
const _abortController = (0, Utils_1.extendAbortController)(abortSignal);
|
|
130
|
+
const _preFetches = {
|
|
131
|
+
pricePrefetchPromise: preFetches?.pricePrefetchPromise ?? this.preFetchPrice(amountData, _abortController.signal),
|
|
132
|
+
feeRatePromise: preFetches?.feeRatePromise ?? this.preFetchFeeRate(signer, amountData, claimHash.toString("hex"), _abortController),
|
|
133
|
+
usdPricePrefetchPromise: preFetches?.usdPricePrefetchPromise ?? this.preFetchUsdPrice(_abortController.signal),
|
|
134
|
+
};
|
|
135
|
+
return lps.map(lp => {
|
|
136
|
+
return {
|
|
137
|
+
intermediary: lp,
|
|
138
|
+
quote: (async () => {
|
|
139
|
+
if (lp.services[SwapType_1.SwapType.FROM_BTCLN] == null)
|
|
140
|
+
throw new Error("LP service for processing from btcln swaps not found!");
|
|
141
|
+
const abortController = (0, Utils_1.extendAbortController)(_abortController.signal);
|
|
142
|
+
const liquidityPromise = this.preFetchIntermediaryLiquidity(amountData, lp, abortController);
|
|
143
|
+
const { lnCapacityPromise, resp } = await (0, RetryUtils_1.tryWithRetries)(async (retryCount) => {
|
|
144
|
+
const { lnPublicKey, response } = IntermediaryAPI_1.IntermediaryAPI.initFromBTCLN(this.chainIdentifier, lp.url, nativeTokenAddress, {
|
|
145
|
+
paymentHash,
|
|
146
|
+
amount: amountData.amount,
|
|
147
|
+
claimer: signer,
|
|
148
|
+
token: amountData.token.toString(),
|
|
149
|
+
descriptionHash: options?.descriptionHash,
|
|
150
|
+
exactOut: !amountData.exactIn,
|
|
151
|
+
feeRate: (0, Utils_1.throwIfUndefined)(_preFetches.feeRatePromise),
|
|
152
|
+
additionalParams
|
|
153
|
+
}, this.options.postRequestTimeout, abortController.signal, retryCount > 0 ? false : undefined);
|
|
154
|
+
return {
|
|
155
|
+
lnCapacityPromise: options?.unsafeSkipLnNodeCheck ? null : this.preFetchLnCapacity(lnPublicKey),
|
|
156
|
+
resp: await response
|
|
157
|
+
};
|
|
158
|
+
}, undefined, RequestError_1.RequestError, abortController.signal);
|
|
159
|
+
const decodedPr = (0, bolt11_1.decode)(resp.pr);
|
|
160
|
+
if (decodedPr.millisatoshis == null)
|
|
161
|
+
throw new IntermediaryError_1.IntermediaryError("Invalid returned swap invoice, no msat amount field");
|
|
162
|
+
if (decodedPr.timeExpireDate == null)
|
|
163
|
+
throw new IntermediaryError_1.IntermediaryError("Invalid returned swap invoice, no expiry date field");
|
|
164
|
+
const amountIn = (BigInt(decodedPr.millisatoshis) + 999n) / 1000n;
|
|
165
|
+
try {
|
|
166
|
+
this.verifyReturnedData(resp, amountData, lp, options ?? {}, decodedPr, paymentHash);
|
|
167
|
+
const [pricingInfo] = await Promise.all([
|
|
168
|
+
this.verifyReturnedPrice(lp.services[SwapType_1.SwapType.FROM_BTCLN], false, amountIn, resp.total, amountData.token, {}, _preFetches.pricePrefetchPromise, _preFetches.usdPricePrefetchPromise, abortController.signal),
|
|
169
|
+
this.verifyIntermediaryLiquidity(resp.total, (0, Utils_1.throwIfUndefined)(liquidityPromise)),
|
|
170
|
+
lnCapacityPromise != null ? this.verifyLnNodeCapacity(lp, decodedPr, lnCapacityPromise, abortController.signal) : Promise.resolve()
|
|
171
|
+
]);
|
|
172
|
+
const quote = new FromBTCLNSwap_1.FromBTCLNSwap(this, {
|
|
173
|
+
pricingInfo,
|
|
174
|
+
url: lp.url,
|
|
175
|
+
expiry: decodedPr.timeExpireDate * 1000,
|
|
176
|
+
swapFee: resp.swapFee,
|
|
177
|
+
swapFeeBtc: resp.swapFee * amountIn / (resp.total - resp.swapFee),
|
|
178
|
+
feeRate: (await _preFetches.feeRatePromise),
|
|
179
|
+
initialSwapData: await this.contract.createSwapData(base_1.ChainSwapType.HTLC, lp.getAddress(this.chainIdentifier), signer, amountData.token, resp.total, claimHash.toString("hex"), this.getRandomSequence(), BigInt(Math.floor(Date.now() / 1000)), false, true, resp.securityDeposit, 0n, nativeTokenAddress),
|
|
180
|
+
pr: resp.pr,
|
|
181
|
+
secret: secret.toString("hex"),
|
|
182
|
+
exactIn: amountData.exactIn ?? true
|
|
183
|
+
});
|
|
184
|
+
await quote._save();
|
|
185
|
+
return quote;
|
|
186
|
+
}
|
|
187
|
+
catch (e) {
|
|
188
|
+
abortController.abort(e);
|
|
189
|
+
throw e;
|
|
190
|
+
}
|
|
191
|
+
})()
|
|
192
|
+
};
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Returns a newly created swap, receiving 'amount' from the lnurl-withdraw
|
|
197
|
+
*
|
|
198
|
+
* @param signer Smart chains signer's address intiating the swap
|
|
199
|
+
* @param lnurl LNURL-withdraw to withdraw funds from
|
|
200
|
+
* @param amountData Amount of token & amount to swap
|
|
201
|
+
* @param lps LPs (liquidity providers) to get the quotes from
|
|
202
|
+
* @param additionalParams Additional parameters sent to the LP when creating the swap
|
|
203
|
+
* @param abortSignal Abort signal for aborting the process
|
|
204
|
+
*/
|
|
205
|
+
async createViaLNURL(signer, lnurl, amountData, lps, additionalParams, abortSignal) {
|
|
206
|
+
if (!this.isInitialized)
|
|
207
|
+
throw new Error("Not initialized, call init() first!");
|
|
208
|
+
const abortController = (0, Utils_1.extendAbortController)(abortSignal);
|
|
209
|
+
const preFetches = {
|
|
210
|
+
pricePrefetchPromise: this.preFetchPrice(amountData, abortController.signal),
|
|
211
|
+
usdPricePrefetchPromise: this.preFetchUsdPrice(abortController.signal),
|
|
212
|
+
feeRatePromise: this.preFetchFeeRate(signer, amountData, undefined, abortController)
|
|
213
|
+
};
|
|
214
|
+
try {
|
|
215
|
+
const exactOutAmountPromise = !amountData.exactIn ? preFetches.pricePrefetchPromise.then(price => this.prices.getToBtcSwapAmount(this.chainIdentifier, amountData.amount, amountData.token, abortController.signal, price)).catch(e => {
|
|
216
|
+
abortController.abort(e);
|
|
217
|
+
return undefined;
|
|
218
|
+
}) : undefined;
|
|
219
|
+
const withdrawRequest = await this.getLNURLWithdraw(lnurl, abortController.signal);
|
|
220
|
+
const min = BigInt(withdrawRequest.minWithdrawable) / 1000n;
|
|
221
|
+
const max = BigInt(withdrawRequest.maxWithdrawable) / 1000n;
|
|
222
|
+
if (amountData.exactIn) {
|
|
223
|
+
if (amountData.amount < min)
|
|
224
|
+
throw new UserError_1.UserError("Amount less than LNURL-withdraw minimum");
|
|
225
|
+
if (amountData.amount > max)
|
|
226
|
+
throw new UserError_1.UserError("Amount more than LNURL-withdraw maximum");
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
const amount = (await exactOutAmountPromise);
|
|
230
|
+
abortController.signal.throwIfAborted();
|
|
231
|
+
if ((amount * 95n / 100n) < min)
|
|
232
|
+
throw new UserError_1.UserError("Amount less than LNURL-withdraw minimum");
|
|
233
|
+
if ((amount * 105n / 100n) > max)
|
|
234
|
+
throw new UserError_1.UserError("Amount more than LNURL-withdraw maximum");
|
|
235
|
+
}
|
|
236
|
+
return this.create(signer, amountData, lps, undefined, additionalParams, abortSignal, preFetches).map(data => {
|
|
237
|
+
return {
|
|
238
|
+
quote: data.quote.then(quote => {
|
|
239
|
+
quote.lnurl = withdrawRequest.url;
|
|
240
|
+
quote.lnurlK1 = withdrawRequest.k1;
|
|
241
|
+
quote.lnurlCallback = withdrawRequest.callback;
|
|
242
|
+
const amountIn = quote.getInput().rawAmount;
|
|
243
|
+
if (amountIn < min)
|
|
244
|
+
throw new UserError_1.UserError("Amount less than LNURL-withdraw minimum");
|
|
245
|
+
if (amountIn > max)
|
|
246
|
+
throw new UserError_1.UserError("Amount more than LNURL-withdraw maximum");
|
|
247
|
+
return quote;
|
|
248
|
+
}),
|
|
249
|
+
intermediary: data.intermediary
|
|
250
|
+
};
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
catch (e) {
|
|
254
|
+
abortController.abort(e);
|
|
255
|
+
throw e;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
async _checkPastSwaps(pastSwaps) {
|
|
259
|
+
const changedSwapSet = new Set();
|
|
260
|
+
const swapExpiredStatus = {};
|
|
261
|
+
const checkStatusSwaps = [];
|
|
262
|
+
await Promise.all(pastSwaps.map(async (pastSwap) => {
|
|
263
|
+
if (pastSwap._shouldCheckIntermediary()) {
|
|
264
|
+
try {
|
|
265
|
+
const result = await pastSwap._checkIntermediaryPaymentReceived(false);
|
|
266
|
+
if (result != null) {
|
|
267
|
+
changedSwapSet.add(pastSwap);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
catch (e) {
|
|
271
|
+
this.logger.error(`_checkPastSwaps(): Failed to contact LP regarding swap ${pastSwap.getId()}, error: `, e);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
if (pastSwap._shouldFetchExpiryStatus()) {
|
|
275
|
+
//Check expiry
|
|
276
|
+
swapExpiredStatus[pastSwap.getId()] = await pastSwap._verifyQuoteDefinitelyExpired();
|
|
277
|
+
}
|
|
278
|
+
if (pastSwap._shouldFetchCommitStatus()) {
|
|
279
|
+
//Add to swaps for which status should be checked
|
|
280
|
+
if (pastSwap.data != null)
|
|
281
|
+
checkStatusSwaps.push(pastSwap);
|
|
282
|
+
}
|
|
283
|
+
}));
|
|
284
|
+
const swapStatuses = await this.contract.getCommitStatuses(checkStatusSwaps.map(val => ({ signer: val._getInitiator(), swapData: val.data })));
|
|
285
|
+
for (let pastSwap of checkStatusSwaps) {
|
|
286
|
+
const shouldSave = await pastSwap._sync(false, swapExpiredStatus[pastSwap.getId()], swapStatuses[pastSwap.getEscrowHash()], true);
|
|
287
|
+
if (shouldSave) {
|
|
288
|
+
changedSwapSet.add(pastSwap);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
const changedSwaps = [];
|
|
292
|
+
const removeSwaps = [];
|
|
293
|
+
changedSwapSet.forEach(val => {
|
|
294
|
+
if (val.isQuoteExpired()) {
|
|
295
|
+
removeSwaps.push(val);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
changedSwaps.push(val);
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
return {
|
|
302
|
+
changedSwaps,
|
|
303
|
+
removeSwaps
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
exports.FromBTCLNWrapper = FromBTCLNWrapper;
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { SwapType } from "../../../../enums/SwapType";
|
|
4
|
+
import { ChainType, SwapCommitState, SwapData } from "@atomiqlabs/base";
|
|
5
|
+
import { Buffer } from "buffer";
|
|
6
|
+
import { Fee } from "../../../../types/fees/Fee";
|
|
7
|
+
import { IAddressSwap } from "../../../IAddressSwap";
|
|
8
|
+
import { FromBTCLNAutoDefinition, FromBTCLNAutoWrapper } from "./FromBTCLNAutoWrapper";
|
|
9
|
+
import { ISwapWithGasDrop } from "../../../ISwapWithGasDrop";
|
|
10
|
+
import { MinimalLightningNetworkWalletInterface } from "../../../../bitcoin/wallet/MinimalLightningNetworkWalletInterface";
|
|
11
|
+
import { IClaimableSwap } from "../../../IClaimableSwap";
|
|
12
|
+
import { IEscrowSwap, IEscrowSwapInit } from "../../IEscrowSwap";
|
|
13
|
+
import { FeeType } from "../../../../enums/FeeType";
|
|
14
|
+
import { TokenAmount } from "../../../../types/TokenAmount";
|
|
15
|
+
import { BtcToken, SCToken } from "../../../../types/Token";
|
|
16
|
+
import { LoggerType } from "../../../../utils/Logger";
|
|
17
|
+
import { LNURLWithdraw } from "../../../../types/lnurl/LNURLWithdraw";
|
|
18
|
+
import { PriceInfoType } from "../../../../types/PriceInfoType";
|
|
19
|
+
/**
|
|
20
|
+
* State enum for FromBTCLNAuto swaps
|
|
21
|
+
* @category Swaps
|
|
22
|
+
*/
|
|
23
|
+
export declare enum FromBTCLNAutoSwapState {
|
|
24
|
+
FAILED = -4,
|
|
25
|
+
QUOTE_EXPIRED = -3,
|
|
26
|
+
QUOTE_SOFT_EXPIRED = -2,
|
|
27
|
+
EXPIRED = -1,
|
|
28
|
+
PR_CREATED = 0,
|
|
29
|
+
PR_PAID = 1,
|
|
30
|
+
CLAIM_COMMITED = 2,
|
|
31
|
+
CLAIM_CLAIMED = 3
|
|
32
|
+
}
|
|
33
|
+
export type FromBTCLNAutoSwapInit<T extends SwapData> = IEscrowSwapInit<T> & {
|
|
34
|
+
pr: string;
|
|
35
|
+
secret: string;
|
|
36
|
+
initialSwapData: T;
|
|
37
|
+
btcAmountSwap: bigint;
|
|
38
|
+
btcAmountGas: bigint;
|
|
39
|
+
gasSwapFeeBtc: bigint;
|
|
40
|
+
gasSwapFee: bigint;
|
|
41
|
+
gasPricingInfo?: PriceInfoType;
|
|
42
|
+
lnurl?: string;
|
|
43
|
+
lnurlK1?: string;
|
|
44
|
+
lnurlCallback?: string;
|
|
45
|
+
};
|
|
46
|
+
export declare function isFromBTCLNAutoSwapInit<T extends SwapData>(obj: any): obj is FromBTCLNAutoSwapInit<T>;
|
|
47
|
+
export declare class FromBTCLNAutoSwap<T extends ChainType = ChainType> extends IEscrowSwap<T, FromBTCLNAutoDefinition<T>> implements IAddressSwap, ISwapWithGasDrop<T>, IClaimableSwap<T, FromBTCLNAutoDefinition<T>, FromBTCLNAutoSwapState> {
|
|
48
|
+
protected readonly logger: LoggerType;
|
|
49
|
+
protected readonly inputToken: BtcToken<true>;
|
|
50
|
+
protected readonly TYPE = SwapType.FROM_BTCLN_AUTO;
|
|
51
|
+
protected readonly lnurlFailSignal: AbortController;
|
|
52
|
+
protected readonly pr: string;
|
|
53
|
+
protected readonly secret: string;
|
|
54
|
+
protected initialSwapData: T["Data"];
|
|
55
|
+
protected readonly btcAmountSwap: bigint;
|
|
56
|
+
protected readonly btcAmountGas: bigint;
|
|
57
|
+
protected readonly gasSwapFeeBtc: bigint;
|
|
58
|
+
protected readonly gasSwapFee: bigint;
|
|
59
|
+
gasPricingInfo?: PriceInfoType;
|
|
60
|
+
lnurl?: string;
|
|
61
|
+
lnurlK1?: string;
|
|
62
|
+
lnurlCallback?: string;
|
|
63
|
+
prPosted?: boolean;
|
|
64
|
+
protected getSwapData(): T["Data"];
|
|
65
|
+
constructor(wrapper: FromBTCLNAutoWrapper<T>, init: FromBTCLNAutoSwapInit<T["Data"]>);
|
|
66
|
+
constructor(wrapper: FromBTCLNAutoWrapper<T>, obj: any);
|
|
67
|
+
protected upgradeVersion(): void;
|
|
68
|
+
/**
|
|
69
|
+
* In case swapFee in BTC is not supplied it recalculates it based on swap price
|
|
70
|
+
* @protected
|
|
71
|
+
*/
|
|
72
|
+
protected tryRecomputeSwapPrice(): void;
|
|
73
|
+
refreshPriceData(): Promise<void>;
|
|
74
|
+
_getEscrowHash(): string | null;
|
|
75
|
+
_getInitiator(): string;
|
|
76
|
+
getId(): string;
|
|
77
|
+
getOutputAddress(): string | null;
|
|
78
|
+
getOutputTxId(): string | null;
|
|
79
|
+
requiresAction(): boolean;
|
|
80
|
+
protected getIdentifierHashString(): string;
|
|
81
|
+
protected getPaymentHash(): Buffer;
|
|
82
|
+
getInputAddress(): string | null;
|
|
83
|
+
getInputTxId(): string;
|
|
84
|
+
/**
|
|
85
|
+
* Returns the lightning network BOLT11 invoice that needs to be paid as an input to the swap
|
|
86
|
+
*/
|
|
87
|
+
getAddress(): string;
|
|
88
|
+
getHyperlink(): string;
|
|
89
|
+
/**
|
|
90
|
+
* Returns the timeout time (in UNIX milliseconds) when the swap will definitelly be considered as expired
|
|
91
|
+
* if the LP doesn't make it expired sooner
|
|
92
|
+
*/
|
|
93
|
+
getDefinitiveExpiryTime(): number;
|
|
94
|
+
/**
|
|
95
|
+
* Returns timeout time (in UNIX milliseconds) when the swap htlc will expire
|
|
96
|
+
*/
|
|
97
|
+
getHtlcTimeoutTime(): number | null;
|
|
98
|
+
isFinished(): boolean;
|
|
99
|
+
isClaimable(): boolean;
|
|
100
|
+
isSuccessful(): boolean;
|
|
101
|
+
isFailed(): boolean;
|
|
102
|
+
isQuoteExpired(): boolean;
|
|
103
|
+
isQuoteSoftExpired(): boolean;
|
|
104
|
+
_verifyQuoteDefinitelyExpired(): Promise<boolean>;
|
|
105
|
+
verifyQuoteValid(): Promise<boolean>;
|
|
106
|
+
protected getLightningInvoiceSats(): bigint;
|
|
107
|
+
protected getWatchtowerFeeAmountBtc(): bigint;
|
|
108
|
+
protected getInputSwapAmountWithoutFee(): bigint;
|
|
109
|
+
protected getInputGasAmountWithoutFee(): bigint;
|
|
110
|
+
protected getInputAmountWithoutFee(): bigint;
|
|
111
|
+
protected getOutputAmountWithoutFee(): bigint;
|
|
112
|
+
getInputToken(): BtcToken<true>;
|
|
113
|
+
getInput(): TokenAmount<T["ChainId"], BtcToken<true>>;
|
|
114
|
+
getInputWithoutFee(): TokenAmount;
|
|
115
|
+
getOutputToken(): SCToken<T["ChainId"]>;
|
|
116
|
+
getOutput(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>>;
|
|
117
|
+
getGasDropOutput(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>>;
|
|
118
|
+
protected getSwapFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
|
|
119
|
+
protected getWatchtowerFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
|
|
120
|
+
getFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
|
|
121
|
+
getFeeBreakdown(): [
|
|
122
|
+
{
|
|
123
|
+
type: FeeType.SWAP;
|
|
124
|
+
fee: Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: FeeType.NETWORK_OUTPUT;
|
|
128
|
+
fee: Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
|
|
129
|
+
}
|
|
130
|
+
];
|
|
131
|
+
/**
|
|
132
|
+
* Executes the swap with the provided bitcoin lightning network wallet or LNURL
|
|
133
|
+
*
|
|
134
|
+
* @param walletOrLnurlWithdraw Bitcoin lightning wallet to use to pay the lightning network invoice, or an LNURL-withdraw
|
|
135
|
+
* link, wallet is not required and the LN invoice can be paid externally as well (just pass null or undefined here)
|
|
136
|
+
* @param callbacks Callbacks to track the progress of the swap
|
|
137
|
+
* @param options Optional options for the swap like feeRate, AbortSignal, and timeouts/intervals
|
|
138
|
+
*
|
|
139
|
+
* @returns {boolean} Whether a swap was settled automatically by swap watchtowers or requires manual claim by the
|
|
140
|
+
* user, in case `false` is returned the user should call `swap.claim()` to settle the swap on the destination manually
|
|
141
|
+
*/
|
|
142
|
+
execute(walletOrLnurlWithdraw?: MinimalLightningNetworkWalletInterface | LNURLWithdraw | string | null | undefined, callbacks?: {
|
|
143
|
+
onSourceTransactionReceived?: (sourceTxId: string) => void;
|
|
144
|
+
onSwapSettled?: (destinationTxId: string) => void;
|
|
145
|
+
}, options?: {
|
|
146
|
+
abortSignal?: AbortSignal;
|
|
147
|
+
lightningTxCheckIntervalSeconds?: number;
|
|
148
|
+
maxWaitTillAutomaticSettlementSeconds?: number;
|
|
149
|
+
}): Promise<boolean>;
|
|
150
|
+
txsExecute(): Promise<{
|
|
151
|
+
name: "Payment";
|
|
152
|
+
description: string;
|
|
153
|
+
chain: string;
|
|
154
|
+
txs: {
|
|
155
|
+
address: string;
|
|
156
|
+
hyperlink: string;
|
|
157
|
+
}[];
|
|
158
|
+
}[]>;
|
|
159
|
+
/**
|
|
160
|
+
* Checks whether the LP received the LN payment and we can continue by committing & claiming the HTLC on-chain
|
|
161
|
+
*
|
|
162
|
+
* @param save If the new swap state should be saved
|
|
163
|
+
*/
|
|
164
|
+
_checkIntermediaryPaymentReceived(save?: boolean): Promise<boolean | null>;
|
|
165
|
+
_saveRealSwapData(data: T["Data"], save?: boolean): Promise<boolean>;
|
|
166
|
+
/**
|
|
167
|
+
* Checks the data returned by the intermediary in the payment auth request
|
|
168
|
+
*
|
|
169
|
+
* @param data Parsed swap data as returned by the intermediary
|
|
170
|
+
* @protected
|
|
171
|
+
* @throws {IntermediaryError} If the returned are not valid
|
|
172
|
+
* @throws {Error} If the swap is already committed on-chain
|
|
173
|
+
*/
|
|
174
|
+
protected checkIntermediaryReturnedData(data: T["Data"]): Promise<void>;
|
|
175
|
+
/**
|
|
176
|
+
* Waits till an LN payment is received by the intermediary and client can continue commiting & claiming the HTLC
|
|
177
|
+
*
|
|
178
|
+
* @param onPaymentReceived Callback as for when the LP reports having received the ln payment
|
|
179
|
+
* @param checkIntervalSeconds How often to poll the intermediary for answer (default 5 seconds)
|
|
180
|
+
* @param abortSignal Abort signal to stop waiting for payment
|
|
181
|
+
*/
|
|
182
|
+
waitForPayment(onPaymentReceived?: (txId: string) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
|
|
183
|
+
protected waitTillCommited(checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<void>;
|
|
184
|
+
/**
|
|
185
|
+
* Returns transactions required for claiming the HTLC and finishing the swap by revealing the HTLC secret
|
|
186
|
+
* (hash preimage)
|
|
187
|
+
*
|
|
188
|
+
* @param _signer Optional signer address to use for claiming the swap, can also be different from the initializer
|
|
189
|
+
* @throws {Error} If in invalid state (must be CLAIM_COMMITED)
|
|
190
|
+
*/
|
|
191
|
+
txsClaim(_signer?: T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
|
|
192
|
+
/**
|
|
193
|
+
* Claims and finishes the swap
|
|
194
|
+
*
|
|
195
|
+
* @param _signer Signer to sign the transactions with, can also be different to the initializer
|
|
196
|
+
* @param abortSignal Abort signal to stop waiting for transaction confirmation
|
|
197
|
+
*/
|
|
198
|
+
claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal): Promise<string>;
|
|
199
|
+
/**
|
|
200
|
+
* Waits till the swap is successfully claimed
|
|
201
|
+
*
|
|
202
|
+
* @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled
|
|
203
|
+
* @param abortSignal AbortSignal
|
|
204
|
+
* @throws {Error} If swap is in invalid state (must be BTC_TX_CONFIRMED)
|
|
205
|
+
* @throws {Error} If the LP refunded sooner than we were able to claim
|
|
206
|
+
* @returns {boolean} whether the swap was claimed in time or not
|
|
207
|
+
*/
|
|
208
|
+
waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
|
|
209
|
+
/**
|
|
210
|
+
* Is this an LNURL-withdraw swap?
|
|
211
|
+
*/
|
|
212
|
+
isLNURL(): boolean;
|
|
213
|
+
/**
|
|
214
|
+
* Gets the used LNURL or null if this is not an LNURL-withdraw swap
|
|
215
|
+
*/
|
|
216
|
+
getLNURL(): string | null;
|
|
217
|
+
/**
|
|
218
|
+
* Pay the generated lightning network invoice with LNURL-withdraw
|
|
219
|
+
*/
|
|
220
|
+
settleWithLNURLWithdraw(lnurl: string | LNURLWithdraw): Promise<void>;
|
|
221
|
+
serialize(): any;
|
|
222
|
+
/**
|
|
223
|
+
* Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
|
|
224
|
+
* data
|
|
225
|
+
*
|
|
226
|
+
* @private
|
|
227
|
+
*/
|
|
228
|
+
private syncStateFromChain;
|
|
229
|
+
_shouldFetchCommitStatus(): boolean;
|
|
230
|
+
_shouldFetchExpiryStatus(): boolean;
|
|
231
|
+
_shouldCheckIntermediary(): boolean;
|
|
232
|
+
_sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState, skipLpCheck?: boolean): Promise<boolean>;
|
|
233
|
+
private broadcastTickCounter;
|
|
234
|
+
_broadcastSecret(noCheckExpiry?: boolean): Promise<void>;
|
|
235
|
+
_tick(save?: boolean): Promise<boolean>;
|
|
236
|
+
}
|