@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,600 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IntermediaryAPI = exports.InvoiceStatusResponseCodes = exports.PaymentAuthorizationResponseCodes = exports.RefundAuthorizationResponseCodes = void 0;
|
|
4
|
+
const RequestError_1 = require("../../errors/RequestError");
|
|
5
|
+
const SchemaVerifier_1 = require("../../http/paramcoders/SchemaVerifier");
|
|
6
|
+
const StreamingFetchPromise_1 = require("../../http/paramcoders/client/StreamingFetchPromise");
|
|
7
|
+
const Utils_1 = require("../../utils/Utils");
|
|
8
|
+
const HttpUtils_1 = require("../../http/HttpUtils");
|
|
9
|
+
const RetryUtils_1 = require("../../utils/RetryUtils");
|
|
10
|
+
var RefundAuthorizationResponseCodes;
|
|
11
|
+
(function (RefundAuthorizationResponseCodes) {
|
|
12
|
+
RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["EXPIRED"] = 20010] = "EXPIRED";
|
|
13
|
+
RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["REFUND_DATA"] = 20000] = "REFUND_DATA";
|
|
14
|
+
RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["NOT_FOUND"] = 20007] = "NOT_FOUND";
|
|
15
|
+
RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["PENDING"] = 20008] = "PENDING";
|
|
16
|
+
RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["PAID"] = 20006] = "PAID";
|
|
17
|
+
})(RefundAuthorizationResponseCodes = exports.RefundAuthorizationResponseCodes || (exports.RefundAuthorizationResponseCodes = {}));
|
|
18
|
+
var PaymentAuthorizationResponseCodes;
|
|
19
|
+
(function (PaymentAuthorizationResponseCodes) {
|
|
20
|
+
PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["AUTH_DATA"] = 10000] = "AUTH_DATA";
|
|
21
|
+
PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["EXPIRED"] = 10001] = "EXPIRED";
|
|
22
|
+
PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["PAID"] = 10002] = "PAID";
|
|
23
|
+
PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["PENDING"] = 10003] = "PENDING";
|
|
24
|
+
PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["ALREADY_COMMITTED"] = 10004] = "ALREADY_COMMITTED";
|
|
25
|
+
})(PaymentAuthorizationResponseCodes = exports.PaymentAuthorizationResponseCodes || (exports.PaymentAuthorizationResponseCodes = {}));
|
|
26
|
+
var InvoiceStatusResponseCodes;
|
|
27
|
+
(function (InvoiceStatusResponseCodes) {
|
|
28
|
+
InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["PAID"] = 10000] = "PAID";
|
|
29
|
+
InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["EXPIRED"] = 10001] = "EXPIRED";
|
|
30
|
+
InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["SETTLED"] = 10002] = "SETTLED";
|
|
31
|
+
InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["PENDING"] = 10003] = "PENDING";
|
|
32
|
+
})(InvoiceStatusResponseCodes = exports.InvoiceStatusResponseCodes || (exports.InvoiceStatusResponseCodes = {}));
|
|
33
|
+
const SwapResponseSchema = {
|
|
34
|
+
data: SchemaVerifier_1.FieldTypeEnum.Any,
|
|
35
|
+
prefix: SchemaVerifier_1.FieldTypeEnum.String,
|
|
36
|
+
timeout: SchemaVerifier_1.FieldTypeEnum.String,
|
|
37
|
+
signature: SchemaVerifier_1.FieldTypeEnum.String
|
|
38
|
+
};
|
|
39
|
+
/////////////////////////
|
|
40
|
+
///// To BTC
|
|
41
|
+
const ToBTCResponseSchema = {
|
|
42
|
+
amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
43
|
+
address: SchemaVerifier_1.FieldTypeEnum.String,
|
|
44
|
+
satsPervByte: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
45
|
+
networkFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
46
|
+
swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
47
|
+
totalFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
48
|
+
total: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
49
|
+
minRequiredExpiry: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
50
|
+
...SwapResponseSchema
|
|
51
|
+
};
|
|
52
|
+
/////////////////////////
|
|
53
|
+
///// To BTCLN
|
|
54
|
+
const ToBTCLNResponseSchema = {
|
|
55
|
+
maxFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
56
|
+
swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
57
|
+
total: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
58
|
+
confidence: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
59
|
+
address: SchemaVerifier_1.FieldTypeEnum.String,
|
|
60
|
+
routingFeeSats: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
61
|
+
...SwapResponseSchema
|
|
62
|
+
};
|
|
63
|
+
const ToBTCLNPrepareExactInSchema = {
|
|
64
|
+
amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
65
|
+
reqId: SchemaVerifier_1.FieldTypeEnum.String
|
|
66
|
+
};
|
|
67
|
+
/////////////////////////
|
|
68
|
+
///// From BTC
|
|
69
|
+
const FromBTCResponseSchema = {
|
|
70
|
+
amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
71
|
+
btcAddress: SchemaVerifier_1.FieldTypeEnum.String,
|
|
72
|
+
address: SchemaVerifier_1.FieldTypeEnum.String,
|
|
73
|
+
swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
74
|
+
total: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
75
|
+
confirmations: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
76
|
+
...SwapResponseSchema
|
|
77
|
+
};
|
|
78
|
+
/////////////////////////
|
|
79
|
+
///// From BTCLN
|
|
80
|
+
const FromBTCLNResponseSchema = {
|
|
81
|
+
pr: SchemaVerifier_1.FieldTypeEnum.String,
|
|
82
|
+
swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
83
|
+
total: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
84
|
+
intermediaryKey: SchemaVerifier_1.FieldTypeEnum.String,
|
|
85
|
+
securityDeposit: SchemaVerifier_1.FieldTypeEnum.BigInt
|
|
86
|
+
};
|
|
87
|
+
/////////////////////////
|
|
88
|
+
///// From BTCLN Auto
|
|
89
|
+
const FromBTCLNAutoResponseSchema = {
|
|
90
|
+
intermediaryKey: SchemaVerifier_1.FieldTypeEnum.String,
|
|
91
|
+
pr: SchemaVerifier_1.FieldTypeEnum.String,
|
|
92
|
+
btcAmountSwap: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
93
|
+
btcAmountGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
94
|
+
total: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
95
|
+
totalGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
96
|
+
totalFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
97
|
+
swapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
98
|
+
swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
99
|
+
gasSwapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
100
|
+
gasSwapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
101
|
+
claimerBounty: SchemaVerifier_1.FieldTypeEnum.BigInt
|
|
102
|
+
};
|
|
103
|
+
/////////////////////////
|
|
104
|
+
///// Spv vault from BTC
|
|
105
|
+
const SpvFromBTCPrepareResponseSchema = {
|
|
106
|
+
quoteId: SchemaVerifier_1.FieldTypeEnum.String,
|
|
107
|
+
expiry: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
108
|
+
address: SchemaVerifier_1.FieldTypeEnum.String,
|
|
109
|
+
vaultId: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
110
|
+
vaultBtcAddress: SchemaVerifier_1.FieldTypeEnum.String,
|
|
111
|
+
btcAddress: SchemaVerifier_1.FieldTypeEnum.String,
|
|
112
|
+
btcUtxo: SchemaVerifier_1.FieldTypeEnum.String,
|
|
113
|
+
btcFeeRate: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
114
|
+
btcAmount: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
115
|
+
btcAmountSwap: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
116
|
+
btcAmountGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
117
|
+
total: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
118
|
+
totalGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
119
|
+
totalFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
120
|
+
swapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
121
|
+
swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
122
|
+
gasSwapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
123
|
+
gasSwapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
124
|
+
callerFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
125
|
+
frontingFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt,
|
|
126
|
+
executionFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt
|
|
127
|
+
};
|
|
128
|
+
const SpvFromBTCInitResponseSchema = {
|
|
129
|
+
txId: SchemaVerifier_1.FieldTypeEnum.String
|
|
130
|
+
};
|
|
131
|
+
class IntermediaryAPI {
|
|
132
|
+
/**
|
|
133
|
+
* Returns the information about a specific intermediary
|
|
134
|
+
*
|
|
135
|
+
* @param baseUrl Base URL of the intermediary
|
|
136
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
137
|
+
* @param abortSignal
|
|
138
|
+
*
|
|
139
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
140
|
+
* @throws {Error} If the supplied nonce doesn't match the response
|
|
141
|
+
*/
|
|
142
|
+
static async getIntermediaryInfo(baseUrl, timeout, abortSignal) {
|
|
143
|
+
const nonce = (0, Utils_1.randomBytes)(32).toString("hex");
|
|
144
|
+
const abortController = (0, Utils_1.extendAbortController)(abortSignal);
|
|
145
|
+
//We don't know whether the node supports only POST or also has GET info support enabled
|
|
146
|
+
// here we try both, and abort when the first one returns (which should be GET)
|
|
147
|
+
const response = await Promise.any([
|
|
148
|
+
(0, HttpUtils_1.httpGet)(baseUrl + "/info?nonce=" + nonce, timeout, abortController.signal),
|
|
149
|
+
(0, HttpUtils_1.httpPost)(baseUrl + "/info", {
|
|
150
|
+
nonce,
|
|
151
|
+
}, timeout, abortController.signal)
|
|
152
|
+
]);
|
|
153
|
+
abortController.abort();
|
|
154
|
+
const info = JSON.parse(response.envelope);
|
|
155
|
+
if (nonce !== info.nonce)
|
|
156
|
+
throw new Error("Invalid response - nonce");
|
|
157
|
+
return response;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Returns the information about an outcome of the To BTC swap
|
|
161
|
+
*
|
|
162
|
+
* @param url URL of the intermediary
|
|
163
|
+
* @param paymentHash Payment hash of the swap
|
|
164
|
+
* @param sequence Swap's sequence number
|
|
165
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
166
|
+
* @param abortSignal
|
|
167
|
+
*
|
|
168
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
169
|
+
*/
|
|
170
|
+
static async getRefundAuthorization(url, paymentHash, sequence, timeout, abortSignal) {
|
|
171
|
+
return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getRefundAuthorization" +
|
|
172
|
+
"?paymentHash=" + encodeURIComponent(paymentHash) +
|
|
173
|
+
"&sequence=" + encodeURIComponent(sequence.toString(10)), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Returns the information about the payment of the From BTCLN swaps
|
|
177
|
+
*
|
|
178
|
+
* @param url URL of the intermediary
|
|
179
|
+
* @param paymentHash Payment hash of the swap
|
|
180
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
181
|
+
* @param abortSignal
|
|
182
|
+
*
|
|
183
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
184
|
+
*/
|
|
185
|
+
static async getPaymentAuthorization(url, paymentHash, timeout, abortSignal) {
|
|
186
|
+
return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getInvoicePaymentAuth" +
|
|
187
|
+
"?paymentHash=" + encodeURIComponent(paymentHash), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Returns the status of the payment of the From BTCLN swaps
|
|
191
|
+
*
|
|
192
|
+
* @param url URL of the intermediary
|
|
193
|
+
* @param paymentHash Payment hash of the swap
|
|
194
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
195
|
+
* @param abortSignal
|
|
196
|
+
*
|
|
197
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
198
|
+
*/
|
|
199
|
+
static async getInvoiceStatus(url, paymentHash, timeout, abortSignal) {
|
|
200
|
+
return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getInvoiceStatus" +
|
|
201
|
+
"?paymentHash=" + encodeURIComponent(paymentHash), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Initiate To BTC swap with an intermediary
|
|
205
|
+
*
|
|
206
|
+
* @param chainIdentifier
|
|
207
|
+
* @param baseUrl Base URL of the intermediary
|
|
208
|
+
* @param init Swap initialization parameters
|
|
209
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
210
|
+
* @param abortSignal
|
|
211
|
+
* @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
|
|
212
|
+
*
|
|
213
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
214
|
+
*/
|
|
215
|
+
static initToBTC(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
|
|
216
|
+
const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtc/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
|
|
217
|
+
...init.additionalParams,
|
|
218
|
+
address: init.btcAddress,
|
|
219
|
+
amount: init.amount.toString(10),
|
|
220
|
+
exactIn: init.exactIn,
|
|
221
|
+
confirmationTarget: init.confirmationTarget,
|
|
222
|
+
confirmations: init.confirmations,
|
|
223
|
+
nonce: init.nonce.toString(10),
|
|
224
|
+
token: init.token,
|
|
225
|
+
offerer: init.offerer,
|
|
226
|
+
feeRate: init.feeRate
|
|
227
|
+
}, {
|
|
228
|
+
code: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
229
|
+
msg: SchemaVerifier_1.FieldTypeEnum.String,
|
|
230
|
+
data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
|
|
231
|
+
signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
|
|
232
|
+
}, timeout, abortSignal, streamRequest);
|
|
233
|
+
return {
|
|
234
|
+
signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
|
|
235
|
+
response: responseBodyPromise.then((responseBody) => Promise.all([
|
|
236
|
+
responseBody.code,
|
|
237
|
+
responseBody.msg,
|
|
238
|
+
responseBody.data,
|
|
239
|
+
])).then(([code, msg, data]) => {
|
|
240
|
+
if (code !== 20000) {
|
|
241
|
+
throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
|
|
242
|
+
}
|
|
243
|
+
const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCResponseSchema);
|
|
244
|
+
if (result == null)
|
|
245
|
+
throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
|
|
246
|
+
return result;
|
|
247
|
+
})
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Initiate From BTC swap with an intermediary
|
|
252
|
+
*
|
|
253
|
+
* @param chainIdentifier
|
|
254
|
+
* @param baseUrl Base URL of the intermediary
|
|
255
|
+
* @param depositToken
|
|
256
|
+
* @param init Swap initialization parameters
|
|
257
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
258
|
+
* @param abortSignal
|
|
259
|
+
* @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
|
|
260
|
+
*
|
|
261
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
262
|
+
*/
|
|
263
|
+
static initFromBTC(chainIdentifier, baseUrl, depositToken, init, timeout, abortSignal, streamRequest) {
|
|
264
|
+
const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtc/getAddress?chain=" + encodeURIComponent(chainIdentifier) + "&depositToken=" + encodeURIComponent(depositToken), {
|
|
265
|
+
...init.additionalParams,
|
|
266
|
+
address: init.claimer,
|
|
267
|
+
amount: init.amount.toString(10),
|
|
268
|
+
token: init.token,
|
|
269
|
+
exactOut: init.exactOut,
|
|
270
|
+
sequence: init.sequence.toString(10),
|
|
271
|
+
claimerBounty: init.claimerBounty.then(claimerBounty => {
|
|
272
|
+
return {
|
|
273
|
+
feePerBlock: claimerBounty.feePerBlock.toString(10),
|
|
274
|
+
safetyFactor: claimerBounty.safetyFactor,
|
|
275
|
+
startTimestamp: claimerBounty.startTimestamp.toString(10),
|
|
276
|
+
addBlock: claimerBounty.addBlock,
|
|
277
|
+
addFee: claimerBounty.addFee.toString(10)
|
|
278
|
+
};
|
|
279
|
+
}),
|
|
280
|
+
feeRate: init.feeRate
|
|
281
|
+
}, {
|
|
282
|
+
code: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
283
|
+
msg: SchemaVerifier_1.FieldTypeEnum.String,
|
|
284
|
+
data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
|
|
285
|
+
signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
|
|
286
|
+
}, timeout, abortSignal, streamRequest);
|
|
287
|
+
return {
|
|
288
|
+
signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
|
|
289
|
+
response: responseBodyPromise.then((responseBody) => Promise.all([
|
|
290
|
+
responseBody.code,
|
|
291
|
+
responseBody.msg,
|
|
292
|
+
responseBody.data,
|
|
293
|
+
])).then(([code, msg, data]) => {
|
|
294
|
+
if (code !== 20000) {
|
|
295
|
+
throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
|
|
296
|
+
}
|
|
297
|
+
const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCResponseSchema);
|
|
298
|
+
if (result == null)
|
|
299
|
+
throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
|
|
300
|
+
return result;
|
|
301
|
+
})
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Initiate From BTCLN swap with an intermediary
|
|
306
|
+
*
|
|
307
|
+
* @param chainIdentifier
|
|
308
|
+
* @param baseUrl Base URL of the intermediary
|
|
309
|
+
* @param depositToken
|
|
310
|
+
* @param init Swap initialization parameters
|
|
311
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
312
|
+
* @param abortSignal
|
|
313
|
+
* @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
|
|
314
|
+
*
|
|
315
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
316
|
+
*/
|
|
317
|
+
static initFromBTCLN(chainIdentifier, baseUrl, depositToken, init, timeout, abortSignal, streamRequest) {
|
|
318
|
+
const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtcln/createInvoice?chain=" + encodeURIComponent(chainIdentifier) + "&depositToken=" + encodeURIComponent(depositToken), {
|
|
319
|
+
...init.additionalParams,
|
|
320
|
+
paymentHash: init.paymentHash.toString("hex"),
|
|
321
|
+
amount: init.amount.toString(),
|
|
322
|
+
address: init.claimer,
|
|
323
|
+
token: init.token,
|
|
324
|
+
descriptionHash: init.descriptionHash == null ? null : init.descriptionHash.toString("hex"),
|
|
325
|
+
exactOut: init.exactOut,
|
|
326
|
+
feeRate: init.feeRate
|
|
327
|
+
}, {
|
|
328
|
+
code: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
329
|
+
msg: SchemaVerifier_1.FieldTypeEnum.String,
|
|
330
|
+
data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
|
|
331
|
+
lnPublicKey: SchemaVerifier_1.FieldTypeEnum.StringOptional
|
|
332
|
+
}, timeout, abortSignal, streamRequest);
|
|
333
|
+
return {
|
|
334
|
+
lnPublicKey: responseBodyPromise.then(responseBody => responseBody.lnPublicKey),
|
|
335
|
+
response: responseBodyPromise.then((responseBody) => Promise.all([
|
|
336
|
+
responseBody.code,
|
|
337
|
+
responseBody.msg,
|
|
338
|
+
responseBody.data,
|
|
339
|
+
])).then(([code, msg, data]) => {
|
|
340
|
+
if (code !== 20000) {
|
|
341
|
+
throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
|
|
342
|
+
}
|
|
343
|
+
const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCLNResponseSchema);
|
|
344
|
+
if (result == null)
|
|
345
|
+
throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
|
|
346
|
+
return result;
|
|
347
|
+
})
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Initiate From BTCLN swap with auto-initilization by an intermediary
|
|
352
|
+
*
|
|
353
|
+
* @param chainIdentifier
|
|
354
|
+
* @param baseUrl Base URL of the intermediary
|
|
355
|
+
* @param init Swap initialization parameters
|
|
356
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
357
|
+
* @param abortSignal
|
|
358
|
+
* @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
|
|
359
|
+
*
|
|
360
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
361
|
+
*/
|
|
362
|
+
static initFromBTCLNAuto(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
|
|
363
|
+
const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtcln_auto/createInvoice?chain=" + encodeURIComponent(chainIdentifier), {
|
|
364
|
+
...init.additionalParams,
|
|
365
|
+
paymentHash: init.paymentHash.toString("hex"),
|
|
366
|
+
amount: init.amount.toString(),
|
|
367
|
+
address: init.claimer,
|
|
368
|
+
token: init.token,
|
|
369
|
+
descriptionHash: init.descriptionHash == null ? null : init.descriptionHash.toString("hex"),
|
|
370
|
+
exactOut: init.exactOut,
|
|
371
|
+
gasToken: init.gasToken,
|
|
372
|
+
gasAmount: init.gasAmount?.toString(10) ?? "0",
|
|
373
|
+
claimerBounty: init.claimerBounty?.then(val => val.toString(10)) ?? "0"
|
|
374
|
+
}, {
|
|
375
|
+
code: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
376
|
+
msg: SchemaVerifier_1.FieldTypeEnum.String,
|
|
377
|
+
data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
|
|
378
|
+
lnPublicKey: SchemaVerifier_1.FieldTypeEnum.StringOptional
|
|
379
|
+
}, timeout, abortSignal, streamRequest);
|
|
380
|
+
return {
|
|
381
|
+
lnPublicKey: responseBodyPromise.then(responseBody => responseBody.lnPublicKey),
|
|
382
|
+
response: responseBodyPromise.then((responseBody) => Promise.all([
|
|
383
|
+
responseBody.code,
|
|
384
|
+
responseBody.msg,
|
|
385
|
+
responseBody.data,
|
|
386
|
+
])).then(([code, msg, data]) => {
|
|
387
|
+
if (code !== 20000) {
|
|
388
|
+
throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
|
|
389
|
+
}
|
|
390
|
+
const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCLNAutoResponseSchema);
|
|
391
|
+
if (result == null)
|
|
392
|
+
throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
|
|
393
|
+
return result;
|
|
394
|
+
})
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Initiate To BTCLN swap with an intermediary
|
|
399
|
+
*
|
|
400
|
+
* @param chainIdentifier
|
|
401
|
+
* @param baseUrl Base URL of the intermediary
|
|
402
|
+
* @param init Swap initialization parameters
|
|
403
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
404
|
+
* @param abortSignal
|
|
405
|
+
* @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
|
|
406
|
+
*
|
|
407
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
408
|
+
*/
|
|
409
|
+
static initToBTCLN(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
|
|
410
|
+
const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
|
|
411
|
+
exactIn: false,
|
|
412
|
+
...init.additionalParams,
|
|
413
|
+
pr: init.pr,
|
|
414
|
+
maxFee: init.maxFee.toString(10),
|
|
415
|
+
expiryTimestamp: init.expiryTimestamp.toString(10),
|
|
416
|
+
token: init.token,
|
|
417
|
+
offerer: init.offerer,
|
|
418
|
+
feeRate: init.feeRate,
|
|
419
|
+
amount: null
|
|
420
|
+
}, {
|
|
421
|
+
code: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
422
|
+
msg: SchemaVerifier_1.FieldTypeEnum.String,
|
|
423
|
+
data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
|
|
424
|
+
signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
|
|
425
|
+
}, timeout, abortSignal, streamRequest);
|
|
426
|
+
return {
|
|
427
|
+
signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
|
|
428
|
+
response: responseBodyPromise.then((responseBody) => Promise.all([
|
|
429
|
+
responseBody.code,
|
|
430
|
+
responseBody.msg,
|
|
431
|
+
responseBody.data,
|
|
432
|
+
])).then(([code, msg, data]) => {
|
|
433
|
+
if (code !== 20000) {
|
|
434
|
+
throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
|
|
435
|
+
}
|
|
436
|
+
const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNResponseSchema);
|
|
437
|
+
if (result == null)
|
|
438
|
+
throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
|
|
439
|
+
return result;
|
|
440
|
+
})
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Initiate To BTCLN exact in swap with an intermediary
|
|
445
|
+
*
|
|
446
|
+
* @param baseUrl Base URL of the intermediary
|
|
447
|
+
* @param init Swap initialization parameters
|
|
448
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
449
|
+
* @param abortSignal
|
|
450
|
+
* @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
|
|
451
|
+
*
|
|
452
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
453
|
+
*/
|
|
454
|
+
static async initToBTCLNExactIn(baseUrl, init, timeout, abortSignal, streamRequest) {
|
|
455
|
+
const responseBody = await (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoiceExactIn", {
|
|
456
|
+
...init.additionalParams,
|
|
457
|
+
pr: init.pr,
|
|
458
|
+
reqId: init.reqId,
|
|
459
|
+
feeRate: init.feeRate
|
|
460
|
+
}, {
|
|
461
|
+
code: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
462
|
+
msg: SchemaVerifier_1.FieldTypeEnum.String,
|
|
463
|
+
data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
|
|
464
|
+
}, timeout, abortSignal, streamRequest);
|
|
465
|
+
const [code, msg, data] = await Promise.all([
|
|
466
|
+
responseBody.code,
|
|
467
|
+
responseBody.msg,
|
|
468
|
+
responseBody.data,
|
|
469
|
+
]);
|
|
470
|
+
if (code !== 20000)
|
|
471
|
+
throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
|
|
472
|
+
const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNResponseSchema);
|
|
473
|
+
if (result == null)
|
|
474
|
+
throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
|
|
475
|
+
return result;
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Prepare To BTCLN exact in swap with an intermediary
|
|
479
|
+
*
|
|
480
|
+
* @param chainIdentifier
|
|
481
|
+
* @param baseUrl Base URL of the intermediary
|
|
482
|
+
* @param init Swap initialization parameters
|
|
483
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
484
|
+
* @param abortSignal
|
|
485
|
+
* @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
|
|
486
|
+
*
|
|
487
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
488
|
+
*/
|
|
489
|
+
static prepareToBTCLNExactIn(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
|
|
490
|
+
const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
|
|
491
|
+
exactIn: true,
|
|
492
|
+
...init.additionalParams,
|
|
493
|
+
pr: init.pr,
|
|
494
|
+
maxFee: init.maxFee.toString(10),
|
|
495
|
+
expiryTimestamp: init.expiryTimestamp.toString(10),
|
|
496
|
+
token: init.token,
|
|
497
|
+
offerer: init.offerer,
|
|
498
|
+
amount: init.amount.toString(10)
|
|
499
|
+
}, {
|
|
500
|
+
code: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
501
|
+
msg: SchemaVerifier_1.FieldTypeEnum.String,
|
|
502
|
+
data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
|
|
503
|
+
signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
|
|
504
|
+
}, timeout, abortSignal, streamRequest);
|
|
505
|
+
return {
|
|
506
|
+
signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
|
|
507
|
+
response: responseBodyPromise.then((responseBody) => Promise.all([
|
|
508
|
+
responseBody.code,
|
|
509
|
+
responseBody.msg,
|
|
510
|
+
responseBody.data,
|
|
511
|
+
])).then(([code, msg, data]) => {
|
|
512
|
+
if (code !== 20000) {
|
|
513
|
+
throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
|
|
514
|
+
}
|
|
515
|
+
const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNPrepareExactInSchema);
|
|
516
|
+
if (result == null)
|
|
517
|
+
throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
|
|
518
|
+
return result;
|
|
519
|
+
})
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Prepare From BTC swap via new spv vault swaps with an intermediary
|
|
524
|
+
*
|
|
525
|
+
* @param chainIdentifier
|
|
526
|
+
* @param baseUrl Base URL of the intermediary
|
|
527
|
+
* @param init Swap initialization parameters
|
|
528
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
529
|
+
* @param abortSignal
|
|
530
|
+
* @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
|
|
531
|
+
*
|
|
532
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
533
|
+
*/
|
|
534
|
+
static prepareSpvFromBTC(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
|
|
535
|
+
const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtc_spv/getQuote?chain=" + encodeURIComponent(chainIdentifier), {
|
|
536
|
+
exactOut: init.exactOut,
|
|
537
|
+
...init.additionalParams,
|
|
538
|
+
address: init.address,
|
|
539
|
+
amount: init.amount.toString(10),
|
|
540
|
+
token: init.token,
|
|
541
|
+
gasAmount: init.gasAmount.toString(10),
|
|
542
|
+
gasToken: init.gasToken,
|
|
543
|
+
frontingFeeRate: init.frontingFeeRate.toString(10),
|
|
544
|
+
callerFeeRate: init.callerFeeRate.then(val => val.toString(10))
|
|
545
|
+
}, {
|
|
546
|
+
code: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
547
|
+
msg: SchemaVerifier_1.FieldTypeEnum.String,
|
|
548
|
+
data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
|
|
549
|
+
}, timeout, abortSignal, streamRequest);
|
|
550
|
+
return responseBodyPromise.then((responseBody) => Promise.all([
|
|
551
|
+
responseBody.code,
|
|
552
|
+
responseBody.msg,
|
|
553
|
+
responseBody.data,
|
|
554
|
+
])).then(([code, msg, data]) => {
|
|
555
|
+
if (code !== 20000) {
|
|
556
|
+
throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
|
|
557
|
+
}
|
|
558
|
+
const result = (0, SchemaVerifier_1.verifySchema)(data, SpvFromBTCPrepareResponseSchema);
|
|
559
|
+
if (result == null)
|
|
560
|
+
throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
|
|
561
|
+
return result;
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Prepare From BTC swap via new spv vault swaps with an intermediary
|
|
566
|
+
*
|
|
567
|
+
* @param chainIdentifier
|
|
568
|
+
* @param url
|
|
569
|
+
* @param init Swap initialization parameters
|
|
570
|
+
* @param timeout Timeout in milliseconds for the HTTP request
|
|
571
|
+
* @param abortSignal
|
|
572
|
+
* @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
|
|
573
|
+
*
|
|
574
|
+
* @throws {RequestError} If non-200 http response code is returned
|
|
575
|
+
*/
|
|
576
|
+
static initSpvFromBTC(chainIdentifier, url, init, timeout, abortSignal, streamRequest) {
|
|
577
|
+
const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(url + "/postQuote?chain=" + encodeURIComponent(chainIdentifier), {
|
|
578
|
+
quoteId: init.quoteId,
|
|
579
|
+
psbtHex: init.psbtHex
|
|
580
|
+
}, {
|
|
581
|
+
code: SchemaVerifier_1.FieldTypeEnum.Number,
|
|
582
|
+
msg: SchemaVerifier_1.FieldTypeEnum.String,
|
|
583
|
+
data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
|
|
584
|
+
}, timeout, abortSignal, streamRequest);
|
|
585
|
+
return responseBodyPromise.then((responseBody) => Promise.all([
|
|
586
|
+
responseBody.code,
|
|
587
|
+
responseBody.msg,
|
|
588
|
+
responseBody.data,
|
|
589
|
+
])).then(([code, msg, data]) => {
|
|
590
|
+
if (code !== 20000) {
|
|
591
|
+
throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
|
|
592
|
+
}
|
|
593
|
+
const result = (0, SchemaVerifier_1.verifySchema)(data, SpvFromBTCInitResponseSchema);
|
|
594
|
+
if (result == null)
|
|
595
|
+
throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
|
|
596
|
+
return result;
|
|
597
|
+
});
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
exports.IntermediaryAPI = IntermediaryAPI;
|