@atomiqlabs/sdk 8.1.8 → 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 +302 -221
- 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 +512 -378
- 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
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.LnForGasSwap = exports.isLnForGasSwapInit = exports.LnForGasSwapState = void 0;
|
|
4
4
|
const bolt11_1 = require("@atomiqlabs/bolt11");
|
|
5
5
|
const SwapType_1 = require("../../../enums/SwapType");
|
|
6
|
-
const PaymentAuthError_1 = require("../../../errors/PaymentAuthError");
|
|
7
6
|
const Utils_1 = require("../../../utils/Utils");
|
|
8
7
|
const ISwap_1 = require("../../ISwap");
|
|
9
8
|
const TrustedIntermediaryAPI_1 = require("../../../intermediaries/apis/TrustedIntermediaryAPI");
|
|
@@ -15,14 +14,30 @@ const Logger_1 = require("../../../utils/Logger");
|
|
|
15
14
|
const TimeoutUtils_1 = require("../../../utils/TimeoutUtils");
|
|
16
15
|
/**
|
|
17
16
|
* State enum for trusted Lightning gas swaps
|
|
17
|
+
*
|
|
18
18
|
* @category Swaps
|
|
19
19
|
*/
|
|
20
20
|
var LnForGasSwapState;
|
|
21
21
|
(function (LnForGasSwapState) {
|
|
22
|
+
/**
|
|
23
|
+
* The swap quote expired without user sending in the lightning network payment
|
|
24
|
+
*/
|
|
22
25
|
LnForGasSwapState[LnForGasSwapState["EXPIRED"] = -2] = "EXPIRED";
|
|
26
|
+
/**
|
|
27
|
+
* The swap has failed after the intermediary already received a lightning network payment on the source
|
|
28
|
+
*/
|
|
23
29
|
LnForGasSwapState[LnForGasSwapState["FAILED"] = -1] = "FAILED";
|
|
30
|
+
/**
|
|
31
|
+
* Swap was created
|
|
32
|
+
*/
|
|
24
33
|
LnForGasSwapState[LnForGasSwapState["PR_CREATED"] = 0] = "PR_CREATED";
|
|
34
|
+
/**
|
|
35
|
+
* User paid the lightning network invoice on the source
|
|
36
|
+
*/
|
|
25
37
|
LnForGasSwapState[LnForGasSwapState["PR_PAID"] = 1] = "PR_PAID";
|
|
38
|
+
/**
|
|
39
|
+
* The swap is finished after the intermediary sent funds on the destination chain
|
|
40
|
+
*/
|
|
26
41
|
LnForGasSwapState[LnForGasSwapState["FINISHED"] = 2] = "FINISHED";
|
|
27
42
|
})(LnForGasSwapState = exports.LnForGasSwapState || (exports.LnForGasSwapState = {}));
|
|
28
43
|
function isLnForGasSwapInit(obj) {
|
|
@@ -34,7 +49,9 @@ function isLnForGasSwapInit(obj) {
|
|
|
34
49
|
}
|
|
35
50
|
exports.isLnForGasSwapInit = isLnForGasSwapInit;
|
|
36
51
|
/**
|
|
37
|
-
* Trusted Lightning
|
|
52
|
+
* Trusted swap for Bitcoin Lightning -> Smart chains, to be used for minor amounts to get gas tokens on
|
|
53
|
+
* the destination chain, which is only needed for Solana, which still uses legacy swaps
|
|
54
|
+
*
|
|
38
55
|
* @category Swaps
|
|
39
56
|
*/
|
|
40
57
|
class LnForGasSwap extends ISwap_1.ISwap {
|
|
@@ -42,14 +59,17 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
42
59
|
if (isLnForGasSwapInit(initOrObj) && initOrObj.url != null)
|
|
43
60
|
initOrObj.url += "/lnforgas";
|
|
44
61
|
super(wrapper, initOrObj);
|
|
45
|
-
this.currentVersion = 2;
|
|
46
62
|
this.TYPE = SwapType_1.SwapType.TRUSTED_FROM_BTCLN;
|
|
63
|
+
/**
|
|
64
|
+
* @internal
|
|
65
|
+
*/
|
|
66
|
+
this.currentVersion = 2;
|
|
47
67
|
if (isLnForGasSwapInit(initOrObj)) {
|
|
48
68
|
this.pr = initOrObj.pr;
|
|
49
69
|
this.outputAmount = initOrObj.outputAmount;
|
|
50
70
|
this.recipient = initOrObj.recipient;
|
|
51
71
|
this.token = initOrObj.token;
|
|
52
|
-
this.
|
|
72
|
+
this._state = LnForGasSwapState.PR_CREATED;
|
|
53
73
|
}
|
|
54
74
|
else {
|
|
55
75
|
this.pr = initOrObj.pr;
|
|
@@ -66,10 +86,14 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
66
86
|
}
|
|
67
87
|
this.logger = (0, Logger_1.getLogger)("LnForGas(" + this.getId() + "): ");
|
|
68
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* @inheritDoc
|
|
91
|
+
* @internal
|
|
92
|
+
*/
|
|
69
93
|
upgradeVersion() {
|
|
70
94
|
if (this.version == 1) {
|
|
71
|
-
if (this.
|
|
72
|
-
this.
|
|
95
|
+
if (this._state === 1)
|
|
96
|
+
this._state = LnForGasSwapState.FINISHED;
|
|
73
97
|
this.version = 2;
|
|
74
98
|
}
|
|
75
99
|
if (this.version == null) {
|
|
@@ -78,8 +102,8 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
78
102
|
}
|
|
79
103
|
}
|
|
80
104
|
/**
|
|
81
|
-
*
|
|
82
|
-
* @
|
|
105
|
+
* @inheritDoc
|
|
106
|
+
* @internal
|
|
83
107
|
*/
|
|
84
108
|
tryRecomputeSwapPrice() {
|
|
85
109
|
if (this.swapFeeBtc == null && this.swapFee != null) {
|
|
@@ -89,21 +113,40 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
89
113
|
}
|
|
90
114
|
//////////////////////////////
|
|
91
115
|
//// Getters & utils
|
|
116
|
+
/**
|
|
117
|
+
* @inheritDoc
|
|
118
|
+
* @internal
|
|
119
|
+
*/
|
|
92
120
|
_getEscrowHash() {
|
|
93
121
|
return this.getId();
|
|
94
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* @inheritDoc
|
|
125
|
+
*/
|
|
95
126
|
getOutputAddress() {
|
|
96
127
|
return this.recipient;
|
|
97
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* @inheritDoc
|
|
131
|
+
*/
|
|
98
132
|
getInputAddress() {
|
|
99
133
|
return this.pr;
|
|
100
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* @inheritDoc
|
|
137
|
+
*/
|
|
101
138
|
getInputTxId() {
|
|
102
139
|
return this.getId();
|
|
103
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* @inheritDoc
|
|
143
|
+
*/
|
|
104
144
|
getOutputTxId() {
|
|
105
145
|
return this.scTxId ?? null;
|
|
106
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* @inheritDoc
|
|
149
|
+
*/
|
|
107
150
|
getId() {
|
|
108
151
|
if (this.pr == null)
|
|
109
152
|
throw new Error("No payment request assigned to this swap!");
|
|
@@ -124,78 +167,139 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
124
167
|
getHyperlink() {
|
|
125
168
|
return "lightning:" + this.pr.toUpperCase();
|
|
126
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* @inheritDoc
|
|
172
|
+
*/
|
|
127
173
|
requiresAction() {
|
|
128
174
|
return false;
|
|
129
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* @inheritDoc
|
|
178
|
+
*/
|
|
130
179
|
isFinished() {
|
|
131
|
-
return this.
|
|
180
|
+
return this._state === LnForGasSwapState.FINISHED || this._state === LnForGasSwapState.FAILED || this._state === LnForGasSwapState.EXPIRED;
|
|
132
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* @inheritDoc
|
|
184
|
+
*/
|
|
133
185
|
isQuoteExpired() {
|
|
134
|
-
return this.
|
|
186
|
+
return this._state === LnForGasSwapState.EXPIRED;
|
|
135
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* @inheritDoc
|
|
190
|
+
*/
|
|
136
191
|
isQuoteSoftExpired() {
|
|
137
192
|
return this.expiry < Date.now();
|
|
138
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* @inheritDoc
|
|
196
|
+
*/
|
|
139
197
|
isFailed() {
|
|
140
|
-
return this.
|
|
198
|
+
return this._state === LnForGasSwapState.FAILED;
|
|
141
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* @inheritDoc
|
|
202
|
+
*/
|
|
142
203
|
isSuccessful() {
|
|
143
|
-
return this.
|
|
204
|
+
return this._state === LnForGasSwapState.FINISHED;
|
|
144
205
|
}
|
|
145
|
-
|
|
206
|
+
/**
|
|
207
|
+
* @inheritDoc
|
|
208
|
+
* @internal
|
|
209
|
+
*/
|
|
210
|
+
_verifyQuoteDefinitelyExpired() {
|
|
211
|
+
return Promise.resolve(this.expiry < Date.now());
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* @inheritDoc
|
|
215
|
+
* @internal
|
|
216
|
+
*/
|
|
217
|
+
_verifyQuoteValid() {
|
|
146
218
|
return Promise.resolve(this.expiry > Date.now());
|
|
147
219
|
}
|
|
148
220
|
//////////////////////////////
|
|
149
221
|
//// Amounts & fees
|
|
222
|
+
/**
|
|
223
|
+
* Returns an output amount in base units without a swap fee included, hence this value
|
|
224
|
+
* is larger than the actual output amount
|
|
225
|
+
*
|
|
226
|
+
* @internal
|
|
227
|
+
*/
|
|
150
228
|
getOutAmountWithoutFee() {
|
|
151
229
|
return this.outputAmount + (this.swapFee ?? 0n);
|
|
152
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* @inheritDoc
|
|
233
|
+
*/
|
|
153
234
|
getOutputToken() {
|
|
154
|
-
return this.wrapper.
|
|
235
|
+
return this.wrapper._tokens[this.wrapper._chain.getNativeCurrencyAddress()];
|
|
155
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* @inheritDoc
|
|
239
|
+
*/
|
|
156
240
|
getOutput() {
|
|
157
|
-
return (0, TokenAmount_1.toTokenAmount)(this.outputAmount, this.wrapper.
|
|
241
|
+
return (0, TokenAmount_1.toTokenAmount)(this.outputAmount, this.wrapper._tokens[this.wrapper._chain.getNativeCurrencyAddress()], this.wrapper._prices, this.pricingInfo);
|
|
158
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* @inheritDoc
|
|
245
|
+
*/
|
|
159
246
|
getInputToken() {
|
|
160
247
|
return Token_1.BitcoinTokens.BTCLN;
|
|
161
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* @inheritDoc
|
|
251
|
+
*/
|
|
162
252
|
getInput() {
|
|
163
253
|
const parsed = (0, bolt11_1.decode)(this.pr);
|
|
164
254
|
const msats = parsed.millisatoshis;
|
|
165
255
|
if (msats == null)
|
|
166
256
|
throw new Error("Swap lightning invoice has no msat amount field!");
|
|
167
257
|
const amount = (BigInt(msats) + 999n) / 1000n;
|
|
168
|
-
return (0, TokenAmount_1.toTokenAmount)(amount, Token_1.BitcoinTokens.BTCLN, this.wrapper.
|
|
258
|
+
return (0, TokenAmount_1.toTokenAmount)(amount, Token_1.BitcoinTokens.BTCLN, this.wrapper._prices, this.pricingInfo);
|
|
169
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* @inheritDoc
|
|
262
|
+
*/
|
|
170
263
|
getInputWithoutFee() {
|
|
171
264
|
const parsed = (0, bolt11_1.decode)(this.pr);
|
|
172
265
|
const msats = parsed.millisatoshis;
|
|
173
266
|
if (msats == null)
|
|
174
267
|
throw new Error("Swap lightning invoice has no msat amount field!");
|
|
175
268
|
const amount = (BigInt(msats) + 999n) / 1000n;
|
|
176
|
-
return (0, TokenAmount_1.toTokenAmount)(amount - (this.swapFeeBtc ?? 0n), Token_1.BitcoinTokens.BTCLN, this.wrapper.
|
|
269
|
+
return (0, TokenAmount_1.toTokenAmount)(amount - (this.swapFeeBtc ?? 0n), Token_1.BitcoinTokens.BTCLN, this.wrapper._prices, this.pricingInfo);
|
|
177
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Returns the swap fee charged by the intermediary (LP) on this swap
|
|
273
|
+
*
|
|
274
|
+
* @internal
|
|
275
|
+
*/
|
|
178
276
|
getSwapFee() {
|
|
179
277
|
if (this.pricingInfo == null)
|
|
180
278
|
throw new Error("No pricing info known, cannot estimate swap fee!");
|
|
181
279
|
const feeWithoutBaseFee = this.swapFeeBtc == null ? 0n : this.swapFeeBtc - this.pricingInfo.satsBaseFee;
|
|
182
280
|
const swapFeePPM = feeWithoutBaseFee * 1000000n / this.getInputWithoutFee().rawAmount;
|
|
183
|
-
const amountInSrcToken = (0, TokenAmount_1.toTokenAmount)(this.swapFeeBtc ?? 0n, Token_1.BitcoinTokens.BTCLN, this.wrapper.
|
|
281
|
+
const amountInSrcToken = (0, TokenAmount_1.toTokenAmount)(this.swapFeeBtc ?? 0n, Token_1.BitcoinTokens.BTCLN, this.wrapper._prices, this.pricingInfo);
|
|
184
282
|
return {
|
|
185
283
|
amountInSrcToken,
|
|
186
|
-
amountInDstToken: (0, TokenAmount_1.toTokenAmount)(this.swapFee ?? 0n, this.wrapper.
|
|
284
|
+
amountInDstToken: (0, TokenAmount_1.toTokenAmount)(this.swapFee ?? 0n, this.wrapper._tokens[this.wrapper._chain.getNativeCurrencyAddress()], this.wrapper._prices, this.pricingInfo),
|
|
187
285
|
currentUsdValue: amountInSrcToken.currentUsdValue,
|
|
188
286
|
usdValue: amountInSrcToken.usdValue,
|
|
189
287
|
pastUsdValue: amountInSrcToken.pastUsdValue,
|
|
190
288
|
composition: {
|
|
191
|
-
base: (0, TokenAmount_1.toTokenAmount)(this.pricingInfo.satsBaseFee, Token_1.BitcoinTokens.BTCLN, this.wrapper.
|
|
289
|
+
base: (0, TokenAmount_1.toTokenAmount)(this.pricingInfo.satsBaseFee, Token_1.BitcoinTokens.BTCLN, this.wrapper._prices, this.pricingInfo),
|
|
192
290
|
percentage: (0, PercentagePPM_1.ppmToPercentage)(swapFeePPM)
|
|
193
291
|
}
|
|
194
292
|
};
|
|
195
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* @inheritDoc
|
|
296
|
+
*/
|
|
196
297
|
getFee() {
|
|
197
298
|
return this.getSwapFee();
|
|
198
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* @inheritDoc
|
|
302
|
+
*/
|
|
199
303
|
getFeeBreakdown() {
|
|
200
304
|
return [{
|
|
201
305
|
type: FeeType_1.FeeType.SWAP,
|
|
@@ -204,9 +308,12 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
204
308
|
}
|
|
205
309
|
//////////////////////////////
|
|
206
310
|
//// Payment
|
|
311
|
+
/**
|
|
312
|
+
* @inheritDoc
|
|
313
|
+
*/
|
|
207
314
|
async txsExecute() {
|
|
208
|
-
if (this.
|
|
209
|
-
if (!await this.
|
|
315
|
+
if (this._state === LnForGasSwapState.PR_CREATED) {
|
|
316
|
+
if (!await this._verifyQuoteValid())
|
|
210
317
|
throw new Error("Quote already expired or close to expiry!");
|
|
211
318
|
return [
|
|
212
319
|
{
|
|
@@ -215,6 +322,7 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
215
322
|
chain: "LIGHTNING",
|
|
216
323
|
txs: [
|
|
217
324
|
{
|
|
325
|
+
type: "BOLT11_PAYMENT_REQUEST",
|
|
218
326
|
address: this.pr,
|
|
219
327
|
hyperlink: this.getHyperlink()
|
|
220
328
|
}
|
|
@@ -224,10 +332,18 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
224
332
|
}
|
|
225
333
|
throw new Error("Invalid swap state to obtain execution txns, required PR_CREATED");
|
|
226
334
|
}
|
|
335
|
+
/**
|
|
336
|
+
* Queries the intermediary (LP) node for the state of the swap
|
|
337
|
+
*
|
|
338
|
+
* @param save Whether the save the result or not
|
|
339
|
+
*
|
|
340
|
+
* @returns Whether the swap was successful as `boolean` or `null` if the swap is still pending
|
|
341
|
+
* @internal
|
|
342
|
+
*/
|
|
227
343
|
async checkInvoicePaid(save = true) {
|
|
228
|
-
if (this.
|
|
344
|
+
if (this._state === LnForGasSwapState.FAILED || this._state === LnForGasSwapState.EXPIRED)
|
|
229
345
|
return false;
|
|
230
|
-
if (this.
|
|
346
|
+
if (this._state === LnForGasSwapState.FINISHED)
|
|
231
347
|
return true;
|
|
232
348
|
if (this.url == null)
|
|
233
349
|
return false;
|
|
@@ -235,40 +351,40 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
235
351
|
const paymentHash = decodedPR.tagsObject.payment_hash;
|
|
236
352
|
if (paymentHash == null)
|
|
237
353
|
throw new Error("Invalid swap invoice, payment hash not found!");
|
|
238
|
-
const response = await TrustedIntermediaryAPI_1.TrustedIntermediaryAPI.getInvoiceStatus(this.url, paymentHash, this.wrapper.
|
|
354
|
+
const response = await TrustedIntermediaryAPI_1.TrustedIntermediaryAPI.getInvoiceStatus(this.url, paymentHash, this.wrapper._options.getRequestTimeout);
|
|
239
355
|
this.logger.debug("checkInvoicePaid(): LP response: ", response);
|
|
240
356
|
switch (response.code) {
|
|
241
357
|
case TrustedIntermediaryAPI_1.InvoiceStatusResponseCodes.PAID:
|
|
242
358
|
this.scTxId = response.data.txId;
|
|
243
|
-
const txStatus = await this.wrapper.
|
|
359
|
+
const txStatus = await this.wrapper._chain.getTxIdStatus(this.scTxId);
|
|
244
360
|
if (txStatus === "success") {
|
|
245
|
-
this.
|
|
361
|
+
this._state = LnForGasSwapState.FINISHED;
|
|
246
362
|
if (save)
|
|
247
363
|
await this._saveAndEmit();
|
|
248
364
|
return true;
|
|
249
365
|
}
|
|
250
366
|
return null;
|
|
251
367
|
case TrustedIntermediaryAPI_1.InvoiceStatusResponseCodes.EXPIRED:
|
|
252
|
-
if (this.
|
|
253
|
-
this.
|
|
368
|
+
if (this._state === LnForGasSwapState.PR_CREATED) {
|
|
369
|
+
this._state = LnForGasSwapState.EXPIRED;
|
|
254
370
|
}
|
|
255
371
|
else {
|
|
256
|
-
this.
|
|
372
|
+
this._state = LnForGasSwapState.FAILED;
|
|
257
373
|
}
|
|
258
374
|
if (save)
|
|
259
375
|
await this._saveAndEmit();
|
|
260
376
|
return false;
|
|
261
377
|
case TrustedIntermediaryAPI_1.InvoiceStatusResponseCodes.TX_SENT:
|
|
262
378
|
this.scTxId = response.data.txId;
|
|
263
|
-
if (this.
|
|
264
|
-
this.
|
|
379
|
+
if (this._state === LnForGasSwapState.PR_CREATED) {
|
|
380
|
+
this._state = LnForGasSwapState.PR_PAID;
|
|
265
381
|
if (save)
|
|
266
382
|
await this._saveAndEmit();
|
|
267
383
|
}
|
|
268
384
|
return null;
|
|
269
385
|
case TrustedIntermediaryAPI_1.InvoiceStatusResponseCodes.PENDING:
|
|
270
|
-
if (this.
|
|
271
|
-
this.
|
|
386
|
+
if (this._state === LnForGasSwapState.PR_CREATED) {
|
|
387
|
+
this._state = LnForGasSwapState.PR_PAID;
|
|
272
388
|
if (save)
|
|
273
389
|
await this._saveAndEmit();
|
|
274
390
|
}
|
|
@@ -276,39 +392,41 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
276
392
|
case TrustedIntermediaryAPI_1.InvoiceStatusResponseCodes.AWAIT_PAYMENT:
|
|
277
393
|
return null;
|
|
278
394
|
default:
|
|
279
|
-
this.
|
|
395
|
+
this._state = LnForGasSwapState.FAILED;
|
|
280
396
|
if (save)
|
|
281
397
|
await this._saveAndEmit();
|
|
282
398
|
return false;
|
|
283
399
|
}
|
|
284
400
|
}
|
|
285
401
|
/**
|
|
286
|
-
* A blocking promise resolving when payment was received by the intermediary and client can continue
|
|
287
|
-
*
|
|
402
|
+
* A blocking promise resolving when payment was received by the intermediary and client can continue,
|
|
403
|
+
* rejecting in case of failure. The swap must be in {@link LnForGasSwapState.PR_CREATED} state!
|
|
288
404
|
*
|
|
289
405
|
* @param checkIntervalSeconds How often to poll the intermediary for answer (default 5 seconds)
|
|
290
406
|
* @param abortSignal Abort signal
|
|
291
|
-
* @throws {PaymentAuthError} If swap expired or failed
|
|
292
407
|
* @throws {Error} When in invalid state (not PR_CREATED)
|
|
293
408
|
*/
|
|
294
409
|
async waitForPayment(checkIntervalSeconds, abortSignal) {
|
|
295
|
-
if (this.
|
|
410
|
+
if (this._state !== LnForGasSwapState.PR_CREATED)
|
|
296
411
|
throw new Error("Must be in PR_CREATED state!");
|
|
297
412
|
if (!this.initiated) {
|
|
298
413
|
this.initiated = true;
|
|
299
414
|
await this._saveAndEmit();
|
|
300
415
|
}
|
|
301
|
-
while (!abortSignal?.aborted && (this.
|
|
416
|
+
while (!abortSignal?.aborted && (this._state === LnForGasSwapState.PR_CREATED || this._state === LnForGasSwapState.PR_PAID)) {
|
|
302
417
|
await this.checkInvoicePaid(true);
|
|
303
|
-
if (this.
|
|
418
|
+
if (this._state === LnForGasSwapState.PR_CREATED || this._state === LnForGasSwapState.PR_PAID)
|
|
304
419
|
await (0, TimeoutUtils_1.timeoutPromise)((checkIntervalSeconds ?? 5) * 1000, abortSignal);
|
|
305
420
|
}
|
|
306
421
|
if (this.isFailed())
|
|
307
|
-
throw new
|
|
422
|
+
throw new Error("Swap failed");
|
|
308
423
|
return !this.isQuoteExpired();
|
|
309
424
|
}
|
|
310
425
|
//////////////////////////////
|
|
311
426
|
//// Storage
|
|
427
|
+
/**
|
|
428
|
+
* @inheritDoc
|
|
429
|
+
*/
|
|
312
430
|
serialize() {
|
|
313
431
|
return {
|
|
314
432
|
...super.serialize(),
|
|
@@ -319,13 +437,21 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
319
437
|
scTxId: this.scTxId
|
|
320
438
|
};
|
|
321
439
|
}
|
|
440
|
+
/**
|
|
441
|
+
* @inheritDoc
|
|
442
|
+
* @internal
|
|
443
|
+
*/
|
|
322
444
|
_getInitiator() {
|
|
323
445
|
return this.recipient;
|
|
324
446
|
}
|
|
325
447
|
//////////////////////////////
|
|
326
448
|
//// Swap ticks & sync
|
|
449
|
+
/**
|
|
450
|
+
* @inheritDoc
|
|
451
|
+
* @internal
|
|
452
|
+
*/
|
|
327
453
|
async _sync(save) {
|
|
328
|
-
if (this.
|
|
454
|
+
if (this._state === LnForGasSwapState.PR_CREATED) {
|
|
329
455
|
//Check if it's maybe already paid
|
|
330
456
|
const res = await this.checkInvoicePaid(false);
|
|
331
457
|
if (res !== null) {
|
|
@@ -336,6 +462,10 @@ class LnForGasSwap extends ISwap_1.ISwap {
|
|
|
336
462
|
}
|
|
337
463
|
return false;
|
|
338
464
|
}
|
|
465
|
+
/**
|
|
466
|
+
* @inheritDoc
|
|
467
|
+
* @internal
|
|
468
|
+
*/
|
|
339
469
|
_tick(save) {
|
|
340
470
|
return Promise.resolve(false);
|
|
341
471
|
}
|
|
@@ -4,18 +4,37 @@ import { ChainType } from "@atomiqlabs/base";
|
|
|
4
4
|
import { Intermediary } from "../../../intermediaries/Intermediary";
|
|
5
5
|
import { SwapType } from "../../../enums/SwapType";
|
|
6
6
|
export type LnForGasSwapTypeDefinition<T extends ChainType> = SwapTypeDefinition<T, LnForGasWrapper<T>, LnForGasSwap<T>>;
|
|
7
|
+
/**
|
|
8
|
+
* Trusted swap for Bitcoin Lightning -> Smart chains, to be used for minor amounts to get gas tokens on
|
|
9
|
+
* the destination chain, which is only needed for Solana, which still uses legacy swaps
|
|
10
|
+
*
|
|
11
|
+
* @category Swaps
|
|
12
|
+
*/
|
|
7
13
|
export declare class LnForGasWrapper<T extends ChainType> extends ISwapWrapper<T, LnForGasSwapTypeDefinition<T>> {
|
|
8
|
-
TYPE: SwapType;
|
|
9
|
-
readonly swapDeserializer: typeof LnForGasSwap;
|
|
14
|
+
TYPE: SwapType.TRUSTED_FROM_BTCLN;
|
|
10
15
|
/**
|
|
11
|
-
*
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
* @
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
readonly _swapDeserializer: typeof LnForGasSwap;
|
|
19
|
+
/**
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
readonly _pendingSwapStates: LnForGasSwapState[];
|
|
23
|
+
/**
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
protected readonly tickSwapState: undefined;
|
|
27
|
+
/**
|
|
28
|
+
* @internal
|
|
16
29
|
*/
|
|
17
|
-
create(signer: string, amount: bigint, lpOrUrl: Intermediary | string): Promise<LnForGasSwap<T>>;
|
|
18
|
-
readonly pendingSwapStates: LnForGasSwapState[];
|
|
19
|
-
readonly tickSwapState: undefined;
|
|
20
30
|
protected processEvent: undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Returns a newly created trusted Lightning network -> Smart chain swap, receiving
|
|
33
|
+
* the specified amount of native token on the destination chain.
|
|
34
|
+
*
|
|
35
|
+
* @param recipient Address of the recipient on the smart chain destination chain
|
|
36
|
+
* @param amount Amount of native token to receive in base units
|
|
37
|
+
* @param lpOrUrl Intermediary (LP) to use for the swap
|
|
38
|
+
*/
|
|
39
|
+
create(recipient: string, amount: bigint, lpOrUrl: Intermediary | string): Promise<LnForGasSwap<T>>;
|
|
21
40
|
}
|
|
@@ -7,32 +7,51 @@ const TrustedIntermediaryAPI_1 = require("../../../intermediaries/apis/TrustedIn
|
|
|
7
7
|
const bolt11_1 = require("@atomiqlabs/bolt11");
|
|
8
8
|
const IntermediaryError_1 = require("../../../errors/IntermediaryError");
|
|
9
9
|
const SwapType_1 = require("../../../enums/SwapType");
|
|
10
|
+
/**
|
|
11
|
+
* Trusted swap for Bitcoin Lightning -> Smart chains, to be used for minor amounts to get gas tokens on
|
|
12
|
+
* the destination chain, which is only needed for Solana, which still uses legacy swaps
|
|
13
|
+
*
|
|
14
|
+
* @category Swaps
|
|
15
|
+
*/
|
|
10
16
|
class LnForGasWrapper extends ISwapWrapper_1.ISwapWrapper {
|
|
11
17
|
constructor() {
|
|
12
18
|
super(...arguments);
|
|
13
19
|
this.TYPE = SwapType_1.SwapType.TRUSTED_FROM_BTCLN;
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
this._swapDeserializer = LnForGasSwap_1.LnForGasSwap;
|
|
24
|
+
/**
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
this._pendingSwapStates = [LnForGasSwap_1.LnForGasSwapState.PR_CREATED];
|
|
28
|
+
/**
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
16
31
|
this.tickSwapState = undefined;
|
|
32
|
+
/**
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
17
35
|
this.processEvent = undefined;
|
|
18
36
|
}
|
|
19
37
|
/**
|
|
20
|
-
* Returns a newly created
|
|
38
|
+
* Returns a newly created trusted Lightning network -> Smart chain swap, receiving
|
|
39
|
+
* the specified amount of native token on the destination chain.
|
|
21
40
|
*
|
|
22
|
-
* @param
|
|
23
|
-
* @param amount
|
|
24
|
-
* @param lpOrUrl
|
|
41
|
+
* @param recipient Address of the recipient on the smart chain destination chain
|
|
42
|
+
* @param amount Amount of native token to receive in base units
|
|
43
|
+
* @param lpOrUrl Intermediary (LP) to use for the swap
|
|
25
44
|
*/
|
|
26
|
-
async create(
|
|
45
|
+
async create(recipient, amount, lpOrUrl) {
|
|
27
46
|
if (!this.isInitialized)
|
|
28
47
|
throw new Error("Not initialized, call init() first!");
|
|
29
48
|
const lpUrl = typeof (lpOrUrl) === "string" ? lpOrUrl : lpOrUrl.url;
|
|
30
|
-
const token = this.
|
|
49
|
+
const token = this._chain.getNativeCurrencyAddress();
|
|
31
50
|
const resp = await TrustedIntermediaryAPI_1.TrustedIntermediaryAPI.initTrustedFromBTCLN(this.chainIdentifier, lpUrl, {
|
|
32
|
-
address:
|
|
51
|
+
address: recipient,
|
|
33
52
|
amount,
|
|
34
53
|
token
|
|
35
|
-
}, this.
|
|
54
|
+
}, this._options.getRequestTimeout);
|
|
36
55
|
const decodedPr = (0, bolt11_1.decode)(resp.pr);
|
|
37
56
|
if (decodedPr.millisatoshis == null)
|
|
38
57
|
throw new Error("Invalid payment request returned, no msat amount value!");
|
|
@@ -47,7 +66,7 @@ class LnForGasWrapper extends ISwapWrapper_1.ISwapWrapper {
|
|
|
47
66
|
const quoteInit = {
|
|
48
67
|
pr: resp.pr,
|
|
49
68
|
outputAmount: resp.total,
|
|
50
|
-
recipient
|
|
69
|
+
recipient,
|
|
51
70
|
pricingInfo,
|
|
52
71
|
url: lpUrl,
|
|
53
72
|
expiry: decodedPr.timeExpireDate * 1000,
|