@atomiqlabs/sdk 7.0.12 → 8.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -29
- package/dist/SmartChainAssets.d.ts +11 -3
- package/dist/SmartChainAssets.js +7 -3
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +68 -0
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +2 -0
- package/dist/bitcoin/LightningNetworkApi.d.ts +12 -0
- package/dist/bitcoin/LightningNetworkApi.js +2 -0
- package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -0
- package/dist/bitcoin/coinselect2/accumulative.js +52 -0
- package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -0
- package/dist/bitcoin/coinselect2/blackjack.js +38 -0
- package/dist/bitcoin/coinselect2/index.d.ts +19 -0
- package/dist/bitcoin/coinselect2/index.js +69 -0
- package/dist/bitcoin/coinselect2/utils.d.ts +71 -0
- package/dist/bitcoin/coinselect2/utils.js +123 -0
- package/dist/bitcoin/mempool/MempoolApi.d.ts +350 -0
- package/dist/bitcoin/mempool/MempoolApi.js +311 -0
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +44 -0
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +48 -0
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +119 -0
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +361 -0
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +22 -0
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +105 -0
- package/dist/bitcoin/wallet/BitcoinWallet.d.ts +93 -0
- package/dist/bitcoin/wallet/BitcoinWallet.js +273 -0
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +28 -0
- package/dist/bitcoin/wallet/IBitcoinWallet.js +20 -0
- package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.d.ts +21 -0
- package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.js +2 -0
- package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.d.ts +7 -0
- package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.js +2 -0
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +40 -0
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +86 -0
- package/dist/enums/FeeType.d.ts +8 -0
- package/dist/enums/FeeType.js +12 -0
- package/dist/enums/SwapAmountType.d.ts +8 -0
- package/dist/enums/SwapAmountType.js +12 -0
- package/dist/enums/SwapDirection.d.ts +8 -0
- package/dist/enums/SwapDirection.js +12 -0
- package/dist/enums/SwapType.d.ts +14 -0
- package/dist/enums/SwapType.js +18 -0
- package/dist/errors/IntermediaryError.d.ts +9 -0
- package/dist/errors/IntermediaryError.js +26 -0
- package/dist/errors/PaymentAuthError.d.ts +11 -0
- package/dist/errors/PaymentAuthError.js +23 -0
- package/dist/errors/RequestError.d.ts +18 -0
- package/dist/errors/RequestError.js +46 -0
- package/dist/errors/UserError.d.ts +7 -0
- package/dist/errors/UserError.js +15 -0
- package/dist/events/UnifiedSwapEventListener.d.ts +23 -0
- package/dist/events/UnifiedSwapEventListener.js +130 -0
- package/dist/http/HttpUtils.d.ts +27 -0
- package/dist/http/HttpUtils.js +91 -0
- package/dist/http/paramcoders/IParamReader.d.ts +8 -0
- package/dist/http/paramcoders/IParamReader.js +2 -0
- package/dist/http/paramcoders/ParamDecoder.d.ts +44 -0
- package/dist/http/paramcoders/ParamDecoder.js +132 -0
- package/dist/http/paramcoders/ParamEncoder.d.ts +20 -0
- package/dist/http/paramcoders/ParamEncoder.js +31 -0
- package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -0
- package/dist/http/paramcoders/SchemaVerifier.js +145 -0
- package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -0
- package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -0
- package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -0
- package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -0
- package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -0
- package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -0
- package/dist/index.d.ts +82 -4
- package/dist/index.js +128 -4
- package/dist/intermediaries/Intermediary.d.ts +111 -0
- package/dist/intermediaries/Intermediary.js +115 -0
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +166 -0
- package/dist/intermediaries/IntermediaryDiscovery.js +390 -0
- package/dist/intermediaries/apis/IntermediaryAPI.d.ts +436 -0
- package/dist/intermediaries/apis/IntermediaryAPI.js +600 -0
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +154 -0
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +136 -0
- package/dist/lnurl/LNURL.d.ts +102 -0
- package/dist/lnurl/LNURL.js +321 -0
- package/dist/prices/RedundantSwapPrice.d.ts +89 -0
- package/dist/prices/RedundantSwapPrice.js +202 -0
- package/dist/prices/SingleSwapPrice.d.ts +31 -0
- package/dist/prices/SingleSwapPrice.js +41 -0
- package/dist/prices/SwapPriceWithChain.d.ts +70 -0
- package/dist/prices/SwapPriceWithChain.js +91 -0
- package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -0
- package/dist/prices/abstract/ICachedSwapPrice.js +62 -0
- package/dist/prices/abstract/IPriceProvider.d.ts +81 -0
- package/dist/prices/abstract/IPriceProvider.js +74 -0
- package/dist/prices/abstract/ISwapPrice.d.ts +117 -0
- package/dist/prices/abstract/ISwapPrice.js +219 -0
- package/dist/prices/providers/BinancePriceProvider.d.ts +16 -0
- package/dist/prices/providers/BinancePriceProvider.js +23 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +17 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.js +23 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +19 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +23 -0
- package/dist/prices/providers/CustomPriceProvider.d.ts +13 -0
- package/dist/prices/providers/CustomPriceProvider.js +24 -0
- package/dist/prices/providers/KrakenPriceProvider.d.ts +29 -0
- package/dist/prices/providers/KrakenPriceProvider.js +36 -0
- package/dist/prices/providers/OKXPriceProvider.d.ts +28 -0
- package/dist/prices/providers/OKXPriceProvider.js +23 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +14 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +18 -0
- package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -0
- package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -0
- package/dist/storage/IUnifiedStorage.d.ts +73 -0
- package/dist/storage/IUnifiedStorage.js +2 -0
- package/dist/storage/UnifiedSwapStorage.d.ts +82 -0
- package/dist/storage/UnifiedSwapStorage.js +83 -0
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +39 -0
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +275 -0
- package/dist/{storage → storage-browser}/LocalStorageManager.d.ts +1 -0
- package/dist/{storage → storage-browser}/LocalStorageManager.js +2 -1
- package/dist/swapper/Swapper.d.ts +533 -0
- package/dist/swapper/Swapper.js +1566 -0
- package/dist/swapper/SwapperFactory.d.ts +87 -0
- package/dist/{SwapperFactory.js → swapper/SwapperFactory.js} +37 -19
- package/dist/swapper/SwapperUtils.d.ts +153 -0
- package/dist/swapper/SwapperUtils.js +420 -0
- package/dist/swapper/SwapperWithChain.d.ts +214 -0
- package/dist/swapper/SwapperWithChain.js +315 -0
- package/dist/swapper/SwapperWithSigner.d.ts +178 -0
- package/dist/swapper/SwapperWithSigner.js +172 -0
- package/dist/swaps/IAddressSwap.d.ts +13 -0
- package/dist/swaps/IAddressSwap.js +13 -0
- package/dist/swaps/IBTCWalletSwap.d.ts +55 -0
- package/dist/swaps/IBTCWalletSwap.js +17 -0
- package/dist/swaps/IClaimableSwap.d.ts +17 -0
- package/dist/swaps/IClaimableSwap.js +14 -0
- package/dist/swaps/IClaimableSwapWrapper.d.ts +5 -0
- package/dist/swaps/IClaimableSwapWrapper.js +2 -0
- package/dist/swaps/IRefundableSwap.d.ts +17 -0
- package/dist/swaps/IRefundableSwap.js +13 -0
- package/dist/swaps/ISwap.d.ts +207 -0
- package/dist/swaps/ISwap.js +264 -0
- package/dist/swaps/ISwapWithGasDrop.d.ts +15 -0
- package/dist/swaps/ISwapWithGasDrop.js +11 -0
- package/dist/swaps/ISwapWrapper.d.ts +153 -0
- package/dist/swaps/ISwapWrapper.js +227 -0
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +53 -0
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +116 -0
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +70 -0
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +132 -0
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +85 -0
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +122 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +86 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +115 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +93 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +121 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +45 -0
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +65 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +263 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +933 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +110 -0
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +307 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +236 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +898 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +125 -0
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +393 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +245 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +841 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +120 -0
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +294 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +228 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +721 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +37 -0
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +93 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +86 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +213 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +170 -0
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +50 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +109 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +93 -0
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +217 -0
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +315 -0
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1098 -0
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +125 -0
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +631 -0
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +107 -0
- package/dist/swaps/trusted/ln/LnForGasSwap.js +343 -0
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +21 -0
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +62 -0
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +164 -0
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +520 -0
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +48 -0
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +74 -0
- package/dist/types/AmountData.d.ts +9 -0
- package/dist/types/AmountData.js +2 -0
- package/dist/types/CustomPriceFunction.d.ts +5 -0
- package/dist/types/CustomPriceFunction.js +2 -0
- package/dist/types/PriceInfoType.d.ts +28 -0
- package/dist/types/PriceInfoType.js +57 -0
- package/dist/types/SwapExecutionAction.d.ts +7 -0
- package/dist/types/SwapExecutionAction.js +2 -0
- package/dist/types/SwapWithSigner.d.ts +14 -0
- package/dist/types/SwapWithSigner.js +40 -0
- package/dist/types/Token.d.ts +53 -0
- package/dist/types/Token.js +58 -0
- package/dist/types/TokenAmount.d.ts +57 -0
- package/dist/types/TokenAmount.js +47 -0
- package/dist/types/fees/Fee.d.ts +49 -0
- package/dist/types/fees/Fee.js +2 -0
- package/dist/types/fees/FeeBreakdown.d.ts +10 -0
- package/dist/types/fees/FeeBreakdown.js +2 -0
- package/dist/types/fees/PercentagePPM.d.ts +15 -0
- package/dist/types/fees/PercentagePPM.js +17 -0
- package/dist/types/lnurl/LNURLPay.d.ts +54 -0
- package/dist/types/lnurl/LNURLPay.js +28 -0
- package/dist/types/lnurl/LNURLWithdraw.d.ts +42 -0
- package/dist/types/lnurl/LNURLWithdraw.js +24 -0
- package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -0
- package/dist/utils/AutomaticClockDriftCorrection.js +70 -0
- package/dist/utils/BitcoinUtils.d.ts +13 -0
- package/dist/utils/BitcoinUtils.js +98 -0
- package/dist/utils/BitcoinWalletUtils.d.ts +7 -0
- package/dist/utils/BitcoinWalletUtils.js +14 -0
- package/dist/utils/Logger.d.ts +7 -0
- package/dist/utils/Logger.js +12 -0
- package/dist/utils/RetryUtils.d.ts +21 -0
- package/dist/utils/RetryUtils.js +66 -0
- package/dist/utils/SwapUtils.d.ts +31 -0
- package/dist/utils/SwapUtils.js +18 -0
- package/dist/{Utils.d.ts → utils/TimeoutUtils.d.ts} +9 -3
- package/dist/utils/TimeoutUtils.js +55 -0
- package/dist/utils/TokenUtils.d.ts +11 -0
- package/dist/utils/TokenUtils.js +29 -0
- package/dist/utils/TypeUtils.d.ts +7 -0
- package/dist/utils/TypeUtils.js +2 -0
- package/dist/utils/Utils.d.ts +57 -0
- package/dist/utils/Utils.js +178 -0
- package/package.json +14 -6
- package/src/SmartChainAssets.ts +11 -3
- package/src/bitcoin/BitcoinRpcWithAddressIndex.ts +87 -0
- package/src/bitcoin/LightningNetworkApi.ts +16 -0
- package/src/bitcoin/coinselect2/accumulative.ts +68 -0
- package/src/bitcoin/coinselect2/blackjack.ts +49 -0
- package/src/bitcoin/coinselect2/index.ts +92 -0
- package/src/bitcoin/coinselect2/utils.ts +189 -0
- package/src/bitcoin/mempool/MempoolApi.ts +554 -0
- package/src/bitcoin/mempool/MempoolBitcoinBlock.ts +88 -0
- package/src/bitcoin/mempool/MempoolBitcoinRpc.ts +437 -0
- package/src/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.ts +134 -0
- package/src/bitcoin/wallet/BitcoinWallet.ts +375 -0
- package/src/bitcoin/wallet/IBitcoinWallet.ts +44 -0
- package/src/bitcoin/wallet/MinimalBitcoinWalletInterface.ts +19 -0
- package/src/bitcoin/wallet/MinimalLightningNetworkWalletInterface.ts +7 -0
- package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +108 -0
- package/src/enums/FeeType.ts +9 -0
- package/src/enums/SwapAmountType.ts +9 -0
- package/src/enums/SwapDirection.ts +9 -0
- package/src/enums/SwapType.ts +15 -0
- package/src/errors/IntermediaryError.ts +24 -0
- package/src/errors/PaymentAuthError.ts +26 -0
- package/src/errors/RequestError.ts +51 -0
- package/src/errors/UserError.ts +14 -0
- package/src/events/UnifiedSwapEventListener.ts +171 -0
- package/src/http/HttpUtils.ts +92 -0
- package/src/http/paramcoders/IParamReader.ts +10 -0
- package/src/http/paramcoders/ParamDecoder.ts +142 -0
- package/src/http/paramcoders/ParamEncoder.ts +37 -0
- package/src/http/paramcoders/SchemaVerifier.ts +153 -0
- package/src/http/paramcoders/client/ResponseParamDecoder.ts +58 -0
- package/src/http/paramcoders/client/StreamParamEncoder.ts +29 -0
- package/src/http/paramcoders/client/StreamingFetchPromise.ts +193 -0
- package/src/index.ts +102 -4
- package/src/intermediaries/Intermediary.ts +204 -0
- package/src/intermediaries/IntermediaryDiscovery.ts +485 -0
- package/src/intermediaries/apis/IntermediaryAPI.ts +940 -0
- package/src/intermediaries/apis/TrustedIntermediaryAPI.ts +257 -0
- package/src/lnurl/LNURL.ts +403 -0
- package/src/prices/RedundantSwapPrice.ts +245 -0
- package/src/prices/SingleSwapPrice.ts +47 -0
- package/src/prices/SwapPriceWithChain.ts +157 -0
- package/src/prices/abstract/ICachedSwapPrice.ts +86 -0
- package/src/prices/abstract/IPriceProvider.ts +128 -0
- package/src/prices/abstract/ISwapPrice.ts +328 -0
- package/src/prices/providers/BinancePriceProvider.ts +41 -0
- package/src/prices/providers/CoinGeckoPriceProvider.ts +40 -0
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +44 -0
- package/src/prices/providers/CustomPriceProvider.ts +29 -0
- package/src/prices/providers/KrakenPriceProvider.ts +74 -0
- package/src/prices/providers/OKXPriceProvider.ts +53 -0
- package/src/prices/providers/abstract/ExchangePriceProvider.ts +29 -0
- package/src/prices/providers/abstract/HttpPriceProvider.ts +15 -0
- package/src/storage/IUnifiedStorage.ts +83 -0
- package/src/storage/UnifiedSwapStorage.ts +104 -0
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +328 -0
- package/src/{storage → storage-browser}/LocalStorageManager.ts +2 -1
- package/src/swapper/Swapper.ts +2107 -0
- package/src/{SwapperFactory.ts → swapper/SwapperFactory.ts} +113 -72
- package/src/swapper/SwapperUtils.ts +510 -0
- package/src/swapper/SwapperWithChain.ts +464 -0
- package/src/swapper/SwapperWithSigner.ts +300 -0
- package/src/swaps/IAddressSwap.ts +20 -0
- package/src/swaps/IBTCWalletSwap.ts +77 -0
- package/src/swaps/IClaimableSwap.ts +30 -0
- package/src/swaps/IClaimableSwapWrapper.ts +9 -0
- package/src/swaps/IRefundableSwap.ts +29 -0
- package/src/swaps/ISwap.ts +490 -0
- package/src/swaps/ISwapWithGasDrop.ts +19 -0
- package/src/swaps/ISwapWrapper.ts +344 -0
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +168 -0
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +197 -0
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +210 -0
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +150 -0
- package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +219 -0
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +84 -0
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1082 -0
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +429 -0
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1078 -0
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +549 -0
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +974 -0
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +443 -0
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +860 -0
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +104 -0
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +256 -0
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +716 -0
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +151 -0
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +299 -0
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +1394 -0
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +796 -0
- package/src/swaps/trusted/ln/LnForGasSwap.ts +402 -0
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +70 -0
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +633 -0
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +110 -0
- package/src/types/AmountData.ts +9 -0
- package/src/types/CustomPriceFunction.ts +5 -0
- package/src/types/PriceInfoType.ts +67 -0
- package/src/types/SwapExecutionAction.ts +8 -0
- package/src/types/SwapWithSigner.ts +57 -0
- package/src/types/Token.ts +90 -0
- package/src/types/TokenAmount.ts +110 -0
- package/src/types/fees/Fee.ts +55 -0
- package/src/types/fees/FeeBreakdown.ts +11 -0
- package/src/types/fees/PercentagePPM.ts +24 -0
- package/src/types/lnurl/LNURLPay.ts +72 -0
- package/src/types/lnurl/LNURLWithdraw.ts +55 -0
- package/src/utils/AutomaticClockDriftCorrection.ts +71 -0
- package/src/utils/BitcoinUtils.ts +86 -0
- package/src/utils/BitcoinWalletUtils.ts +16 -0
- package/src/utils/Logger.ts +15 -0
- package/src/utils/RetryUtils.ts +71 -0
- package/src/utils/SwapUtils.ts +38 -0
- package/src/utils/TimeoutUtils.ts +50 -0
- package/src/utils/TokenUtils.ts +25 -0
- package/src/utils/TypeUtils.ts +9 -0
- package/src/utils/Utils.ts +182 -0
- package/dist/SwapperFactory.d.ts +0 -52
- package/dist/Utils.js +0 -37
- package/dist/fs-storage/FileSystemStorageManager.d.ts +0 -15
- package/dist/fs-storage/FileSystemStorageManager.js +0 -60
- package/dist/fs-storage/index.d.ts +0 -1
- package/dist/fs-storage/index.js +0 -17
- package/src/SmartChainAssets.js +0 -75
- package/src/SwapperFactory.js +0 -120
- package/src/Utils.js +0 -37
- package/src/Utils.ts +0 -31
- package/src/fs-storage/FileSystemStorageManager.ts +0 -71
- package/src/fs-storage/index.ts +0 -1
- package/src/index.js +0 -21
- package/src/storage/LocalStorageManager.js +0 -72
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import {IToBTCSwap, ToBTCSwapState} from "./IToBTCSwap";
|
|
2
|
+
import {ChainType, ClaimEvent, InitializeEvent, RefundEvent} from "@atomiqlabs/base";
|
|
3
|
+
import {ISwapWrapperOptions, SwapTypeDefinition} from "../../ISwapWrapper";
|
|
4
|
+
import {Intermediary, SingleChainReputationType} from "../../../intermediaries/Intermediary";
|
|
5
|
+
import {IntermediaryError} from "../../../errors/IntermediaryError";
|
|
6
|
+
import {IEscrowSwapWrapper} from "../IEscrowSwapWrapper";
|
|
7
|
+
import {AmountData} from "../../../types/AmountData";
|
|
8
|
+
|
|
9
|
+
export type IToBTCDefinition<T extends ChainType, W extends IToBTCWrapper<T, any>, S extends IToBTCSwap<T>> = SwapTypeDefinition<T, W, S>;
|
|
10
|
+
|
|
11
|
+
export abstract class IToBTCWrapper<
|
|
12
|
+
T extends ChainType,
|
|
13
|
+
D extends IToBTCDefinition<T, IToBTCWrapper<T, D>, IToBTCSwap<T, D>>,
|
|
14
|
+
O extends ISwapWrapperOptions = ISwapWrapperOptions
|
|
15
|
+
> extends IEscrowSwapWrapper<T, D, O> {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Pre-fetches intermediary's reputation, doesn't throw, instead aborts via abortController and returns null
|
|
19
|
+
*
|
|
20
|
+
* @param amountData
|
|
21
|
+
* @param lp Intermediary
|
|
22
|
+
* @param abortController
|
|
23
|
+
* @protected
|
|
24
|
+
* @returns Intermediary's reputation or null if failed
|
|
25
|
+
* @throws {IntermediaryError} If the intermediary vault doesn't exist
|
|
26
|
+
*/
|
|
27
|
+
protected preFetchIntermediaryReputation(
|
|
28
|
+
amountData: Omit<AmountData, "amount">,
|
|
29
|
+
lp: Intermediary,
|
|
30
|
+
abortController: AbortController
|
|
31
|
+
): Promise<SingleChainReputationType | undefined> {
|
|
32
|
+
return lp.getReputation(this.chainIdentifier, this.contract, [amountData.token.toString()], abortController.signal).then(res => {
|
|
33
|
+
if(res==null) throw new IntermediaryError("Invalid data returned - invalid LP vault");
|
|
34
|
+
return res;
|
|
35
|
+
}).catch(e => {
|
|
36
|
+
this.logger.warn("preFetchIntermediaryReputation(): Error: ", e);
|
|
37
|
+
abortController.abort(e);
|
|
38
|
+
return undefined;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Pre-fetches feeRate for a given swap
|
|
44
|
+
*
|
|
45
|
+
* @param signer Address of the swap initiator
|
|
46
|
+
* @param amountData
|
|
47
|
+
* @param claimHash optional hash of the swap or null
|
|
48
|
+
* @param abortController
|
|
49
|
+
* @protected
|
|
50
|
+
* @returns Fee rate
|
|
51
|
+
*/
|
|
52
|
+
protected preFetchFeeRate(signer: string, amountData: Omit<AmountData, "amount">, claimHash: string | undefined, abortController: AbortController): Promise<string | undefined> {
|
|
53
|
+
return this.contract.getInitPayInFeeRate(signer, this.chain.randomAddress(), amountData.token, claimHash)
|
|
54
|
+
.catch(e => {
|
|
55
|
+
this.logger.warn("preFetchFeeRate(): Error: ", e);
|
|
56
|
+
abortController.abort(e);
|
|
57
|
+
return undefined;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public readonly pendingSwapStates = [
|
|
62
|
+
ToBTCSwapState.CREATED,
|
|
63
|
+
ToBTCSwapState.QUOTE_SOFT_EXPIRED,
|
|
64
|
+
ToBTCSwapState.COMMITED,
|
|
65
|
+
ToBTCSwapState.SOFT_CLAIMED,
|
|
66
|
+
ToBTCSwapState.REFUNDABLE
|
|
67
|
+
];
|
|
68
|
+
public readonly tickSwapState = [ToBTCSwapState.CREATED, ToBTCSwapState.COMMITED, ToBTCSwapState.SOFT_CLAIMED];
|
|
69
|
+
public readonly refundableSwapStates = [ToBTCSwapState.REFUNDABLE];
|
|
70
|
+
|
|
71
|
+
protected async processEventInitialize(swap: D["Swap"], event: InitializeEvent<T["Data"]>): Promise<boolean> {
|
|
72
|
+
if(swap.state===ToBTCSwapState.CREATED || swap.state===ToBTCSwapState.QUOTE_SOFT_EXPIRED) {
|
|
73
|
+
swap.state = ToBTCSwapState.COMMITED;
|
|
74
|
+
if(swap.commitTxId==null) swap.commitTxId = event.meta?.txId;
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
protected async processEventClaim(swap: D["Swap"], event: ClaimEvent<T["Data"]>): Promise<boolean> {
|
|
81
|
+
if(swap.state!==ToBTCSwapState.REFUNDED && swap.state!==ToBTCSwapState.CLAIMED) {
|
|
82
|
+
await swap._setPaymentResult({
|
|
83
|
+
secret: event.result,
|
|
84
|
+
txId: Buffer.from(event.result, "hex").reverse().toString("hex")
|
|
85
|
+
}).catch(e => {
|
|
86
|
+
this.logger.warn(`processEventClaim(): Failed to set payment result ${event.result}: `, e);
|
|
87
|
+
});
|
|
88
|
+
swap.state = ToBTCSwapState.CLAIMED;
|
|
89
|
+
if(swap.claimTxId==null) swap.claimTxId = event.meta?.txId;
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
protected processEventRefund(swap: D["Swap"], event: RefundEvent<T["Data"]>): Promise<boolean> {
|
|
96
|
+
if(swap.state!==ToBTCSwapState.CLAIMED && swap.state!==ToBTCSwapState.REFUNDED) {
|
|
97
|
+
swap.state = ToBTCSwapState.REFUNDED;
|
|
98
|
+
if(swap.refundTxId==null) swap.refundTxId = event.meta?.txId;
|
|
99
|
+
return Promise.resolve(true);
|
|
100
|
+
}
|
|
101
|
+
return Promise.resolve(false);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import {decode as bolt11Decode} from "@atomiqlabs/bolt11";
|
|
2
|
+
import {ToBTCLNDefinition, ToBTCLNWrapper} from "./ToBTCLNWrapper";
|
|
3
|
+
import {isIToBTCSwapInit, IToBTCSwap, IToBTCSwapInit} from "../IToBTCSwap";
|
|
4
|
+
import {SwapType} from "../../../../enums/SwapType";
|
|
5
|
+
import {ChainType, SwapData} from "@atomiqlabs/base";
|
|
6
|
+
import {Buffer} from "buffer";
|
|
7
|
+
import {sha256} from "@noble/hashes/sha2";
|
|
8
|
+
import {IntermediaryError} from "../../../../errors/IntermediaryError";
|
|
9
|
+
import {isLNURLPaySuccessAction, LNURL, LNURLPaySuccessAction} from "../../../../lnurl/LNURL";
|
|
10
|
+
import {TokenAmount, toTokenAmount} from "../../../../types/TokenAmount";
|
|
11
|
+
import {BitcoinTokens, BtcToken} from "../../../../types/Token";
|
|
12
|
+
import {getLogger, LoggerType} from "../../../../utils/Logger";
|
|
13
|
+
import {LNURLDecodedSuccessAction} from "../../../../types/lnurl/LNURLPay";
|
|
14
|
+
|
|
15
|
+
export type ToBTCLNSwapInit<T extends SwapData> = IToBTCSwapInit<T> & {
|
|
16
|
+
confidence: number;
|
|
17
|
+
pr?: string;
|
|
18
|
+
lnurl?: string;
|
|
19
|
+
successAction?: LNURLPaySuccessAction;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export function isToBTCLNSwapInit<T extends SwapData>(obj: any): obj is ToBTCLNSwapInit<T> {
|
|
23
|
+
return typeof (obj.confidence) === "number" &&
|
|
24
|
+
(obj.pr==null || typeof (obj.pr) === "string") &&
|
|
25
|
+
(obj.lnurl == null || typeof (obj.lnurl) === "string") &&
|
|
26
|
+
(obj.successAction == null || isLNURLPaySuccessAction(obj.successAction)) &&
|
|
27
|
+
isIToBTCSwapInit<T>(obj);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//Set of nodes which disallow probing, resulting in 0 confidence reported by the LP
|
|
31
|
+
const SNOWFLAKE_LIST: Set<string> = new Set([
|
|
32
|
+
"038f8f113c580048d847d6949371726653e02b928196bad310e3eda39ff61723f6",
|
|
33
|
+
"03a6ce61fcaacd38d31d4e3ce2d506602818e3856b4b44faff1dde9642ba705976"
|
|
34
|
+
]);
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Smart Chain to Lightning Network BTC swap
|
|
38
|
+
* @category Swaps
|
|
39
|
+
*/
|
|
40
|
+
export class ToBTCLNSwap<T extends ChainType = ChainType> extends IToBTCSwap<T, ToBTCLNDefinition<T>> {
|
|
41
|
+
private readonly usesClaimHashAsId: boolean;
|
|
42
|
+
|
|
43
|
+
protected outputToken: BtcToken<true> = BitcoinTokens.BTCLN;
|
|
44
|
+
protected readonly TYPE = SwapType.TO_BTCLN;
|
|
45
|
+
protected readonly logger: LoggerType;
|
|
46
|
+
|
|
47
|
+
private readonly confidence: number;
|
|
48
|
+
private readonly pr?: string;
|
|
49
|
+
|
|
50
|
+
readonly paymentHash?: string;
|
|
51
|
+
|
|
52
|
+
lnurl?: string;
|
|
53
|
+
successAction?: LNURLPaySuccessAction;
|
|
54
|
+
|
|
55
|
+
private secret?: string;
|
|
56
|
+
|
|
57
|
+
constructor(wrapper: ToBTCLNWrapper<T>, init: ToBTCLNSwapInit<T["Data"]>);
|
|
58
|
+
constructor(wrapper: ToBTCLNWrapper<T>, obj: any);
|
|
59
|
+
|
|
60
|
+
constructor(wrapper: ToBTCLNWrapper<T>, initOrObj: ToBTCLNSwapInit<T["Data"]> | any) {
|
|
61
|
+
if(isToBTCLNSwapInit(initOrObj) && initOrObj.url!=null) initOrObj.url += "/tobtcln";
|
|
62
|
+
super(wrapper, initOrObj);
|
|
63
|
+
if(isToBTCLNSwapInit(initOrObj)) {
|
|
64
|
+
this.confidence = initOrObj.confidence;
|
|
65
|
+
this.pr = initOrObj.pr;
|
|
66
|
+
this.lnurl = initOrObj.lnurl;
|
|
67
|
+
this.successAction = initOrObj.successAction;
|
|
68
|
+
this.usesClaimHashAsId = true;
|
|
69
|
+
} else {
|
|
70
|
+
this.confidence = initOrObj.confidence;
|
|
71
|
+
this.pr = initOrObj.pr;
|
|
72
|
+
this.lnurl = initOrObj.lnurl;
|
|
73
|
+
this.successAction = initOrObj.successAction;
|
|
74
|
+
this.secret = initOrObj.secret;
|
|
75
|
+
this.usesClaimHashAsId = initOrObj.usesClaimHashAsId ?? false;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const paymentHash = this.getPaymentHash();
|
|
79
|
+
if(paymentHash!=null) this.paymentHash = paymentHash.toString("hex");
|
|
80
|
+
this.logger = getLogger("ToBTCLN("+this.getIdentifierHashString()+"): ");
|
|
81
|
+
this.tryRecomputeSwapPrice();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
_setPaymentResult(result: { secret?: string; txId?: string }, check: boolean = false): Promise<boolean> {
|
|
85
|
+
if(result==null) return Promise.resolve(false);
|
|
86
|
+
if(result.secret==null) throw new IntermediaryError("No payment secret returned!");
|
|
87
|
+
if(check) {
|
|
88
|
+
const secretBuffer = Buffer.from(result.secret, "hex");
|
|
89
|
+
const hash = Buffer.from(sha256(secretBuffer));
|
|
90
|
+
const claimHash = this.wrapper.contract.getHashForHtlc(hash);
|
|
91
|
+
|
|
92
|
+
const expectedClaimHash = Buffer.from(this.getClaimHash(), "hex");
|
|
93
|
+
if(!claimHash.equals(expectedClaimHash)) throw new IntermediaryError("Invalid payment secret returned");
|
|
94
|
+
}
|
|
95
|
+
this.secret = result.secret;
|
|
96
|
+
return Promise.resolve(true);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
//////////////////////////////
|
|
101
|
+
//// Amounts & fees
|
|
102
|
+
|
|
103
|
+
getOutputToken(): BtcToken<true> {
|
|
104
|
+
return BitcoinTokens.BTCLN;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
getOutput(): TokenAmount<T["ChainId"], BtcToken<true>> | null {
|
|
108
|
+
if(this.pr==null || !this.pr.toLowerCase().startsWith("ln")) return null;
|
|
109
|
+
const parsedPR = bolt11Decode(this.pr);
|
|
110
|
+
if(parsedPR.millisatoshis==null) throw new Error("Swap invoice has no msat amount field!");
|
|
111
|
+
const amount = (BigInt(parsedPR.millisatoshis) + 999n) / 1000n;
|
|
112
|
+
return toTokenAmount(amount, this.outputToken, this.wrapper.prices, this.pricingInfo);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
//////////////////////////////
|
|
117
|
+
//// Getters & utils
|
|
118
|
+
|
|
119
|
+
getOutputTxId(): string | null {
|
|
120
|
+
return this.getLpIdentifier();
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Returns the lightning BOLT11 invoice where the BTC will be sent to
|
|
125
|
+
*/
|
|
126
|
+
getOutputAddress(): string | null {
|
|
127
|
+
return this.lnurl ?? this.pr ?? null;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Returns payment secret (pre-image) as a proof of payment
|
|
132
|
+
*/
|
|
133
|
+
getSecret(): string | null {
|
|
134
|
+
return this.secret ?? null;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Returns the confidence of the intermediary that this payment will succeed
|
|
139
|
+
* Value between 0 and 1, where 0 is not likely and 1 is very likely
|
|
140
|
+
*/
|
|
141
|
+
getConfidence(): number {
|
|
142
|
+
return this.confidence;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Checks whether a swap is likely to fail, based on the confidence as reported by the LP
|
|
147
|
+
*/
|
|
148
|
+
willLikelyFail(): boolean {
|
|
149
|
+
if(this.pr==null || !this.pr.toLowerCase().startsWith("ln")) return false;
|
|
150
|
+
|
|
151
|
+
const parsedRequest = bolt11Decode(this.pr);
|
|
152
|
+
|
|
153
|
+
if(parsedRequest.tagsObject.routing_info!=null) {
|
|
154
|
+
for (let route of parsedRequest.tagsObject.routing_info) {
|
|
155
|
+
if(SNOWFLAKE_LIST.has(route.pubkey)) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return this.confidence===0;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Tries to detect if the target lightning invoice is a non-custodial mobile wallet, care must be taken
|
|
166
|
+
* for such a wallet to be online when attempting to make a swap
|
|
167
|
+
*/
|
|
168
|
+
isPayingToNonCustodialWallet(): boolean {
|
|
169
|
+
if(this.pr==null || !this.pr.toLowerCase().startsWith("ln")) return false;
|
|
170
|
+
|
|
171
|
+
const parsedRequest = bolt11Decode(this.pr);
|
|
172
|
+
|
|
173
|
+
if(parsedRequest.tagsObject.routing_info!=null) {
|
|
174
|
+
return parsedRequest.tagsObject.routing_info.length>0;
|
|
175
|
+
}
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
getIdentifierHash(): Buffer {
|
|
180
|
+
const idBuffer: Buffer = this.usesClaimHashAsId
|
|
181
|
+
? Buffer.from(this.getClaimHash(), "hex")
|
|
182
|
+
: this.getPaymentHash()!;
|
|
183
|
+
if(this.randomNonce==null) return idBuffer;
|
|
184
|
+
return Buffer.concat([idBuffer, Buffer.from(this.randomNonce, "hex")]);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
getPaymentHash(): Buffer | null {
|
|
188
|
+
if(this.pr==null) return null;
|
|
189
|
+
if(this.pr.toLowerCase().startsWith("ln")) {
|
|
190
|
+
const parsed = bolt11Decode(this.pr);
|
|
191
|
+
if(parsed.tagsObject.payment_hash==null) throw new Error("Swap invoice has no payment hash field!");
|
|
192
|
+
return Buffer.from(parsed.tagsObject.payment_hash, "hex");
|
|
193
|
+
}
|
|
194
|
+
return Buffer.from(this.pr, "hex");
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
protected getLpIdentifier(): string {
|
|
198
|
+
if(this.pr==null) return this.data.getEscrowHash();
|
|
199
|
+
if(this.pr.toLowerCase().startsWith("ln")) {
|
|
200
|
+
const parsed = bolt11Decode(this.pr);
|
|
201
|
+
if(parsed.tagsObject.payment_hash==null) throw new Error("Swap invoice has no payment hash field!");
|
|
202
|
+
return parsed.tagsObject.payment_hash;
|
|
203
|
+
}
|
|
204
|
+
return this.pr;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
//////////////////////////////
|
|
209
|
+
//// LNURL-pay
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Is this an LNURL-pay swap?
|
|
213
|
+
*/
|
|
214
|
+
isLNURL(): boolean {
|
|
215
|
+
return this.lnurl!=null;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Gets the used LNURL or null if this is not an LNURL-pay swap
|
|
220
|
+
*/
|
|
221
|
+
getLNURL(): string | null {
|
|
222
|
+
return this.lnurl ?? null;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Checks whether this LNURL payment contains a success message
|
|
227
|
+
*/
|
|
228
|
+
hasSuccessAction(): boolean {
|
|
229
|
+
return this.successAction!=null;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Returns the success action after a successful payment, else null
|
|
234
|
+
*/
|
|
235
|
+
getSuccessAction(): LNURLDecodedSuccessAction | null {
|
|
236
|
+
return LNURL.decodeSuccessAction(this.successAction, this.secret);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
//////////////////////////////
|
|
241
|
+
//// Storage
|
|
242
|
+
|
|
243
|
+
serialize(): any {
|
|
244
|
+
return {
|
|
245
|
+
...super.serialize(),
|
|
246
|
+
paymentHash: this.getPaymentHash()?.toString("hex"),
|
|
247
|
+
pr: this.pr,
|
|
248
|
+
confidence: this.confidence,
|
|
249
|
+
secret: this.secret,
|
|
250
|
+
lnurl: this.lnurl,
|
|
251
|
+
successAction: this.successAction,
|
|
252
|
+
usesClaimHashAsId: this.usesClaimHashAsId
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
}
|