@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,70 @@
|
|
|
1
|
+
import { ISwapPrice } from "./abstract/ISwapPrice";
|
|
2
|
+
import { ChainIds, MultiChain } from "../swapper/Swapper";
|
|
3
|
+
import { Token } from "../types/Token";
|
|
4
|
+
import { PriceInfoType } from "../types/PriceInfoType";
|
|
5
|
+
/**
|
|
6
|
+
* Chain-specific wrapper for swap pricing
|
|
7
|
+
* @category Pricing and LPs
|
|
8
|
+
*/
|
|
9
|
+
export declare class SwapPriceWithChain<T extends MultiChain, ChainIdentifier extends ChainIds<T>> {
|
|
10
|
+
swapPrice: ISwapPrice<T>;
|
|
11
|
+
chainIdentifier: ChainIdentifier;
|
|
12
|
+
maxAllowedFeeDifferencePPM: bigint;
|
|
13
|
+
constructor(swapPrice: ISwapPrice<T>, chainIdentifier: ChainIdentifier);
|
|
14
|
+
/**
|
|
15
|
+
* Checks whether the swap amounts are valid given the current market rate for a given pair
|
|
16
|
+
*
|
|
17
|
+
* @param amountSats Amount of sats (BTC) to be received from the swap
|
|
18
|
+
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
|
|
19
|
+
* @param feePPM PPM fee rate as reported by the intermediary
|
|
20
|
+
* @param paidToken Amount of token to be paid to the swap
|
|
21
|
+
* @param token
|
|
22
|
+
* @param abortSignal
|
|
23
|
+
* @param preFetchedPrice Already pre-fetched price
|
|
24
|
+
*/
|
|
25
|
+
isValidAmountSend(amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<PriceInfoType>;
|
|
26
|
+
/**
|
|
27
|
+
* Checks whether the swap amounts are valid given the current market rate for a given pair
|
|
28
|
+
*
|
|
29
|
+
* @param amountSats Amount of sats (BTC) to be paid to the swap
|
|
30
|
+
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
|
|
31
|
+
* @param feePPM PPM fee rate as reported by the intermediary
|
|
32
|
+
* @param receiveToken Amount of token to be received from the swap
|
|
33
|
+
* @param token
|
|
34
|
+
* @param abortSignal
|
|
35
|
+
* @param preFetchedPrice Already pre-fetched price
|
|
36
|
+
*/
|
|
37
|
+
isValidAmountReceive(amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<PriceInfoType>;
|
|
38
|
+
preFetchPrice(token: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
39
|
+
preFetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
|
|
40
|
+
/**
|
|
41
|
+
* Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
|
|
42
|
+
*
|
|
43
|
+
* @param fromAmount Amount of satoshis
|
|
44
|
+
* @param toToken Token
|
|
45
|
+
* @param abortSignal
|
|
46
|
+
* @param preFetchedPrice
|
|
47
|
+
* @throws {Error} when token is not found
|
|
48
|
+
*/
|
|
49
|
+
getFromBtcSwapAmount(fromAmount: bigint, toToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<bigint>;
|
|
50
|
+
/**
|
|
51
|
+
* Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
|
|
52
|
+
*
|
|
53
|
+
* @param fromAmount Amount of the token
|
|
54
|
+
* @param fromToken Token
|
|
55
|
+
* @param abortSignal
|
|
56
|
+
* @param preFetchedPrice Pre-fetched swap price if available
|
|
57
|
+
* @throws {Error} when token is not found
|
|
58
|
+
*/
|
|
59
|
+
getToBtcSwapAmount(fromAmount: bigint, fromToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<bigint>;
|
|
60
|
+
/**
|
|
61
|
+
* Returns whether the token should be ignored and pricing for it not calculated
|
|
62
|
+
*
|
|
63
|
+
* @param tokenAddress
|
|
64
|
+
* @throws {Error} if token is not found
|
|
65
|
+
*/
|
|
66
|
+
shouldIgnore(tokenAddress: string): boolean;
|
|
67
|
+
getBtcUsdValue(btcSats: bigint, abortSignal?: AbortSignal, preFetchedPrice?: number): Promise<number>;
|
|
68
|
+
getTokenUsdValue(tokenAmount: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: number): Promise<number>;
|
|
69
|
+
getUsdValue(amount: bigint, token: Token<ChainIdentifier>, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
|
|
70
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwapPriceWithChain = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Chain-specific wrapper for swap pricing
|
|
6
|
+
* @category Pricing and LPs
|
|
7
|
+
*/
|
|
8
|
+
class SwapPriceWithChain {
|
|
9
|
+
constructor(swapPrice, chainIdentifier) {
|
|
10
|
+
this.swapPrice = swapPrice;
|
|
11
|
+
this.chainIdentifier = chainIdentifier;
|
|
12
|
+
this.maxAllowedFeeDifferencePPM = swapPrice.maxAllowedFeeDifferencePPM;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Checks whether the swap amounts are valid given the current market rate for a given pair
|
|
16
|
+
*
|
|
17
|
+
* @param amountSats Amount of sats (BTC) to be received from the swap
|
|
18
|
+
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
|
|
19
|
+
* @param feePPM PPM fee rate as reported by the intermediary
|
|
20
|
+
* @param paidToken Amount of token to be paid to the swap
|
|
21
|
+
* @param token
|
|
22
|
+
* @param abortSignal
|
|
23
|
+
* @param preFetchedPrice Already pre-fetched price
|
|
24
|
+
*/
|
|
25
|
+
async isValidAmountSend(amountSats, satsBaseFee, feePPM, paidToken, token, abortSignal, preFetchedPrice) {
|
|
26
|
+
return this.swapPrice.isValidAmountSend(this.chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken, token, abortSignal, preFetchedPrice);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Checks whether the swap amounts are valid given the current market rate for a given pair
|
|
30
|
+
*
|
|
31
|
+
* @param amountSats Amount of sats (BTC) to be paid to the swap
|
|
32
|
+
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
|
|
33
|
+
* @param feePPM PPM fee rate as reported by the intermediary
|
|
34
|
+
* @param receiveToken Amount of token to be received from the swap
|
|
35
|
+
* @param token
|
|
36
|
+
* @param abortSignal
|
|
37
|
+
* @param preFetchedPrice Already pre-fetched price
|
|
38
|
+
*/
|
|
39
|
+
async isValidAmountReceive(amountSats, satsBaseFee, feePPM, receiveToken, token, abortSignal, preFetchedPrice) {
|
|
40
|
+
return this.swapPrice.isValidAmountReceive(this.chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken, token, abortSignal, preFetchedPrice);
|
|
41
|
+
}
|
|
42
|
+
preFetchPrice(token, abortSignal) {
|
|
43
|
+
return this.swapPrice.preFetchPrice(this.chainIdentifier, token, abortSignal);
|
|
44
|
+
}
|
|
45
|
+
preFetchUsdPrice(abortSignal) {
|
|
46
|
+
return this.swapPrice.preFetchUsdPrice(abortSignal);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
|
|
50
|
+
*
|
|
51
|
+
* @param fromAmount Amount of satoshis
|
|
52
|
+
* @param toToken Token
|
|
53
|
+
* @param abortSignal
|
|
54
|
+
* @param preFetchedPrice
|
|
55
|
+
* @throws {Error} when token is not found
|
|
56
|
+
*/
|
|
57
|
+
async getFromBtcSwapAmount(fromAmount, toToken, abortSignal, preFetchedPrice) {
|
|
58
|
+
return this.swapPrice.getFromBtcSwapAmount(this.chainIdentifier, fromAmount, toToken, abortSignal, preFetchedPrice);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
|
|
62
|
+
*
|
|
63
|
+
* @param fromAmount Amount of the token
|
|
64
|
+
* @param fromToken Token
|
|
65
|
+
* @param abortSignal
|
|
66
|
+
* @param preFetchedPrice Pre-fetched swap price if available
|
|
67
|
+
* @throws {Error} when token is not found
|
|
68
|
+
*/
|
|
69
|
+
async getToBtcSwapAmount(fromAmount, fromToken, abortSignal, preFetchedPrice) {
|
|
70
|
+
return this.swapPrice.getToBtcSwapAmount(this.chainIdentifier, fromAmount, fromToken, abortSignal, preFetchedPrice);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Returns whether the token should be ignored and pricing for it not calculated
|
|
74
|
+
*
|
|
75
|
+
* @param tokenAddress
|
|
76
|
+
* @throws {Error} if token is not found
|
|
77
|
+
*/
|
|
78
|
+
shouldIgnore(tokenAddress) {
|
|
79
|
+
return this.swapPrice.shouldIgnore(this.chainIdentifier, tokenAddress);
|
|
80
|
+
}
|
|
81
|
+
async getBtcUsdValue(btcSats, abortSignal, preFetchedPrice) {
|
|
82
|
+
return this.swapPrice.getBtcUsdValue(btcSats, abortSignal, preFetchedPrice);
|
|
83
|
+
}
|
|
84
|
+
async getTokenUsdValue(tokenAmount, token, abortSignal, preFetchedPrice) {
|
|
85
|
+
return this.swapPrice.getTokenUsdValue(this.chainIdentifier, tokenAmount, token, abortSignal, preFetchedPrice);
|
|
86
|
+
}
|
|
87
|
+
getUsdValue(amount, token, abortSignal, preFetchedUsdPrice) {
|
|
88
|
+
return this.swapPrice.getUsdValue(amount, token, abortSignal, preFetchedUsdPrice);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.SwapPriceWithChain = SwapPriceWithChain;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ISwapPrice } from "./ISwapPrice";
|
|
2
|
+
import { ChainIds, MultiChain } from "../../swapper/Swapper";
|
|
3
|
+
export declare abstract class ICachedSwapPrice<T extends MultiChain> extends ISwapPrice<T> {
|
|
4
|
+
cache: {
|
|
5
|
+
[chainIdentifier in keyof T]?: {
|
|
6
|
+
[tokenAddress: string]: {
|
|
7
|
+
price: Promise<bigint>;
|
|
8
|
+
expiry: number;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
usdCache?: {
|
|
13
|
+
price: Promise<number>;
|
|
14
|
+
expiry: number;
|
|
15
|
+
};
|
|
16
|
+
cacheTimeout: number;
|
|
17
|
+
protected constructor(maxAllowedFeeDiffPPM: bigint, cacheTimeout?: number);
|
|
18
|
+
protected abstract fetchPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
19
|
+
protected abstract fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
|
|
20
|
+
protected getPrice<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
21
|
+
/**
|
|
22
|
+
* Returns BTC price in USD (sats/USD)
|
|
23
|
+
*
|
|
24
|
+
* @param abortSignal
|
|
25
|
+
* @throws {Error} if token is not found
|
|
26
|
+
*/
|
|
27
|
+
protected getUsdPrice(abortSignal?: AbortSignal): Promise<number>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ICachedSwapPrice = void 0;
|
|
4
|
+
const ISwapPrice_1 = require("./ISwapPrice");
|
|
5
|
+
const DEFAULT_CACHE_DURATION = 10000;
|
|
6
|
+
class ICachedSwapPrice extends ISwapPrice_1.ISwapPrice {
|
|
7
|
+
constructor(maxAllowedFeeDiffPPM, cacheTimeout) {
|
|
8
|
+
super(maxAllowedFeeDiffPPM);
|
|
9
|
+
this.cache = {};
|
|
10
|
+
this.cacheTimeout = cacheTimeout || DEFAULT_CACHE_DURATION;
|
|
11
|
+
}
|
|
12
|
+
getPrice(chainIdentifier, tokenAddress, abortSignal) {
|
|
13
|
+
const token = tokenAddress.toString();
|
|
14
|
+
const chainCache = this.cache[chainIdentifier];
|
|
15
|
+
if (chainCache != null) {
|
|
16
|
+
const cachedValue = chainCache[token];
|
|
17
|
+
if (cachedValue != null && cachedValue.expiry > Date.now()) {
|
|
18
|
+
//Cache still fresh
|
|
19
|
+
return cachedValue.price.catch(e => this.fetchPrice(chainIdentifier, token, abortSignal));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//Refresh cache
|
|
23
|
+
const thisFetch = this.fetchPrice(chainIdentifier, token);
|
|
24
|
+
this.cache[chainIdentifier] ??= {};
|
|
25
|
+
this.cache[chainIdentifier][token] = {
|
|
26
|
+
price: thisFetch,
|
|
27
|
+
expiry: Date.now() + this.cacheTimeout
|
|
28
|
+
};
|
|
29
|
+
thisFetch.catch(e => {
|
|
30
|
+
if (this.cache?.[chainIdentifier]?.[token].price === thisFetch)
|
|
31
|
+
delete this.cache[token];
|
|
32
|
+
throw e;
|
|
33
|
+
});
|
|
34
|
+
return thisFetch;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns BTC price in USD (sats/USD)
|
|
38
|
+
*
|
|
39
|
+
* @param abortSignal
|
|
40
|
+
* @throws {Error} if token is not found
|
|
41
|
+
*/
|
|
42
|
+
getUsdPrice(abortSignal) {
|
|
43
|
+
if (this.usdCache != null && this.usdCache.expiry > Date.now()) {
|
|
44
|
+
//Cache still fresh
|
|
45
|
+
return this.usdCache.price.catch(e => this.fetchUsdPrice(abortSignal));
|
|
46
|
+
}
|
|
47
|
+
//Refresh cache
|
|
48
|
+
const thisFetch = this.fetchUsdPrice();
|
|
49
|
+
this.usdCache = {
|
|
50
|
+
price: thisFetch,
|
|
51
|
+
expiry: Date.now() + this.cacheTimeout
|
|
52
|
+
};
|
|
53
|
+
thisFetch.catch(e => {
|
|
54
|
+
if (this.usdCache != null &&
|
|
55
|
+
this.usdCache.price === thisFetch)
|
|
56
|
+
delete this.usdCache;
|
|
57
|
+
throw e;
|
|
58
|
+
});
|
|
59
|
+
return thisFetch;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.ICachedSwapPrice = ICachedSwapPrice;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { ChainIds, MultiChain } from "../../swapper/Swapper";
|
|
2
|
+
/**
|
|
3
|
+
* Coin type definition for price providers
|
|
4
|
+
* @category Pricing and LPs
|
|
5
|
+
*/
|
|
6
|
+
export type CoinType = {
|
|
7
|
+
coinId: string;
|
|
8
|
+
decimals: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Constructor coin types for price providers
|
|
12
|
+
* @category Pricing and LPs
|
|
13
|
+
*/
|
|
14
|
+
export type CtorCoinTypes<T extends MultiChain> = {
|
|
15
|
+
coinId?: string;
|
|
16
|
+
chains: {
|
|
17
|
+
[chainId in keyof T]?: {
|
|
18
|
+
address: string;
|
|
19
|
+
decimals: number;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
}[];
|
|
23
|
+
/**
|
|
24
|
+
* Coin types mapping by chain
|
|
25
|
+
* @category Pricing and LPs
|
|
26
|
+
*/
|
|
27
|
+
export type CoinTypes<T extends MultiChain> = {
|
|
28
|
+
[chainId in keyof T]?: {
|
|
29
|
+
[address: string]: CoinType;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Abstract base class for price provider implementations
|
|
34
|
+
* @category Pricing and LPs
|
|
35
|
+
*/
|
|
36
|
+
export declare abstract class IPriceProvider<T extends MultiChain> {
|
|
37
|
+
coinsMap: CoinTypes<T>;
|
|
38
|
+
protected constructor(coins: CtorCoinTypes<T>);
|
|
39
|
+
/**
|
|
40
|
+
* Fetches the price for a given token against BTC
|
|
41
|
+
*
|
|
42
|
+
* @param token
|
|
43
|
+
* @param abortSignal
|
|
44
|
+
* @protected
|
|
45
|
+
* @returns Price per token in uSats (micro sats)
|
|
46
|
+
*/
|
|
47
|
+
protected abstract fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint>;
|
|
48
|
+
/**
|
|
49
|
+
* Fetches the USD price of BTC
|
|
50
|
+
*
|
|
51
|
+
* @param abortSignal
|
|
52
|
+
* @protected
|
|
53
|
+
*/
|
|
54
|
+
protected abstract fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
|
|
55
|
+
/**
|
|
56
|
+
* Returns coin price in uSat (microSat)
|
|
57
|
+
*
|
|
58
|
+
* @param chainIdentifier
|
|
59
|
+
* @param token
|
|
60
|
+
* @param abortSignal
|
|
61
|
+
* @throws {Error} if token is not found
|
|
62
|
+
*/
|
|
63
|
+
getPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
64
|
+
/**
|
|
65
|
+
* Returns coin price in uSat (microSat)
|
|
66
|
+
*
|
|
67
|
+
* @param abortSignal
|
|
68
|
+
* @throws {Error} if token is not found
|
|
69
|
+
*/
|
|
70
|
+
getUsdPrice(abortSignal?: AbortSignal): Promise<number>;
|
|
71
|
+
/**
|
|
72
|
+
* Returns the decimal places of the specified token, or -1 if token should be ignored, returns null if
|
|
73
|
+
* token is not found
|
|
74
|
+
*
|
|
75
|
+
* @param chainIdentifier
|
|
76
|
+
* @param token
|
|
77
|
+
* @protected
|
|
78
|
+
* @throws {Error} If token is not found
|
|
79
|
+
*/
|
|
80
|
+
getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number;
|
|
81
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IPriceProvider = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Abstract base class for price provider implementations
|
|
6
|
+
* @category Pricing and LPs
|
|
7
|
+
*/
|
|
8
|
+
class IPriceProvider {
|
|
9
|
+
constructor(coins) {
|
|
10
|
+
this.coinsMap = {};
|
|
11
|
+
for (let coinData of coins) {
|
|
12
|
+
if (coinData.coinId == null)
|
|
13
|
+
continue;
|
|
14
|
+
for (let chainId in coinData.chains) {
|
|
15
|
+
const { address, decimals } = coinData.chains[chainId];
|
|
16
|
+
this.coinsMap[chainId] ??= {};
|
|
17
|
+
this.coinsMap[chainId][address.toString()] = {
|
|
18
|
+
coinId: coinData.coinId,
|
|
19
|
+
decimals
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Returns coin price in uSat (microSat)
|
|
26
|
+
*
|
|
27
|
+
* @param chainIdentifier
|
|
28
|
+
* @param token
|
|
29
|
+
* @param abortSignal
|
|
30
|
+
* @throws {Error} if token is not found
|
|
31
|
+
*/
|
|
32
|
+
getPrice(chainIdentifier, token, abortSignal) {
|
|
33
|
+
let tokenAddress = token.toString();
|
|
34
|
+
const chainTokens = this.coinsMap[chainIdentifier];
|
|
35
|
+
if (chainTokens == null)
|
|
36
|
+
throw new Error("Chain not found");
|
|
37
|
+
const coin = chainTokens[tokenAddress];
|
|
38
|
+
if (coin == null)
|
|
39
|
+
throw new Error("Token not found");
|
|
40
|
+
if (coin.coinId.startsWith("$fixed-")) {
|
|
41
|
+
const amt = parseFloat(coin.coinId.substring(7));
|
|
42
|
+
return Promise.resolve(BigInt(Math.floor(amt * 1000000).toString(10)));
|
|
43
|
+
}
|
|
44
|
+
return this.fetchPrice(coin, abortSignal);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Returns coin price in uSat (microSat)
|
|
48
|
+
*
|
|
49
|
+
* @param abortSignal
|
|
50
|
+
* @throws {Error} if token is not found
|
|
51
|
+
*/
|
|
52
|
+
getUsdPrice(abortSignal) {
|
|
53
|
+
return this.fetchUsdPrice(abortSignal);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Returns the decimal places of the specified token, or -1 if token should be ignored, returns null if
|
|
57
|
+
* token is not found
|
|
58
|
+
*
|
|
59
|
+
* @param chainIdentifier
|
|
60
|
+
* @param token
|
|
61
|
+
* @protected
|
|
62
|
+
* @throws {Error} If token is not found
|
|
63
|
+
*/
|
|
64
|
+
getDecimals(chainIdentifier, token) {
|
|
65
|
+
const chainTokens = this.coinsMap[chainIdentifier];
|
|
66
|
+
if (chainTokens == null)
|
|
67
|
+
throw new Error("Chain not found");
|
|
68
|
+
const coin = chainTokens[token.toString()];
|
|
69
|
+
if (coin == null)
|
|
70
|
+
throw new Error("Token not found");
|
|
71
|
+
return coin.coinId === "$ignore" ? -1 : coin.decimals;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.IPriceProvider = IPriceProvider;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { ChainIds, MultiChain } from "../../swapper/Swapper";
|
|
2
|
+
import { Token } from "../../types/Token";
|
|
3
|
+
import { PriceInfoType } from "../../types/PriceInfoType";
|
|
4
|
+
/**
|
|
5
|
+
* Abstract base class for swap pricing implementations
|
|
6
|
+
* @category Pricing and LPs
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class ISwapPrice<T extends MultiChain = MultiChain> {
|
|
9
|
+
maxAllowedFeeDifferencePPM: bigint;
|
|
10
|
+
protected constructor(maxAllowedFeeDifferencePPM: bigint);
|
|
11
|
+
/**
|
|
12
|
+
* Gets the decimal places for a given token, returns -1 if token should be ignored & null if token is not found
|
|
13
|
+
* @param chainIdentifier
|
|
14
|
+
* @param token
|
|
15
|
+
* @protected
|
|
16
|
+
*/
|
|
17
|
+
protected abstract getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number | null;
|
|
18
|
+
/**
|
|
19
|
+
* Returns the price of the token in BTC uSats (microSats)
|
|
20
|
+
*
|
|
21
|
+
* @param chainIdentifier
|
|
22
|
+
* @param token
|
|
23
|
+
* @param abortSignal
|
|
24
|
+
* @protected
|
|
25
|
+
*/
|
|
26
|
+
protected abstract getPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
27
|
+
/**
|
|
28
|
+
* Returns the price of bitcoin in USD, (sats/USD)
|
|
29
|
+
*
|
|
30
|
+
* @param abortSignal
|
|
31
|
+
* @protected
|
|
32
|
+
*/
|
|
33
|
+
protected abstract getUsdPrice(abortSignal?: AbortSignal): Promise<number>;
|
|
34
|
+
protected getDecimalsThrowing<C extends ChainIds<T>>(chainIdentifier: C, token: string): number;
|
|
35
|
+
/**
|
|
36
|
+
* Recomputes pricing info without fetching the current price
|
|
37
|
+
*
|
|
38
|
+
* @param chainIdentifier
|
|
39
|
+
* @param amountSats
|
|
40
|
+
* @param satsBaseFee
|
|
41
|
+
* @param feePPM
|
|
42
|
+
* @param paidToken
|
|
43
|
+
* @param token
|
|
44
|
+
*/
|
|
45
|
+
recomputePriceInfoSend<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint, token: string): PriceInfoType;
|
|
46
|
+
/**
|
|
47
|
+
* Checks whether the swap amounts are valid given the current market rate for a given pair
|
|
48
|
+
*
|
|
49
|
+
* @param chainIdentifier
|
|
50
|
+
* @param amountSats Amount of sats (BTC) to be received from the swap
|
|
51
|
+
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
|
|
52
|
+
* @param feePPM PPM fee rate as reported by the intermediary
|
|
53
|
+
* @param paidToken Amount of token to be paid to the swap
|
|
54
|
+
* @param token
|
|
55
|
+
* @param abortSignal
|
|
56
|
+
* @param preFetchedPrice Already pre-fetched price
|
|
57
|
+
*/
|
|
58
|
+
isValidAmountSend<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint | null): Promise<PriceInfoType>;
|
|
59
|
+
/**
|
|
60
|
+
* Recomputes pricing info without fetching the current price
|
|
61
|
+
*
|
|
62
|
+
* @param chainIdentifier
|
|
63
|
+
* @param amountSats
|
|
64
|
+
* @param satsBaseFee
|
|
65
|
+
* @param feePPM
|
|
66
|
+
* @param receiveToken
|
|
67
|
+
* @param token
|
|
68
|
+
*/
|
|
69
|
+
recomputePriceInfoReceive<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, token: string): PriceInfoType;
|
|
70
|
+
/**
|
|
71
|
+
* Checks whether the swap amounts are valid given the current market rate for a given pair
|
|
72
|
+
*
|
|
73
|
+
* @param chainIdentifier
|
|
74
|
+
* @param amountSats Amount of sats (BTC) to be paid to the swap
|
|
75
|
+
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
|
|
76
|
+
* @param feePPM PPM fee rate as reported by the intermediary
|
|
77
|
+
* @param receiveToken Amount of token to be received from the swap
|
|
78
|
+
* @param token
|
|
79
|
+
* @param abortSignal
|
|
80
|
+
* @param preFetchedPrice Already pre-fetched price
|
|
81
|
+
*/
|
|
82
|
+
isValidAmountReceive<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint | null): Promise<PriceInfoType>;
|
|
83
|
+
preFetchPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
84
|
+
preFetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
|
|
85
|
+
/**
|
|
86
|
+
* Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
|
|
87
|
+
*
|
|
88
|
+
* @param chainIdentifier
|
|
89
|
+
* @param fromAmount Amount of satoshis
|
|
90
|
+
* @param toToken Token
|
|
91
|
+
* @param abortSignal
|
|
92
|
+
* @param preFetchedPrice
|
|
93
|
+
* @throws {Error} when token is not found
|
|
94
|
+
*/
|
|
95
|
+
getFromBtcSwapAmount<C extends ChainIds<T>>(chainIdentifier: C, fromAmount: bigint, toToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint | null): Promise<bigint>;
|
|
96
|
+
/**
|
|
97
|
+
* Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
|
|
98
|
+
*
|
|
99
|
+
* @param chainIdentifier
|
|
100
|
+
* @param fromAmount Amount of the token
|
|
101
|
+
* @param fromToken Token
|
|
102
|
+
* @param abortSignal
|
|
103
|
+
* @param preFetchedPrice Pre-fetched swap price if available
|
|
104
|
+
* @throws {Error} when token is not found
|
|
105
|
+
*/
|
|
106
|
+
getToBtcSwapAmount<C extends ChainIds<T>>(chainIdentifier: C, fromAmount: bigint, fromToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<bigint>;
|
|
107
|
+
/**
|
|
108
|
+
* Returns whether the token should be ignored and pricing for it not calculated
|
|
109
|
+
* @param chainIdentifier
|
|
110
|
+
* @param tokenAddress
|
|
111
|
+
* @throws {Error} if token is not found
|
|
112
|
+
*/
|
|
113
|
+
shouldIgnore<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string): boolean;
|
|
114
|
+
getBtcUsdValue(btcSats: bigint, abortSignal?: AbortSignal, preFetchedPrice?: number): Promise<number>;
|
|
115
|
+
getTokenUsdValue<C extends ChainIds<T>>(chainId: C, tokenAmount: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: number): Promise<number>;
|
|
116
|
+
getUsdValue<C extends ChainIds<T>>(amount: bigint, token: Token<C>, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
|
|
117
|
+
}
|