@atomiqlabs/sdk 8.1.7 → 8.3.1
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/dist/bitcoin/wallet/BitcoinWallet.d.ts +41 -5
- package/dist/bitcoin/wallet/BitcoinWallet.js +36 -1
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +52 -2
- package/dist/bitcoin/wallet/IBitcoinWallet.js +2 -1
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +42 -7
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +36 -1
- package/dist/enums/FeeType.d.ts +7 -0
- package/dist/enums/FeeType.js +7 -0
- package/dist/enums/SwapAmountType.d.ts +7 -0
- package/dist/enums/SwapAmountType.js +7 -0
- package/dist/enums/SwapDirection.d.ts +7 -0
- package/dist/enums/SwapDirection.js +7 -0
- package/dist/enums/SwapType.d.ts +62 -1
- package/dist/enums/SwapType.js +62 -1
- package/dist/errors/IntermediaryError.d.ts +4 -0
- package/dist/errors/IntermediaryError.js +1 -0
- package/dist/errors/RequestError.d.ts +15 -1
- package/dist/errors/RequestError.js +8 -0
- package/dist/errors/UserError.d.ts +1 -0
- package/dist/errors/UserError.js +1 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.js +3 -4
- package/dist/intermediaries/Intermediary.d.ts +57 -10
- package/dist/intermediaries/Intermediary.js +37 -10
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +55 -22
- package/dist/intermediaries/IntermediaryDiscovery.js +35 -22
- package/dist/prices/RedundantSwapPrice.d.ts +24 -3
- package/dist/prices/RedundantSwapPrice.js +21 -1
- package/dist/prices/SingleSwapPrice.d.ts +9 -6
- package/dist/prices/SingleSwapPrice.js +10 -7
- package/dist/prices/SwapPriceWithChain.d.ts +54 -16
- package/dist/prices/SwapPriceWithChain.js +58 -20
- package/dist/prices/abstract/ISwapPrice.d.ts +94 -45
- package/dist/prices/abstract/ISwapPrice.js +103 -55
- package/dist/prices/providers/BinancePriceProvider.d.ts +7 -0
- package/dist/prices/providers/BinancePriceProvider.js +7 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +6 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.js +6 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +6 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +6 -0
- package/dist/prices/providers/CustomPriceProvider.d.ts +11 -0
- package/dist/prices/providers/CustomPriceProvider.js +11 -0
- package/dist/prices/providers/KrakenPriceProvider.d.ts +9 -0
- package/dist/prices/providers/KrakenPriceProvider.js +9 -0
- package/dist/prices/providers/OKXPriceProvider.d.ts +6 -0
- package/dist/prices/providers/OKXPriceProvider.js +6 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +3 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +3 -0
- package/dist/storage/IUnifiedStorage.d.ts +19 -7
- package/dist/storage/UnifiedSwapStorage.d.ts +33 -3
- package/dist/storage/UnifiedSwapStorage.js +29 -1
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +31 -7
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +29 -6
- package/dist/storage-browser/LocalStorageManager.d.ts +25 -1
- package/dist/storage-browser/LocalStorageManager.js +25 -1
- package/dist/swapper/Swapper.d.ts +303 -222
- package/dist/swapper/Swapper.js +376 -344
- package/dist/swapper/SwapperFactory.d.ts +41 -17
- package/dist/swapper/SwapperFactory.js +23 -2
- package/dist/swapper/SwapperUtils.d.ts +75 -28
- package/dist/swapper/SwapperUtils.js +107 -60
- package/dist/swapper/SwapperWithChain.d.ts +286 -91
- package/dist/swapper/SwapperWithChain.js +218 -64
- package/dist/swapper/SwapperWithSigner.d.ts +229 -80
- package/dist/swapper/SwapperWithSigner.js +190 -44
- package/dist/swaps/IAddressSwap.d.ts +10 -1
- package/dist/swaps/IAddressSwap.js +2 -1
- package/dist/swaps/IBTCWalletSwap.d.ts +24 -6
- package/dist/swaps/IBTCWalletSwap.js +2 -1
- package/dist/swaps/IClaimableSwap.d.ts +36 -4
- package/dist/swaps/IClaimableSwap.js +2 -1
- package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
- package/dist/swaps/IRefundableSwap.d.ts +29 -3
- package/dist/swaps/IRefundableSwap.js +2 -1
- package/dist/swaps/ISwap.d.ts +159 -21
- package/dist/swaps/ISwap.js +90 -33
- package/dist/swaps/ISwapWithGasDrop.d.ts +6 -0
- package/dist/swaps/ISwapWithGasDrop.js +1 -0
- package/dist/swaps/ISwapWrapper.d.ts +157 -48
- package/dist/swaps/ISwapWrapper.js +130 -72
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +49 -6
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +22 -12
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +65 -12
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +38 -19
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +39 -9
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +30 -21
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +31 -15
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +33 -18
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +94 -29
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +90 -27
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +22 -9
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +24 -11
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +275 -58
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +516 -239
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +76 -25
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +131 -49
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +311 -51
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +542 -193
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +87 -26
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +147 -58
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +209 -53
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +449 -242
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +77 -23
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +116 -46
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +197 -56
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +326 -189
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +30 -5
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +44 -19
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +60 -19
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +74 -31
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +76 -50
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +106 -101
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +36 -13
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +65 -19
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +46 -17
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +82 -27
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +328 -92
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +460 -219
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +244 -124
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +146 -18
- package/dist/swaps/trusted/ln/LnForGasSwap.js +173 -43
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +29 -10
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +30 -11
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +200 -47
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +230 -78
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +34 -12
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +33 -14
- package/dist/types/AmountData.d.ts +2 -1
- package/dist/types/CustomPriceFunction.d.ts +7 -1
- package/dist/types/SwapExecutionAction.d.ts +74 -4
- package/dist/types/SwapWithSigner.d.ts +4 -1
- package/dist/types/SwapWithSigner.js +5 -2
- package/dist/types/Token.d.ts +11 -5
- package/dist/types/Token.js +6 -3
- package/dist/types/TokenAmount.d.ts +3 -0
- package/dist/types/TokenAmount.js +2 -0
- package/dist/types/fees/Fee.d.ts +2 -1
- package/dist/types/fees/FeeBreakdown.d.ts +2 -1
- package/dist/types/fees/PercentagePPM.d.ts +2 -0
- package/dist/types/fees/PercentagePPM.js +1 -0
- package/dist/types/lnurl/LNURLPay.d.ts +14 -6
- package/dist/types/lnurl/LNURLPay.js +6 -2
- package/dist/types/lnurl/LNURLWithdraw.d.ts +12 -5
- package/dist/types/lnurl/LNURLWithdraw.js +6 -2
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +20 -0
- package/dist/types/wallets/LightningInvoiceCreateService.js +15 -0
- package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +3 -1
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +3 -1
- package/dist/utils/BitcoinUtils.d.ts +1 -0
- package/dist/utils/BitcoinUtils.js +5 -1
- package/dist/utils/SwapUtils.d.ts +56 -1
- package/dist/utils/SwapUtils.js +53 -1
- package/dist/utils/TokenUtils.d.ts +10 -2
- package/dist/utils/TokenUtils.js +12 -4
- package/package.json +3 -3
- package/src/bitcoin/wallet/BitcoinWallet.ts +41 -5
- package/src/bitcoin/wallet/IBitcoinWallet.ts +57 -2
- package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +42 -6
- package/src/enums/FeeType.ts +7 -0
- package/src/enums/SwapAmountType.ts +7 -0
- package/src/enums/SwapDirection.ts +7 -0
- package/src/enums/SwapType.ts +62 -2
- package/src/errors/IntermediaryError.ts +4 -0
- package/src/errors/RequestError.ts +15 -1
- package/src/errors/UserError.ts +1 -0
- package/src/index.ts +6 -5
- package/src/intermediaries/Intermediary.ts +57 -10
- package/src/intermediaries/IntermediaryDiscovery.ts +60 -27
- package/src/prices/RedundantSwapPrice.ts +24 -4
- package/src/prices/SingleSwapPrice.ts +10 -7
- package/src/prices/SwapPriceWithChain.ts +59 -21
- package/src/prices/abstract/ISwapPrice.ts +114 -65
- package/src/prices/providers/BinancePriceProvider.ts +7 -0
- package/src/prices/providers/CoinGeckoPriceProvider.ts +6 -0
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +6 -0
- package/src/prices/providers/CustomPriceProvider.ts +11 -0
- package/src/prices/providers/KrakenPriceProvider.ts +9 -0
- package/src/prices/providers/OKXPriceProvider.ts +6 -0
- package/src/prices/providers/abstract/ExchangePriceProvider.ts +3 -0
- package/src/storage/IUnifiedStorage.ts +19 -7
- package/src/storage/UnifiedSwapStorage.ts +33 -3
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +31 -8
- package/src/storage-browser/LocalStorageManager.ts +25 -1
- package/src/swapper/Swapper.ts +513 -379
- package/src/swapper/SwapperFactory.ts +44 -21
- package/src/swapper/SwapperUtils.ts +107 -60
- package/src/swapper/SwapperWithChain.ts +320 -81
- package/src/swapper/SwapperWithSigner.ts +263 -56
- package/src/swaps/IAddressSwap.ts +11 -1
- package/src/swaps/IBTCWalletSwap.ts +24 -8
- package/src/swaps/IClaimableSwap.ts +39 -4
- package/src/swaps/IClaimableSwapWrapper.ts +11 -2
- package/src/swaps/IRefundableSwap.ts +32 -3
- package/src/swaps/ISwap.ts +221 -82
- package/src/swaps/ISwapWithGasDrop.ts +6 -0
- package/src/swaps/ISwapWrapper.ts +212 -94
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +62 -18
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +83 -37
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +61 -30
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +37 -19
- package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +120 -51
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +559 -256
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +155 -61
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +590 -226
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +470 -243
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +352 -193
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +86 -39
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +88 -33
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +534 -263
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +289 -148
- package/src/swaps/trusted/ln/LnForGasSwap.ts +184 -45
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +260 -86
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
- package/src/types/AmountData.ts +2 -1
- package/src/types/CustomPriceFunction.ts +7 -1
- package/src/types/SwapExecutionAction.ts +84 -5
- package/src/types/SwapWithSigner.ts +7 -3
- package/src/types/Token.ts +12 -5
- package/src/types/TokenAmount.ts +3 -0
- package/src/types/fees/Fee.ts +2 -1
- package/src/types/fees/FeeBreakdown.ts +2 -1
- package/src/types/fees/PercentagePPM.ts +2 -0
- package/src/types/lnurl/LNURLPay.ts +14 -6
- package/src/types/lnurl/LNURLWithdraw.ts +12 -5
- package/src/types/wallets/LightningInvoiceCreateService.ts +26 -0
- package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
- package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +3 -1
- package/src/utils/BitcoinUtils.ts +5 -0
- package/src/utils/SwapUtils.ts +61 -1
- package/src/utils/TokenUtils.ts +12 -4
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +0 -68
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +0 -2
- package/dist/bitcoin/LightningNetworkApi.d.ts +0 -12
- package/dist/bitcoin/LightningNetworkApi.js +0 -2
- package/dist/bitcoin/mempool/MempoolApi.d.ts +0 -350
- package/dist/bitcoin/mempool/MempoolApi.js +0 -311
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +0 -44
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +0 -48
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +0 -119
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +0 -361
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +0 -22
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +0 -105
- package/dist/errors/PaymentAuthError.d.ts +0 -11
- package/dist/errors/PaymentAuthError.js +0 -23
- package/src/errors/PaymentAuthError.ts +0 -26
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
ChainType,
|
|
6
6
|
ClaimEvent,
|
|
7
7
|
InitializeEvent, LightningNetworkApi,
|
|
8
|
-
RefundEvent
|
|
8
|
+
RefundEvent, SwapCommitState, SwapCommitStateType
|
|
9
9
|
} from "@atomiqlabs/base";
|
|
10
10
|
import {Intermediary} from "../../../../intermediaries/Intermediary";
|
|
11
11
|
import {Buffer} from "buffer";
|
|
@@ -29,7 +29,8 @@ import {IClaimableSwapWrapper} from "../../../IClaimableSwapWrapper";
|
|
|
29
29
|
import {AmountData} from "../../../../types/AmountData";
|
|
30
30
|
import {LNURLWithdrawParamsWithUrl} from "../../../../types/lnurl/LNURLWithdraw";
|
|
31
31
|
import {tryWithRetries} from "../../../../utils/RetryUtils";
|
|
32
|
-
import {AllOptional
|
|
32
|
+
import {AllOptional} from "../../../../utils/TypeUtils";
|
|
33
|
+
import {sha256} from "@noble/hashes/sha2";
|
|
33
34
|
|
|
34
35
|
export type FromBTCLNOptions = {
|
|
35
36
|
descriptionHash?: Buffer,
|
|
@@ -45,16 +46,44 @@ export type FromBTCLNWrapperOptions = ISwapWrapperOptions & {
|
|
|
45
46
|
export type FromBTCLNDefinition<T extends ChainType> = IFromBTCLNDefinition<T, FromBTCLNWrapper<T>, FromBTCLNSwap<T>>;
|
|
46
47
|
|
|
47
48
|
/**
|
|
48
|
-
*
|
|
49
|
+
* Legacy escrow (HTLC) based swap for Bitcoin Lightning -> Smart chains, requires manual settlement
|
|
50
|
+
* of the swap on the destination network once the lightning network payment is received by the LP.
|
|
51
|
+
*
|
|
49
52
|
* @category Swaps
|
|
50
53
|
*/
|
|
51
54
|
export class FromBTCLNWrapper<
|
|
52
55
|
T extends ChainType
|
|
53
56
|
> extends IFromBTCLNWrapper<T, FromBTCLNDefinition<T>, FromBTCLNWrapperOptions> implements IClaimableSwapWrapper<FromBTCLNSwap<T>> {
|
|
54
57
|
|
|
55
|
-
public readonly
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
public readonly TYPE: SwapType.FROM_BTCLN = SwapType.FROM_BTCLN;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
protected readonly tickSwapState = [
|
|
64
|
+
FromBTCLNSwapState.PR_CREATED,
|
|
65
|
+
FromBTCLNSwapState.PR_PAID,
|
|
66
|
+
FromBTCLNSwapState.CLAIM_COMMITED
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @internal
|
|
71
|
+
*/
|
|
72
|
+
readonly _pendingSwapStates = [
|
|
73
|
+
FromBTCLNSwapState.PR_CREATED,
|
|
74
|
+
FromBTCLNSwapState.QUOTE_SOFT_EXPIRED,
|
|
75
|
+
FromBTCLNSwapState.PR_PAID,
|
|
76
|
+
FromBTCLNSwapState.CLAIM_COMMITED,
|
|
77
|
+
FromBTCLNSwapState.EXPIRED
|
|
78
|
+
];
|
|
79
|
+
/**
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
readonly _claimableSwapStates = [FromBTCLNSwapState.CLAIM_COMMITED];
|
|
83
|
+
/**
|
|
84
|
+
* @internal
|
|
85
|
+
*/
|
|
86
|
+
readonly _swapDeserializer = FromBTCLNSwap;
|
|
58
87
|
|
|
59
88
|
/**
|
|
60
89
|
* @param chainIdentifier
|
|
@@ -93,38 +122,38 @@ export class FromBTCLNWrapper<
|
|
|
93
122
|
);
|
|
94
123
|
}
|
|
95
124
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
FromBTCLNSwapState.CLAIM_COMMITED,
|
|
101
|
-
FromBTCLNSwapState.EXPIRED
|
|
102
|
-
];
|
|
103
|
-
public readonly tickSwapState = [
|
|
104
|
-
FromBTCLNSwapState.PR_CREATED,
|
|
105
|
-
FromBTCLNSwapState.PR_PAID,
|
|
106
|
-
FromBTCLNSwapState.CLAIM_COMMITED
|
|
107
|
-
];
|
|
108
|
-
|
|
125
|
+
/**
|
|
126
|
+
* @inheritDoc
|
|
127
|
+
* @internal
|
|
128
|
+
*/
|
|
109
129
|
protected processEventInitialize(swap: FromBTCLNSwap<T>, event: InitializeEvent<T["Data"]>): Promise<boolean> {
|
|
110
|
-
if(swap.
|
|
111
|
-
swap.
|
|
130
|
+
if(swap._state===FromBTCLNSwapState.PR_PAID || swap._state===FromBTCLNSwapState.QUOTE_SOFT_EXPIRED) {
|
|
131
|
+
swap._state = FromBTCLNSwapState.CLAIM_COMMITED;
|
|
112
132
|
return Promise.resolve(true);
|
|
113
133
|
}
|
|
114
134
|
return Promise.resolve(false);
|
|
115
135
|
}
|
|
116
136
|
|
|
137
|
+
/**
|
|
138
|
+
* @inheritDoc
|
|
139
|
+
* @internal
|
|
140
|
+
*/
|
|
117
141
|
protected processEventClaim(swap: FromBTCLNSwap<T>, event: ClaimEvent<T["Data"]>): Promise<boolean> {
|
|
118
|
-
if(swap.
|
|
119
|
-
swap.
|
|
142
|
+
if(swap._state!==FromBTCLNSwapState.FAILED && swap._state!==FromBTCLNSwapState.CLAIM_CLAIMED) {
|
|
143
|
+
swap._state = FromBTCLNSwapState.CLAIM_CLAIMED;
|
|
144
|
+
swap._setSwapSecret(event.result);
|
|
120
145
|
return Promise.resolve(true);
|
|
121
146
|
}
|
|
122
147
|
return Promise.resolve(false);
|
|
123
148
|
}
|
|
124
149
|
|
|
150
|
+
/**
|
|
151
|
+
* @inheritDoc
|
|
152
|
+
* @internal
|
|
153
|
+
*/
|
|
125
154
|
protected processEventRefund(swap: FromBTCLNSwap<T>, event: RefundEvent<T["Data"]>): Promise<boolean> {
|
|
126
|
-
if(swap.
|
|
127
|
-
swap.
|
|
155
|
+
if(swap._state!==FromBTCLNSwapState.CLAIM_CLAIMED && swap._state!==FromBTCLNSwapState.FAILED) {
|
|
156
|
+
swap._state = FromBTCLNSwapState.FAILED;
|
|
128
157
|
return Promise.resolve(true);
|
|
129
158
|
}
|
|
130
159
|
return Promise.resolve(false);
|
|
@@ -139,8 +168,10 @@ export class FromBTCLNWrapper<
|
|
|
139
168
|
* @param options Options as passed to the swap creation function
|
|
140
169
|
* @param decodedPr Decoded bolt11 lightning network invoice
|
|
141
170
|
* @param paymentHash Expected payment hash of the bolt11 lightning network invoice
|
|
142
|
-
*
|
|
171
|
+
*
|
|
143
172
|
* @throws {IntermediaryError} in case the response is invalid
|
|
173
|
+
*
|
|
174
|
+
* @private
|
|
144
175
|
*/
|
|
145
176
|
private verifyReturnedData(
|
|
146
177
|
resp: FromBTCLNResponseType,
|
|
@@ -171,18 +202,21 @@ export class FromBTCLNWrapper<
|
|
|
171
202
|
}
|
|
172
203
|
|
|
173
204
|
/**
|
|
174
|
-
* Returns a newly created swap
|
|
205
|
+
* Returns a newly created legacy Lightning -> Smart chain swap using the HTLC based escrow swap protocol,
|
|
206
|
+
* where the user needs to manually settle swap on the destination smart chain. The user has to pay
|
|
207
|
+
* a bolt11 invoice on the input lightning network side.
|
|
175
208
|
*
|
|
176
|
-
* @param
|
|
177
|
-
*
|
|
178
|
-
* @param
|
|
179
|
-
* @param
|
|
180
|
-
* @param
|
|
181
|
-
* @param
|
|
182
|
-
* @param
|
|
209
|
+
* @param recipient Smart chain signer's address on the destination chain, that will have to manually
|
|
210
|
+
* settle the swap.
|
|
211
|
+
* @param amountData Amount, token and exact input/output data for to swap
|
|
212
|
+
* @param lps An array of intermediaries (LPs) to get the quotes from
|
|
213
|
+
* @param options Optional additional quote options
|
|
214
|
+
* @param additionalParams Optional additional parameters sent to the LP when creating the swap
|
|
215
|
+
* @param abortSignal Abort signal
|
|
216
|
+
* @param preFetches Optional pre-fetches for speeding up the quoting process (mainly used internally)
|
|
183
217
|
*/
|
|
184
218
|
create(
|
|
185
|
-
|
|
219
|
+
recipient: string,
|
|
186
220
|
amountData: AmountData,
|
|
187
221
|
lps: Intermediary[],
|
|
188
222
|
options?: FromBTCLNOptions,
|
|
@@ -198,20 +232,20 @@ export class FromBTCLNWrapper<
|
|
|
198
232
|
intermediary: Intermediary
|
|
199
233
|
}[] {
|
|
200
234
|
if(options==null) options = {};
|
|
201
|
-
options.unsafeSkipLnNodeCheck ??= this.
|
|
235
|
+
options.unsafeSkipLnNodeCheck ??= this._options.unsafeSkipLnNodeCheck;
|
|
202
236
|
|
|
203
237
|
if(options.descriptionHash!=null && options.descriptionHash.length!==32)
|
|
204
238
|
throw new UserError("Invalid description hash length");
|
|
205
239
|
|
|
206
240
|
const {secret, paymentHash} = this.getSecretAndHash();
|
|
207
|
-
const claimHash = this.
|
|
241
|
+
const claimHash = this._contract.getHashForHtlc(paymentHash);
|
|
208
242
|
|
|
209
|
-
const nativeTokenAddress = this.
|
|
243
|
+
const nativeTokenAddress = this._chain.getNativeCurrencyAddress();
|
|
210
244
|
|
|
211
245
|
const _abortController = extendAbortController(abortSignal);
|
|
212
246
|
const _preFetches = {
|
|
213
247
|
pricePrefetchPromise: preFetches?.pricePrefetchPromise ?? this.preFetchPrice(amountData, _abortController.signal),
|
|
214
|
-
feeRatePromise: preFetches?.feeRatePromise ?? this.preFetchFeeRate(
|
|
248
|
+
feeRatePromise: preFetches?.feeRatePromise ?? this.preFetchFeeRate(recipient, amountData, claimHash.toString("hex"), _abortController),
|
|
215
249
|
usdPricePrefetchPromise: preFetches?.usdPricePrefetchPromise ?? this.preFetchUsdPrice(_abortController.signal),
|
|
216
250
|
}
|
|
217
251
|
|
|
@@ -231,14 +265,14 @@ export class FromBTCLNWrapper<
|
|
|
231
265
|
{
|
|
232
266
|
paymentHash,
|
|
233
267
|
amount: amountData.amount,
|
|
234
|
-
claimer:
|
|
268
|
+
claimer: recipient,
|
|
235
269
|
token: amountData.token.toString(),
|
|
236
270
|
descriptionHash: options?.descriptionHash,
|
|
237
271
|
exactOut: !amountData.exactIn,
|
|
238
272
|
feeRate: throwIfUndefined(_preFetches.feeRatePromise),
|
|
239
273
|
additionalParams
|
|
240
274
|
},
|
|
241
|
-
this.
|
|
275
|
+
this._options.postRequestTimeout, abortController.signal, retryCount>0 ? false : undefined
|
|
242
276
|
);
|
|
243
277
|
|
|
244
278
|
return {
|
|
@@ -270,8 +304,8 @@ export class FromBTCLNWrapper<
|
|
|
270
304
|
swapFee: resp.swapFee,
|
|
271
305
|
swapFeeBtc: resp.swapFee * amountIn / (resp.total - resp.swapFee),
|
|
272
306
|
feeRate: (await _preFetches.feeRatePromise)!,
|
|
273
|
-
initialSwapData: await this.
|
|
274
|
-
ChainSwapType.HTLC, lp.getAddress(this.chainIdentifier),
|
|
307
|
+
initialSwapData: await this._contract.createSwapData(
|
|
308
|
+
ChainSwapType.HTLC, lp.getAddress(this.chainIdentifier), recipient, amountData.token,
|
|
275
309
|
resp.total, claimHash.toString("hex"),
|
|
276
310
|
this.getRandomSequence(), BigInt(Math.floor(Date.now()/1000)), false, true,
|
|
277
311
|
resp.securityDeposit, 0n, nativeTokenAddress
|
|
@@ -292,17 +326,21 @@ export class FromBTCLNWrapper<
|
|
|
292
326
|
}
|
|
293
327
|
|
|
294
328
|
/**
|
|
295
|
-
* Returns a newly created
|
|
329
|
+
* Returns a newly created legacy Lightning -> Smart chain swap using the HTLC based escrow swap protocol,
|
|
330
|
+
* where the user needs to manually settle swap on the destination smart chain. The swap is created
|
|
331
|
+
* with an LNURL-withdraw link which will be used to pay the generated bolt11 invoice automatically
|
|
332
|
+
* when {@link FromBTCLNSwap.waitForPayment} is called on the swap.
|
|
296
333
|
*
|
|
297
|
-
* @param
|
|
298
|
-
*
|
|
299
|
-
* @param
|
|
300
|
-
* @param
|
|
301
|
-
* @param
|
|
302
|
-
* @param
|
|
334
|
+
* @param recipient Smart chain signer's address on the destination chain, that will have to manually
|
|
335
|
+
* settle the swap.
|
|
336
|
+
* @param lnurl LNURL-withdraw link to pull the funds from
|
|
337
|
+
* @param amountData Amount, token and exact input/output data for to swap
|
|
338
|
+
* @param lps An array of intermediaries (LPs) to get the quotes from
|
|
339
|
+
* @param additionalParams Optional additional parameters sent to the LP when creating the swap
|
|
340
|
+
* @param abortSignal Abort signal
|
|
303
341
|
*/
|
|
304
342
|
async createViaLNURL(
|
|
305
|
-
|
|
343
|
+
recipient: string,
|
|
306
344
|
lnurl: string | LNURLWithdrawParamsWithUrl,
|
|
307
345
|
amountData: AmountData,
|
|
308
346
|
lps: Intermediary[],
|
|
@@ -318,12 +356,12 @@ export class FromBTCLNWrapper<
|
|
|
318
356
|
const preFetches = {
|
|
319
357
|
pricePrefetchPromise: this.preFetchPrice(amountData, abortController.signal),
|
|
320
358
|
usdPricePrefetchPromise: this.preFetchUsdPrice(abortController.signal),
|
|
321
|
-
feeRatePromise: this.preFetchFeeRate(
|
|
359
|
+
feeRatePromise: this.preFetchFeeRate(recipient, amountData, undefined, abortController)
|
|
322
360
|
};
|
|
323
361
|
|
|
324
362
|
try {
|
|
325
363
|
const exactOutAmountPromise: Promise<bigint | undefined> | undefined = !amountData.exactIn ? preFetches.pricePrefetchPromise.then(price =>
|
|
326
|
-
this.
|
|
364
|
+
this._prices.getToBtcSwapAmount(this.chainIdentifier, amountData.amount, amountData.token, abortController.signal, price)
|
|
327
365
|
).catch(e => {
|
|
328
366
|
abortController.abort(e);
|
|
329
367
|
return undefined;
|
|
@@ -345,12 +383,14 @@ export class FromBTCLNWrapper<
|
|
|
345
383
|
if((amount * 105n / 100n) > max) throw new UserError("Amount more than LNURL-withdraw maximum");
|
|
346
384
|
}
|
|
347
385
|
|
|
348
|
-
return this.create(
|
|
386
|
+
return this.create(recipient, amountData, lps, undefined, additionalParams, abortSignal, preFetches).map(data => {
|
|
349
387
|
return {
|
|
350
388
|
quote: data.quote.then(quote => {
|
|
351
|
-
quote.
|
|
352
|
-
|
|
353
|
-
|
|
389
|
+
quote._setLNURLData(
|
|
390
|
+
withdrawRequest.url,
|
|
391
|
+
withdrawRequest.k1,
|
|
392
|
+
withdrawRequest.callback
|
|
393
|
+
)
|
|
354
394
|
|
|
355
395
|
const amountIn = quote.getInput().rawAmount!;
|
|
356
396
|
if(amountIn < min) throw new UserError("Amount less than LNURL-withdraw minimum");
|
|
@@ -367,6 +407,10 @@ export class FromBTCLNWrapper<
|
|
|
367
407
|
}
|
|
368
408
|
}
|
|
369
409
|
|
|
410
|
+
/**
|
|
411
|
+
* @inheritDoc
|
|
412
|
+
* @internal
|
|
413
|
+
*/
|
|
370
414
|
protected async _checkPastSwaps(pastSwaps: FromBTCLNSwap<T>[]): Promise<{
|
|
371
415
|
changedSwaps: FromBTCLNSwap<T>[];
|
|
372
416
|
removeSwaps: FromBTCLNSwap<T>[]
|
|
@@ -374,7 +418,7 @@ export class FromBTCLNWrapper<
|
|
|
374
418
|
const changedSwapSet: Set<FromBTCLNSwap<T>> = new Set();
|
|
375
419
|
|
|
376
420
|
const swapExpiredStatus: {[id: string]: boolean} = {};
|
|
377
|
-
const checkStatusSwaps: (FromBTCLNSwap<T> & {
|
|
421
|
+
const checkStatusSwaps: (FromBTCLNSwap<T> & {_data: T["Data"]})[] = [];
|
|
378
422
|
|
|
379
423
|
await Promise.all(pastSwaps.map(async (pastSwap) => {
|
|
380
424
|
if(pastSwap._shouldCheckIntermediary()) {
|
|
@@ -391,13 +435,13 @@ export class FromBTCLNWrapper<
|
|
|
391
435
|
//Check expiry
|
|
392
436
|
swapExpiredStatus[pastSwap.getId()] = await pastSwap._verifyQuoteDefinitelyExpired();
|
|
393
437
|
}
|
|
394
|
-
if(pastSwap.
|
|
438
|
+
if(pastSwap._shouldFetchOnchainState()) {
|
|
395
439
|
//Add to swaps for which status should be checked
|
|
396
|
-
if(pastSwap.
|
|
440
|
+
if(pastSwap._data!=null) checkStatusSwaps.push(pastSwap as (FromBTCLNSwap<T> & {_data: T["Data"]}));
|
|
397
441
|
}
|
|
398
442
|
}));
|
|
399
443
|
|
|
400
|
-
const swapStatuses = await this.
|
|
444
|
+
const swapStatuses = await this._contract.getCommitStatuses(checkStatusSwaps.map(val => ({signer: val._getInitiator(), swapData: val._data})));
|
|
401
445
|
|
|
402
446
|
for(let pastSwap of checkStatusSwaps) {
|
|
403
447
|
const shouldSave = await pastSwap._sync(
|
|
@@ -425,4 +469,54 @@ export class FromBTCLNWrapper<
|
|
|
425
469
|
};
|
|
426
470
|
}
|
|
427
471
|
|
|
472
|
+
/**
|
|
473
|
+
* @inheritDoc
|
|
474
|
+
* @internal
|
|
475
|
+
*/
|
|
476
|
+
async recoverFromSwapDataAndState(
|
|
477
|
+
init: {data: T["Data"], getInitTxId: () => Promise<string>, getTxBlock: () => Promise<{blockTime: number, blockHeight: number}>},
|
|
478
|
+
state: SwapCommitState,
|
|
479
|
+
lp?: Intermediary
|
|
480
|
+
): Promise<FromBTCLNSwap<T> | null> {
|
|
481
|
+
const data = init.data;
|
|
482
|
+
|
|
483
|
+
let paymentHash = data.getHTLCHashHint();
|
|
484
|
+
let secret: string | undefined;
|
|
485
|
+
if(state.type===SwapCommitStateType.PAID) {
|
|
486
|
+
secret = await state.getClaimResult();
|
|
487
|
+
paymentHash = Buffer.from(sha256(Buffer.from(secret, "hex"))).toString("hex");
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
const swapInit: FromBTCLNSwapInit<T["Data"]> = {
|
|
491
|
+
pricingInfo: {
|
|
492
|
+
isValid: true,
|
|
493
|
+
satsBaseFee: 0n,
|
|
494
|
+
swapPriceUSatPerToken: 100_000_000_000_000n,
|
|
495
|
+
realPriceUSatPerToken: 100_000_000_000_000n,
|
|
496
|
+
differencePPM: 0n,
|
|
497
|
+
feePPM: 0n,
|
|
498
|
+
},
|
|
499
|
+
url: lp?.url,
|
|
500
|
+
expiry: 0,
|
|
501
|
+
swapFee: 0n,
|
|
502
|
+
swapFeeBtc: 0n,
|
|
503
|
+
feeRate: "",
|
|
504
|
+
signatureData: undefined,
|
|
505
|
+
initialSwapData: data,
|
|
506
|
+
data,
|
|
507
|
+
pr: paymentHash ?? undefined,
|
|
508
|
+
secret,
|
|
509
|
+
exactIn: false
|
|
510
|
+
}
|
|
511
|
+
const swap = new FromBTCLNSwap(this, swapInit);
|
|
512
|
+
swap._commitTxId = await init.getInitTxId();
|
|
513
|
+
const blockData = await init.getTxBlock();
|
|
514
|
+
swap.createdAt = blockData.blockTime * 1000;
|
|
515
|
+
swap._setInitiated();
|
|
516
|
+
swap._state = FromBTCLNSwapState.CLAIM_COMMITED;
|
|
517
|
+
await swap._sync(false, false, state);
|
|
518
|
+
await swap._save();
|
|
519
|
+
return swap;
|
|
520
|
+
}
|
|
521
|
+
|
|
428
522
|
}
|