@atomiqlabs/sdk 8.9.1 → 8.9.3
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 +770 -770
- package/dist/swapper/Swapper.js +1758 -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 +2570 -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
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
import { ChainType } from "@atomiqlabs/base";
|
|
2
|
-
import { IUnifiedStorage, QueryParams } from "./IUnifiedStorage";
|
|
3
|
-
import { ISwap } from "../swaps/ISwap";
|
|
4
|
-
declare const indexes: readonly [{
|
|
5
|
-
readonly key: "id";
|
|
6
|
-
readonly type: "string";
|
|
7
|
-
readonly unique: true;
|
|
8
|
-
readonly nullable: false;
|
|
9
|
-
}, {
|
|
10
|
-
readonly key: "escrowHash";
|
|
11
|
-
readonly type: "string";
|
|
12
|
-
readonly unique: true;
|
|
13
|
-
readonly nullable: true;
|
|
14
|
-
}, {
|
|
15
|
-
readonly key: "type";
|
|
16
|
-
readonly type: "number";
|
|
17
|
-
readonly unique: false;
|
|
18
|
-
readonly nullable: false;
|
|
19
|
-
}, {
|
|
20
|
-
readonly key: "initiator";
|
|
21
|
-
readonly type: "string";
|
|
22
|
-
readonly unique: false;
|
|
23
|
-
readonly nullable: false;
|
|
24
|
-
}, {
|
|
25
|
-
readonly key: "state";
|
|
26
|
-
readonly type: "number";
|
|
27
|
-
readonly unique: false;
|
|
28
|
-
readonly nullable: false;
|
|
29
|
-
}, {
|
|
30
|
-
readonly key: "paymentHash";
|
|
31
|
-
readonly type: "string";
|
|
32
|
-
readonly unique: false;
|
|
33
|
-
readonly nullable: true;
|
|
34
|
-
}];
|
|
35
|
-
/**
|
|
36
|
-
* Simple index types for SDK swap storage
|
|
37
|
-
*
|
|
38
|
-
* @category Storage
|
|
39
|
-
* @useDeclaredType
|
|
40
|
-
*/
|
|
41
|
-
export type UnifiedSwapStorageIndexes = typeof indexes;
|
|
42
|
-
declare const compositeIndexes: readonly [{
|
|
43
|
-
readonly keys: readonly ["initiator", "id"];
|
|
44
|
-
readonly unique: false;
|
|
45
|
-
}, {
|
|
46
|
-
readonly keys: readonly ["type", "state"];
|
|
47
|
-
readonly unique: false;
|
|
48
|
-
}, {
|
|
49
|
-
readonly keys: readonly ["type", "paymentHash"];
|
|
50
|
-
readonly unique: false;
|
|
51
|
-
}, {
|
|
52
|
-
readonly keys: readonly ["type", "initiator", "state"];
|
|
53
|
-
readonly unique: false;
|
|
54
|
-
}];
|
|
55
|
-
/**
|
|
56
|
-
* Composite index types for SDK swap storage
|
|
57
|
-
*
|
|
58
|
-
* @category Storage
|
|
59
|
-
* @useDeclaredType
|
|
60
|
-
*/
|
|
61
|
-
export type UnifiedSwapStorageCompositeIndexes = typeof compositeIndexes;
|
|
62
|
-
/**
|
|
63
|
-
* Unified swap persistence layer for the SDK utilizing an underlying {@link IUnifiedStorage} instance
|
|
64
|
-
* with optional in-memory caching via weak refs {@link WeakRef}
|
|
65
|
-
*
|
|
66
|
-
* @category Storage
|
|
67
|
-
*/
|
|
68
|
-
export declare class UnifiedSwapStorage<T extends ChainType> {
|
|
69
|
-
readonly storage: IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>;
|
|
70
|
-
readonly weakRefCache: Map<string, WeakRef<ISwap<T>>>;
|
|
71
|
-
readonly noWeakRefMap?: boolean;
|
|
72
|
-
/**
|
|
73
|
-
* @param storage Underlying storage persistence layer
|
|
74
|
-
* @param noWeakRefMap Whether to disable caching of the swap objects in the weak ref map, this
|
|
75
|
-
* should be set when you need multiple different clients accessing the same swap database (such
|
|
76
|
-
* as when running the SDK in a serverless environment like AWS or Azure)
|
|
77
|
-
*/
|
|
78
|
-
constructor(storage: IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>, noWeakRefMap?: boolean);
|
|
79
|
-
/**
|
|
80
|
-
* Initializes the underlying storage
|
|
81
|
-
*/
|
|
82
|
-
init(): Promise<void>;
|
|
83
|
-
/**
|
|
84
|
-
* Params are specified in the following way:
|
|
85
|
-
* - [[condition1, condition2]] - returns all rows where condition1 AND condition2 is met
|
|
86
|
-
* - [[condition1], [condition2]] - returns all rows where condition1 OR condition2 is met
|
|
87
|
-
* - [[condition1, condition2], [condition3]] - returns all rows where (condition1 AND condition2) OR condition3 is met
|
|
88
|
-
* @param params
|
|
89
|
-
* @param reviver
|
|
90
|
-
*/
|
|
91
|
-
query<S extends ISwap<T>>(params: Array<Array<QueryParams>>, reviver: (obj: any) => S | null | undefined): Promise<Array<S>>;
|
|
92
|
-
/**
|
|
93
|
-
* Saves the swap to storage, updating indexes as needed
|
|
94
|
-
*
|
|
95
|
-
* @param value Swap to save
|
|
96
|
-
*/
|
|
97
|
-
save<S extends ISwap<T>>(value: S): Promise<void>;
|
|
98
|
-
/**
|
|
99
|
-
* Saves multiple swaps to storage in a batch operation
|
|
100
|
-
* @param values Array of swaps to save
|
|
101
|
-
* @param lenient In lenient mode the underlying persistent layer doesn't throw on individual swap failures due to
|
|
102
|
-
* optimistic concurrency, or other (implementation specific), this flag is to be used when the saving of the swap
|
|
103
|
-
* isn't mission-critical for executing next steps (e.g. in tick or sync loops)
|
|
104
|
-
*/
|
|
105
|
-
saveAll<S extends ISwap<T>>(values: S[], lenient?: boolean): Promise<void>;
|
|
106
|
-
/**
|
|
107
|
-
* Removes a swap from storage
|
|
108
|
-
* @param value Swap to remove
|
|
109
|
-
*/
|
|
110
|
-
remove<S extends ISwap<T>>(value: S): Promise<void>;
|
|
111
|
-
/**
|
|
112
|
-
* Removes multiple swaps from storage in a batch operation
|
|
113
|
-
* @param values Array of swaps to remove
|
|
114
|
-
* @param lenient In lenient mode the underlying persistent layer doesn't throw on individual swap failures due to
|
|
115
|
-
* optimistic concurrency, or other (implementation specific), this flag is to be used when the saving of the swap
|
|
116
|
-
* isn't mission-critical for executing next steps (e.g. in tick or sync loops)
|
|
117
|
-
*/
|
|
118
|
-
removeAll<S extends ISwap<T>>(values: S[], lenient?: boolean): Promise<void>;
|
|
119
|
-
}
|
|
120
|
-
export {};
|
|
1
|
+
import { ChainType } from "@atomiqlabs/base";
|
|
2
|
+
import { IUnifiedStorage, QueryParams } from "./IUnifiedStorage";
|
|
3
|
+
import { ISwap } from "../swaps/ISwap";
|
|
4
|
+
declare const indexes: readonly [{
|
|
5
|
+
readonly key: "id";
|
|
6
|
+
readonly type: "string";
|
|
7
|
+
readonly unique: true;
|
|
8
|
+
readonly nullable: false;
|
|
9
|
+
}, {
|
|
10
|
+
readonly key: "escrowHash";
|
|
11
|
+
readonly type: "string";
|
|
12
|
+
readonly unique: true;
|
|
13
|
+
readonly nullable: true;
|
|
14
|
+
}, {
|
|
15
|
+
readonly key: "type";
|
|
16
|
+
readonly type: "number";
|
|
17
|
+
readonly unique: false;
|
|
18
|
+
readonly nullable: false;
|
|
19
|
+
}, {
|
|
20
|
+
readonly key: "initiator";
|
|
21
|
+
readonly type: "string";
|
|
22
|
+
readonly unique: false;
|
|
23
|
+
readonly nullable: false;
|
|
24
|
+
}, {
|
|
25
|
+
readonly key: "state";
|
|
26
|
+
readonly type: "number";
|
|
27
|
+
readonly unique: false;
|
|
28
|
+
readonly nullable: false;
|
|
29
|
+
}, {
|
|
30
|
+
readonly key: "paymentHash";
|
|
31
|
+
readonly type: "string";
|
|
32
|
+
readonly unique: false;
|
|
33
|
+
readonly nullable: true;
|
|
34
|
+
}];
|
|
35
|
+
/**
|
|
36
|
+
* Simple index types for SDK swap storage
|
|
37
|
+
*
|
|
38
|
+
* @category Storage
|
|
39
|
+
* @useDeclaredType
|
|
40
|
+
*/
|
|
41
|
+
export type UnifiedSwapStorageIndexes = typeof indexes;
|
|
42
|
+
declare const compositeIndexes: readonly [{
|
|
43
|
+
readonly keys: readonly ["initiator", "id"];
|
|
44
|
+
readonly unique: false;
|
|
45
|
+
}, {
|
|
46
|
+
readonly keys: readonly ["type", "state"];
|
|
47
|
+
readonly unique: false;
|
|
48
|
+
}, {
|
|
49
|
+
readonly keys: readonly ["type", "paymentHash"];
|
|
50
|
+
readonly unique: false;
|
|
51
|
+
}, {
|
|
52
|
+
readonly keys: readonly ["type", "initiator", "state"];
|
|
53
|
+
readonly unique: false;
|
|
54
|
+
}];
|
|
55
|
+
/**
|
|
56
|
+
* Composite index types for SDK swap storage
|
|
57
|
+
*
|
|
58
|
+
* @category Storage
|
|
59
|
+
* @useDeclaredType
|
|
60
|
+
*/
|
|
61
|
+
export type UnifiedSwapStorageCompositeIndexes = typeof compositeIndexes;
|
|
62
|
+
/**
|
|
63
|
+
* Unified swap persistence layer for the SDK utilizing an underlying {@link IUnifiedStorage} instance
|
|
64
|
+
* with optional in-memory caching via weak refs {@link WeakRef}
|
|
65
|
+
*
|
|
66
|
+
* @category Storage
|
|
67
|
+
*/
|
|
68
|
+
export declare class UnifiedSwapStorage<T extends ChainType> {
|
|
69
|
+
readonly storage: IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>;
|
|
70
|
+
readonly weakRefCache: Map<string, WeakRef<ISwap<T>>>;
|
|
71
|
+
readonly noWeakRefMap?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* @param storage Underlying storage persistence layer
|
|
74
|
+
* @param noWeakRefMap Whether to disable caching of the swap objects in the weak ref map, this
|
|
75
|
+
* should be set when you need multiple different clients accessing the same swap database (such
|
|
76
|
+
* as when running the SDK in a serverless environment like AWS or Azure)
|
|
77
|
+
*/
|
|
78
|
+
constructor(storage: IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>, noWeakRefMap?: boolean);
|
|
79
|
+
/**
|
|
80
|
+
* Initializes the underlying storage
|
|
81
|
+
*/
|
|
82
|
+
init(): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Params are specified in the following way:
|
|
85
|
+
* - [[condition1, condition2]] - returns all rows where condition1 AND condition2 is met
|
|
86
|
+
* - [[condition1], [condition2]] - returns all rows where condition1 OR condition2 is met
|
|
87
|
+
* - [[condition1, condition2], [condition3]] - returns all rows where (condition1 AND condition2) OR condition3 is met
|
|
88
|
+
* @param params
|
|
89
|
+
* @param reviver
|
|
90
|
+
*/
|
|
91
|
+
query<S extends ISwap<T>>(params: Array<Array<QueryParams>>, reviver: (obj: any) => S | null | undefined): Promise<Array<S>>;
|
|
92
|
+
/**
|
|
93
|
+
* Saves the swap to storage, updating indexes as needed
|
|
94
|
+
*
|
|
95
|
+
* @param value Swap to save
|
|
96
|
+
*/
|
|
97
|
+
save<S extends ISwap<T>>(value: S): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Saves multiple swaps to storage in a batch operation
|
|
100
|
+
* @param values Array of swaps to save
|
|
101
|
+
* @param lenient In lenient mode the underlying persistent layer doesn't throw on individual swap failures due to
|
|
102
|
+
* optimistic concurrency, or other (implementation specific), this flag is to be used when the saving of the swap
|
|
103
|
+
* isn't mission-critical for executing next steps (e.g. in tick or sync loops)
|
|
104
|
+
*/
|
|
105
|
+
saveAll<S extends ISwap<T>>(values: S[], lenient?: boolean): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Removes a swap from storage
|
|
108
|
+
* @param value Swap to remove
|
|
109
|
+
*/
|
|
110
|
+
remove<S extends ISwap<T>>(value: S): Promise<void>;
|
|
111
|
+
/**
|
|
112
|
+
* Removes multiple swaps from storage in a batch operation
|
|
113
|
+
* @param values Array of swaps to remove
|
|
114
|
+
* @param lenient In lenient mode the underlying persistent layer doesn't throw on individual swap failures due to
|
|
115
|
+
* optimistic concurrency, or other (implementation specific), this flag is to be used when the saving of the swap
|
|
116
|
+
* isn't mission-critical for executing next steps (e.g. in tick or sync loops)
|
|
117
|
+
*/
|
|
118
|
+
removeAll<S extends ISwap<T>>(values: S[], lenient?: boolean): Promise<void>;
|
|
119
|
+
}
|
|
120
|
+
export {};
|
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UnifiedSwapStorage = void 0;
|
|
4
|
-
const Logger_1 = require("../utils/Logger");
|
|
5
|
-
const logger = (0, Logger_1.getLogger)("UnifiedSwapStorage: ");
|
|
6
|
-
const indexes = [
|
|
7
|
-
{ key: "id", type: "string", unique: true, nullable: false },
|
|
8
|
-
{ key: "escrowHash", type: "string", unique: true, nullable: true },
|
|
9
|
-
{ key: "type", type: "number", unique: false, nullable: false },
|
|
10
|
-
{ key: "initiator", type: "string", unique: false, nullable: false },
|
|
11
|
-
{ key: "state", type: "number", unique: false, nullable: false },
|
|
12
|
-
{ key: "paymentHash", type: "string", unique: false, nullable: true },
|
|
13
|
-
];
|
|
14
|
-
const compositeIndexes = [
|
|
15
|
-
{ keys: ["initiator", "id"], unique: false },
|
|
16
|
-
{ keys: ["type", "state"], unique: false },
|
|
17
|
-
{ keys: ["type", "paymentHash"], unique: false },
|
|
18
|
-
{ keys: ["type", "initiator", "state"], unique: false }
|
|
19
|
-
];
|
|
20
|
-
/**
|
|
21
|
-
* Unified swap persistence layer for the SDK utilizing an underlying {@link IUnifiedStorage} instance
|
|
22
|
-
* with optional in-memory caching via weak refs {@link WeakRef}
|
|
23
|
-
*
|
|
24
|
-
* @category Storage
|
|
25
|
-
*/
|
|
26
|
-
class UnifiedSwapStorage {
|
|
27
|
-
/**
|
|
28
|
-
* @param storage Underlying storage persistence layer
|
|
29
|
-
* @param noWeakRefMap Whether to disable caching of the swap objects in the weak ref map, this
|
|
30
|
-
* should be set when you need multiple different clients accessing the same swap database (such
|
|
31
|
-
* as when running the SDK in a serverless environment like AWS or Azure)
|
|
32
|
-
*/
|
|
33
|
-
constructor(storage, noWeakRefMap) {
|
|
34
|
-
this.weakRefCache = new Map();
|
|
35
|
-
this.storage = storage;
|
|
36
|
-
this.noWeakRefMap = noWeakRefMap;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Initializes the underlying storage
|
|
40
|
-
*/
|
|
41
|
-
init() {
|
|
42
|
-
return this.storage.init(indexes, compositeIndexes);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Params are specified in the following way:
|
|
46
|
-
* - [[condition1, condition2]] - returns all rows where condition1 AND condition2 is met
|
|
47
|
-
* - [[condition1], [condition2]] - returns all rows where condition1 OR condition2 is met
|
|
48
|
-
* - [[condition1, condition2], [condition3]] - returns all rows where (condition1 AND condition2) OR condition3 is met
|
|
49
|
-
* @param params
|
|
50
|
-
* @param reviver
|
|
51
|
-
*/
|
|
52
|
-
async query(params, reviver) {
|
|
53
|
-
const rawSwaps = await this.storage.query(params);
|
|
54
|
-
const result = [];
|
|
55
|
-
rawSwaps.forEach(rawObj => {
|
|
56
|
-
if (!this.noWeakRefMap) {
|
|
57
|
-
const savedRef = this.weakRefCache.get(rawObj.id)?.deref();
|
|
58
|
-
if (savedRef != null) {
|
|
59
|
-
result.push(savedRef);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
logger.debug("query(): Reviving new swap instance: " + rawObj.id);
|
|
63
|
-
}
|
|
64
|
-
const value = reviver(rawObj);
|
|
65
|
-
if (value == null)
|
|
66
|
-
return;
|
|
67
|
-
value._persisted = true;
|
|
68
|
-
if (!this.noWeakRefMap)
|
|
69
|
-
this.weakRefCache.set(rawObj.id, new WeakRef(value));
|
|
70
|
-
result.push(value);
|
|
71
|
-
});
|
|
72
|
-
return result;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Saves the swap to storage, updating indexes as needed
|
|
76
|
-
*
|
|
77
|
-
* @param value Swap to save
|
|
78
|
-
*/
|
|
79
|
-
async save(value) {
|
|
80
|
-
if (!this.noWeakRefMap)
|
|
81
|
-
this.weakRefCache.set(value.getId(), new WeakRef(value));
|
|
82
|
-
const serialized = value.serialize();
|
|
83
|
-
try {
|
|
84
|
-
await this.storage.save(serialized);
|
|
85
|
-
}
|
|
86
|
-
finally {
|
|
87
|
-
value._meta = serialized._meta;
|
|
88
|
-
}
|
|
89
|
-
value._persisted = true;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Saves multiple swaps to storage in a batch operation
|
|
93
|
-
* @param values Array of swaps to save
|
|
94
|
-
* @param lenient In lenient mode the underlying persistent layer doesn't throw on individual swap failures due to
|
|
95
|
-
* optimistic concurrency, or other (implementation specific), this flag is to be used when the saving of the swap
|
|
96
|
-
* isn't mission-critical for executing next steps (e.g. in tick or sync loops)
|
|
97
|
-
*/
|
|
98
|
-
async saveAll(values, lenient) {
|
|
99
|
-
if (!this.noWeakRefMap)
|
|
100
|
-
values.forEach(value => this.weakRefCache.set(value.getId(), new WeakRef(value)));
|
|
101
|
-
const serialized = values.map(obj => obj.serialize());
|
|
102
|
-
try {
|
|
103
|
-
await this.storage.saveAll(serialized, lenient);
|
|
104
|
-
}
|
|
105
|
-
finally {
|
|
106
|
-
values.forEach((value, index) => {
|
|
107
|
-
value._meta = serialized[index]._meta;
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
values.forEach((value) => {
|
|
111
|
-
value._persisted = true;
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Removes a swap from storage
|
|
116
|
-
* @param value Swap to remove
|
|
117
|
-
*/
|
|
118
|
-
async remove(value) {
|
|
119
|
-
if (!this.noWeakRefMap)
|
|
120
|
-
this.weakRefCache.delete(value.getId());
|
|
121
|
-
const serialized = value.serialize();
|
|
122
|
-
try {
|
|
123
|
-
await this.storage.remove(serialized);
|
|
124
|
-
}
|
|
125
|
-
finally {
|
|
126
|
-
value._meta = serialized._meta;
|
|
127
|
-
}
|
|
128
|
-
value._persisted = false;
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Removes multiple swaps from storage in a batch operation
|
|
132
|
-
* @param values Array of swaps to remove
|
|
133
|
-
* @param lenient In lenient mode the underlying persistent layer doesn't throw on individual swap failures due to
|
|
134
|
-
* optimistic concurrency, or other (implementation specific), this flag is to be used when the saving of the swap
|
|
135
|
-
* isn't mission-critical for executing next steps (e.g. in tick or sync loops)
|
|
136
|
-
*/
|
|
137
|
-
async removeAll(values, lenient) {
|
|
138
|
-
if (!this.noWeakRefMap)
|
|
139
|
-
values.forEach(value => this.weakRefCache.delete(value.getId()));
|
|
140
|
-
const serialized = values.map(obj => obj.serialize());
|
|
141
|
-
try {
|
|
142
|
-
await this.storage.removeAll(serialized, lenient);
|
|
143
|
-
}
|
|
144
|
-
finally {
|
|
145
|
-
values.forEach((value, index) => {
|
|
146
|
-
value._meta = serialized[index]._meta;
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
values.forEach((value) => {
|
|
150
|
-
value._persisted = false;
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
exports.UnifiedSwapStorage = UnifiedSwapStorage;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UnifiedSwapStorage = void 0;
|
|
4
|
+
const Logger_1 = require("../utils/Logger");
|
|
5
|
+
const logger = (0, Logger_1.getLogger)("UnifiedSwapStorage: ");
|
|
6
|
+
const indexes = [
|
|
7
|
+
{ key: "id", type: "string", unique: true, nullable: false },
|
|
8
|
+
{ key: "escrowHash", type: "string", unique: true, nullable: true },
|
|
9
|
+
{ key: "type", type: "number", unique: false, nullable: false },
|
|
10
|
+
{ key: "initiator", type: "string", unique: false, nullable: false },
|
|
11
|
+
{ key: "state", type: "number", unique: false, nullable: false },
|
|
12
|
+
{ key: "paymentHash", type: "string", unique: false, nullable: true },
|
|
13
|
+
];
|
|
14
|
+
const compositeIndexes = [
|
|
15
|
+
{ keys: ["initiator", "id"], unique: false },
|
|
16
|
+
{ keys: ["type", "state"], unique: false },
|
|
17
|
+
{ keys: ["type", "paymentHash"], unique: false },
|
|
18
|
+
{ keys: ["type", "initiator", "state"], unique: false }
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Unified swap persistence layer for the SDK utilizing an underlying {@link IUnifiedStorage} instance
|
|
22
|
+
* with optional in-memory caching via weak refs {@link WeakRef}
|
|
23
|
+
*
|
|
24
|
+
* @category Storage
|
|
25
|
+
*/
|
|
26
|
+
class UnifiedSwapStorage {
|
|
27
|
+
/**
|
|
28
|
+
* @param storage Underlying storage persistence layer
|
|
29
|
+
* @param noWeakRefMap Whether to disable caching of the swap objects in the weak ref map, this
|
|
30
|
+
* should be set when you need multiple different clients accessing the same swap database (such
|
|
31
|
+
* as when running the SDK in a serverless environment like AWS or Azure)
|
|
32
|
+
*/
|
|
33
|
+
constructor(storage, noWeakRefMap) {
|
|
34
|
+
this.weakRefCache = new Map();
|
|
35
|
+
this.storage = storage;
|
|
36
|
+
this.noWeakRefMap = noWeakRefMap;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Initializes the underlying storage
|
|
40
|
+
*/
|
|
41
|
+
init() {
|
|
42
|
+
return this.storage.init(indexes, compositeIndexes);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Params are specified in the following way:
|
|
46
|
+
* - [[condition1, condition2]] - returns all rows where condition1 AND condition2 is met
|
|
47
|
+
* - [[condition1], [condition2]] - returns all rows where condition1 OR condition2 is met
|
|
48
|
+
* - [[condition1, condition2], [condition3]] - returns all rows where (condition1 AND condition2) OR condition3 is met
|
|
49
|
+
* @param params
|
|
50
|
+
* @param reviver
|
|
51
|
+
*/
|
|
52
|
+
async query(params, reviver) {
|
|
53
|
+
const rawSwaps = await this.storage.query(params);
|
|
54
|
+
const result = [];
|
|
55
|
+
rawSwaps.forEach(rawObj => {
|
|
56
|
+
if (!this.noWeakRefMap) {
|
|
57
|
+
const savedRef = this.weakRefCache.get(rawObj.id)?.deref();
|
|
58
|
+
if (savedRef != null) {
|
|
59
|
+
result.push(savedRef);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
logger.debug("query(): Reviving new swap instance: " + rawObj.id);
|
|
63
|
+
}
|
|
64
|
+
const value = reviver(rawObj);
|
|
65
|
+
if (value == null)
|
|
66
|
+
return;
|
|
67
|
+
value._persisted = true;
|
|
68
|
+
if (!this.noWeakRefMap)
|
|
69
|
+
this.weakRefCache.set(rawObj.id, new WeakRef(value));
|
|
70
|
+
result.push(value);
|
|
71
|
+
});
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Saves the swap to storage, updating indexes as needed
|
|
76
|
+
*
|
|
77
|
+
* @param value Swap to save
|
|
78
|
+
*/
|
|
79
|
+
async save(value) {
|
|
80
|
+
if (!this.noWeakRefMap)
|
|
81
|
+
this.weakRefCache.set(value.getId(), new WeakRef(value));
|
|
82
|
+
const serialized = value.serialize();
|
|
83
|
+
try {
|
|
84
|
+
await this.storage.save(serialized);
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
value._meta = serialized._meta;
|
|
88
|
+
}
|
|
89
|
+
value._persisted = true;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Saves multiple swaps to storage in a batch operation
|
|
93
|
+
* @param values Array of swaps to save
|
|
94
|
+
* @param lenient In lenient mode the underlying persistent layer doesn't throw on individual swap failures due to
|
|
95
|
+
* optimistic concurrency, or other (implementation specific), this flag is to be used when the saving of the swap
|
|
96
|
+
* isn't mission-critical for executing next steps (e.g. in tick or sync loops)
|
|
97
|
+
*/
|
|
98
|
+
async saveAll(values, lenient) {
|
|
99
|
+
if (!this.noWeakRefMap)
|
|
100
|
+
values.forEach(value => this.weakRefCache.set(value.getId(), new WeakRef(value)));
|
|
101
|
+
const serialized = values.map(obj => obj.serialize());
|
|
102
|
+
try {
|
|
103
|
+
await this.storage.saveAll(serialized, lenient);
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
values.forEach((value, index) => {
|
|
107
|
+
value._meta = serialized[index]._meta;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
values.forEach((value) => {
|
|
111
|
+
value._persisted = true;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Removes a swap from storage
|
|
116
|
+
* @param value Swap to remove
|
|
117
|
+
*/
|
|
118
|
+
async remove(value) {
|
|
119
|
+
if (!this.noWeakRefMap)
|
|
120
|
+
this.weakRefCache.delete(value.getId());
|
|
121
|
+
const serialized = value.serialize();
|
|
122
|
+
try {
|
|
123
|
+
await this.storage.remove(serialized);
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
value._meta = serialized._meta;
|
|
127
|
+
}
|
|
128
|
+
value._persisted = false;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Removes multiple swaps from storage in a batch operation
|
|
132
|
+
* @param values Array of swaps to remove
|
|
133
|
+
* @param lenient In lenient mode the underlying persistent layer doesn't throw on individual swap failures due to
|
|
134
|
+
* optimistic concurrency, or other (implementation specific), this flag is to be used when the saving of the swap
|
|
135
|
+
* isn't mission-critical for executing next steps (e.g. in tick or sync loops)
|
|
136
|
+
*/
|
|
137
|
+
async removeAll(values, lenient) {
|
|
138
|
+
if (!this.noWeakRefMap)
|
|
139
|
+
values.forEach(value => this.weakRefCache.delete(value.getId()));
|
|
140
|
+
const serialized = values.map(obj => obj.serialize());
|
|
141
|
+
try {
|
|
142
|
+
await this.storage.removeAll(serialized, lenient);
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
values.forEach((value, index) => {
|
|
146
|
+
value._meta = serialized[index]._meta;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
values.forEach((value) => {
|
|
150
|
+
value._persisted = false;
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.UnifiedSwapStorage = UnifiedSwapStorage;
|