@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,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifySchema = exports.verifyField = exports.isOptionalField = exports.FieldTypeEnum = exports.parseBigInt = void 0;
|
|
4
|
+
function parseBigInt(str) {
|
|
5
|
+
if (str == null)
|
|
6
|
+
return null;
|
|
7
|
+
if (typeof (str) !== "string" && typeof (str) !== "number")
|
|
8
|
+
return null;
|
|
9
|
+
try {
|
|
10
|
+
return BigInt(str);
|
|
11
|
+
}
|
|
12
|
+
catch (e) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.parseBigInt = parseBigInt;
|
|
17
|
+
var FieldTypeEnum;
|
|
18
|
+
(function (FieldTypeEnum) {
|
|
19
|
+
FieldTypeEnum[FieldTypeEnum["String"] = 0] = "String";
|
|
20
|
+
FieldTypeEnum[FieldTypeEnum["Boolean"] = 1] = "Boolean";
|
|
21
|
+
FieldTypeEnum[FieldTypeEnum["Number"] = 2] = "Number";
|
|
22
|
+
FieldTypeEnum[FieldTypeEnum["BigInt"] = 3] = "BigInt";
|
|
23
|
+
FieldTypeEnum[FieldTypeEnum["Any"] = 4] = "Any";
|
|
24
|
+
FieldTypeEnum[FieldTypeEnum["StringOptional"] = 100] = "StringOptional";
|
|
25
|
+
FieldTypeEnum[FieldTypeEnum["BooleanOptional"] = 101] = "BooleanOptional";
|
|
26
|
+
FieldTypeEnum[FieldTypeEnum["NumberOptional"] = 102] = "NumberOptional";
|
|
27
|
+
FieldTypeEnum[FieldTypeEnum["BigIntOptional"] = 103] = "BigIntOptional";
|
|
28
|
+
FieldTypeEnum[FieldTypeEnum["AnyOptional"] = 104] = "AnyOptional";
|
|
29
|
+
})(FieldTypeEnum = exports.FieldTypeEnum || (exports.FieldTypeEnum = {}));
|
|
30
|
+
function isAllOptional(schema) {
|
|
31
|
+
for (let key in schema) {
|
|
32
|
+
if (!isOptionalField(schema[key]))
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
function isOptionalField(type) {
|
|
38
|
+
if (typeof (type) === "function")
|
|
39
|
+
return type(undefined) != null;
|
|
40
|
+
if (typeof (type) === "object")
|
|
41
|
+
return isAllOptional(type);
|
|
42
|
+
return type >= 100;
|
|
43
|
+
}
|
|
44
|
+
exports.isOptionalField = isOptionalField;
|
|
45
|
+
function verifyField(fieldType, val) {
|
|
46
|
+
const type = fieldType;
|
|
47
|
+
if (typeof (type) === "function") {
|
|
48
|
+
const result = type(val);
|
|
49
|
+
if (result == null)
|
|
50
|
+
return;
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
if (val == null && isOptionalField(type)) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
if (type === FieldTypeEnum.Any || type === FieldTypeEnum.AnyOptional) {
|
|
57
|
+
return val;
|
|
58
|
+
}
|
|
59
|
+
else if (type === FieldTypeEnum.Boolean || type === FieldTypeEnum.BooleanOptional) {
|
|
60
|
+
if (typeof (val) !== "boolean")
|
|
61
|
+
return;
|
|
62
|
+
return val;
|
|
63
|
+
}
|
|
64
|
+
else if (type === FieldTypeEnum.Number || type === FieldTypeEnum.NumberOptional) {
|
|
65
|
+
if (typeof (val) !== "number")
|
|
66
|
+
return;
|
|
67
|
+
if (isNaN(val))
|
|
68
|
+
return;
|
|
69
|
+
return val;
|
|
70
|
+
}
|
|
71
|
+
else if (type === FieldTypeEnum.BigInt || type === FieldTypeEnum.BigIntOptional) {
|
|
72
|
+
const result = parseBigInt(val);
|
|
73
|
+
if (result == null)
|
|
74
|
+
return;
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
else if (type === FieldTypeEnum.String || type === FieldTypeEnum.StringOptional) {
|
|
78
|
+
if (typeof (val) !== "string")
|
|
79
|
+
return;
|
|
80
|
+
return val;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
//Probably another request schema
|
|
84
|
+
const result = verifySchema(val, type);
|
|
85
|
+
if (result == null)
|
|
86
|
+
return;
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.verifyField = verifyField;
|
|
91
|
+
function verifySchema(req, schema) {
|
|
92
|
+
if (req == null)
|
|
93
|
+
return null;
|
|
94
|
+
const resultSchema = {};
|
|
95
|
+
for (let fieldName in schema) {
|
|
96
|
+
const val = req[fieldName];
|
|
97
|
+
const type = schema[fieldName];
|
|
98
|
+
if (typeof (type) === "function") {
|
|
99
|
+
const result = type(val);
|
|
100
|
+
if (result == null)
|
|
101
|
+
return null;
|
|
102
|
+
resultSchema[fieldName] = result;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (val == null && isOptionalField(type)) {
|
|
106
|
+
resultSchema[fieldName] = null;
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (type === FieldTypeEnum.Any || type === FieldTypeEnum.AnyOptional) {
|
|
110
|
+
resultSchema[fieldName] = val;
|
|
111
|
+
}
|
|
112
|
+
else if (type === FieldTypeEnum.Boolean || type === FieldTypeEnum.BooleanOptional) {
|
|
113
|
+
if (typeof (val) !== "boolean")
|
|
114
|
+
return null;
|
|
115
|
+
resultSchema[fieldName] = val;
|
|
116
|
+
}
|
|
117
|
+
else if (type === FieldTypeEnum.Number || type === FieldTypeEnum.NumberOptional) {
|
|
118
|
+
if (typeof (val) !== "number")
|
|
119
|
+
return null;
|
|
120
|
+
if (isNaN(val))
|
|
121
|
+
return null;
|
|
122
|
+
resultSchema[fieldName] = val;
|
|
123
|
+
}
|
|
124
|
+
else if (type === FieldTypeEnum.BigInt || type === FieldTypeEnum.BigIntOptional) {
|
|
125
|
+
const result = parseBigInt(val);
|
|
126
|
+
if (result == null)
|
|
127
|
+
return null;
|
|
128
|
+
resultSchema[fieldName] = result;
|
|
129
|
+
}
|
|
130
|
+
else if (type === FieldTypeEnum.String || type === FieldTypeEnum.StringOptional) {
|
|
131
|
+
if (typeof (val) !== "string")
|
|
132
|
+
return null;
|
|
133
|
+
resultSchema[fieldName] = val;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
//Probably another request schema
|
|
137
|
+
const result = verifySchema(val, type);
|
|
138
|
+
if (result == null)
|
|
139
|
+
return null;
|
|
140
|
+
resultSchema[fieldName] = result;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return resultSchema;
|
|
144
|
+
}
|
|
145
|
+
exports.verifySchema = verifySchema;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ParamDecoder } from "../ParamDecoder";
|
|
2
|
+
export declare class ResponseParamDecoder extends ParamDecoder {
|
|
3
|
+
private readonly reader?;
|
|
4
|
+
private readonly abortSignal?;
|
|
5
|
+
constructor(resp: Response, abortSignal?: AbortSignal);
|
|
6
|
+
/**
|
|
7
|
+
* Keeps reading the response until the reader closes
|
|
8
|
+
* @private
|
|
9
|
+
*/
|
|
10
|
+
private readResponse;
|
|
11
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResponseParamDecoder = void 0;
|
|
4
|
+
const ParamDecoder_1 = require("../ParamDecoder");
|
|
5
|
+
const buffer_1 = require("buffer");
|
|
6
|
+
const Logger_1 = require("../../../utils/Logger");
|
|
7
|
+
const logger = (0, Logger_1.getLogger)("ResponseParamDecoder: ");
|
|
8
|
+
class ResponseParamDecoder extends ParamDecoder_1.ParamDecoder {
|
|
9
|
+
constructor(resp, abortSignal) {
|
|
10
|
+
super();
|
|
11
|
+
this.abortSignal = abortSignal;
|
|
12
|
+
try {
|
|
13
|
+
//Read from stream
|
|
14
|
+
if (resp.body == null)
|
|
15
|
+
throw new Error("Response has no body field!");
|
|
16
|
+
this.reader = resp.body.getReader();
|
|
17
|
+
this.readResponse();
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
//Read in one piece
|
|
21
|
+
resp.arrayBuffer().then(respBuffer => {
|
|
22
|
+
super.onData(buffer_1.Buffer.from(respBuffer));
|
|
23
|
+
super.onEnd();
|
|
24
|
+
}).catch(e => {
|
|
25
|
+
super.onError(e);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
if (abortSignal != null)
|
|
29
|
+
abortSignal.addEventListener("abort", () => {
|
|
30
|
+
super.onError(abortSignal.reason);
|
|
31
|
+
if (this.reader != null && !this.reader.closed)
|
|
32
|
+
this.reader.cancel(abortSignal.reason);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Keeps reading the response until the reader closes
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
async readResponse() {
|
|
40
|
+
if (this.reader == null)
|
|
41
|
+
return;
|
|
42
|
+
while (true) {
|
|
43
|
+
const readResp = await this.reader.read().catch(e => {
|
|
44
|
+
logger.error("readResponse(): Error reading response: ", e);
|
|
45
|
+
return null;
|
|
46
|
+
});
|
|
47
|
+
if (this.abortSignal != null && this.abortSignal.aborted)
|
|
48
|
+
return;
|
|
49
|
+
if (readResp == null || readResp.done) {
|
|
50
|
+
super.onEnd();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
super.onData(buffer_1.Buffer.from(readResp.value));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.ResponseParamDecoder = ResponseParamDecoder;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { ParamEncoder } from "../ParamEncoder";
|
|
4
|
+
import { Buffer } from "buffer";
|
|
5
|
+
export declare class StreamParamEncoder extends ParamEncoder {
|
|
6
|
+
private readonly stream;
|
|
7
|
+
private closed;
|
|
8
|
+
constructor();
|
|
9
|
+
/**
|
|
10
|
+
* Returns the readable stream to be passed to the fetch API
|
|
11
|
+
*/
|
|
12
|
+
getReadableStream(): ReadableStream<Buffer>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StreamParamEncoder = void 0;
|
|
4
|
+
const ParamEncoder_1 = require("../ParamEncoder");
|
|
5
|
+
class StreamParamEncoder extends ParamEncoder_1.ParamEncoder {
|
|
6
|
+
constructor() {
|
|
7
|
+
let stream = new TransformStream();
|
|
8
|
+
let writeStream = stream.writable.getWriter();
|
|
9
|
+
writeStream.closed.then(() => this.closed = true);
|
|
10
|
+
super(writeStream.write.bind(writeStream), () => {
|
|
11
|
+
if (this.closed)
|
|
12
|
+
return Promise.resolve();
|
|
13
|
+
this.closed = true;
|
|
14
|
+
return writeStream.close();
|
|
15
|
+
});
|
|
16
|
+
this.closed = false;
|
|
17
|
+
this.stream = stream;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Returns the readable stream to be passed to the fetch API
|
|
21
|
+
*/
|
|
22
|
+
getReadableStream() {
|
|
23
|
+
return this.stream.readable;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.StreamParamEncoder = StreamParamEncoder;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RequestSchema, RequestSchemaResultPromise } from "../SchemaVerifier";
|
|
2
|
+
export type RequestBody = {
|
|
3
|
+
[key: string]: Promise<any> | any;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Sends a POST request to the specified URL in a streaming request/response mode
|
|
7
|
+
*
|
|
8
|
+
* @param url URL to send the request to
|
|
9
|
+
* @param body An object containing properties that should be sent to the server, can be Promise or any
|
|
10
|
+
* @param schema Schema of the response that should be received from the server
|
|
11
|
+
* @param timeout Timeout in millseconds for the request to succeed & all its response properties to resolve
|
|
12
|
+
* @param signal Abort signal
|
|
13
|
+
* @param streamRequest Whether the request should be streamed or not
|
|
14
|
+
* @throws {RequestError} When the response code is not 200
|
|
15
|
+
*/
|
|
16
|
+
export declare function streamingFetchPromise<T extends RequestSchema>(url: string, body: RequestBody, schema: T, timeout?: number, signal?: AbortSignal, streamRequest?: boolean): Promise<RequestSchemaResultPromise<T>>;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.streamingFetchPromise = void 0;
|
|
4
|
+
const SchemaVerifier_1 = require("../SchemaVerifier");
|
|
5
|
+
const RequestError_1 = require("../../../errors/RequestError");
|
|
6
|
+
const Utils_1 = require("../../../utils/Utils");
|
|
7
|
+
const StreamParamEncoder_1 = require("./StreamParamEncoder");
|
|
8
|
+
const ResponseParamDecoder_1 = require("./ResponseParamDecoder");
|
|
9
|
+
const Logger_1 = require("../../../utils/Logger");
|
|
10
|
+
const TimeoutUtils_1 = require("../../../utils/TimeoutUtils");
|
|
11
|
+
const logger = (0, Logger_1.getLogger)("StreamingFetch: ");
|
|
12
|
+
//https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests#feature_detection
|
|
13
|
+
const supportsRequestStreams = (() => {
|
|
14
|
+
try {
|
|
15
|
+
let duplexAccessed = false;
|
|
16
|
+
const request = new Request('https://example.com/', {
|
|
17
|
+
body: new ReadableStream(),
|
|
18
|
+
method: 'POST',
|
|
19
|
+
get duplex() {
|
|
20
|
+
duplexAccessed = true;
|
|
21
|
+
return 'half';
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
const hasContentType = request.headers.has('Content-Type');
|
|
25
|
+
return duplexAccessed && !hasContentType;
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
logger.error("supportsRequestStreams: Error checking environment support for HTTP request stream", e);
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
})();
|
|
32
|
+
logger.info("Environment supports request stream: " + supportsRequestStreams);
|
|
33
|
+
/**
|
|
34
|
+
* Sends a POST request to the specified URL in a streaming request/response mode
|
|
35
|
+
*
|
|
36
|
+
* @param url URL to send the request to
|
|
37
|
+
* @param body An object containing properties that should be sent to the server, can be Promise or any
|
|
38
|
+
* @param schema Schema of the response that should be received from the server
|
|
39
|
+
* @param timeout Timeout in millseconds for the request to succeed & all its response properties to resolve
|
|
40
|
+
* @param signal Abort signal
|
|
41
|
+
* @param streamRequest Whether the request should be streamed or not
|
|
42
|
+
* @throws {RequestError} When the response code is not 200
|
|
43
|
+
*/
|
|
44
|
+
async function streamingFetchPromise(url, body, schema, timeout, signal, streamRequest) {
|
|
45
|
+
if (streamRequest == null)
|
|
46
|
+
streamRequest = supportsRequestStreams;
|
|
47
|
+
if (timeout != null)
|
|
48
|
+
signal = (0, TimeoutUtils_1.timeoutSignal)(timeout, new Error("Network request timed out"), signal);
|
|
49
|
+
const headers = {};
|
|
50
|
+
const init = {
|
|
51
|
+
method: "POST",
|
|
52
|
+
headers
|
|
53
|
+
};
|
|
54
|
+
const startTime = Date.now();
|
|
55
|
+
const immediateValues = {};
|
|
56
|
+
const promises = [];
|
|
57
|
+
if (!streamRequest) {
|
|
58
|
+
for (let key in body) {
|
|
59
|
+
if (body[key] instanceof Promise) {
|
|
60
|
+
promises.push(body[key].then((val) => {
|
|
61
|
+
immediateValues[key] = val;
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
immediateValues[key] = body[key];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
await Promise.all(promises);
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
e._inputPromiseError = true;
|
|
73
|
+
throw e;
|
|
74
|
+
}
|
|
75
|
+
if (signal != null)
|
|
76
|
+
signal.throwIfAborted();
|
|
77
|
+
logger.debug(url + ": Sending request (" + (Date.now() - startTime) + "ms) (non-streaming): ", immediateValues);
|
|
78
|
+
init.body = JSON.stringify(immediateValues);
|
|
79
|
+
headers['content-type'] = "application/json";
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const outputStream = new StreamParamEncoder_1.StreamParamEncoder();
|
|
83
|
+
let hasPromiseInBody = false;
|
|
84
|
+
for (let key in body) {
|
|
85
|
+
if (body[key] instanceof Promise) {
|
|
86
|
+
promises.push(body[key].then((val) => {
|
|
87
|
+
logger.debug(url + ": Send param (" + (Date.now() - startTime) + "ms) (streaming): ", { [key]: val });
|
|
88
|
+
return outputStream.writeParams({
|
|
89
|
+
[key]: val
|
|
90
|
+
});
|
|
91
|
+
}));
|
|
92
|
+
hasPromiseInBody = true;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
immediateValues[key] = body[key];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (hasPromiseInBody) {
|
|
99
|
+
init.body = outputStream.getReadableStream();
|
|
100
|
+
headers['content-type'] = "application/x-multiple-json";
|
|
101
|
+
init.duplex = "half";
|
|
102
|
+
logger.debug(url + ": Sending request (" + (Date.now() - startTime) + "ms) (streaming): ", immediateValues);
|
|
103
|
+
promises.push(outputStream.writeParams(immediateValues));
|
|
104
|
+
const abortController = (0, Utils_1.extendAbortController)(signal);
|
|
105
|
+
signal = abortController.signal;
|
|
106
|
+
Promise.all(promises).then(() => outputStream.end()).catch(e => {
|
|
107
|
+
e._inputPromiseError = true;
|
|
108
|
+
abortController.abort(e);
|
|
109
|
+
});
|
|
110
|
+
signal.addEventListener("abort", () => outputStream.end());
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
logger.debug(url + ": Sending request (" + (Date.now() - startTime) + "ms) (non-streaming): ", immediateValues);
|
|
114
|
+
init.body = JSON.stringify(immediateValues);
|
|
115
|
+
headers['content-type'] = "application/json";
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (signal != null)
|
|
119
|
+
init.signal = signal;
|
|
120
|
+
headers['accept'] = "application/x-multiple-json";
|
|
121
|
+
const resp = await fetch(url, init).catch(e => {
|
|
122
|
+
if (init.signal != null && e.name === "AbortError") {
|
|
123
|
+
throw init.signal.reason;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
if (e.message != null)
|
|
127
|
+
e.message += streamRequest ? " (streaming req)" : " (non streaming req)";
|
|
128
|
+
throw e;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
logger.debug(url + ": Response status (" + (Date.now() - startTime) + "ms) " + (streamRequest ? "(streaming req)" : "(non streaming req)") + ": ", resp.status);
|
|
132
|
+
if (resp.status !== 200) {
|
|
133
|
+
let respTxt;
|
|
134
|
+
try {
|
|
135
|
+
respTxt = await resp.text();
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
throw new RequestError_1.RequestError(resp.statusText, resp.status);
|
|
139
|
+
}
|
|
140
|
+
throw new RequestError_1.RequestError(respTxt, resp.status);
|
|
141
|
+
}
|
|
142
|
+
if (resp.headers.get("content-type") !== "application/x-multiple-json") {
|
|
143
|
+
const respBody = await resp.json();
|
|
144
|
+
logger.debug(url + ": Response read (" + (Date.now() - startTime) + "ms) (non streaming resp): ", respBody);
|
|
145
|
+
return (0, Utils_1.objectMap)(schema, (schemaValue, key) => {
|
|
146
|
+
const value = respBody[key];
|
|
147
|
+
const result = (0, SchemaVerifier_1.verifyField)(schemaValue, value);
|
|
148
|
+
if (result === undefined) {
|
|
149
|
+
return Promise.reject(new Error("Invalid field value"));
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
return Promise.resolve(result);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
const decoder = new ResponseParamDecoder_1.ResponseParamDecoder(resp, init.signal ?? undefined);
|
|
158
|
+
return (0, Utils_1.objectMap)(schema, (schemaValue, key) => decoder.getParam(key).catch(e => {
|
|
159
|
+
if ((0, SchemaVerifier_1.isOptionalField)(schemaValue))
|
|
160
|
+
return undefined;
|
|
161
|
+
throw e;
|
|
162
|
+
}).then(value => {
|
|
163
|
+
logger.debug(url + ": Response frame read (" + (Date.now() - startTime) + "ms) (streaming resp): ", { [key]: value });
|
|
164
|
+
const result = (0, SchemaVerifier_1.verifyField)(schemaValue, value);
|
|
165
|
+
if (result === undefined) {
|
|
166
|
+
return Promise.reject(new Error("Invalid field value"));
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
return result;
|
|
170
|
+
}
|
|
171
|
+
}));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.streamingFetchPromise = streamingFetchPromise;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,83 @@
|
|
|
1
1
|
export * from "@atomiqlabs/base";
|
|
2
|
-
export
|
|
3
|
-
export * from "./
|
|
4
|
-
export * from "./
|
|
5
|
-
export * from "./
|
|
2
|
+
export { MempoolApi } from "./bitcoin/mempool/MempoolApi";
|
|
3
|
+
export * from "./bitcoin/mempool/MempoolBitcoinRpc";
|
|
4
|
+
export * from "./bitcoin/wallet/BitcoinWallet";
|
|
5
|
+
export * from "./bitcoin/wallet/IBitcoinWallet";
|
|
6
|
+
export * from "./bitcoin/wallet/MinimalBitcoinWalletInterface";
|
|
7
|
+
export * from "./bitcoin/wallet/MinimalLightningNetworkWalletInterface";
|
|
8
|
+
export * from "./bitcoin/wallet/SingleAddressBitcoinWallet";
|
|
9
|
+
export * from "./enums/FeeType";
|
|
10
|
+
export * from "./enums/SwapAmountType";
|
|
11
|
+
export * from "./enums/SwapDirection";
|
|
12
|
+
export * from "./enums/SwapType";
|
|
13
|
+
export * from "./errors/IntermediaryError";
|
|
14
|
+
export * from "./errors/PaymentAuthError";
|
|
15
|
+
export * from "./errors/RequestError";
|
|
16
|
+
export * from "./errors/UserError";
|
|
17
|
+
export { Intermediary } from "./intermediaries/Intermediary";
|
|
18
|
+
export { IntermediaryDiscovery } from "./intermediaries/IntermediaryDiscovery";
|
|
19
|
+
export * from "./prices/abstract/ISwapPrice";
|
|
20
|
+
export { RedundantSwapPrice } from "./prices/RedundantSwapPrice";
|
|
21
|
+
export * from "./prices/SingleSwapPrice";
|
|
22
|
+
export * from "./prices/SwapPriceWithChain";
|
|
23
|
+
export { BinancePriceProvider } from "./prices/providers/BinancePriceProvider";
|
|
24
|
+
export { CoinGeckoPriceProvider } from "./prices/providers/CoinGeckoPriceProvider";
|
|
25
|
+
export { CoinPaprikaPriceProvider } from "./prices/providers/CoinPaprikaPriceProvider";
|
|
26
|
+
export { KrakenPriceProvider } from "./prices/providers/KrakenPriceProvider";
|
|
27
|
+
export { OKXPriceProvider } from "./prices/providers/OKXPriceProvider";
|
|
28
|
+
export { CustomPriceProvider } from "./prices/providers/CustomPriceProvider";
|
|
29
|
+
export * from "./storage/IUnifiedStorage";
|
|
30
|
+
export * from "./storage/UnifiedSwapStorage";
|
|
31
|
+
export { IndexedDBUnifiedStorage } from "./storage-browser/IndexedDBUnifiedStorage";
|
|
32
|
+
export * from "./storage-browser/LocalStorageManager";
|
|
33
|
+
export { Swapper } from "./swapper/Swapper";
|
|
34
|
+
export * from "./swapper/SwapperFactory";
|
|
35
|
+
export * from "./swapper/SwapperUtils";
|
|
36
|
+
export * from "./swapper/SwapperWithChain";
|
|
37
|
+
export * from "./swapper/SwapperWithSigner";
|
|
38
|
+
export { FromBTCLNSwap, FromBTCLNSwapState } from "./swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap";
|
|
39
|
+
export { FromBTCLNWrapper } from "./swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper";
|
|
40
|
+
export { FromBTCLNAutoSwap, FromBTCLNAutoSwapState } from "./swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap";
|
|
41
|
+
export { FromBTCLNAutoWrapper } from "./swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper";
|
|
42
|
+
export { FromBTCSwap, FromBTCSwapState } from "./swaps/escrow_swaps/frombtc/onchain/FromBTCSwap";
|
|
43
|
+
export { FromBTCWrapper } from "./swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper";
|
|
44
|
+
export { IFromBTCLNWrapper } from "./swaps/escrow_swaps/frombtc/IFromBTCLNWrapper";
|
|
45
|
+
export { IFromBTCSelfInitSwap } from "./swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap";
|
|
46
|
+
export { IFromBTCWrapper } from "./swaps/escrow_swaps/frombtc/IFromBTCWrapper";
|
|
47
|
+
export { ToBTCLNSwap } from "./swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap";
|
|
48
|
+
export { ToBTCLNWrapper } from "./swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper";
|
|
49
|
+
export { ToBTCSwap } from "./swaps/escrow_swaps/tobtc/onchain/ToBTCSwap";
|
|
50
|
+
export { ToBTCWrapper } from "./swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper";
|
|
51
|
+
export { IToBTCSwap, ToBTCSwapState } from "./swaps/escrow_swaps/tobtc/IToBTCSwap";
|
|
52
|
+
export { IToBTCWrapper } from "./swaps/escrow_swaps/tobtc/IToBTCWrapper";
|
|
53
|
+
export { IEscrowSelfInitSwap } from "./swaps/escrow_swaps/IEscrowSelfInitSwap";
|
|
54
|
+
export { IEscrowSwap } from "./swaps/escrow_swaps/IEscrowSwap";
|
|
55
|
+
export { IEscrowSwapWrapper } from "./swaps/escrow_swaps/IEscrowSwapWrapper";
|
|
56
|
+
export { SpvFromBTCSwap, SpvFromBTCSwapState } from "./swaps/spv_swaps/SpvFromBTCSwap";
|
|
57
|
+
export { SpvFromBTCWrapper } from "./swaps/spv_swaps/SpvFromBTCWrapper";
|
|
58
|
+
export { LnForGasSwap, LnForGasSwapState } from "./swaps/trusted/ln/LnForGasSwap";
|
|
59
|
+
export { LnForGasWrapper } from "./swaps/trusted/ln/LnForGasWrapper";
|
|
60
|
+
export { OnchainForGasSwap, OnchainForGasSwapState } from "./swaps/trusted/onchain/OnchainForGasSwap";
|
|
61
|
+
export { OnchainForGasWrapper } from "./swaps/trusted/onchain/OnchainForGasWrapper";
|
|
62
|
+
export * from "./swaps/IAddressSwap";
|
|
63
|
+
export * from "./swaps/IBTCWalletSwap";
|
|
64
|
+
export * from "./swaps/IClaimableSwap";
|
|
65
|
+
export * from "./swaps/IRefundableSwap";
|
|
66
|
+
export * from "./swaps/IAddressSwap";
|
|
67
|
+
export { ISwap } from "./swaps/ISwap";
|
|
68
|
+
export * from "./swaps/ISwapWithGasDrop";
|
|
69
|
+
export { ISwapWrapper } from "./swaps/ISwapWrapper";
|
|
70
|
+
export * from "./types/fees/Fee";
|
|
71
|
+
export * from "./types/fees/FeeBreakdown";
|
|
72
|
+
export * from "./types/fees/PercentagePPM";
|
|
73
|
+
export * from "./types/lnurl/LNURLPay";
|
|
74
|
+
export * from "./types/lnurl/LNURLWithdraw";
|
|
75
|
+
export * from "./types/AmountData";
|
|
76
|
+
export * from "./types/CustomPriceFunction";
|
|
77
|
+
export * from "./types/PriceInfoType";
|
|
78
|
+
export * from "./types/SwapExecutionAction";
|
|
79
|
+
export * from "./types/SwapWithSigner";
|
|
80
|
+
export * from "./types/Token";
|
|
81
|
+
export * from "./types/TokenAmount";
|
|
82
|
+
export * from "./utils/TokenUtils";
|
|
83
|
+
export * from "./utils/SwapUtils";
|