@atomiqlabs/sdk 7.0.11 → 8.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -29
- package/dist/SmartChainAssets.d.ts +11 -3
- package/dist/SmartChainAssets.js +7 -3
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +68 -0
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +2 -0
- package/dist/bitcoin/LightningNetworkApi.d.ts +12 -0
- package/dist/bitcoin/LightningNetworkApi.js +2 -0
- package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -0
- package/dist/bitcoin/coinselect2/accumulative.js +52 -0
- package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -0
- package/dist/bitcoin/coinselect2/blackjack.js +38 -0
- package/dist/bitcoin/coinselect2/index.d.ts +19 -0
- package/dist/bitcoin/coinselect2/index.js +69 -0
- package/dist/bitcoin/coinselect2/utils.d.ts +71 -0
- package/dist/bitcoin/coinselect2/utils.js +123 -0
- package/dist/bitcoin/mempool/MempoolApi.d.ts +350 -0
- package/dist/bitcoin/mempool/MempoolApi.js +311 -0
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +44 -0
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +48 -0
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +119 -0
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +361 -0
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +22 -0
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +105 -0
- package/dist/bitcoin/wallet/BitcoinWallet.d.ts +93 -0
- package/dist/bitcoin/wallet/BitcoinWallet.js +273 -0
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +28 -0
- package/dist/bitcoin/wallet/IBitcoinWallet.js +20 -0
- package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.d.ts +21 -0
- package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.js +2 -0
- package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.d.ts +7 -0
- package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.js +2 -0
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +40 -0
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +86 -0
- package/dist/enums/FeeType.d.ts +8 -0
- package/dist/enums/FeeType.js +12 -0
- package/dist/enums/SwapAmountType.d.ts +8 -0
- package/dist/enums/SwapAmountType.js +12 -0
- package/dist/enums/SwapDirection.d.ts +8 -0
- package/dist/enums/SwapDirection.js +12 -0
- package/dist/enums/SwapType.d.ts +14 -0
- package/dist/enums/SwapType.js +18 -0
- package/dist/errors/IntermediaryError.d.ts +9 -0
- package/dist/errors/IntermediaryError.js +26 -0
- package/dist/errors/PaymentAuthError.d.ts +11 -0
- package/dist/errors/PaymentAuthError.js +23 -0
- package/dist/errors/RequestError.d.ts +18 -0
- package/dist/errors/RequestError.js +46 -0
- package/dist/errors/UserError.d.ts +7 -0
- package/dist/errors/UserError.js +15 -0
- package/dist/events/UnifiedSwapEventListener.d.ts +23 -0
- package/dist/events/UnifiedSwapEventListener.js +130 -0
- package/dist/http/HttpUtils.d.ts +27 -0
- package/dist/http/HttpUtils.js +91 -0
- package/dist/http/paramcoders/IParamReader.d.ts +8 -0
- package/dist/http/paramcoders/IParamReader.js +2 -0
- package/dist/http/paramcoders/ParamDecoder.d.ts +44 -0
- package/dist/http/paramcoders/ParamDecoder.js +132 -0
- package/dist/http/paramcoders/ParamEncoder.d.ts +20 -0
- package/dist/http/paramcoders/ParamEncoder.js +31 -0
- package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -0
- package/dist/http/paramcoders/SchemaVerifier.js +145 -0
- package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -0
- package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -0
- package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -0
- package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -0
- package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -0
- package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -0
- package/dist/index.d.ts +82 -4
- package/dist/index.js +128 -4
- package/dist/intermediaries/Intermediary.d.ts +111 -0
- package/dist/intermediaries/Intermediary.js +115 -0
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +166 -0
- package/dist/intermediaries/IntermediaryDiscovery.js +390 -0
- package/dist/intermediaries/apis/IntermediaryAPI.d.ts +436 -0
- package/dist/intermediaries/apis/IntermediaryAPI.js +600 -0
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +154 -0
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +136 -0
- package/dist/lnurl/LNURL.d.ts +102 -0
- package/dist/lnurl/LNURL.js +321 -0
- package/dist/prices/RedundantSwapPrice.d.ts +89 -0
- package/dist/prices/RedundantSwapPrice.js +202 -0
- package/dist/prices/SingleSwapPrice.d.ts +31 -0
- package/dist/prices/SingleSwapPrice.js +41 -0
- package/dist/prices/SwapPriceWithChain.d.ts +70 -0
- package/dist/prices/SwapPriceWithChain.js +91 -0
- package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -0
- package/dist/prices/abstract/ICachedSwapPrice.js +62 -0
- package/dist/prices/abstract/IPriceProvider.d.ts +81 -0
- package/dist/prices/abstract/IPriceProvider.js +74 -0
- package/dist/prices/abstract/ISwapPrice.d.ts +117 -0
- package/dist/prices/abstract/ISwapPrice.js +219 -0
- package/dist/prices/providers/BinancePriceProvider.d.ts +16 -0
- package/dist/prices/providers/BinancePriceProvider.js +23 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +17 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.js +23 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +19 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +23 -0
- package/dist/prices/providers/CustomPriceProvider.d.ts +13 -0
- package/dist/prices/providers/CustomPriceProvider.js +24 -0
- package/dist/prices/providers/KrakenPriceProvider.d.ts +29 -0
- package/dist/prices/providers/KrakenPriceProvider.js +36 -0
- package/dist/prices/providers/OKXPriceProvider.d.ts +28 -0
- package/dist/prices/providers/OKXPriceProvider.js +23 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +14 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +18 -0
- package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -0
- package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -0
- package/dist/storage/IUnifiedStorage.d.ts +73 -0
- package/dist/storage/IUnifiedStorage.js +2 -0
- package/dist/storage/UnifiedSwapStorage.d.ts +82 -0
- package/dist/storage/UnifiedSwapStorage.js +83 -0
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +39 -0
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +275 -0
- package/dist/{storage → storage-browser}/LocalStorageManager.d.ts +1 -0
- package/dist/{storage → storage-browser}/LocalStorageManager.js +2 -1
- package/dist/swapper/Swapper.d.ts +533 -0
- package/dist/swapper/Swapper.js +1566 -0
- package/dist/swapper/SwapperFactory.d.ts +87 -0
- package/dist/{SwapperFactory.js → swapper/SwapperFactory.js} +40 -22
- package/dist/swapper/SwapperUtils.d.ts +153 -0
- package/dist/swapper/SwapperUtils.js +420 -0
- package/dist/swapper/SwapperWithChain.d.ts +214 -0
- package/dist/swapper/SwapperWithChain.js +315 -0
- package/dist/swapper/SwapperWithSigner.d.ts +178 -0
- package/dist/swapper/SwapperWithSigner.js +172 -0
- package/dist/swaps/IAddressSwap.d.ts +13 -0
- package/dist/swaps/IAddressSwap.js +13 -0
- package/dist/swaps/IBTCWalletSwap.d.ts +55 -0
- package/dist/swaps/IBTCWalletSwap.js +17 -0
- package/dist/swaps/IClaimableSwap.d.ts +17 -0
- package/dist/swaps/IClaimableSwap.js +14 -0
- package/dist/swaps/IClaimableSwapWrapper.d.ts +5 -0
- package/dist/swaps/IClaimableSwapWrapper.js +2 -0
- package/dist/swaps/IRefundableSwap.d.ts +17 -0
- package/dist/swaps/IRefundableSwap.js +13 -0
- package/dist/swaps/ISwap.d.ts +207 -0
- package/dist/swaps/ISwap.js +264 -0
- package/dist/swaps/ISwapWithGasDrop.d.ts +15 -0
- package/dist/swaps/ISwapWithGasDrop.js +11 -0
- package/dist/swaps/ISwapWrapper.d.ts +153 -0
- package/dist/swaps/ISwapWrapper.js +227 -0
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +53 -0
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +116 -0
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +70 -0
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +132 -0
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +85 -0
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +122 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +86 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +115 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +93 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +121 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +45 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +65 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +263 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +933 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +110 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +307 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +236 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +898 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +125 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +393 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +245 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +841 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +120 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +294 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +228 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +721 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +37 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +93 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +86 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +213 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +170 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +50 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +109 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +93 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +217 -0
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +315 -0
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1098 -0
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +125 -0
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +631 -0
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +107 -0
- package/dist/swaps/trusted/ln/LnForGasSwap.js +343 -0
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +21 -0
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +62 -0
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +164 -0
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +520 -0
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +48 -0
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +74 -0
- package/dist/types/AmountData.d.ts +9 -0
- package/dist/types/AmountData.js +2 -0
- package/dist/types/CustomPriceFunction.d.ts +5 -0
- package/dist/types/CustomPriceFunction.js +2 -0
- package/dist/types/PriceInfoType.d.ts +28 -0
- package/dist/types/PriceInfoType.js +57 -0
- package/dist/types/SwapExecutionAction.d.ts +7 -0
- package/dist/types/SwapExecutionAction.js +2 -0
- package/dist/types/SwapWithSigner.d.ts +14 -0
- package/dist/types/SwapWithSigner.js +40 -0
- package/dist/types/Token.d.ts +53 -0
- package/dist/types/Token.js +58 -0
- package/dist/types/TokenAmount.d.ts +57 -0
- package/dist/types/TokenAmount.js +47 -0
- package/dist/types/fees/Fee.d.ts +49 -0
- package/dist/types/fees/Fee.js +2 -0
- package/dist/types/fees/FeeBreakdown.d.ts +10 -0
- package/dist/types/fees/FeeBreakdown.js +2 -0
- package/dist/types/fees/PercentagePPM.d.ts +15 -0
- package/dist/types/fees/PercentagePPM.js +17 -0
- package/dist/types/lnurl/LNURLPay.d.ts +54 -0
- package/dist/types/lnurl/LNURLPay.js +28 -0
- package/dist/types/lnurl/LNURLWithdraw.d.ts +42 -0
- package/dist/types/lnurl/LNURLWithdraw.js +24 -0
- package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -0
- package/dist/utils/AutomaticClockDriftCorrection.js +70 -0
- package/dist/utils/BitcoinUtils.d.ts +13 -0
- package/dist/utils/BitcoinUtils.js +98 -0
- package/dist/utils/BitcoinWalletUtils.d.ts +7 -0
- package/dist/utils/BitcoinWalletUtils.js +14 -0
- package/dist/utils/Logger.d.ts +7 -0
- package/dist/utils/Logger.js +12 -0
- package/dist/utils/RetryUtils.d.ts +21 -0
- package/dist/utils/RetryUtils.js +66 -0
- package/dist/utils/SwapUtils.d.ts +31 -0
- package/dist/utils/SwapUtils.js +18 -0
- package/dist/{Utils.d.ts → utils/TimeoutUtils.d.ts} +9 -3
- package/dist/utils/TimeoutUtils.js +55 -0
- package/dist/utils/TokenUtils.d.ts +11 -0
- package/dist/utils/TokenUtils.js +29 -0
- package/dist/utils/TypeUtils.d.ts +7 -0
- package/dist/utils/TypeUtils.js +2 -0
- package/dist/utils/Utils.d.ts +57 -0
- package/dist/utils/Utils.js +178 -0
- package/package.json +14 -6
- package/src/SmartChainAssets.ts +11 -3
- package/src/bitcoin/BitcoinRpcWithAddressIndex.ts +87 -0
- package/src/bitcoin/LightningNetworkApi.ts +16 -0
- package/src/bitcoin/coinselect2/accumulative.ts +68 -0
- package/src/bitcoin/coinselect2/blackjack.ts +49 -0
- package/src/bitcoin/coinselect2/index.ts +92 -0
- package/src/bitcoin/coinselect2/utils.ts +189 -0
- package/src/bitcoin/mempool/MempoolApi.ts +554 -0
- package/src/bitcoin/mempool/MempoolBitcoinBlock.ts +88 -0
- package/src/bitcoin/mempool/MempoolBitcoinRpc.ts +437 -0
- package/src/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.ts +134 -0
- package/src/bitcoin/wallet/BitcoinWallet.ts +375 -0
- package/src/bitcoin/wallet/IBitcoinWallet.ts +44 -0
- package/src/bitcoin/wallet/MinimalBitcoinWalletInterface.ts +19 -0
- package/src/bitcoin/wallet/MinimalLightningNetworkWalletInterface.ts +7 -0
- package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +108 -0
- package/src/enums/FeeType.ts +9 -0
- package/src/enums/SwapAmountType.ts +9 -0
- package/src/enums/SwapDirection.ts +9 -0
- package/src/enums/SwapType.ts +15 -0
- package/src/errors/IntermediaryError.ts +24 -0
- package/src/errors/PaymentAuthError.ts +26 -0
- package/src/errors/RequestError.ts +51 -0
- package/src/errors/UserError.ts +14 -0
- package/src/events/UnifiedSwapEventListener.ts +171 -0
- package/src/http/HttpUtils.ts +92 -0
- package/src/http/paramcoders/IParamReader.ts +10 -0
- package/src/http/paramcoders/ParamDecoder.ts +142 -0
- package/src/http/paramcoders/ParamEncoder.ts +37 -0
- package/src/http/paramcoders/SchemaVerifier.ts +153 -0
- package/src/http/paramcoders/client/ResponseParamDecoder.ts +58 -0
- package/src/http/paramcoders/client/StreamParamEncoder.ts +29 -0
- package/src/http/paramcoders/client/StreamingFetchPromise.ts +193 -0
- package/src/index.ts +102 -4
- package/src/intermediaries/Intermediary.ts +204 -0
- package/src/intermediaries/IntermediaryDiscovery.ts +485 -0
- package/src/intermediaries/apis/IntermediaryAPI.ts +940 -0
- package/src/intermediaries/apis/TrustedIntermediaryAPI.ts +257 -0
- package/src/lnurl/LNURL.ts +403 -0
- package/src/prices/RedundantSwapPrice.ts +245 -0
- package/src/prices/SingleSwapPrice.ts +47 -0
- package/src/prices/SwapPriceWithChain.ts +157 -0
- package/src/prices/abstract/ICachedSwapPrice.ts +86 -0
- package/src/prices/abstract/IPriceProvider.ts +128 -0
- package/src/prices/abstract/ISwapPrice.ts +328 -0
- package/src/prices/providers/BinancePriceProvider.ts +41 -0
- package/src/prices/providers/CoinGeckoPriceProvider.ts +40 -0
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +44 -0
- package/src/prices/providers/CustomPriceProvider.ts +29 -0
- package/src/prices/providers/KrakenPriceProvider.ts +74 -0
- package/src/prices/providers/OKXPriceProvider.ts +53 -0
- package/src/prices/providers/abstract/ExchangePriceProvider.ts +29 -0
- package/src/prices/providers/abstract/HttpPriceProvider.ts +15 -0
- package/src/storage/IUnifiedStorage.ts +83 -0
- package/src/storage/UnifiedSwapStorage.ts +104 -0
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +328 -0
- package/src/{storage → storage-browser}/LocalStorageManager.ts +2 -1
- package/src/swapper/Swapper.ts +2107 -0
- package/src/{SwapperFactory.ts → swapper/SwapperFactory.ts} +116 -75
- package/src/swapper/SwapperUtils.ts +510 -0
- package/src/swapper/SwapperWithChain.ts +464 -0
- package/src/swapper/SwapperWithSigner.ts +300 -0
- package/src/swaps/IAddressSwap.ts +20 -0
- package/src/swaps/IBTCWalletSwap.ts +77 -0
- package/src/swaps/IClaimableSwap.ts +30 -0
- package/src/swaps/IClaimableSwapWrapper.ts +9 -0
- package/src/swaps/IRefundableSwap.ts +29 -0
- package/src/swaps/ISwap.ts +490 -0
- package/src/swaps/ISwapWithGasDrop.ts +19 -0
- package/src/swaps/ISwapWrapper.ts +344 -0
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +168 -0
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +197 -0
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +210 -0
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +150 -0
- package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +219 -0
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +84 -0
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1082 -0
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +429 -0
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1078 -0
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +549 -0
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +974 -0
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +443 -0
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +860 -0
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +104 -0
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +256 -0
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +716 -0
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +151 -0
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +299 -0
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +1394 -0
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +796 -0
- package/src/swaps/trusted/ln/LnForGasSwap.ts +402 -0
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +70 -0
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +633 -0
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +110 -0
- package/src/types/AmountData.ts +9 -0
- package/src/types/CustomPriceFunction.ts +5 -0
- package/src/types/PriceInfoType.ts +67 -0
- package/src/types/SwapExecutionAction.ts +8 -0
- package/src/types/SwapWithSigner.ts +57 -0
- package/src/types/Token.ts +90 -0
- package/src/types/TokenAmount.ts +110 -0
- package/src/types/fees/Fee.ts +55 -0
- package/src/types/fees/FeeBreakdown.ts +11 -0
- package/src/types/fees/PercentagePPM.ts +24 -0
- package/src/types/lnurl/LNURLPay.ts +72 -0
- package/src/types/lnurl/LNURLWithdraw.ts +55 -0
- package/src/utils/AutomaticClockDriftCorrection.ts +71 -0
- package/src/utils/BitcoinUtils.ts +86 -0
- package/src/utils/BitcoinWalletUtils.ts +16 -0
- package/src/utils/Logger.ts +15 -0
- package/src/utils/RetryUtils.ts +71 -0
- package/src/utils/SwapUtils.ts +38 -0
- package/src/utils/TimeoutUtils.ts +50 -0
- package/src/utils/TokenUtils.ts +25 -0
- package/src/utils/TypeUtils.ts +9 -0
- package/src/utils/Utils.ts +182 -0
- package/dist/SwapperFactory.d.ts +0 -52
- package/dist/Utils.js +0 -37
- package/dist/fs-storage/FileSystemStorageManager.d.ts +0 -15
- package/dist/fs-storage/FileSystemStorageManager.js +0 -60
- package/dist/fs-storage/index.d.ts +0 -1
- package/dist/fs-storage/index.js +0 -17
- package/src/SmartChainAssets.js +0 -75
- package/src/SwapperFactory.js +0 -120
- package/src/Utils.js +0 -37
- package/src/Utils.ts +0 -31
- package/src/fs-storage/FileSystemStorageManager.ts +0 -71
- package/src/fs-storage/index.ts +0 -1
- package/src/index.js +0 -21
- package/src/storage/LocalStorageManager.js +0 -72
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ISwapWrapper, ISwapWrapperOptions, SwapTypeDefinition, WrapperCtorTokens } from "../../ISwapWrapper";
|
|
3
|
+
import { ChainType } from "@atomiqlabs/base";
|
|
4
|
+
import { OnchainForGasSwap, OnchainForGasSwapState } from "./OnchainForGasSwap";
|
|
5
|
+
import { BitcoinRpcWithAddressIndex } from "../../../bitcoin/BitcoinRpcWithAddressIndex";
|
|
6
|
+
import { ISwapPrice } from "../../../prices/abstract/ISwapPrice";
|
|
7
|
+
import { EventEmitter } from "events";
|
|
8
|
+
import { Intermediary } from "../../../intermediaries/Intermediary";
|
|
9
|
+
import { SwapType } from "../../../enums/SwapType";
|
|
10
|
+
import { UnifiedSwapEventListener } from "../../../events/UnifiedSwapEventListener";
|
|
11
|
+
import { UnifiedSwapStorage } from "../../../storage/UnifiedSwapStorage";
|
|
12
|
+
import { ISwap } from "../../ISwap";
|
|
13
|
+
import { BTC_NETWORK } from "@scure/btc-signer/utils";
|
|
14
|
+
export type OnchainForGasWrapperOptions = ISwapWrapperOptions & {
|
|
15
|
+
bitcoinNetwork: BTC_NETWORK;
|
|
16
|
+
};
|
|
17
|
+
export type OnchainForGasSwapTypeDefinition<T extends ChainType> = SwapTypeDefinition<T, OnchainForGasWrapper<T>, OnchainForGasSwap<T>>;
|
|
18
|
+
export declare class OnchainForGasWrapper<T extends ChainType> extends ISwapWrapper<T, OnchainForGasSwapTypeDefinition<T>, OnchainForGasWrapperOptions> {
|
|
19
|
+
readonly TYPE = SwapType.TRUSTED_FROM_BTC;
|
|
20
|
+
readonly swapDeserializer: typeof OnchainForGasSwap;
|
|
21
|
+
readonly btcRpc: BitcoinRpcWithAddressIndex<any>;
|
|
22
|
+
/**
|
|
23
|
+
* @param chainIdentifier
|
|
24
|
+
* @param unifiedStorage Storage interface for the current environment
|
|
25
|
+
* @param unifiedChainEvents On-chain event listener
|
|
26
|
+
* @param chain
|
|
27
|
+
* @param prices Pricing to use
|
|
28
|
+
* @param tokens
|
|
29
|
+
* @param btcRpc Bitcoin RPC which also supports getting transactions by txoHash
|
|
30
|
+
* @param options
|
|
31
|
+
* @param events Instance to use for emitting events
|
|
32
|
+
*/
|
|
33
|
+
constructor(chainIdentifier: string, unifiedStorage: UnifiedSwapStorage<T>, unifiedChainEvents: UnifiedSwapEventListener<T>, chain: T["ChainInterface"], prices: ISwapPrice, tokens: WrapperCtorTokens, btcRpc: BitcoinRpcWithAddressIndex<any>, options: OnchainForGasWrapperOptions, events?: EventEmitter<{
|
|
34
|
+
swapState: [ISwap];
|
|
35
|
+
}>);
|
|
36
|
+
/**
|
|
37
|
+
* Returns a newly created swap, receiving 'amount' base units of gas token
|
|
38
|
+
*
|
|
39
|
+
* @param signer
|
|
40
|
+
* @param amount Amount you wish to receive in base units
|
|
41
|
+
* @param lpOrUrl Intermediary/Counterparty swap service Intermediary object or raw url
|
|
42
|
+
* @param refundAddress Bitcoin address to receive refund on in case the counterparty cannot execute the swap
|
|
43
|
+
*/
|
|
44
|
+
create(signer: string, amount: bigint, lpOrUrl: Intermediary | string, refundAddress?: string): Promise<OnchainForGasSwap<T>>;
|
|
45
|
+
readonly pendingSwapStates: OnchainForGasSwapState[];
|
|
46
|
+
readonly tickSwapState: undefined;
|
|
47
|
+
protected processEvent: undefined;
|
|
48
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnchainForGasWrapper = void 0;
|
|
4
|
+
const ISwapWrapper_1 = require("../../ISwapWrapper");
|
|
5
|
+
const TrustedIntermediaryAPI_1 = require("../../../intermediaries/apis/TrustedIntermediaryAPI");
|
|
6
|
+
const IntermediaryError_1 = require("../../../errors/IntermediaryError");
|
|
7
|
+
const OnchainForGasSwap_1 = require("./OnchainForGasSwap");
|
|
8
|
+
const SwapType_1 = require("../../../enums/SwapType");
|
|
9
|
+
class OnchainForGasWrapper extends ISwapWrapper_1.ISwapWrapper {
|
|
10
|
+
/**
|
|
11
|
+
* @param chainIdentifier
|
|
12
|
+
* @param unifiedStorage Storage interface for the current environment
|
|
13
|
+
* @param unifiedChainEvents On-chain event listener
|
|
14
|
+
* @param chain
|
|
15
|
+
* @param prices Pricing to use
|
|
16
|
+
* @param tokens
|
|
17
|
+
* @param btcRpc Bitcoin RPC which also supports getting transactions by txoHash
|
|
18
|
+
* @param options
|
|
19
|
+
* @param events Instance to use for emitting events
|
|
20
|
+
*/
|
|
21
|
+
constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, prices, tokens, btcRpc, options, events) {
|
|
22
|
+
super(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, prices, tokens, options, events);
|
|
23
|
+
this.TYPE = SwapType_1.SwapType.TRUSTED_FROM_BTC;
|
|
24
|
+
this.swapDeserializer = OnchainForGasSwap_1.OnchainForGasSwap;
|
|
25
|
+
this.pendingSwapStates = [OnchainForGasSwap_1.OnchainForGasSwapState.PR_CREATED];
|
|
26
|
+
this.tickSwapState = undefined;
|
|
27
|
+
this.processEvent = undefined;
|
|
28
|
+
this.btcRpc = btcRpc;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns a newly created swap, receiving 'amount' base units of gas token
|
|
32
|
+
*
|
|
33
|
+
* @param signer
|
|
34
|
+
* @param amount Amount you wish to receive in base units
|
|
35
|
+
* @param lpOrUrl Intermediary/Counterparty swap service Intermediary object or raw url
|
|
36
|
+
* @param refundAddress Bitcoin address to receive refund on in case the counterparty cannot execute the swap
|
|
37
|
+
*/
|
|
38
|
+
async create(signer, amount, lpOrUrl, refundAddress) {
|
|
39
|
+
if (!this.isInitialized)
|
|
40
|
+
throw new Error("Not initialized, call init() first!");
|
|
41
|
+
const lpUrl = typeof (lpOrUrl) === "string" ? lpOrUrl : lpOrUrl.url;
|
|
42
|
+
const token = this.chain.getNativeCurrencyAddress();
|
|
43
|
+
const resp = await TrustedIntermediaryAPI_1.TrustedIntermediaryAPI.initTrustedFromBTC(this.chainIdentifier, lpUrl, {
|
|
44
|
+
address: signer,
|
|
45
|
+
amount,
|
|
46
|
+
refundAddress,
|
|
47
|
+
token
|
|
48
|
+
}, this.options.getRequestTimeout);
|
|
49
|
+
if (resp.total !== amount)
|
|
50
|
+
throw new IntermediaryError_1.IntermediaryError("Invalid total returned");
|
|
51
|
+
const pricingInfo = await this.verifyReturnedPrice(typeof (lpOrUrl) === "string" || lpOrUrl.services[SwapType_1.SwapType.TRUSTED_FROM_BTC] == null ?
|
|
52
|
+
{ swapFeePPM: 10000, swapBaseFee: 10 } :
|
|
53
|
+
lpOrUrl.services[SwapType_1.SwapType.TRUSTED_FROM_BTC], false, resp.amountSats, amount, this.chain.getNativeCurrencyAddress(), {});
|
|
54
|
+
const quote = new OnchainForGasSwap_1.OnchainForGasSwap(this, {
|
|
55
|
+
paymentHash: resp.paymentHash,
|
|
56
|
+
sequence: resp.sequence,
|
|
57
|
+
address: resp.btcAddress,
|
|
58
|
+
inputAmount: resp.amountSats,
|
|
59
|
+
outputAmount: resp.total,
|
|
60
|
+
recipient: signer,
|
|
61
|
+
refundAddress,
|
|
62
|
+
pricingInfo,
|
|
63
|
+
url: lpUrl,
|
|
64
|
+
expiry: resp.expiresAt,
|
|
65
|
+
swapFee: resp.swapFee,
|
|
66
|
+
swapFeeBtc: resp.swapFeeSats,
|
|
67
|
+
exactIn: false,
|
|
68
|
+
token
|
|
69
|
+
});
|
|
70
|
+
await quote._save();
|
|
71
|
+
return quote;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.OnchainForGasWrapper = OnchainForGasWrapper;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pricing information for swap validation
|
|
3
|
+
* @category Pricing and LPs
|
|
4
|
+
*/
|
|
5
|
+
export type PriceInfoType = {
|
|
6
|
+
isValid: boolean;
|
|
7
|
+
differencePPM: bigint;
|
|
8
|
+
satsBaseFee: bigint;
|
|
9
|
+
feePPM: bigint;
|
|
10
|
+
realPriceUSatPerToken?: bigint;
|
|
11
|
+
realPriceUsdPerBitcoin?: number;
|
|
12
|
+
swapPriceUSatPerToken: bigint;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Type guard for PriceInfoType
|
|
16
|
+
* @category Pricing and LPs
|
|
17
|
+
*/
|
|
18
|
+
export declare function isPriceInfoType(obj: any): obj is PriceInfoType;
|
|
19
|
+
/**
|
|
20
|
+
* Serializes PriceInfoType for storage
|
|
21
|
+
* @category Pricing and LPs
|
|
22
|
+
*/
|
|
23
|
+
export declare function serializePriceInfoType(obj: PriceInfoType | undefined): any;
|
|
24
|
+
/**
|
|
25
|
+
* Deserializes PriceInfoType from storage
|
|
26
|
+
* @category Pricing and LPs
|
|
27
|
+
*/
|
|
28
|
+
export declare function deserializePriceInfoType(obj: any): PriceInfoType | undefined;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deserializePriceInfoType = exports.serializePriceInfoType = exports.isPriceInfoType = void 0;
|
|
4
|
+
const Utils_1 = require("../utils/Utils");
|
|
5
|
+
/**
|
|
6
|
+
* Type guard for PriceInfoType
|
|
7
|
+
* @category Pricing and LPs
|
|
8
|
+
*/
|
|
9
|
+
function isPriceInfoType(obj) {
|
|
10
|
+
return obj != null &&
|
|
11
|
+
typeof (obj.isValid) === "boolean" &&
|
|
12
|
+
typeof (obj.differencePPM) === "bigint" &&
|
|
13
|
+
typeof (obj.satsBaseFee) === "bigint" &&
|
|
14
|
+
typeof (obj.feePPM) === "bigint" &&
|
|
15
|
+
(obj.realPriceUSatPerToken == null || typeof (obj.realPriceUSatPerToken) === "bigint") &&
|
|
16
|
+
(obj.realPriceUsdPerBitcoin == null || typeof (obj.realPriceUsdPerBitcoin) === "number") &&
|
|
17
|
+
typeof (obj.swapPriceUSatPerToken) === "bigint";
|
|
18
|
+
}
|
|
19
|
+
exports.isPriceInfoType = isPriceInfoType;
|
|
20
|
+
/**
|
|
21
|
+
* Serializes PriceInfoType for storage
|
|
22
|
+
* @category Pricing and LPs
|
|
23
|
+
*/
|
|
24
|
+
function serializePriceInfoType(obj) {
|
|
25
|
+
if (obj == null)
|
|
26
|
+
return null;
|
|
27
|
+
return {
|
|
28
|
+
isValid: obj.isValid,
|
|
29
|
+
differencePPM: obj.differencePPM == null ? null : obj.differencePPM.toString(10),
|
|
30
|
+
satsBaseFee: obj.satsBaseFee == null ? null : obj.satsBaseFee.toString(10),
|
|
31
|
+
feePPM: obj.feePPM == null ? null : obj.feePPM.toString(10),
|
|
32
|
+
realPriceUSatPerToken: obj.realPriceUSatPerToken == null ? null : obj.realPriceUSatPerToken.toString(10),
|
|
33
|
+
realPriceUsdPerBitcoin: obj.realPriceUsdPerBitcoin,
|
|
34
|
+
swapPriceUSatPerToken: obj.swapPriceUSatPerToken == null ? null : obj.swapPriceUSatPerToken.toString(10),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
exports.serializePriceInfoType = serializePriceInfoType;
|
|
38
|
+
/**
|
|
39
|
+
* Deserializes PriceInfoType from storage
|
|
40
|
+
* @category Pricing and LPs
|
|
41
|
+
*/
|
|
42
|
+
function deserializePriceInfoType(obj) {
|
|
43
|
+
if (obj == null)
|
|
44
|
+
return;
|
|
45
|
+
if (obj.isValid != null && obj.differencePPM != null && obj.satsBaseFee != null &&
|
|
46
|
+
obj.feePPM != null && obj.swapPriceUSatPerToken != null)
|
|
47
|
+
return {
|
|
48
|
+
isValid: obj.isValid,
|
|
49
|
+
differencePPM: (0, Utils_1.toBigInt)(obj.differencePPM),
|
|
50
|
+
satsBaseFee: (0, Utils_1.toBigInt)(obj.satsBaseFee),
|
|
51
|
+
feePPM: (0, Utils_1.toBigInt)(obj.feePPM),
|
|
52
|
+
realPriceUSatPerToken: (0, Utils_1.toBigInt)(obj.realPriceUSatPerToken),
|
|
53
|
+
realPriceUsdPerBitcoin: obj.realPriceUsdPerBitcoin,
|
|
54
|
+
swapPriceUSatPerToken: (0, Utils_1.toBigInt)(obj.swapPriceUSatPerToken),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
exports.deserializePriceInfoType = deserializePriceInfoType;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ISwap } from "../swaps/ISwap";
|
|
2
|
+
import { ChainType } from "@atomiqlabs/base";
|
|
3
|
+
/**
|
|
4
|
+
* Proxy type that auto-injects signer into swap methods
|
|
5
|
+
* @category Swaps
|
|
6
|
+
*/
|
|
7
|
+
export type SwapWithSigner<T extends ISwap> = {
|
|
8
|
+
[K in keyof T]: K extends "commit" ? (abortSignal?: AbortSignal, skipChecks?: boolean) => Promise<string> : K extends "refund" ? (abortSignal?: AbortSignal) => Promise<string> : K extends "claim" ? (abortSignal?: AbortSignal) => Promise<string> : K extends "commitAndClaim" ? (abortSignal?: AbortSignal, skipChecks?: boolean) => Promise<string> : T[K];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Wraps a swap with automatic signer injection for methods like commit, refund, and claim
|
|
12
|
+
* @category Swaps
|
|
13
|
+
*/
|
|
14
|
+
export declare function wrapSwapWithSigner<C extends ChainType, T extends ISwap<C>>(swap: T, signer: C["Signer"]): SwapWithSigner<T>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wrapSwapWithSigner = void 0;
|
|
4
|
+
const IToBTCSwap_1 = require("../swaps/escrow_swaps/tobtc/IToBTCSwap");
|
|
5
|
+
const IFromBTCSelfInitSwap_1 = require("../swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap");
|
|
6
|
+
const FromBTCLNSwap_1 = require("../swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap");
|
|
7
|
+
/**
|
|
8
|
+
* Wraps a swap with automatic signer injection for methods like commit, refund, and claim
|
|
9
|
+
* @category Swaps
|
|
10
|
+
*/
|
|
11
|
+
function wrapSwapWithSigner(swap, signer) {
|
|
12
|
+
return new Proxy(swap, {
|
|
13
|
+
get: (target, prop, receiver) => {
|
|
14
|
+
// Override the "sayGoodbye" method
|
|
15
|
+
if (prop === "commit") {
|
|
16
|
+
if (swap instanceof IToBTCSwap_1.IToBTCSwap || swap instanceof IFromBTCSelfInitSwap_1.IFromBTCSelfInitSwap) {
|
|
17
|
+
return (abortSignal, skipChecks) => swap.commit(signer, abortSignal, skipChecks);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (prop === "refund") {
|
|
21
|
+
if (swap instanceof IToBTCSwap_1.IToBTCSwap) {
|
|
22
|
+
return (abortSignal) => swap.refund(signer, abortSignal);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (prop === "claim") {
|
|
26
|
+
if (swap instanceof IFromBTCSelfInitSwap_1.IFromBTCSelfInitSwap) {
|
|
27
|
+
return (abortSignal) => swap.claim(signer, abortSignal);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (prop === "commitAndClaim") {
|
|
31
|
+
if (swap instanceof FromBTCLNSwap_1.FromBTCLNSwap) {
|
|
32
|
+
return (abortSignal, skipChecks) => swap.commitAndClaim(signer, abortSignal, skipChecks);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Delegate other properties and methods to the original instance
|
|
36
|
+
return Reflect.get(target, prop, receiver);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
exports.wrapSwapWithSigner = wrapSwapWithSigner;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bitcoin token type (on-chain or lightning)
|
|
3
|
+
* @category Tokens
|
|
4
|
+
*/
|
|
5
|
+
export type BtcToken<L = boolean> = {
|
|
6
|
+
chain: "BTC";
|
|
7
|
+
lightning: L;
|
|
8
|
+
ticker: "BTC";
|
|
9
|
+
decimals: 8;
|
|
10
|
+
name: L extends true ? "Bitcoin (lightning L2)" : "Bitcoin (on-chain L1)";
|
|
11
|
+
displayDecimals?: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Type guard for BtcToken
|
|
15
|
+
* @category Tokens
|
|
16
|
+
*/
|
|
17
|
+
export declare function isBtcToken(obj: any): obj is BtcToken;
|
|
18
|
+
/**
|
|
19
|
+
* Predefined Bitcoin token constants
|
|
20
|
+
* @category Tokens
|
|
21
|
+
*/
|
|
22
|
+
export declare const BitcoinTokens: {
|
|
23
|
+
BTC: BtcToken<false>;
|
|
24
|
+
BTCLN: BtcToken<true>;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Smart Chain token type
|
|
28
|
+
* @category Tokens
|
|
29
|
+
*/
|
|
30
|
+
export type SCToken<ChainIdentifier extends string = string> = {
|
|
31
|
+
chain: "SC";
|
|
32
|
+
chainId: ChainIdentifier;
|
|
33
|
+
address: string;
|
|
34
|
+
ticker: string;
|
|
35
|
+
decimals: number;
|
|
36
|
+
displayDecimals?: number;
|
|
37
|
+
name: string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Type guard for SCToken
|
|
41
|
+
* @category Tokens
|
|
42
|
+
*/
|
|
43
|
+
export declare function isSCToken(obj: any): obj is SCToken;
|
|
44
|
+
/**
|
|
45
|
+
* Union type for all token types (BTC or smart chain)
|
|
46
|
+
* @category Tokens
|
|
47
|
+
*/
|
|
48
|
+
export type Token<ChainIdentifier extends string = string> = BtcToken | SCToken<ChainIdentifier>;
|
|
49
|
+
/**
|
|
50
|
+
* Type guard for Token
|
|
51
|
+
* @category Tokens
|
|
52
|
+
*/
|
|
53
|
+
export declare function isToken(obj: any): obj is Token;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isToken = exports.isSCToken = exports.BitcoinTokens = exports.isBtcToken = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Type guard for BtcToken
|
|
6
|
+
* @category Tokens
|
|
7
|
+
*/
|
|
8
|
+
function isBtcToken(obj) {
|
|
9
|
+
return typeof (obj) === "object" &&
|
|
10
|
+
obj.chain === "BTC" &&
|
|
11
|
+
typeof (obj.lightning) === "boolean" &&
|
|
12
|
+
typeof (obj.ticker) === "string" &&
|
|
13
|
+
typeof (obj.decimals) === "number" &&
|
|
14
|
+
typeof (obj.name) === "string";
|
|
15
|
+
}
|
|
16
|
+
exports.isBtcToken = isBtcToken;
|
|
17
|
+
/**
|
|
18
|
+
* Predefined Bitcoin token constants
|
|
19
|
+
* @category Tokens
|
|
20
|
+
*/
|
|
21
|
+
exports.BitcoinTokens = {
|
|
22
|
+
BTC: {
|
|
23
|
+
chain: "BTC",
|
|
24
|
+
lightning: false,
|
|
25
|
+
ticker: "BTC",
|
|
26
|
+
decimals: 8,
|
|
27
|
+
name: "Bitcoin (on-chain L1)"
|
|
28
|
+
},
|
|
29
|
+
BTCLN: {
|
|
30
|
+
chain: "BTC",
|
|
31
|
+
lightning: true,
|
|
32
|
+
ticker: "BTC",
|
|
33
|
+
decimals: 8,
|
|
34
|
+
name: "Bitcoin (lightning L2)"
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Type guard for SCToken
|
|
39
|
+
* @category Tokens
|
|
40
|
+
*/
|
|
41
|
+
function isSCToken(obj) {
|
|
42
|
+
return typeof (obj) === "object" &&
|
|
43
|
+
obj.chain === "SC" &&
|
|
44
|
+
typeof (obj.chainId) === "string" &&
|
|
45
|
+
typeof (obj.address) === "string" &&
|
|
46
|
+
typeof (obj.ticker) === "string" &&
|
|
47
|
+
typeof (obj.decimals) === "number" &&
|
|
48
|
+
typeof (obj.name) === "string";
|
|
49
|
+
}
|
|
50
|
+
exports.isSCToken = isSCToken;
|
|
51
|
+
/**
|
|
52
|
+
* Type guard for Token
|
|
53
|
+
* @category Tokens
|
|
54
|
+
*/
|
|
55
|
+
function isToken(obj) {
|
|
56
|
+
return isBtcToken(obj) || isSCToken(obj);
|
|
57
|
+
}
|
|
58
|
+
exports.isToken = isToken;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ISwapPrice } from "../prices/abstract/ISwapPrice";
|
|
2
|
+
import { Token } from "./Token";
|
|
3
|
+
import { PriceInfoType } from "./PriceInfoType";
|
|
4
|
+
/**
|
|
5
|
+
* Represents a token amount along with its formatted values and USD valuation helpers
|
|
6
|
+
* @category Tokens
|
|
7
|
+
*/
|
|
8
|
+
export type TokenAmount<ChainIdentifier extends string = string, T extends Token<ChainIdentifier> = Token<ChainIdentifier>> = {
|
|
9
|
+
/**
|
|
10
|
+
* Raw amount in base units represented as bigint
|
|
11
|
+
*/
|
|
12
|
+
rawAmount: bigint;
|
|
13
|
+
/**
|
|
14
|
+
* Human readable amount with decimal places
|
|
15
|
+
*/
|
|
16
|
+
amount: string;
|
|
17
|
+
/**
|
|
18
|
+
* Number representation of the decimal token amount (can lose precision!)
|
|
19
|
+
*/
|
|
20
|
+
_amount: number;
|
|
21
|
+
/**
|
|
22
|
+
* Token associated with this amount
|
|
23
|
+
*/
|
|
24
|
+
token: T;
|
|
25
|
+
/**
|
|
26
|
+
* Fetches the current USD value of the amount
|
|
27
|
+
*
|
|
28
|
+
* @param abortSignal
|
|
29
|
+
* @param preFetchedUsdPrice You can supply a pre-fetched usd price to the pricing function
|
|
30
|
+
* @returns A promise resolving to the current USD value of the token amount
|
|
31
|
+
*/
|
|
32
|
+
currentUsdValue: (abortSignal?: AbortSignal, preFetchedUsdPrice?: number) => Promise<number>;
|
|
33
|
+
/**
|
|
34
|
+
* Gets USD value of the amount, if this amount was returned from a swap it uses the USD value
|
|
35
|
+
* when the swap was created, otherwise fetches the usd value on-demand
|
|
36
|
+
*
|
|
37
|
+
* @param abortSignal
|
|
38
|
+
* @param preFetchedUsdPrice You can supply a pre-fetched usd price to the pricing function
|
|
39
|
+
* @returns A promise resolving to the current USD value of the token amount
|
|
40
|
+
*/
|
|
41
|
+
usdValue: (abortSignal?: AbortSignal, preFetchedUsdPrice?: number) => Promise<number>;
|
|
42
|
+
/**
|
|
43
|
+
* USD value of the amount when swap was created - only present for token amounts obtained
|
|
44
|
+
* from swaps, left for convenience only, use usdValue() instead, which automatically
|
|
45
|
+
* recognizes which pricing to use (either past value if available or fetches it on-demand)
|
|
46
|
+
*/
|
|
47
|
+
pastUsdValue?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Returns the string representation of the amount along with the token ticker in format: {amount} {ticker}
|
|
50
|
+
*/
|
|
51
|
+
toString: () => string;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Factory function to create a TokenAmount
|
|
55
|
+
* @category Tokens
|
|
56
|
+
*/
|
|
57
|
+
export declare function toTokenAmount<ChainIdentifier extends string = string, T extends Token<ChainIdentifier> = Token<ChainIdentifier>>(amount: bigint, token: T, prices: ISwapPrice, pricingInfo?: PriceInfoType): TokenAmount<ChainIdentifier, T>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toTokenAmount = void 0;
|
|
4
|
+
const Utils_1 = require("../utils/Utils");
|
|
5
|
+
/**
|
|
6
|
+
* Factory function to create a TokenAmount
|
|
7
|
+
* @category Tokens
|
|
8
|
+
*/
|
|
9
|
+
function toTokenAmount(amount, token, prices, pricingInfo) {
|
|
10
|
+
if (amount == null)
|
|
11
|
+
return null; //Shouldn't happen
|
|
12
|
+
const amountStr = (0, Utils_1.toDecimal)(amount, token.decimals, undefined, token.displayDecimals);
|
|
13
|
+
const _amount = parseFloat(amountStr);
|
|
14
|
+
let usdValue = undefined;
|
|
15
|
+
if (pricingInfo != null) {
|
|
16
|
+
if (token.chain === "BTC" && token.ticker === "BTC") {
|
|
17
|
+
if (pricingInfo.realPriceUsdPerBitcoin != null) {
|
|
18
|
+
usdValue = Number(amount) * pricingInfo.realPriceUsdPerBitcoin;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
if (pricingInfo.realPriceUsdPerBitcoin != null && pricingInfo.realPriceUSatPerToken != null) {
|
|
23
|
+
usdValue = _amount
|
|
24
|
+
* pricingInfo.realPriceUsdPerBitcoin
|
|
25
|
+
* Number(pricingInfo.realPriceUSatPerToken)
|
|
26
|
+
/ 1000000;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const currentUsdValue = (abortSignal, preFetchedUsdPrice) => prices.getUsdValue(amount, token, abortSignal, preFetchedUsdPrice);
|
|
31
|
+
return {
|
|
32
|
+
rawAmount: amount,
|
|
33
|
+
amount: amountStr,
|
|
34
|
+
_amount,
|
|
35
|
+
token,
|
|
36
|
+
currentUsdValue,
|
|
37
|
+
pastUsdValue: usdValue,
|
|
38
|
+
usdValue: async (abortSignal, preFetchedUsdPrice) => {
|
|
39
|
+
if (usdValue == null) {
|
|
40
|
+
usdValue = await currentUsdValue(abortSignal, preFetchedUsdPrice);
|
|
41
|
+
}
|
|
42
|
+
return usdValue;
|
|
43
|
+
},
|
|
44
|
+
toString: () => amountStr + " " + token.ticker
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
exports.toTokenAmount = toTokenAmount;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { PercentagePPM } from "./PercentagePPM";
|
|
2
|
+
import { TokenAmount } from "../TokenAmount";
|
|
3
|
+
import { Token } from "../Token";
|
|
4
|
+
/**
|
|
5
|
+
* Represents a fee in both source and destination tokens, as well as providing USD valuation helpers and
|
|
6
|
+
* fee composition
|
|
7
|
+
* @category Pricing and LPs
|
|
8
|
+
*/
|
|
9
|
+
export type Fee<ChainIdentifier extends string = string, TSrc extends Token<ChainIdentifier> = Token<ChainIdentifier>, TDst extends Token<ChainIdentifier> = Token<ChainIdentifier>> = {
|
|
10
|
+
/**
|
|
11
|
+
* Fee value equivalent in source token
|
|
12
|
+
*/
|
|
13
|
+
amountInSrcToken: TokenAmount<ChainIdentifier, TSrc>;
|
|
14
|
+
/**
|
|
15
|
+
* Fee value equivalent in destination token
|
|
16
|
+
*/
|
|
17
|
+
amountInDstToken: TokenAmount<ChainIdentifier, TDst>;
|
|
18
|
+
/**
|
|
19
|
+
* Fetches the current USD value of the fee
|
|
20
|
+
*
|
|
21
|
+
* @param abortSignal
|
|
22
|
+
* @param preFetchedUsdPrice You can supply a pre-fetched usd price to the pricing function
|
|
23
|
+
* @returns A promise resolving to the current USD value of the token amount
|
|
24
|
+
*/
|
|
25
|
+
currentUsdValue: (abortSignal?: AbortSignal, preFetchedUsdPrice?: number) => Promise<number>;
|
|
26
|
+
/**
|
|
27
|
+
* Gets USD value of the fee, if the USD value when the swap was created is known (newer swaps) it returns this value,
|
|
28
|
+
* otherwise fetches the usd value on-demand
|
|
29
|
+
*
|
|
30
|
+
* @param abortSignal
|
|
31
|
+
* @param preFetchedUsdPrice You can supply a pre-fetched usd price to the pricing function
|
|
32
|
+
* @returns A promise resolving to the current USD value of the fee
|
|
33
|
+
*/
|
|
34
|
+
usdValue: (abortSignal?: AbortSignal, preFetchedUsdPrice?: number) => Promise<number>;
|
|
35
|
+
/**
|
|
36
|
+
* USD value of the fee when swap was created - only present for newer swaps where the USD value at create
|
|
37
|
+
* time is known. Left for convenience only, use usdValue() instead, which automatically
|
|
38
|
+
* recognizes which pricing to use (either past value if available or fetches it on-demand)
|
|
39
|
+
*/
|
|
40
|
+
pastUsdValue?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Returns the composition of the fee (base fee + percentage fee) if known, the total fee is calculated as:
|
|
43
|
+
* base_fee + amount * percentage_fee
|
|
44
|
+
*/
|
|
45
|
+
composition?: {
|
|
46
|
+
base: TokenAmount<ChainIdentifier>;
|
|
47
|
+
percentage: PercentagePPM;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FeeType } from "../../enums/FeeType";
|
|
2
|
+
import { Fee } from "./Fee";
|
|
3
|
+
/**
|
|
4
|
+
* Breakdown of fees by type (swap fee vs network fee)
|
|
5
|
+
* @category Pricing and LPs
|
|
6
|
+
*/
|
|
7
|
+
export type FeeBreakdown<ChainIdentifier extends string = string> = {
|
|
8
|
+
type: FeeType;
|
|
9
|
+
fee: Fee<ChainIdentifier>;
|
|
10
|
+
}[];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parts-per-million fee representation with conversion helpers
|
|
3
|
+
* @category Pricing and LPs
|
|
4
|
+
*/
|
|
5
|
+
export type PercentagePPM = {
|
|
6
|
+
ppm: bigint;
|
|
7
|
+
decimal: number;
|
|
8
|
+
percentage: number;
|
|
9
|
+
toString: (decimal?: number) => string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Converts parts-per-million to percentage representation
|
|
13
|
+
* @category Pricing and LPs
|
|
14
|
+
*/
|
|
15
|
+
export declare function ppmToPercentage(ppm: bigint): PercentagePPM;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ppmToPercentage = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Converts parts-per-million to percentage representation
|
|
6
|
+
* @category Pricing and LPs
|
|
7
|
+
*/
|
|
8
|
+
function ppmToPercentage(ppm) {
|
|
9
|
+
const percentage = Number(ppm) / 10000;
|
|
10
|
+
return {
|
|
11
|
+
ppm,
|
|
12
|
+
decimal: Number(ppm) / 1000000,
|
|
13
|
+
percentage: percentage,
|
|
14
|
+
toString: (decimals) => (decimals != null ? percentage.toFixed(decimals) : percentage) + "%"
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
exports.ppmToPercentage = ppmToPercentage;
|