@atomiqlabs/sdk 8.9.0 → 8.9.2
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/LICENSE +201 -201
- package/README.md +1760 -1760
- package/api/index.d.ts +1 -1
- package/api/index.js +3 -3
- package/dist/ApiList.d.ts +37 -37
- package/dist/ApiList.js +30 -30
- package/dist/SmartChainAssets.d.ts +181 -181
- package/dist/SmartChainAssets.js +181 -181
- package/dist/api/ApiEndpoints.d.ts +393 -393
- package/dist/api/ApiEndpoints.js +2 -2
- package/dist/api/ApiParser.d.ts +10 -10
- package/dist/api/ApiParser.js +134 -134
- package/dist/api/ApiTypes.d.ts +157 -157
- package/dist/api/ApiTypes.js +75 -75
- package/dist/api/SerializedAction.d.ts +40 -40
- package/dist/api/SerializedAction.js +59 -59
- package/dist/api/SwapperApi.d.ts +50 -50
- package/dist/api/SwapperApi.js +431 -431
- package/dist/api/index.d.ts +5 -5
- package/dist/api/index.js +24 -24
- package/dist/bitcoin/coinselect2/accumulative.d.ts +7 -7
- package/dist/bitcoin/coinselect2/accumulative.js +52 -52
- package/dist/bitcoin/coinselect2/blackjack.d.ts +7 -7
- package/dist/bitcoin/coinselect2/blackjack.js +38 -38
- package/dist/bitcoin/coinselect2/index.d.ts +20 -20
- package/dist/bitcoin/coinselect2/index.js +69 -69
- package/dist/bitcoin/coinselect2/utils.d.ts +82 -82
- package/dist/bitcoin/coinselect2/utils.js +158 -158
- package/dist/bitcoin/wallet/BitcoinWallet.d.ts +113 -113
- package/dist/bitcoin/wallet/BitcoinWallet.js +335 -335
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +116 -116
- package/dist/bitcoin/wallet/IBitcoinWallet.js +21 -21
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +106 -106
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +196 -196
- package/dist/enums/FeeType.d.ts +15 -15
- package/dist/enums/FeeType.js +19 -19
- package/dist/enums/SwapAmountType.d.ts +15 -15
- package/dist/enums/SwapAmountType.js +19 -19
- package/dist/enums/SwapDirection.d.ts +15 -15
- package/dist/enums/SwapDirection.js +19 -19
- package/dist/enums/SwapSide.d.ts +15 -15
- package/dist/enums/SwapSide.js +19 -19
- package/dist/enums/SwapType.d.ts +75 -75
- package/dist/enums/SwapType.js +79 -79
- package/dist/errors/IntermediaryError.d.ts +13 -13
- package/dist/errors/IntermediaryError.js +27 -27
- package/dist/errors/RequestError.d.ts +32 -32
- package/dist/errors/RequestError.js +54 -54
- package/dist/errors/UserError.d.ts +8 -8
- package/dist/errors/UserError.js +16 -16
- package/dist/events/UnifiedSwapEventListener.d.ts +24 -24
- package/dist/events/UnifiedSwapEventListener.js +138 -138
- package/dist/http/HttpUtils.d.ts +29 -29
- package/dist/http/HttpUtils.js +97 -97
- package/dist/http/paramcoders/IParamReader.d.ts +8 -8
- package/dist/http/paramcoders/IParamReader.js +2 -2
- package/dist/http/paramcoders/ParamDecoder.d.ts +44 -44
- package/dist/http/paramcoders/ParamDecoder.js +137 -137
- package/dist/http/paramcoders/ParamEncoder.d.ts +20 -20
- package/dist/http/paramcoders/ParamEncoder.js +36 -36
- package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
- package/dist/http/paramcoders/SchemaVerifier.js +145 -145
- package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
- package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
- package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -13
- package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
- package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +17 -17
- package/dist/http/paramcoders/client/StreamingFetchPromise.js +175 -175
- package/dist/index.d.ts +86 -86
- package/dist/index.js +159 -159
- package/dist/intermediaries/Intermediary.d.ts +178 -178
- package/dist/intermediaries/Intermediary.js +166 -166
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +216 -216
- package/dist/intermediaries/IntermediaryDiscovery.js +424 -424
- package/dist/intermediaries/apis/IntermediaryAPI.d.ts +607 -607
- package/dist/intermediaries/apis/IntermediaryAPI.js +764 -764
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
- package/dist/intermediaries/auth/SignedKeyBasedAuth.d.ts +14 -14
- package/dist/intermediaries/auth/SignedKeyBasedAuth.js +68 -68
- package/dist/lnurl/LNURL.d.ts +102 -102
- package/dist/lnurl/LNURL.js +321 -321
- package/dist/prices/RedundantSwapPrice.d.ts +110 -110
- package/dist/prices/RedundantSwapPrice.js +222 -222
- package/dist/prices/SingleSwapPrice.d.ts +34 -34
- package/dist/prices/SingleSwapPrice.js +44 -44
- package/dist/prices/SwapPriceWithChain.d.ts +107 -107
- package/dist/prices/SwapPriceWithChain.js +128 -128
- package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
- package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
- package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
- package/dist/prices/abstract/IPriceProvider.js +74 -74
- package/dist/prices/abstract/ISwapPrice.d.ts +168 -168
- package/dist/prices/abstract/ISwapPrice.js +279 -279
- package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
- package/dist/prices/providers/BinancePriceProvider.js +30 -30
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
- package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
- package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
- package/dist/prices/providers/CustomPriceProvider.js +35 -35
- package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
- package/dist/prices/providers/KrakenPriceProvider.js +45 -45
- package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
- package/dist/prices/providers/OKXPriceProvider.js +29 -29
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
- package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
- package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
- package/dist/storage/IUnifiedStorage.d.ts +127 -127
- package/dist/storage/IUnifiedStorage.js +2 -2
- package/dist/storage/UnifiedSwapStorage.d.ts +120 -120
- package/dist/storage/UnifiedSwapStorage.js +154 -154
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
- package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
- package/dist/storage-browser/LocalStorageManager.js +93 -93
- package/dist/swapper/Swapper.d.ts +765 -765
- package/dist/swapper/Swapper.js +1749 -1749
- package/dist/swapper/SwapperFactory.d.ts +135 -135
- package/dist/swapper/SwapperFactory.js +162 -162
- package/dist/swapper/SwapperUtils.d.ts +222 -222
- package/dist/swapper/SwapperUtils.js +519 -519
- package/dist/swapper/SwapperWithChain.d.ts +404 -404
- package/dist/swapper/SwapperWithChain.js +469 -469
- package/dist/swapper/SwapperWithSigner.d.ts +322 -322
- package/dist/swapper/SwapperWithSigner.js +318 -318
- package/dist/swaps/IAddressSwap.d.ts +22 -22
- package/dist/swaps/IAddressSwap.js +14 -14
- package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
- package/dist/swaps/IBTCWalletSwap.js +18 -18
- package/dist/swaps/IClaimableSwap.d.ts +49 -49
- package/dist/swaps/IClaimableSwap.js +15 -15
- package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
- package/dist/swaps/IClaimableSwapWrapper.js +2 -2
- package/dist/swaps/IRefundableSwap.d.ts +43 -43
- package/dist/swaps/IRefundableSwap.js +14 -14
- package/dist/swaps/ISwap.d.ts +453 -453
- package/dist/swaps/ISwap.js +371 -371
- package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
- package/dist/swaps/ISwapWithGasDrop.js +12 -12
- package/dist/swaps/ISwapWrapper.d.ts +295 -295
- package/dist/swaps/ISwapWrapper.js +373 -373
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +139 -139
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +172 -172
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +129 -129
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +167 -167
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +107 -107
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +64 -64
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +82 -82
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +547 -547
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1419 -1419
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +192 -192
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +432 -432
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +650 -650
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1577 -1577
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +237 -237
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +525 -525
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +491 -491
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1463 -1463
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +204 -204
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +406 -406
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +446 -446
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +1097 -1097
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +68 -68
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +117 -117
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +127 -127
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +252 -252
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +535 -535
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +134 -134
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +286 -286
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +694 -694
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1687 -1687
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +259 -259
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +947 -947
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +302 -302
- package/dist/swaps/trusted/ln/LnForGasSwap.js +625 -625
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +343 -343
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +698 -698
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +71 -71
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +93 -93
- package/dist/types/AmountData.d.ts +10 -10
- package/dist/types/AmountData.js +2 -2
- package/dist/types/CustomPriceFunction.d.ts +11 -11
- package/dist/types/CustomPriceFunction.js +2 -2
- package/dist/types/PriceInfoType.d.ts +28 -28
- package/dist/types/PriceInfoType.js +57 -57
- package/dist/types/SwapExecutionAction.d.ts +195 -195
- package/dist/types/SwapExecutionAction.js +106 -106
- package/dist/types/SwapExecutionStep.d.ts +144 -144
- package/dist/types/SwapExecutionStep.js +87 -87
- package/dist/types/SwapStateInfo.d.ts +5 -5
- package/dist/types/SwapStateInfo.js +2 -2
- package/dist/types/SwapWithSigner.d.ts +17 -17
- package/dist/types/SwapWithSigner.js +43 -43
- package/dist/types/Token.d.ts +99 -99
- package/dist/types/Token.js +76 -76
- package/dist/types/TokenAmount.d.ts +75 -75
- package/dist/types/TokenAmount.js +85 -85
- package/dist/types/fees/Fee.d.ts +50 -50
- package/dist/types/fees/Fee.js +2 -2
- package/dist/types/fees/FeeBreakdown.d.ts +11 -11
- package/dist/types/fees/FeeBreakdown.js +2 -2
- package/dist/types/fees/PercentagePPM.d.ts +17 -17
- package/dist/types/fees/PercentagePPM.js +18 -18
- package/dist/types/lnurl/LNURLPay.d.ts +61 -61
- package/dist/types/lnurl/LNURLPay.js +31 -31
- package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
- package/dist/types/lnurl/LNURLWithdraw.js +27 -27
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
- package/dist/types/wallets/LightningInvoiceCreateService.js +15 -15
- package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
- package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
- package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
- package/dist/utils/AutomaticClockDriftCorrection.js +70 -70
- package/dist/utils/BitcoinUtils.d.ts +18 -18
- package/dist/utils/BitcoinUtils.js +174 -174
- package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
- package/dist/utils/BitcoinWalletUtils.js +14 -14
- package/dist/utils/Logger.d.ts +7 -7
- package/dist/utils/Logger.js +12 -12
- package/dist/utils/RetryUtils.d.ts +22 -22
- package/dist/utils/RetryUtils.js +67 -67
- package/dist/utils/SwapUtils.d.ts +88 -88
- package/dist/utils/SwapUtils.js +72 -72
- package/dist/utils/TimeoutUtils.d.ts +17 -17
- package/dist/utils/TimeoutUtils.js +55 -55
- package/dist/utils/TokenUtils.d.ts +19 -19
- package/dist/utils/TokenUtils.js +37 -37
- package/dist/utils/TypeUtils.d.ts +7 -7
- package/dist/utils/TypeUtils.js +2 -2
- package/dist/utils/Utils.d.ts +69 -69
- package/dist/utils/Utils.js +214 -214
- package/package.json +46 -46
- package/src/SmartChainAssets.ts +186 -186
- package/src/api/ApiEndpoints.ts +427 -427
- package/src/api/ApiParser.ts +138 -138
- package/src/api/ApiTypes.ts +229 -229
- package/src/api/SerializedAction.ts +97 -97
- package/src/api/SwapperApi.ts +545 -545
- package/src/api/index.ts +5 -5
- package/src/bitcoin/coinselect2/accumulative.ts +69 -69
- package/src/bitcoin/coinselect2/blackjack.ts +50 -50
- package/src/bitcoin/coinselect2/index.ts +93 -93
- package/src/bitcoin/coinselect2/utils.ts +236 -236
- package/src/bitcoin/wallet/BitcoinWallet.ts +439 -439
- package/src/bitcoin/wallet/IBitcoinWallet.ts +140 -140
- package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +225 -225
- package/src/enums/FeeType.ts +15 -15
- package/src/enums/SwapAmountType.ts +16 -16
- package/src/enums/SwapDirection.ts +15 -15
- package/src/enums/SwapSide.ts +16 -16
- package/src/enums/SwapType.ts +75 -75
- package/src/errors/IntermediaryError.ts +28 -28
- package/src/errors/RequestError.ts +64 -64
- package/src/errors/UserError.ts +15 -15
- package/src/events/UnifiedSwapEventListener.ts +181 -181
- package/src/http/HttpUtils.ts +97 -97
- package/src/http/paramcoders/IParamReader.ts +9 -9
- package/src/http/paramcoders/ParamDecoder.ts +145 -145
- package/src/http/paramcoders/ParamEncoder.ts +40 -40
- package/src/http/paramcoders/SchemaVerifier.ts +153 -153
- package/src/http/paramcoders/client/ResponseParamDecoder.ts +57 -57
- package/src/http/paramcoders/client/StreamParamEncoder.ts +28 -28
- package/src/http/paramcoders/client/StreamingFetchPromise.ts +194 -194
- package/src/index.ts +141 -141
- package/src/intermediaries/Intermediary.ts +280 -280
- package/src/intermediaries/IntermediaryDiscovery.ts +548 -548
- package/src/intermediaries/apis/IntermediaryAPI.ts +1247 -1247
- package/src/intermediaries/auth/SignedKeyBasedAuth.ts +69 -69
- package/src/lnurl/LNURL.ts +402 -402
- package/src/prices/RedundantSwapPrice.ts +264 -264
- package/src/prices/SingleSwapPrice.ts +50 -50
- package/src/prices/SwapPriceWithChain.ts +194 -194
- package/src/prices/abstract/ICachedSwapPrice.ts +85 -85
- package/src/prices/abstract/IPriceProvider.ts +127 -127
- package/src/prices/abstract/ISwapPrice.ts +390 -390
- package/src/prices/providers/BinancePriceProvider.ts +48 -48
- package/src/prices/providers/CoinGeckoPriceProvider.ts +46 -46
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +49 -49
- package/src/prices/providers/CustomPriceProvider.ts +40 -40
- package/src/prices/providers/KrakenPriceProvider.ts +83 -83
- package/src/prices/providers/OKXPriceProvider.ts +59 -59
- package/src/prices/providers/abstract/ExchangePriceProvider.ts +31 -31
- package/src/prices/providers/abstract/HttpPriceProvider.ts +14 -14
- package/src/storage/IUnifiedStorage.ts +136 -136
- package/src/storage/UnifiedSwapStorage.ts +175 -175
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +350 -350
- package/src/storage-browser/LocalStorageManager.ts +106 -106
- package/src/swapper/Swapper.ts +2557 -2557
- package/src/swapper/SwapperFactory.ts +307 -307
- package/src/swapper/SwapperUtils.ts +610 -610
- package/src/swapper/SwapperWithChain.ts +707 -707
- package/src/swapper/SwapperWithSigner.ts +511 -511
- package/src/swaps/IAddressSwap.ts +30 -30
- package/src/swaps/IBTCWalletSwap.ts +92 -92
- package/src/swaps/IClaimableSwap.ts +65 -65
- package/src/swaps/IClaimableSwapWrapper.ts +17 -17
- package/src/swaps/IRefundableSwap.ts +58 -58
- package/src/swaps/ISwap.ts +775 -775
- package/src/swaps/ISwapWithGasDrop.ts +25 -25
- package/src/swaps/ISwapWrapper.ts +564 -564
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +217 -217
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +271 -271
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +284 -284
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +172 -172
- package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +300 -300
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +107 -107
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1670 -1671
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +603 -603
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1883 -1883
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +752 -752
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +1753 -1753
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +612 -612
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +1327 -1327
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +138 -138
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +304 -304
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +787 -787
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +206 -206
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +403 -403
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +2148 -2148
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +1238 -1238
- package/src/swaps/trusted/ln/LnForGasSwap.ts +753 -753
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +90 -90
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +843 -843
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +133 -133
- package/src/types/AmountData.ts +9 -9
- package/src/types/CustomPriceFunction.ts +11 -11
- package/src/types/PriceInfoType.ts +66 -66
- package/src/types/SwapExecutionAction.ts +323 -323
- package/src/types/SwapExecutionStep.ts +224 -224
- package/src/types/SwapStateInfo.ts +6 -6
- package/src/types/SwapWithSigner.ts +61 -61
- package/src/types/Token.ts +163 -163
- package/src/types/TokenAmount.ts +167 -167
- package/src/types/fees/Fee.ts +56 -56
- package/src/types/fees/FeeBreakdown.ts +11 -11
- package/src/types/fees/PercentagePPM.ts +26 -26
- package/src/types/lnurl/LNURLPay.ts +79 -79
- package/src/types/lnurl/LNURLWithdraw.ts +61 -61
- package/src/types/wallets/LightningInvoiceCreateService.ts +30 -30
- package/src/types/wallets/MinimalBitcoinWalletInterface.ts +21 -21
- package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +9 -9
- package/src/utils/AutomaticClockDriftCorrection.ts +71 -71
- package/src/utils/BitcoinUtils.ts +164 -164
- package/src/utils/BitcoinWalletUtils.ts +15 -15
- package/src/utils/Logger.ts +14 -14
- package/src/utils/RetryUtils.ts +78 -78
- package/src/utils/SwapUtils.ts +99 -99
- package/src/utils/TimeoutUtils.ts +49 -49
- package/src/utils/TokenUtils.ts +33 -33
- package/src/utils/TypeUtils.ts +8 -8
- package/src/utils/Utils.ts +221 -221
package/src/api/ApiEndpoints.ts
CHANGED
|
@@ -1,427 +1,427 @@
|
|
|
1
|
-
import {SwapExecutionStep} from "../types/SwapExecutionStep";
|
|
2
|
-
import {SerializedAction} from "./SerializedAction";
|
|
3
|
-
import {SwapExecutionAction} from "../types/SwapExecutionAction";
|
|
4
|
-
import {ApiAmount, ApiLNURL, ApiToken} from "./ApiTypes";
|
|
5
|
-
import {LNURLDecodedSuccessAction} from "../types/lnurl/LNURLPay";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Base serialized swap data returned by API endpoints that expose swap details.
|
|
9
|
-
*
|
|
10
|
-
* @category API
|
|
11
|
-
*/
|
|
12
|
-
export type SwapOutputBase = {
|
|
13
|
-
/** Unique identifier of the swap. */
|
|
14
|
-
swapId: string;
|
|
15
|
-
/** Swap type name, for example `FROM_BTC`, `TO_BTCLN`, or `FROM_BTCLN`. */
|
|
16
|
-
swapType: string;
|
|
17
|
-
|
|
18
|
-
/** Current swap state information. This varies for every swap type */
|
|
19
|
-
state: {
|
|
20
|
-
/** Numeric state representation of the state. */
|
|
21
|
-
number: number;
|
|
22
|
-
/** Human-readable state name. */
|
|
23
|
-
name: string;
|
|
24
|
-
/** Human-readable description of the current state. */
|
|
25
|
-
description: string;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
/** Quote data captured when the swap was created. */
|
|
29
|
-
quote: {
|
|
30
|
-
/** Input source amount that will be paid by the user (including fees, but excluding source network fees). */
|
|
31
|
-
inputAmount: ApiAmount;
|
|
32
|
-
/** Output destination amount that will be paid out to the user. */
|
|
33
|
-
outputAmount: ApiAmount;
|
|
34
|
-
/** Fee breakdown included in the quote. */
|
|
35
|
-
fees: {
|
|
36
|
-
/** Swap service fee (charged in source token). */
|
|
37
|
-
swap: ApiAmount;
|
|
38
|
-
/** Swap fee to cover the transaction network fees on the destination side (charged in source token). */
|
|
39
|
-
networkOutput?: ApiAmount;
|
|
40
|
-
};
|
|
41
|
-
/** Quote expiration timestamp in milliseconds since Unix epoch. */
|
|
42
|
-
expiry: number;
|
|
43
|
-
/** Output address of the swap, the destination tokens will be sent here. */
|
|
44
|
-
outputAddress: string;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
/** Swap creation timestamp in milliseconds since Unix epoch. */
|
|
48
|
-
createdAt: number;
|
|
49
|
-
|
|
50
|
-
/** Swap execution steps. */
|
|
51
|
-
steps: SwapExecutionStep[];
|
|
52
|
-
|
|
53
|
-
/** LNURL metadata attached to Lightning-based swaps when applicable. */
|
|
54
|
-
lnurl?: {
|
|
55
|
-
/** LNURL-withdraw link for Lightning to smart-chain flows. */
|
|
56
|
-
withdraw?: string;
|
|
57
|
-
/** LNURL-pay link for smart-chain to Lightning flows. */
|
|
58
|
-
pay?: string;
|
|
59
|
-
/** LNURL success action returned after a successful payment via LNURL-pay link, if specified in the LNURL. */
|
|
60
|
-
successAction?: LNURLDecodedSuccessAction;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Input for creating a new swap
|
|
66
|
-
*
|
|
67
|
-
* @category API
|
|
68
|
-
*/
|
|
69
|
-
export type CreateSwapInput = {
|
|
70
|
-
/** Input source token identifier, always in the format of <network>-<tiker>, e.g. `BITCOIN-BTC`, `LIGHTNING-BTC`, or `STARKNET-STRK`. */
|
|
71
|
-
srcToken: string;
|
|
72
|
-
/** Output destination token identifier, always in the format of <network>-<tiker>, e.g. `BITCOIN-BTC`, `LIGHTNING-BTC`, or `STARKNET-STRK`. */
|
|
73
|
-
dstToken: string;
|
|
74
|
-
/** Swap amount in base units */
|
|
75
|
-
amount: bigint;
|
|
76
|
-
/** Whether the provided amount represents the exact input or exact output side of the quote. */
|
|
77
|
-
amountType: "EXACT_IN" | "EXACT_OUT";
|
|
78
|
-
/** Source address for flows that require it, mainly smart-chain to Bitcoin or Lightning swaps. */
|
|
79
|
-
srcAddress?: string;
|
|
80
|
-
/** Destination address, invoice, or recipient identifier for the swap output. */
|
|
81
|
-
dstAddress: string;
|
|
82
|
-
/**
|
|
83
|
-
* Only for smart chain to Lighting/Bitcoin swaps.
|
|
84
|
-
*
|
|
85
|
-
* Optional gas-drop amount (additional native token) to receive on the destination smart chain, in base units.
|
|
86
|
-
*/
|
|
87
|
-
gasAmount?: bigint;
|
|
88
|
-
/**
|
|
89
|
-
* Only for Lightning to smart chain swaps.
|
|
90
|
-
*
|
|
91
|
-
* Optional custom swap payment hash encoded as a hexadecimal string, for when you want to generate the preimage
|
|
92
|
-
* and payment hash pair outside the API. When used, you need to provide the `secret` argument to the `getSwapStatus`
|
|
93
|
-
* endpoint when the swap HTLC is ready to be claimed (indicated by the `requiresSecretReveal` param in the
|
|
94
|
-
* `getSwapStatus` response)
|
|
95
|
-
*/
|
|
96
|
-
paymentHash?: string;
|
|
97
|
-
/**
|
|
98
|
-
* Only for Lightning to smart chain swaps.
|
|
99
|
-
*
|
|
100
|
-
* Optional description to add to the generated Lightning network BOLT11 invoice.
|
|
101
|
-
*/
|
|
102
|
-
lightningInvoiceDescription?: string;
|
|
103
|
-
/**
|
|
104
|
-
* Only for Lightning to smart chain swaps.
|
|
105
|
-
*
|
|
106
|
-
* Optional description to add to the generated Lightning network BOLT11 invoice.
|
|
107
|
-
*/
|
|
108
|
-
lightningInvoiceDescriptionHash?: string;
|
|
109
|
-
/**
|
|
110
|
-
* Only for smart chain to Lightning swaps.
|
|
111
|
-
*
|
|
112
|
-
* Optional override for the HTLC timeout in seconds (default is 5 days), longer timeouts allow more lightning
|
|
113
|
-
* network hops to be considered when routing the destination lightning network payment, but might lead to longer
|
|
114
|
-
* funds lockup in case of non-cooperative LP.
|
|
115
|
-
*/
|
|
116
|
-
lightningPaymentHTLCTimeout?: number;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Output from create swap endpoint
|
|
121
|
-
*
|
|
122
|
-
* @category API
|
|
123
|
-
*/
|
|
124
|
-
export type CreateSwapOutput = SwapOutputBase;
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Input for getting swap status
|
|
128
|
-
*
|
|
129
|
-
* @category API
|
|
130
|
-
*/
|
|
131
|
-
export type GetSwapStatusInput = {
|
|
132
|
-
/** Unique identifier of the swap to query. */
|
|
133
|
-
swapId: string;
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Swap secret pre-image revealed after the destination chain HTLC is created for Lightning to smart chain swaps,
|
|
137
|
-
* encoded as a hexadecimal string.
|
|
138
|
-
*/
|
|
139
|
-
secret?: string;
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* For Bitcoin to smart chain swaps.
|
|
143
|
-
*
|
|
144
|
-
* Bitcoin address used to request a pre-funded PSBT with populated input UTXOs ready for signing and execution
|
|
145
|
-
*/
|
|
146
|
-
bitcoinAddress?: string;
|
|
147
|
-
/**
|
|
148
|
-
* For Bitcoin to smart chain swaps.
|
|
149
|
-
*
|
|
150
|
-
* Bitcoin public key used together with `bitcoinAddress` to request a pre-funded PSBT with populated input UTXOs
|
|
151
|
-
* ready for signing and execution
|
|
152
|
-
*/
|
|
153
|
-
bitcoinPublicKey?: string;
|
|
154
|
-
/**
|
|
155
|
-
* For Bitcoin to smart chain swaps.
|
|
156
|
-
*
|
|
157
|
-
* Bitcoin fee rate override used when building a pre-funded PSBT, otherwise the current economical fee rate is used.
|
|
158
|
-
*/
|
|
159
|
-
bitcoinFeeRate?: number;
|
|
160
|
-
|
|
161
|
-
/** Alternative smart-chain signer to use for claim, refund, or manual settlement transactions. */
|
|
162
|
-
signer?: string;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Output from swap status getter
|
|
167
|
-
*
|
|
168
|
-
* @category API
|
|
169
|
-
*/
|
|
170
|
-
export type ListSwapOutput = SwapOutputBase & {
|
|
171
|
-
/** Whether the swap reached a terminal state. */
|
|
172
|
-
isFinished: boolean;
|
|
173
|
-
/** Whether the swap finished successfully. */
|
|
174
|
-
isSuccess: boolean;
|
|
175
|
-
/** Whether the swap finished in a failed state. */
|
|
176
|
-
isFailed: boolean;
|
|
177
|
-
/** Whether the quote expired before completion. */
|
|
178
|
-
isExpired: boolean;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Output from swap status getter
|
|
183
|
-
*
|
|
184
|
-
* @category API
|
|
185
|
-
*/
|
|
186
|
-
export type GetSwapStatusOutput = ListSwapOutput & {
|
|
187
|
-
/** Current actionable instruction for the client, or `null` when no action is required. */
|
|
188
|
-
currentAction: SerializedAction<SwapExecutionAction> | null;
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* For Lightning to smart chain swaps.
|
|
192
|
-
*
|
|
193
|
-
* Whether the client should provide the Lightning secret pre-image to continue execution. Returned when the HTLC
|
|
194
|
-
* on the destination chain is created and is ready to be claimed by the user.
|
|
195
|
-
*/
|
|
196
|
-
requiresSecretReveal?: boolean;
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Escrow-specific data for escrow contract based swaps (all except the non-legacy Bitcoin to smart chain swaps)
|
|
200
|
-
*/
|
|
201
|
-
escrow?: {
|
|
202
|
-
/** Serialized escrow data. */
|
|
203
|
-
data: any,
|
|
204
|
-
/** A transaction which created the escrow, if the escrow is already created on-chain. */
|
|
205
|
-
initTxId?: string
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Input for listing swaps
|
|
211
|
-
*
|
|
212
|
-
* @category API
|
|
213
|
-
*/
|
|
214
|
-
export type ListSwapsInput = {
|
|
215
|
-
/** Smart-chain signer address used to filter swaps. */
|
|
216
|
-
signer: string;
|
|
217
|
-
/** Optional smart-chain identifier used to narrow the result set, e.g. SOLANA, STARKNET, CITREA */
|
|
218
|
-
chainId?: string;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Output from swap list endpoint
|
|
223
|
-
*
|
|
224
|
-
* @category API
|
|
225
|
-
*/
|
|
226
|
-
export type ListSwapsOutput = ListSwapOutput[];
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Input for listing pending swaps
|
|
230
|
-
*
|
|
231
|
-
* @category API
|
|
232
|
-
*/
|
|
233
|
-
export type ListPendingSwapsInput = ListSwapsInput;
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* Output from pending swap list endpoint
|
|
237
|
-
*
|
|
238
|
-
* @category API
|
|
239
|
-
*/
|
|
240
|
-
export type ListPendingSwapsOutput = ListSwapsOutput;
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Input for listing supported tokens
|
|
244
|
-
*
|
|
245
|
-
* @category API
|
|
246
|
-
*/
|
|
247
|
-
export type GetSupportedTokensInput = {
|
|
248
|
-
/** Whether to list source-side (`INPUT`) or destination-side (`OUTPUT`) tokens. */
|
|
249
|
-
side: "INPUT" | "OUTPUT";
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Output from supported token list endpoint
|
|
254
|
-
*
|
|
255
|
-
* @category API
|
|
256
|
-
*/
|
|
257
|
-
export type GetSupportedTokensOutput = ApiToken[];
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* Input for listing swap counter-tokens for a given token
|
|
261
|
-
*
|
|
262
|
-
* @category API
|
|
263
|
-
*/
|
|
264
|
-
export type GetSwapCounterTokensInput = {
|
|
265
|
-
/** Token identifier to find compatible counter-tokens for, e.g. BITCOIN-BTC, LIGHTNING-BTC or STARKNET-STRK */
|
|
266
|
-
token: string;
|
|
267
|
-
/** Whether the provided token should be treated as the input or output side of the swap. */
|
|
268
|
-
side: "INPUT" | "OUTPUT";
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* Output from swap counter-token list endpoint
|
|
273
|
-
*
|
|
274
|
-
* @category API
|
|
275
|
-
*/
|
|
276
|
-
export type GetSwapCounterTokensOutput = ApiToken[];
|
|
277
|
-
|
|
278
|
-
/**
|
|
279
|
-
* Input for querying swap limits between two tokens
|
|
280
|
-
*
|
|
281
|
-
* @category API
|
|
282
|
-
*/
|
|
283
|
-
export type GetSwapLimitsInput = {
|
|
284
|
-
/** Source token identifier, e.g. BITCOIN-BTC, LIGHTNING-BTC or STARKNET-STRK */
|
|
285
|
-
srcToken: string;
|
|
286
|
-
/** Destination token identifier, e.g. BITCOIN-BTC, LIGHTNING-BTC or STARKNET-STRK */
|
|
287
|
-
dstToken: string;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
/**
|
|
291
|
-
* Output from swap limits endpoint
|
|
292
|
-
*
|
|
293
|
-
* @category API
|
|
294
|
-
*/
|
|
295
|
-
export type GetSwapLimitsOutput = {
|
|
296
|
-
/** Limits expressed on the input side of the swap. */
|
|
297
|
-
input: {
|
|
298
|
-
/** Minimum supported input amount. */
|
|
299
|
-
min: ApiAmount;
|
|
300
|
-
/** Maximum supported input amount when bounded. */
|
|
301
|
-
max?: ApiAmount;
|
|
302
|
-
};
|
|
303
|
-
/** Limits expressed on the output side of the swap. */
|
|
304
|
-
output: {
|
|
305
|
-
/** Minimum supported output amount. */
|
|
306
|
-
min: ApiAmount;
|
|
307
|
-
/** Maximum supported output amount when bounded. */
|
|
308
|
-
max?: ApiAmount;
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
/**
|
|
313
|
-
* Input for parsing an address-like string supported by the SDK
|
|
314
|
-
*
|
|
315
|
-
* @category API
|
|
316
|
-
*/
|
|
317
|
-
export type ParseAddressInput = {
|
|
318
|
-
/** Address-like string to parse, such as a wallet address, lightning invoice, LNURL, or URI. */
|
|
319
|
-
address: string;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
/**
|
|
323
|
-
* Output from address parser endpoint
|
|
324
|
-
*
|
|
325
|
-
* @category API
|
|
326
|
-
*/
|
|
327
|
-
export type ParseAddressOutput = {
|
|
328
|
-
/** Canonical parsed address or recipient identifier. */
|
|
329
|
-
address: string;
|
|
330
|
-
/** Parsed address type, e.g. BITCOIN, LIGHTNING, SOLANA, STARKNET or CITREA */
|
|
331
|
-
type: string;
|
|
332
|
-
/** Parsed LNURL metadata when the input resolves to LNURL content. */
|
|
333
|
-
lnurl?: ApiLNURL;
|
|
334
|
-
/** Minimum supported amount advertised by the parsed target, when available. */
|
|
335
|
-
min?: ApiAmount;
|
|
336
|
-
/** Maximum supported amount advertised by the parsed target, when available. */
|
|
337
|
-
max?: ApiAmount;
|
|
338
|
-
/** Amount embedded directly in the parsed target, when present. */
|
|
339
|
-
amount?: ApiAmount;
|
|
340
|
-
};
|
|
341
|
-
|
|
342
|
-
/**
|
|
343
|
-
* Input for querying spendable wallet balance
|
|
344
|
-
*
|
|
345
|
-
* @category API
|
|
346
|
-
*/
|
|
347
|
-
export type GetSpendableBalanceInput = {
|
|
348
|
-
/** Wallet address to inspect. */
|
|
349
|
-
wallet: string;
|
|
350
|
-
/** Token identifier to get the balance for, e.g. BITCOIN-BTC, SOLANA-SOL or STARKNET-STRK */
|
|
351
|
-
token: string;
|
|
352
|
-
/**
|
|
353
|
-
* Target smart chain identifier when estimating spendable bitcoin balance. Automatically adjusts based on
|
|
354
|
-
* available swaps between Bitcoin and the provided chain
|
|
355
|
-
*/
|
|
356
|
-
targetChain?: string;
|
|
357
|
-
/**
|
|
358
|
-
* Whether gas-drop transaction size overhead should be included for Bitcoin to smart chain swaps.
|
|
359
|
-
*/
|
|
360
|
-
gasDrop?: boolean;
|
|
361
|
-
/**
|
|
362
|
-
* Manual fee-rate override used for spendable balance estimation.
|
|
363
|
-
*/
|
|
364
|
-
feeRate?: string;
|
|
365
|
-
/** Minimum Bitcoin fee rate to enforce during estimation. */
|
|
366
|
-
minBitcoinFeeRate?: number;
|
|
367
|
-
/**
|
|
368
|
-
* Multiplier applied to fetched economical network fee.
|
|
369
|
-
*/
|
|
370
|
-
feeMultiplier?: number;
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
/**
|
|
374
|
-
* Output from spendable balance endpoint
|
|
375
|
-
*
|
|
376
|
-
* @category API
|
|
377
|
-
*/
|
|
378
|
-
export type GetSpendableBalanceOutput = {
|
|
379
|
-
/** Spendable balance after deducting estimated swap execution costs. */
|
|
380
|
-
balance: ApiAmount;
|
|
381
|
-
/** Fee rate used during estimation. Only when estimating BTC balances on Bitcoin */
|
|
382
|
-
feeRate?: number;
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
* Input for submitting signed transactions
|
|
387
|
-
*
|
|
388
|
-
* @category API
|
|
389
|
-
*/
|
|
390
|
-
export type SubmitTransactionInput = {
|
|
391
|
-
/** Unique identifier of the swap the transactions belong to. */
|
|
392
|
-
swapId: string;
|
|
393
|
-
/** Serialized signed transactions to submit in execution order. */
|
|
394
|
-
signedTxs: string[];
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
/**
|
|
398
|
-
* Output from submitting transactions
|
|
399
|
-
*
|
|
400
|
-
* @category API
|
|
401
|
-
*/
|
|
402
|
-
export type SubmitTransactionOutput = {
|
|
403
|
-
/** Transaction hashes returned after successful submission. */
|
|
404
|
-
txHashes: string[];
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
/**
|
|
408
|
-
* Input for triggering an LNURL-withdraw based settlement for Lightning -> Smart chain swaps
|
|
409
|
-
*
|
|
410
|
-
* @category API
|
|
411
|
-
*/
|
|
412
|
-
export type SettleWithLnurlInput = {
|
|
413
|
-
/** Unique identifier of the Lightning to smart-chain swap to settle. */
|
|
414
|
-
swapId: string;
|
|
415
|
-
/** LNURL-withdraw link to use when the swap was not already created with one. */
|
|
416
|
-
lnurlWithdraw?: string;
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
/**
|
|
420
|
-
* Output for triggering an LNURL-withdraw based settlement for Lightning -> Smart chain swaps
|
|
421
|
-
*
|
|
422
|
-
* @category API
|
|
423
|
-
*/
|
|
424
|
-
export type SettleWithLnurlOutput = {
|
|
425
|
-
/** Payment hash of the Lightning payment paid by the LNURL-withdraw link, encoded as a hexadecimal string. */
|
|
426
|
-
paymentHash: string;
|
|
427
|
-
}
|
|
1
|
+
import {SwapExecutionStep} from "../types/SwapExecutionStep";
|
|
2
|
+
import {SerializedAction} from "./SerializedAction";
|
|
3
|
+
import {SwapExecutionAction} from "../types/SwapExecutionAction";
|
|
4
|
+
import {ApiAmount, ApiLNURL, ApiToken} from "./ApiTypes";
|
|
5
|
+
import {LNURLDecodedSuccessAction} from "../types/lnurl/LNURLPay";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Base serialized swap data returned by API endpoints that expose swap details.
|
|
9
|
+
*
|
|
10
|
+
* @category API
|
|
11
|
+
*/
|
|
12
|
+
export type SwapOutputBase = {
|
|
13
|
+
/** Unique identifier of the swap. */
|
|
14
|
+
swapId: string;
|
|
15
|
+
/** Swap type name, for example `FROM_BTC`, `TO_BTCLN`, or `FROM_BTCLN`. */
|
|
16
|
+
swapType: string;
|
|
17
|
+
|
|
18
|
+
/** Current swap state information. This varies for every swap type */
|
|
19
|
+
state: {
|
|
20
|
+
/** Numeric state representation of the state. */
|
|
21
|
+
number: number;
|
|
22
|
+
/** Human-readable state name. */
|
|
23
|
+
name: string;
|
|
24
|
+
/** Human-readable description of the current state. */
|
|
25
|
+
description: string;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/** Quote data captured when the swap was created. */
|
|
29
|
+
quote: {
|
|
30
|
+
/** Input source amount that will be paid by the user (including fees, but excluding source network fees). */
|
|
31
|
+
inputAmount: ApiAmount;
|
|
32
|
+
/** Output destination amount that will be paid out to the user. */
|
|
33
|
+
outputAmount: ApiAmount;
|
|
34
|
+
/** Fee breakdown included in the quote. */
|
|
35
|
+
fees: {
|
|
36
|
+
/** Swap service fee (charged in source token). */
|
|
37
|
+
swap: ApiAmount;
|
|
38
|
+
/** Swap fee to cover the transaction network fees on the destination side (charged in source token). */
|
|
39
|
+
networkOutput?: ApiAmount;
|
|
40
|
+
};
|
|
41
|
+
/** Quote expiration timestamp in milliseconds since Unix epoch. */
|
|
42
|
+
expiry: number;
|
|
43
|
+
/** Output address of the swap, the destination tokens will be sent here. */
|
|
44
|
+
outputAddress: string;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/** Swap creation timestamp in milliseconds since Unix epoch. */
|
|
48
|
+
createdAt: number;
|
|
49
|
+
|
|
50
|
+
/** Swap execution steps. */
|
|
51
|
+
steps: SwapExecutionStep[];
|
|
52
|
+
|
|
53
|
+
/** LNURL metadata attached to Lightning-based swaps when applicable. */
|
|
54
|
+
lnurl?: {
|
|
55
|
+
/** LNURL-withdraw link for Lightning to smart-chain flows. */
|
|
56
|
+
withdraw?: string;
|
|
57
|
+
/** LNURL-pay link for smart-chain to Lightning flows. */
|
|
58
|
+
pay?: string;
|
|
59
|
+
/** LNURL success action returned after a successful payment via LNURL-pay link, if specified in the LNURL. */
|
|
60
|
+
successAction?: LNURLDecodedSuccessAction;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Input for creating a new swap
|
|
66
|
+
*
|
|
67
|
+
* @category API
|
|
68
|
+
*/
|
|
69
|
+
export type CreateSwapInput = {
|
|
70
|
+
/** Input source token identifier, always in the format of <network>-<tiker>, e.g. `BITCOIN-BTC`, `LIGHTNING-BTC`, or `STARKNET-STRK`. */
|
|
71
|
+
srcToken: string;
|
|
72
|
+
/** Output destination token identifier, always in the format of <network>-<tiker>, e.g. `BITCOIN-BTC`, `LIGHTNING-BTC`, or `STARKNET-STRK`. */
|
|
73
|
+
dstToken: string;
|
|
74
|
+
/** Swap amount in base units */
|
|
75
|
+
amount: bigint;
|
|
76
|
+
/** Whether the provided amount represents the exact input or exact output side of the quote. */
|
|
77
|
+
amountType: "EXACT_IN" | "EXACT_OUT";
|
|
78
|
+
/** Source address for flows that require it, mainly smart-chain to Bitcoin or Lightning swaps. */
|
|
79
|
+
srcAddress?: string;
|
|
80
|
+
/** Destination address, invoice, or recipient identifier for the swap output. */
|
|
81
|
+
dstAddress: string;
|
|
82
|
+
/**
|
|
83
|
+
* Only for smart chain to Lighting/Bitcoin swaps.
|
|
84
|
+
*
|
|
85
|
+
* Optional gas-drop amount (additional native token) to receive on the destination smart chain, in base units.
|
|
86
|
+
*/
|
|
87
|
+
gasAmount?: bigint;
|
|
88
|
+
/**
|
|
89
|
+
* Only for Lightning to smart chain swaps.
|
|
90
|
+
*
|
|
91
|
+
* Optional custom swap payment hash encoded as a hexadecimal string, for when you want to generate the preimage
|
|
92
|
+
* and payment hash pair outside the API. When used, you need to provide the `secret` argument to the `getSwapStatus`
|
|
93
|
+
* endpoint when the swap HTLC is ready to be claimed (indicated by the `requiresSecretReveal` param in the
|
|
94
|
+
* `getSwapStatus` response)
|
|
95
|
+
*/
|
|
96
|
+
paymentHash?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Only for Lightning to smart chain swaps.
|
|
99
|
+
*
|
|
100
|
+
* Optional description to add to the generated Lightning network BOLT11 invoice.
|
|
101
|
+
*/
|
|
102
|
+
lightningInvoiceDescription?: string;
|
|
103
|
+
/**
|
|
104
|
+
* Only for Lightning to smart chain swaps.
|
|
105
|
+
*
|
|
106
|
+
* Optional description to add to the generated Lightning network BOLT11 invoice.
|
|
107
|
+
*/
|
|
108
|
+
lightningInvoiceDescriptionHash?: string;
|
|
109
|
+
/**
|
|
110
|
+
* Only for smart chain to Lightning swaps.
|
|
111
|
+
*
|
|
112
|
+
* Optional override for the HTLC timeout in seconds (default is 5 days), longer timeouts allow more lightning
|
|
113
|
+
* network hops to be considered when routing the destination lightning network payment, but might lead to longer
|
|
114
|
+
* funds lockup in case of non-cooperative LP.
|
|
115
|
+
*/
|
|
116
|
+
lightningPaymentHTLCTimeout?: number;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Output from create swap endpoint
|
|
121
|
+
*
|
|
122
|
+
* @category API
|
|
123
|
+
*/
|
|
124
|
+
export type CreateSwapOutput = SwapOutputBase;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Input for getting swap status
|
|
128
|
+
*
|
|
129
|
+
* @category API
|
|
130
|
+
*/
|
|
131
|
+
export type GetSwapStatusInput = {
|
|
132
|
+
/** Unique identifier of the swap to query. */
|
|
133
|
+
swapId: string;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Swap secret pre-image revealed after the destination chain HTLC is created for Lightning to smart chain swaps,
|
|
137
|
+
* encoded as a hexadecimal string.
|
|
138
|
+
*/
|
|
139
|
+
secret?: string;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* For Bitcoin to smart chain swaps.
|
|
143
|
+
*
|
|
144
|
+
* Bitcoin address used to request a pre-funded PSBT with populated input UTXOs ready for signing and execution
|
|
145
|
+
*/
|
|
146
|
+
bitcoinAddress?: string;
|
|
147
|
+
/**
|
|
148
|
+
* For Bitcoin to smart chain swaps.
|
|
149
|
+
*
|
|
150
|
+
* Bitcoin public key used together with `bitcoinAddress` to request a pre-funded PSBT with populated input UTXOs
|
|
151
|
+
* ready for signing and execution
|
|
152
|
+
*/
|
|
153
|
+
bitcoinPublicKey?: string;
|
|
154
|
+
/**
|
|
155
|
+
* For Bitcoin to smart chain swaps.
|
|
156
|
+
*
|
|
157
|
+
* Bitcoin fee rate override used when building a pre-funded PSBT, otherwise the current economical fee rate is used.
|
|
158
|
+
*/
|
|
159
|
+
bitcoinFeeRate?: number;
|
|
160
|
+
|
|
161
|
+
/** Alternative smart-chain signer to use for claim, refund, or manual settlement transactions. */
|
|
162
|
+
signer?: string;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Output from swap status getter
|
|
167
|
+
*
|
|
168
|
+
* @category API
|
|
169
|
+
*/
|
|
170
|
+
export type ListSwapOutput = SwapOutputBase & {
|
|
171
|
+
/** Whether the swap reached a terminal state. */
|
|
172
|
+
isFinished: boolean;
|
|
173
|
+
/** Whether the swap finished successfully. */
|
|
174
|
+
isSuccess: boolean;
|
|
175
|
+
/** Whether the swap finished in a failed state. */
|
|
176
|
+
isFailed: boolean;
|
|
177
|
+
/** Whether the quote expired before completion. */
|
|
178
|
+
isExpired: boolean;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Output from swap status getter
|
|
183
|
+
*
|
|
184
|
+
* @category API
|
|
185
|
+
*/
|
|
186
|
+
export type GetSwapStatusOutput = ListSwapOutput & {
|
|
187
|
+
/** Current actionable instruction for the client, or `null` when no action is required. */
|
|
188
|
+
currentAction: SerializedAction<SwapExecutionAction> | null;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* For Lightning to smart chain swaps.
|
|
192
|
+
*
|
|
193
|
+
* Whether the client should provide the Lightning secret pre-image to continue execution. Returned when the HTLC
|
|
194
|
+
* on the destination chain is created and is ready to be claimed by the user.
|
|
195
|
+
*/
|
|
196
|
+
requiresSecretReveal?: boolean;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Escrow-specific data for escrow contract based swaps (all except the non-legacy Bitcoin to smart chain swaps)
|
|
200
|
+
*/
|
|
201
|
+
escrow?: {
|
|
202
|
+
/** Serialized escrow data. */
|
|
203
|
+
data: any,
|
|
204
|
+
/** A transaction which created the escrow, if the escrow is already created on-chain. */
|
|
205
|
+
initTxId?: string
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Input for listing swaps
|
|
211
|
+
*
|
|
212
|
+
* @category API
|
|
213
|
+
*/
|
|
214
|
+
export type ListSwapsInput = {
|
|
215
|
+
/** Smart-chain signer address used to filter swaps. */
|
|
216
|
+
signer: string;
|
|
217
|
+
/** Optional smart-chain identifier used to narrow the result set, e.g. SOLANA, STARKNET, CITREA */
|
|
218
|
+
chainId?: string;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Output from swap list endpoint
|
|
223
|
+
*
|
|
224
|
+
* @category API
|
|
225
|
+
*/
|
|
226
|
+
export type ListSwapsOutput = ListSwapOutput[];
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Input for listing pending swaps
|
|
230
|
+
*
|
|
231
|
+
* @category API
|
|
232
|
+
*/
|
|
233
|
+
export type ListPendingSwapsInput = ListSwapsInput;
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Output from pending swap list endpoint
|
|
237
|
+
*
|
|
238
|
+
* @category API
|
|
239
|
+
*/
|
|
240
|
+
export type ListPendingSwapsOutput = ListSwapsOutput;
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Input for listing supported tokens
|
|
244
|
+
*
|
|
245
|
+
* @category API
|
|
246
|
+
*/
|
|
247
|
+
export type GetSupportedTokensInput = {
|
|
248
|
+
/** Whether to list source-side (`INPUT`) or destination-side (`OUTPUT`) tokens. */
|
|
249
|
+
side: "INPUT" | "OUTPUT";
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Output from supported token list endpoint
|
|
254
|
+
*
|
|
255
|
+
* @category API
|
|
256
|
+
*/
|
|
257
|
+
export type GetSupportedTokensOutput = ApiToken[];
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Input for listing swap counter-tokens for a given token
|
|
261
|
+
*
|
|
262
|
+
* @category API
|
|
263
|
+
*/
|
|
264
|
+
export type GetSwapCounterTokensInput = {
|
|
265
|
+
/** Token identifier to find compatible counter-tokens for, e.g. BITCOIN-BTC, LIGHTNING-BTC or STARKNET-STRK */
|
|
266
|
+
token: string;
|
|
267
|
+
/** Whether the provided token should be treated as the input or output side of the swap. */
|
|
268
|
+
side: "INPUT" | "OUTPUT";
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Output from swap counter-token list endpoint
|
|
273
|
+
*
|
|
274
|
+
* @category API
|
|
275
|
+
*/
|
|
276
|
+
export type GetSwapCounterTokensOutput = ApiToken[];
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Input for querying swap limits between two tokens
|
|
280
|
+
*
|
|
281
|
+
* @category API
|
|
282
|
+
*/
|
|
283
|
+
export type GetSwapLimitsInput = {
|
|
284
|
+
/** Source token identifier, e.g. BITCOIN-BTC, LIGHTNING-BTC or STARKNET-STRK */
|
|
285
|
+
srcToken: string;
|
|
286
|
+
/** Destination token identifier, e.g. BITCOIN-BTC, LIGHTNING-BTC or STARKNET-STRK */
|
|
287
|
+
dstToken: string;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Output from swap limits endpoint
|
|
292
|
+
*
|
|
293
|
+
* @category API
|
|
294
|
+
*/
|
|
295
|
+
export type GetSwapLimitsOutput = {
|
|
296
|
+
/** Limits expressed on the input side of the swap. */
|
|
297
|
+
input: {
|
|
298
|
+
/** Minimum supported input amount. */
|
|
299
|
+
min: ApiAmount;
|
|
300
|
+
/** Maximum supported input amount when bounded. */
|
|
301
|
+
max?: ApiAmount;
|
|
302
|
+
};
|
|
303
|
+
/** Limits expressed on the output side of the swap. */
|
|
304
|
+
output: {
|
|
305
|
+
/** Minimum supported output amount. */
|
|
306
|
+
min: ApiAmount;
|
|
307
|
+
/** Maximum supported output amount when bounded. */
|
|
308
|
+
max?: ApiAmount;
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Input for parsing an address-like string supported by the SDK
|
|
314
|
+
*
|
|
315
|
+
* @category API
|
|
316
|
+
*/
|
|
317
|
+
export type ParseAddressInput = {
|
|
318
|
+
/** Address-like string to parse, such as a wallet address, lightning invoice, LNURL, or URI. */
|
|
319
|
+
address: string;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Output from address parser endpoint
|
|
324
|
+
*
|
|
325
|
+
* @category API
|
|
326
|
+
*/
|
|
327
|
+
export type ParseAddressOutput = {
|
|
328
|
+
/** Canonical parsed address or recipient identifier. */
|
|
329
|
+
address: string;
|
|
330
|
+
/** Parsed address type, e.g. BITCOIN, LIGHTNING, SOLANA, STARKNET or CITREA */
|
|
331
|
+
type: string;
|
|
332
|
+
/** Parsed LNURL metadata when the input resolves to LNURL content. */
|
|
333
|
+
lnurl?: ApiLNURL;
|
|
334
|
+
/** Minimum supported amount advertised by the parsed target, when available. */
|
|
335
|
+
min?: ApiAmount;
|
|
336
|
+
/** Maximum supported amount advertised by the parsed target, when available. */
|
|
337
|
+
max?: ApiAmount;
|
|
338
|
+
/** Amount embedded directly in the parsed target, when present. */
|
|
339
|
+
amount?: ApiAmount;
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Input for querying spendable wallet balance
|
|
344
|
+
*
|
|
345
|
+
* @category API
|
|
346
|
+
*/
|
|
347
|
+
export type GetSpendableBalanceInput = {
|
|
348
|
+
/** Wallet address to inspect. */
|
|
349
|
+
wallet: string;
|
|
350
|
+
/** Token identifier to get the balance for, e.g. BITCOIN-BTC, SOLANA-SOL or STARKNET-STRK */
|
|
351
|
+
token: string;
|
|
352
|
+
/**
|
|
353
|
+
* Target smart chain identifier when estimating spendable bitcoin balance. Automatically adjusts based on
|
|
354
|
+
* available swaps between Bitcoin and the provided chain
|
|
355
|
+
*/
|
|
356
|
+
targetChain?: string;
|
|
357
|
+
/**
|
|
358
|
+
* Whether gas-drop transaction size overhead should be included for Bitcoin to smart chain swaps.
|
|
359
|
+
*/
|
|
360
|
+
gasDrop?: boolean;
|
|
361
|
+
/**
|
|
362
|
+
* Manual fee-rate override used for spendable balance estimation.
|
|
363
|
+
*/
|
|
364
|
+
feeRate?: string;
|
|
365
|
+
/** Minimum Bitcoin fee rate to enforce during estimation. */
|
|
366
|
+
minBitcoinFeeRate?: number;
|
|
367
|
+
/**
|
|
368
|
+
* Multiplier applied to fetched economical network fee.
|
|
369
|
+
*/
|
|
370
|
+
feeMultiplier?: number;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Output from spendable balance endpoint
|
|
375
|
+
*
|
|
376
|
+
* @category API
|
|
377
|
+
*/
|
|
378
|
+
export type GetSpendableBalanceOutput = {
|
|
379
|
+
/** Spendable balance after deducting estimated swap execution costs. */
|
|
380
|
+
balance: ApiAmount;
|
|
381
|
+
/** Fee rate used during estimation. Only when estimating BTC balances on Bitcoin */
|
|
382
|
+
feeRate?: number;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Input for submitting signed transactions
|
|
387
|
+
*
|
|
388
|
+
* @category API
|
|
389
|
+
*/
|
|
390
|
+
export type SubmitTransactionInput = {
|
|
391
|
+
/** Unique identifier of the swap the transactions belong to. */
|
|
392
|
+
swapId: string;
|
|
393
|
+
/** Serialized signed transactions to submit in execution order. */
|
|
394
|
+
signedTxs: string[];
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Output from submitting transactions
|
|
399
|
+
*
|
|
400
|
+
* @category API
|
|
401
|
+
*/
|
|
402
|
+
export type SubmitTransactionOutput = {
|
|
403
|
+
/** Transaction hashes returned after successful submission. */
|
|
404
|
+
txHashes: string[];
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Input for triggering an LNURL-withdraw based settlement for Lightning -> Smart chain swaps
|
|
409
|
+
*
|
|
410
|
+
* @category API
|
|
411
|
+
*/
|
|
412
|
+
export type SettleWithLnurlInput = {
|
|
413
|
+
/** Unique identifier of the Lightning to smart-chain swap to settle. */
|
|
414
|
+
swapId: string;
|
|
415
|
+
/** LNURL-withdraw link to use when the swap was not already created with one. */
|
|
416
|
+
lnurlWithdraw?: string;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Output for triggering an LNURL-withdraw based settlement for Lightning -> Smart chain swaps
|
|
421
|
+
*
|
|
422
|
+
* @category API
|
|
423
|
+
*/
|
|
424
|
+
export type SettleWithLnurlOutput = {
|
|
425
|
+
/** Payment hash of the Lightning payment paid by the LNURL-withdraw link, encoded as a hexadecimal string. */
|
|
426
|
+
paymentHash: string;
|
|
427
|
+
}
|