@atomiqlabs/sdk 8.9.1 → 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 -770
- package/dist/swapper/Swapper.js +1749 -1758
- 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 -2570
- 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/utils/RetryUtils.ts
CHANGED
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
import {timeoutPromise} from "./TimeoutUtils";
|
|
2
|
-
import {getLogger} from "./Logger";
|
|
3
|
-
|
|
4
|
-
const logger = getLogger("RetryUtils: ");
|
|
5
|
-
|
|
6
|
-
type Constructor<T = any> = new (...args: any[]) => T;
|
|
7
|
-
|
|
8
|
-
function isConstructor(fn: any): fn is Constructor {
|
|
9
|
-
return (
|
|
10
|
-
typeof fn === 'function' &&
|
|
11
|
-
fn.prototype != null &&
|
|
12
|
-
fn.prototype.constructor === fn
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function isConstructorArray(fnArr: any): fnArr is Constructor[] {
|
|
17
|
-
return Array.isArray(fnArr) && fnArr.every(isConstructor);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Checks whether the passed error is allowed to pass through
|
|
22
|
-
*
|
|
23
|
-
* @param e Error in question
|
|
24
|
-
* @param errorAllowed Allowed errors as defined as a callback function, specific error type, or an array of error types
|
|
25
|
-
*/
|
|
26
|
-
function checkError(e: any, errorAllowed: ((e: any) => boolean) | Constructor<Error> | Constructor<Error>[]) {
|
|
27
|
-
if (isConstructorArray(errorAllowed)) return errorAllowed.find(error => e instanceof error) != null;
|
|
28
|
-
if (isConstructor(errorAllowed)) return e instanceof errorAllowed;
|
|
29
|
-
return errorAllowed(e);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Runs the passed function multiple times if it fails
|
|
34
|
-
*
|
|
35
|
-
* @param func A callback for executing the action
|
|
36
|
-
* @param func.retryCount Count of the current retry, starting from 0 for original request and increasing
|
|
37
|
-
* @param retryPolicy Retry policy
|
|
38
|
-
* @param retryPolicy.maxRetries How many retries to attempt in total
|
|
39
|
-
* @param retryPolicy.delay How long should the delay be
|
|
40
|
-
* @param retryPolicy.exponential Whether to use exponentially increasing delays
|
|
41
|
-
* @param errorAllowed A callback for determining whether a given error is allowed, and we should therefore not retry
|
|
42
|
-
* @param abortSignal
|
|
43
|
-
* @param failureLogLevel
|
|
44
|
-
* @returns Result of the action executing callback
|
|
45
|
-
* @category Utilities
|
|
46
|
-
*/
|
|
47
|
-
export async function tryWithRetries<T>(
|
|
48
|
-
func: (retryCount: number) => Promise<T>,
|
|
49
|
-
retryPolicy?: {
|
|
50
|
-
maxRetries?: number, delay?: number, exponential?: boolean
|
|
51
|
-
},
|
|
52
|
-
errorAllowed?: ((e: any) => boolean) | Constructor<Error> | Constructor<Error>[],
|
|
53
|
-
abortSignal?: AbortSignal,
|
|
54
|
-
failureLogLevel: "debug" | "info" | "warn" | "error" = "warn"
|
|
55
|
-
): Promise<T> {
|
|
56
|
-
retryPolicy = retryPolicy || {};
|
|
57
|
-
retryPolicy.maxRetries = retryPolicy.maxRetries || 5;
|
|
58
|
-
retryPolicy.delay = retryPolicy.delay || 500;
|
|
59
|
-
retryPolicy.exponential = retryPolicy.exponential == null ? true : retryPolicy.exponential;
|
|
60
|
-
|
|
61
|
-
let err = null;
|
|
62
|
-
|
|
63
|
-
for (let i = 0; i < retryPolicy.maxRetries; i++) {
|
|
64
|
-
try {
|
|
65
|
-
return await func(i);
|
|
66
|
-
} catch (e) {
|
|
67
|
-
if (errorAllowed != null && checkError(e, errorAllowed)) throw e;
|
|
68
|
-
err = e;
|
|
69
|
-
logger[failureLogLevel]("tryWithRetries(): Error on try number: " + i, e);
|
|
70
|
-
}
|
|
71
|
-
if (abortSignal != null && abortSignal.aborted) throw (abortSignal.reason || new Error("Aborted"));
|
|
72
|
-
if (i !== retryPolicy.maxRetries - 1) {
|
|
73
|
-
await timeoutPromise(retryPolicy.exponential ? retryPolicy.delay * Math.pow(2, i) : retryPolicy.delay, abortSignal);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
throw err;
|
|
78
|
-
}
|
|
1
|
+
import {timeoutPromise} from "./TimeoutUtils";
|
|
2
|
+
import {getLogger} from "./Logger";
|
|
3
|
+
|
|
4
|
+
const logger = getLogger("RetryUtils: ");
|
|
5
|
+
|
|
6
|
+
type Constructor<T = any> = new (...args: any[]) => T;
|
|
7
|
+
|
|
8
|
+
function isConstructor(fn: any): fn is Constructor {
|
|
9
|
+
return (
|
|
10
|
+
typeof fn === 'function' &&
|
|
11
|
+
fn.prototype != null &&
|
|
12
|
+
fn.prototype.constructor === fn
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function isConstructorArray(fnArr: any): fnArr is Constructor[] {
|
|
17
|
+
return Array.isArray(fnArr) && fnArr.every(isConstructor);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Checks whether the passed error is allowed to pass through
|
|
22
|
+
*
|
|
23
|
+
* @param e Error in question
|
|
24
|
+
* @param errorAllowed Allowed errors as defined as a callback function, specific error type, or an array of error types
|
|
25
|
+
*/
|
|
26
|
+
function checkError(e: any, errorAllowed: ((e: any) => boolean) | Constructor<Error> | Constructor<Error>[]) {
|
|
27
|
+
if (isConstructorArray(errorAllowed)) return errorAllowed.find(error => e instanceof error) != null;
|
|
28
|
+
if (isConstructor(errorAllowed)) return e instanceof errorAllowed;
|
|
29
|
+
return errorAllowed(e);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Runs the passed function multiple times if it fails
|
|
34
|
+
*
|
|
35
|
+
* @param func A callback for executing the action
|
|
36
|
+
* @param func.retryCount Count of the current retry, starting from 0 for original request and increasing
|
|
37
|
+
* @param retryPolicy Retry policy
|
|
38
|
+
* @param retryPolicy.maxRetries How many retries to attempt in total
|
|
39
|
+
* @param retryPolicy.delay How long should the delay be
|
|
40
|
+
* @param retryPolicy.exponential Whether to use exponentially increasing delays
|
|
41
|
+
* @param errorAllowed A callback for determining whether a given error is allowed, and we should therefore not retry
|
|
42
|
+
* @param abortSignal
|
|
43
|
+
* @param failureLogLevel
|
|
44
|
+
* @returns Result of the action executing callback
|
|
45
|
+
* @category Utilities
|
|
46
|
+
*/
|
|
47
|
+
export async function tryWithRetries<T>(
|
|
48
|
+
func: (retryCount: number) => Promise<T>,
|
|
49
|
+
retryPolicy?: {
|
|
50
|
+
maxRetries?: number, delay?: number, exponential?: boolean
|
|
51
|
+
},
|
|
52
|
+
errorAllowed?: ((e: any) => boolean) | Constructor<Error> | Constructor<Error>[],
|
|
53
|
+
abortSignal?: AbortSignal,
|
|
54
|
+
failureLogLevel: "debug" | "info" | "warn" | "error" = "warn"
|
|
55
|
+
): Promise<T> {
|
|
56
|
+
retryPolicy = retryPolicy || {};
|
|
57
|
+
retryPolicy.maxRetries = retryPolicy.maxRetries || 5;
|
|
58
|
+
retryPolicy.delay = retryPolicy.delay || 500;
|
|
59
|
+
retryPolicy.exponential = retryPolicy.exponential == null ? true : retryPolicy.exponential;
|
|
60
|
+
|
|
61
|
+
let err = null;
|
|
62
|
+
|
|
63
|
+
for (let i = 0; i < retryPolicy.maxRetries; i++) {
|
|
64
|
+
try {
|
|
65
|
+
return await func(i);
|
|
66
|
+
} catch (e) {
|
|
67
|
+
if (errorAllowed != null && checkError(e, errorAllowed)) throw e;
|
|
68
|
+
err = e;
|
|
69
|
+
logger[failureLogLevel]("tryWithRetries(): Error on try number: " + i, e);
|
|
70
|
+
}
|
|
71
|
+
if (abortSignal != null && abortSignal.aborted) throw (abortSignal.reason || new Error("Aborted"));
|
|
72
|
+
if (i !== retryPolicy.maxRetries - 1) {
|
|
73
|
+
await timeoutPromise(retryPolicy.exponential ? retryPolicy.delay * Math.pow(2, i) : retryPolicy.delay, abortSignal);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
package/src/utils/SwapUtils.ts
CHANGED
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
import {ChainType} from "@atomiqlabs/base";
|
|
2
|
-
import {SwapType} from "../enums/SwapType";
|
|
3
|
-
import {SupportsSwapType} from "../swapper/Swapper";
|
|
4
|
-
import {SpvFromBTCSwap} from "../swaps/spv_swaps/SpvFromBTCSwap";
|
|
5
|
-
import {FromBTCSwap} from "../swaps/escrow_swaps/frombtc/onchain/FromBTCSwap";
|
|
6
|
-
import {FromBTCLNSwap} from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap";
|
|
7
|
-
import {ToBTCSwap} from "../swaps/escrow_swaps/tobtc/onchain/ToBTCSwap";
|
|
8
|
-
import {FromBTCLNAutoSwap} from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap";
|
|
9
|
-
import {ToBTCLNSwap} from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap";
|
|
10
|
-
import {OnchainForGasSwap} from "../swaps/trusted/onchain/OnchainForGasSwap";
|
|
11
|
-
import {LnForGasSwap} from "../swaps/trusted/ln/LnForGasSwap";
|
|
12
|
-
import {ISwap} from "../swaps/ISwap";
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Type mapping from SwapType enum to specific swap class implementations, it is important
|
|
16
|
-
* to pass the chain type generic, since different chains support different swap protocols
|
|
17
|
-
* for some directions.
|
|
18
|
-
*
|
|
19
|
-
* @category Utilities
|
|
20
|
-
*/
|
|
21
|
-
export type SwapTypeMapping<T extends ChainType> = {
|
|
22
|
-
[SwapType.FROM_BTC]: SupportsSwapType<T, SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T> : FromBTCSwap<T>,
|
|
23
|
-
[SwapType.FROM_BTCLN]: SupportsSwapType<T, SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T> : FromBTCLNSwap<T>,
|
|
24
|
-
[SwapType.TO_BTC]: ToBTCSwap<T>,
|
|
25
|
-
[SwapType.TO_BTCLN]: ToBTCLNSwap<T>,
|
|
26
|
-
[SwapType.TRUSTED_FROM_BTC]: OnchainForGasSwap<T>,
|
|
27
|
-
[SwapType.TRUSTED_FROM_BTCLN]: LnForGasSwap<T>,
|
|
28
|
-
[SwapType.SPV_VAULT_FROM_BTC]: SpvFromBTCSwap<T>,
|
|
29
|
-
[SwapType.FROM_BTCLN_AUTO]: FromBTCLNAutoSwap<T>
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Type guard to check if a swap is of a specific swap type
|
|
34
|
-
*
|
|
35
|
-
* @category Utilities
|
|
36
|
-
*/
|
|
37
|
-
export function isSwapType<T extends ChainType, S extends SwapType>(swap: ISwap<T>, swapType: S): swap is SwapTypeMapping<T>[S] {
|
|
38
|
-
if(swap==null) return false;
|
|
39
|
-
if(swap.getType()===SwapType.SPV_VAULT_FROM_BTC && swapType===SwapType.FROM_BTC) return true;
|
|
40
|
-
if(swap.getType()===SwapType.FROM_BTCLN_AUTO && swapType===SwapType.FROM_BTCLN) return true;
|
|
41
|
-
return swap.getType()===swapType;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Helper information about various swap protocol and their features:
|
|
46
|
-
* - `requiresInputWallet`: Whether a swap requires a connected wallet on the input chain able to sign
|
|
47
|
-
* arbitrary transaction
|
|
48
|
-
* - `requiresOutputWallet`: Whether a swap requires a connected wallet on the output chain able to sign
|
|
49
|
-
* arbitrary transactions
|
|
50
|
-
* - `supportsGasDrop`: Whether a swap supports the "gas drop" feature, allowing to user to receive a small
|
|
51
|
-
* amount of native token as part of the swap when swapping to smart chains
|
|
52
|
-
*
|
|
53
|
-
* @category Core
|
|
54
|
-
*/
|
|
55
|
-
export const SwapProtocolInfo = {
|
|
56
|
-
[SwapType.TO_BTC]: {
|
|
57
|
-
requiresInputWallet: true,
|
|
58
|
-
requiresOutputWallet: false,
|
|
59
|
-
supportsGasDrop: false
|
|
60
|
-
},
|
|
61
|
-
[SwapType.TO_BTCLN]: {
|
|
62
|
-
requiresInputWallet: true,
|
|
63
|
-
requiresOutputWallet: false,
|
|
64
|
-
supportsGasDrop: false
|
|
65
|
-
},
|
|
66
|
-
[SwapType.FROM_BTC]: {
|
|
67
|
-
requiresInputWallet: false,
|
|
68
|
-
requiresOutputWallet: true,
|
|
69
|
-
supportsGasDrop: false
|
|
70
|
-
},
|
|
71
|
-
[SwapType.FROM_BTCLN]: {
|
|
72
|
-
requiresInputWallet: false,
|
|
73
|
-
requiresOutputWallet: true,
|
|
74
|
-
supportsGasDrop: false
|
|
75
|
-
},
|
|
76
|
-
[SwapType.SPV_VAULT_FROM_BTC]: {
|
|
77
|
-
requiresInputWallet: true,
|
|
78
|
-
requiresOutputWallet: false,
|
|
79
|
-
supportsGasDrop: true
|
|
80
|
-
},
|
|
81
|
-
[SwapType.FROM_BTCLN_AUTO]: {
|
|
82
|
-
requiresInputWallet: false,
|
|
83
|
-
requiresOutputWallet: false,
|
|
84
|
-
supportsGasDrop: true
|
|
85
|
-
},
|
|
86
|
-
[SwapType.TRUSTED_FROM_BTC]: {
|
|
87
|
-
requiresInputWallet: false,
|
|
88
|
-
requiresOutputWallet: false,
|
|
89
|
-
supportsGasDrop: false
|
|
90
|
-
},
|
|
91
|
-
[SwapType.TRUSTED_FROM_BTCLN]: {
|
|
92
|
-
requiresInputWallet: false,
|
|
93
|
-
requiresOutputWallet: false,
|
|
94
|
-
supportsGasDrop: false
|
|
95
|
-
}
|
|
96
|
-
} as const satisfies Record<SwapType, {
|
|
97
|
-
requiresInputWallet: boolean,
|
|
98
|
-
requiresOutputWallet: boolean,
|
|
99
|
-
supportsGasDrop: boolean
|
|
1
|
+
import {ChainType} from "@atomiqlabs/base";
|
|
2
|
+
import {SwapType} from "../enums/SwapType";
|
|
3
|
+
import {SupportsSwapType} from "../swapper/Swapper";
|
|
4
|
+
import {SpvFromBTCSwap} from "../swaps/spv_swaps/SpvFromBTCSwap";
|
|
5
|
+
import {FromBTCSwap} from "../swaps/escrow_swaps/frombtc/onchain/FromBTCSwap";
|
|
6
|
+
import {FromBTCLNSwap} from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap";
|
|
7
|
+
import {ToBTCSwap} from "../swaps/escrow_swaps/tobtc/onchain/ToBTCSwap";
|
|
8
|
+
import {FromBTCLNAutoSwap} from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap";
|
|
9
|
+
import {ToBTCLNSwap} from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap";
|
|
10
|
+
import {OnchainForGasSwap} from "../swaps/trusted/onchain/OnchainForGasSwap";
|
|
11
|
+
import {LnForGasSwap} from "../swaps/trusted/ln/LnForGasSwap";
|
|
12
|
+
import {ISwap} from "../swaps/ISwap";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Type mapping from SwapType enum to specific swap class implementations, it is important
|
|
16
|
+
* to pass the chain type generic, since different chains support different swap protocols
|
|
17
|
+
* for some directions.
|
|
18
|
+
*
|
|
19
|
+
* @category Utilities
|
|
20
|
+
*/
|
|
21
|
+
export type SwapTypeMapping<T extends ChainType> = {
|
|
22
|
+
[SwapType.FROM_BTC]: SupportsSwapType<T, SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T> : FromBTCSwap<T>,
|
|
23
|
+
[SwapType.FROM_BTCLN]: SupportsSwapType<T, SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T> : FromBTCLNSwap<T>,
|
|
24
|
+
[SwapType.TO_BTC]: ToBTCSwap<T>,
|
|
25
|
+
[SwapType.TO_BTCLN]: ToBTCLNSwap<T>,
|
|
26
|
+
[SwapType.TRUSTED_FROM_BTC]: OnchainForGasSwap<T>,
|
|
27
|
+
[SwapType.TRUSTED_FROM_BTCLN]: LnForGasSwap<T>,
|
|
28
|
+
[SwapType.SPV_VAULT_FROM_BTC]: SpvFromBTCSwap<T>,
|
|
29
|
+
[SwapType.FROM_BTCLN_AUTO]: FromBTCLNAutoSwap<T>
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Type guard to check if a swap is of a specific swap type
|
|
34
|
+
*
|
|
35
|
+
* @category Utilities
|
|
36
|
+
*/
|
|
37
|
+
export function isSwapType<T extends ChainType, S extends SwapType>(swap: ISwap<T>, swapType: S): swap is SwapTypeMapping<T>[S] {
|
|
38
|
+
if(swap==null) return false;
|
|
39
|
+
if(swap.getType()===SwapType.SPV_VAULT_FROM_BTC && swapType===SwapType.FROM_BTC) return true;
|
|
40
|
+
if(swap.getType()===SwapType.FROM_BTCLN_AUTO && swapType===SwapType.FROM_BTCLN) return true;
|
|
41
|
+
return swap.getType()===swapType;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Helper information about various swap protocol and their features:
|
|
46
|
+
* - `requiresInputWallet`: Whether a swap requires a connected wallet on the input chain able to sign
|
|
47
|
+
* arbitrary transaction
|
|
48
|
+
* - `requiresOutputWallet`: Whether a swap requires a connected wallet on the output chain able to sign
|
|
49
|
+
* arbitrary transactions
|
|
50
|
+
* - `supportsGasDrop`: Whether a swap supports the "gas drop" feature, allowing to user to receive a small
|
|
51
|
+
* amount of native token as part of the swap when swapping to smart chains
|
|
52
|
+
*
|
|
53
|
+
* @category Core
|
|
54
|
+
*/
|
|
55
|
+
export const SwapProtocolInfo = {
|
|
56
|
+
[SwapType.TO_BTC]: {
|
|
57
|
+
requiresInputWallet: true,
|
|
58
|
+
requiresOutputWallet: false,
|
|
59
|
+
supportsGasDrop: false
|
|
60
|
+
},
|
|
61
|
+
[SwapType.TO_BTCLN]: {
|
|
62
|
+
requiresInputWallet: true,
|
|
63
|
+
requiresOutputWallet: false,
|
|
64
|
+
supportsGasDrop: false
|
|
65
|
+
},
|
|
66
|
+
[SwapType.FROM_BTC]: {
|
|
67
|
+
requiresInputWallet: false,
|
|
68
|
+
requiresOutputWallet: true,
|
|
69
|
+
supportsGasDrop: false
|
|
70
|
+
},
|
|
71
|
+
[SwapType.FROM_BTCLN]: {
|
|
72
|
+
requiresInputWallet: false,
|
|
73
|
+
requiresOutputWallet: true,
|
|
74
|
+
supportsGasDrop: false
|
|
75
|
+
},
|
|
76
|
+
[SwapType.SPV_VAULT_FROM_BTC]: {
|
|
77
|
+
requiresInputWallet: true,
|
|
78
|
+
requiresOutputWallet: false,
|
|
79
|
+
supportsGasDrop: true
|
|
80
|
+
},
|
|
81
|
+
[SwapType.FROM_BTCLN_AUTO]: {
|
|
82
|
+
requiresInputWallet: false,
|
|
83
|
+
requiresOutputWallet: false,
|
|
84
|
+
supportsGasDrop: true
|
|
85
|
+
},
|
|
86
|
+
[SwapType.TRUSTED_FROM_BTC]: {
|
|
87
|
+
requiresInputWallet: false,
|
|
88
|
+
requiresOutputWallet: false,
|
|
89
|
+
supportsGasDrop: false
|
|
90
|
+
},
|
|
91
|
+
[SwapType.TRUSTED_FROM_BTCLN]: {
|
|
92
|
+
requiresInputWallet: false,
|
|
93
|
+
requiresOutputWallet: false,
|
|
94
|
+
supportsGasDrop: false
|
|
95
|
+
}
|
|
96
|
+
} as const satisfies Record<SwapType, {
|
|
97
|
+
requiresInputWallet: boolean,
|
|
98
|
+
requiresOutputWallet: boolean,
|
|
99
|
+
supportsGasDrop: boolean
|
|
100
100
|
}>;
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns a promise that resolves after given amount seconds
|
|
3
|
-
*
|
|
4
|
-
* @param timeout how many milliseconds to wait for
|
|
5
|
-
* @param abortSignal
|
|
6
|
-
* @category Utilities
|
|
7
|
-
*/
|
|
8
|
-
export function timeoutPromise(timeout: number, abortSignal?: AbortSignal): Promise<void> {
|
|
9
|
-
return new Promise<void>((resolve, reject) => {
|
|
10
|
-
if (abortSignal != null && abortSignal.aborted) {
|
|
11
|
-
reject(abortSignal.reason);
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
let abortSignalListener: () => void;
|
|
16
|
-
let timeoutHandle: any | null = setTimeout(() => {
|
|
17
|
-
if (abortSignalListener != null && abortSignal != null) abortSignal.removeEventListener("abort", abortSignalListener);
|
|
18
|
-
resolve();
|
|
19
|
-
}, timeout);
|
|
20
|
-
|
|
21
|
-
if (abortSignal != null) {
|
|
22
|
-
abortSignal.addEventListener("abort", abortSignalListener = () => {
|
|
23
|
-
if (timeoutHandle != null) clearTimeout(timeoutHandle);
|
|
24
|
-
timeoutHandle = null;
|
|
25
|
-
reject(abortSignal.reason);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Returns an abort signal that aborts after a specified timeout in milliseconds
|
|
33
|
-
*
|
|
34
|
-
* @param timeout Milliseconds to wait
|
|
35
|
-
* @param abortReason Abort with this abort reason
|
|
36
|
-
* @param abortSignal Abort signal to extend
|
|
37
|
-
* @category Utilities
|
|
38
|
-
*/
|
|
39
|
-
export function timeoutSignal(timeout: number, abortReason?: any, abortSignal?: AbortSignal): AbortSignal {
|
|
40
|
-
if (timeout == null) throw new Error("Timeout seconds cannot be null!");
|
|
41
|
-
const abortController = new AbortController();
|
|
42
|
-
const timeoutHandle = setTimeout(() => abortController.abort(abortReason || new Error("Timed out")), timeout);
|
|
43
|
-
if (abortSignal != null) {
|
|
44
|
-
abortSignal.addEventListener("abort", () => {
|
|
45
|
-
clearTimeout(timeoutHandle);
|
|
46
|
-
abortController.abort(abortSignal.reason);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
return abortController.signal;
|
|
1
|
+
/**
|
|
2
|
+
* Returns a promise that resolves after given amount seconds
|
|
3
|
+
*
|
|
4
|
+
* @param timeout how many milliseconds to wait for
|
|
5
|
+
* @param abortSignal
|
|
6
|
+
* @category Utilities
|
|
7
|
+
*/
|
|
8
|
+
export function timeoutPromise(timeout: number, abortSignal?: AbortSignal): Promise<void> {
|
|
9
|
+
return new Promise<void>((resolve, reject) => {
|
|
10
|
+
if (abortSignal != null && abortSignal.aborted) {
|
|
11
|
+
reject(abortSignal.reason);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
let abortSignalListener: () => void;
|
|
16
|
+
let timeoutHandle: any | null = setTimeout(() => {
|
|
17
|
+
if (abortSignalListener != null && abortSignal != null) abortSignal.removeEventListener("abort", abortSignalListener);
|
|
18
|
+
resolve();
|
|
19
|
+
}, timeout);
|
|
20
|
+
|
|
21
|
+
if (abortSignal != null) {
|
|
22
|
+
abortSignal.addEventListener("abort", abortSignalListener = () => {
|
|
23
|
+
if (timeoutHandle != null) clearTimeout(timeoutHandle);
|
|
24
|
+
timeoutHandle = null;
|
|
25
|
+
reject(abortSignal.reason);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Returns an abort signal that aborts after a specified timeout in milliseconds
|
|
33
|
+
*
|
|
34
|
+
* @param timeout Milliseconds to wait
|
|
35
|
+
* @param abortReason Abort with this abort reason
|
|
36
|
+
* @param abortSignal Abort signal to extend
|
|
37
|
+
* @category Utilities
|
|
38
|
+
*/
|
|
39
|
+
export function timeoutSignal(timeout: number, abortReason?: any, abortSignal?: AbortSignal): AbortSignal {
|
|
40
|
+
if (timeout == null) throw new Error("Timeout seconds cannot be null!");
|
|
41
|
+
const abortController = new AbortController();
|
|
42
|
+
const timeoutHandle = setTimeout(() => abortController.abort(abortReason || new Error("Timed out")), timeout);
|
|
43
|
+
if (abortSignal != null) {
|
|
44
|
+
abortSignal.addEventListener("abort", () => {
|
|
45
|
+
clearTimeout(timeoutHandle);
|
|
46
|
+
abortController.abort(abortSignal.reason);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return abortController.signal;
|
|
50
50
|
}
|
package/src/utils/TokenUtils.ts
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import {Token} from "../types/Token";
|
|
2
|
-
|
|
3
|
-
import {fromDecimal, toDecimal} from "./Utils";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Converts a raw bigint amount to a human-readable string with decimals
|
|
7
|
-
*
|
|
8
|
-
* @param amount Amount in base units
|
|
9
|
-
* @param token Token
|
|
10
|
-
*
|
|
11
|
-
* @category Utilities
|
|
12
|
-
*/
|
|
13
|
-
export function toHumanReadableString(amount: bigint, token: Token): string {
|
|
14
|
-
if(amount==null) return "";
|
|
15
|
-
return toDecimal(amount, token.decimals, undefined, token.displayDecimals);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Parses a human-readable decimal string to a raw bigint amount
|
|
20
|
-
*
|
|
21
|
-
* @param amount Amount in base units
|
|
22
|
-
* @param token Token
|
|
23
|
-
*
|
|
24
|
-
* @category Utilities
|
|
25
|
-
*/
|
|
26
|
-
export function fromHumanReadableString(amount: string, token: Token): bigint | null {
|
|
27
|
-
if(amount==="" || amount==null) return null;
|
|
28
|
-
try {
|
|
29
|
-
return fromDecimal(amount, token.decimals);
|
|
30
|
-
} catch (e) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
import {Token} from "../types/Token";
|
|
2
|
+
|
|
3
|
+
import {fromDecimal, toDecimal} from "./Utils";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Converts a raw bigint amount to a human-readable string with decimals
|
|
7
|
+
*
|
|
8
|
+
* @param amount Amount in base units
|
|
9
|
+
* @param token Token
|
|
10
|
+
*
|
|
11
|
+
* @category Utilities
|
|
12
|
+
*/
|
|
13
|
+
export function toHumanReadableString(amount: bigint, token: Token): string {
|
|
14
|
+
if(amount==null) return "";
|
|
15
|
+
return toDecimal(amount, token.decimals, undefined, token.displayDecimals);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Parses a human-readable decimal string to a raw bigint amount
|
|
20
|
+
*
|
|
21
|
+
* @param amount Amount in base units
|
|
22
|
+
* @param token Token
|
|
23
|
+
*
|
|
24
|
+
* @category Utilities
|
|
25
|
+
*/
|
|
26
|
+
export function fromHumanReadableString(amount: string, token: Token): bigint | null {
|
|
27
|
+
if(amount==="" || amount==null) return null;
|
|
28
|
+
try {
|
|
29
|
+
return fromDecimal(amount, token.decimals);
|
|
30
|
+
} catch (e) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
package/src/utils/TypeUtils.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export type AllOptional<T> = {
|
|
2
|
-
[K in keyof T]?: T[K];
|
|
3
|
-
};
|
|
4
|
-
|
|
5
|
-
export type AllRequired<T> = {
|
|
6
|
-
[K in keyof T]-?: T[K];
|
|
7
|
-
};
|
|
8
|
-
|
|
1
|
+
export type AllOptional<T> = {
|
|
2
|
+
[K in keyof T]?: T[K];
|
|
3
|
+
};
|
|
4
|
+
|
|
5
|
+
export type AllRequired<T> = {
|
|
6
|
+
[K in keyof T]-?: T[K];
|
|
7
|
+
};
|
|
8
|
+
|
|
9
9
|
export type NotNever<T> = [T] extends [never] ? false : true;
|