@atomiqlabs/sdk 8.1.8 → 8.3.5
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/coinselect2/utils.d.ts +6 -0
- 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 +8 -1
- package/dist/enums/FeeType.js +8 -1
- 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 +5 -5
- package/dist/index.js +7 -6
- package/dist/intermediaries/Intermediary.d.ts +61 -14
- package/dist/intermediaries/Intermediary.js +38 -11
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +62 -29
- package/dist/intermediaries/IntermediaryDiscovery.js +39 -24
- package/dist/prices/RedundantSwapPrice.d.ts +26 -5
- package/dist/prices/RedundantSwapPrice.js +22 -2
- package/dist/prices/SingleSwapPrice.d.ts +10 -7
- package/dist/prices/SingleSwapPrice.js +11 -8
- package/dist/prices/SwapPriceWithChain.d.ts +56 -19
- package/dist/prices/SwapPriceWithChain.js +62 -25
- package/dist/prices/abstract/IPriceProvider.d.ts +4 -4
- package/dist/prices/abstract/IPriceProvider.js +1 -1
- package/dist/prices/abstract/ISwapPrice.d.ts +95 -46
- package/dist/prices/abstract/ISwapPrice.js +104 -56
- package/dist/prices/providers/BinancePriceProvider.d.ts +8 -1
- package/dist/prices/providers/BinancePriceProvider.js +8 -1
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +7 -1
- package/dist/prices/providers/CoinGeckoPriceProvider.js +7 -1
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +7 -1
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +7 -1
- package/dist/prices/providers/CustomPriceProvider.d.ts +12 -1
- package/dist/prices/providers/CustomPriceProvider.js +12 -1
- package/dist/prices/providers/KrakenPriceProvider.d.ts +10 -1
- package/dist/prices/providers/KrakenPriceProvider.js +10 -1
- package/dist/prices/providers/OKXPriceProvider.d.ts +7 -1
- package/dist/prices/providers/OKXPriceProvider.js +7 -1
- 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 +380 -226
- package/dist/swapper/Swapper.js +383 -349
- package/dist/swapper/SwapperFactory.d.ts +66 -18
- package/dist/swapper/SwapperFactory.js +24 -3
- 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 +12 -3
- package/dist/swaps/IAddressSwap.js +3 -2
- package/dist/swaps/IBTCWalletSwap.d.ts +26 -8
- package/dist/swaps/IBTCWalletSwap.js +3 -2
- package/dist/swaps/IClaimableSwap.d.ts +38 -6
- package/dist/swaps/IClaimableSwap.js +3 -2
- package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
- package/dist/swaps/IRefundableSwap.d.ts +31 -5
- package/dist/swaps/IRefundableSwap.js +3 -2
- package/dist/swaps/ISwap.d.ts +162 -24
- package/dist/swaps/ISwap.js +92 -35
- package/dist/swaps/ISwapWithGasDrop.d.ts +8 -2
- package/dist/swaps/ISwapWithGasDrop.js +2 -1
- package/dist/swaps/ISwapWrapper.d.ts +161 -52
- package/dist/swaps/ISwapWrapper.js +131 -73
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +51 -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 +97 -28
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +91 -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 +278 -60
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +519 -241
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +77 -26
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +132 -50
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +313 -52
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +544 -194
- 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 +222 -55
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +462 -244
- 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 +195 -58
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +324 -191
- 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 +61 -20
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +75 -32
- 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 +37 -14
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +66 -20
- 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 +350 -88
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +482 -215
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +247 -124
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +148 -20
- package/dist/swaps/trusted/ln/LnForGasSwap.js +175 -45
- 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 +202 -49
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +232 -80
- 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 +8 -2
- package/dist/types/PriceInfoType.d.ts +4 -4
- package/dist/types/PriceInfoType.js +3 -3
- package/dist/types/SwapExecutionAction.d.ts +85 -4
- package/dist/types/SwapWithSigner.d.ts +5 -2
- 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 +3 -2
- package/dist/types/fees/FeeBreakdown.d.ts +3 -2
- package/dist/types/fees/PercentagePPM.d.ts +4 -2
- package/dist/types/fees/PercentagePPM.js +2 -1
- package/dist/types/lnurl/LNURLPay.d.ts +20 -12
- package/dist/types/lnurl/LNURLPay.js +8 -4
- package/dist/types/lnurl/LNURLWithdraw.d.ts +17 -10
- package/dist/types/lnurl/LNURLWithdraw.js +8 -4
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -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 +4 -2
- package/dist/utils/BitcoinUtils.d.ts +1 -0
- package/dist/utils/BitcoinUtils.js +5 -1
- package/dist/utils/SwapUtils.d.ts +58 -1
- package/dist/utils/SwapUtils.js +55 -1
- package/dist/utils/TokenUtils.d.ts +10 -2
- package/dist/utils/TokenUtils.js +12 -4
- package/package.json +3 -3
- package/src/bitcoin/coinselect2/utils.ts +6 -0
- 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 +8 -1
- 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 +12 -5
- package/src/intermediaries/Intermediary.ts +61 -14
- package/src/intermediaries/IntermediaryDiscovery.ts +69 -34
- package/src/prices/RedundantSwapPrice.ts +26 -6
- package/src/prices/SingleSwapPrice.ts +11 -8
- package/src/prices/SwapPriceWithChain.ts +63 -26
- package/src/prices/abstract/IPriceProvider.ts +4 -4
- package/src/prices/abstract/ISwapPrice.ts +115 -66
- package/src/prices/providers/BinancePriceProvider.ts +8 -1
- package/src/prices/providers/CoinGeckoPriceProvider.ts +7 -1
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +7 -1
- package/src/prices/providers/CustomPriceProvider.ts +12 -1
- package/src/prices/providers/KrakenPriceProvider.ts +10 -1
- package/src/prices/providers/OKXPriceProvider.ts +7 -1
- 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 +599 -390
- package/src/swapper/SwapperFactory.ts +73 -24
- 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 +13 -3
- package/src/swaps/IBTCWalletSwap.ts +26 -10
- package/src/swaps/IClaimableSwap.ts +41 -6
- package/src/swaps/IClaimableSwapWrapper.ts +11 -2
- package/src/swaps/IRefundableSwap.ts +34 -5
- package/src/swaps/ISwap.ts +224 -85
- package/src/swaps/ISwapWithGasDrop.ts +8 -2
- package/src/swaps/ISwapWrapper.ts +216 -98
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +64 -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 +123 -50
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +562 -258
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +156 -62
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +592 -227
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +483 -245
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +350 -195
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +87 -40
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +89 -34
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +556 -259
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +292 -148
- package/src/swaps/trusted/ln/LnForGasSwap.ts +186 -47
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +262 -88
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
- package/src/types/AmountData.ts +2 -1
- package/src/types/CustomPriceFunction.ts +8 -2
- package/src/types/PriceInfoType.ts +4 -4
- package/src/types/SwapExecutionAction.ts +97 -5
- package/src/types/SwapWithSigner.ts +8 -4
- package/src/types/Token.ts +12 -5
- package/src/types/TokenAmount.ts +3 -0
- package/src/types/fees/Fee.ts +3 -2
- package/src/types/fees/FeeBreakdown.ts +3 -2
- package/src/types/fees/PercentagePPM.ts +4 -2
- package/src/types/lnurl/LNURLPay.ts +20 -12
- package/src/types/lnurl/LNURLWithdraw.ts +17 -10
- package/src/types/wallets/LightningInvoiceCreateService.ts +30 -0
- package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
- package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +4 -2
- package/src/utils/BitcoinUtils.ts +5 -0
- package/src/utils/SwapUtils.ts +63 -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
|
@@ -7,14 +7,24 @@ import {FeeType} from "../../../enums/FeeType";
|
|
|
7
7
|
import {ppmToPercentage} from "../../../types/fees/PercentagePPM";
|
|
8
8
|
import {TokenAmount, toTokenAmount} from "../../../types/TokenAmount";
|
|
9
9
|
import {BtcToken, SCToken} from "../../../types/Token";
|
|
10
|
+
import {IClaimableSwap} from "../../IClaimableSwap";
|
|
10
11
|
|
|
11
12
|
export type IFromBTCSelfInitDefinition<T extends ChainType, W extends IFromBTCWrapper<T, any>, S extends IFromBTCSelfInitSwap<T>> = IEscrowSelfInitSwapDefinition<T, W, S>;
|
|
12
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Base class for legacy escrow-based Bitcoin (on-chain & lightning) -> Smart chain swaps,
|
|
16
|
+
* which require the user to manually initiate the escrow on the destination smart chain
|
|
17
|
+
*
|
|
18
|
+
* @category Swaps/Abstract
|
|
19
|
+
*/
|
|
13
20
|
export abstract class IFromBTCSelfInitSwap<
|
|
14
21
|
T extends ChainType = ChainType,
|
|
15
22
|
D extends IFromBTCSelfInitDefinition<T, IFromBTCWrapper<T, D>, IFromBTCSelfInitSwap<T, D, S>> = IFromBTCSelfInitDefinition<T, IFromBTCWrapper<T, any>, IFromBTCSelfInitSwap<T, any, any>>,
|
|
16
23
|
S extends number = number
|
|
17
|
-
> extends IEscrowSelfInitSwap<T, D, S> implements IAddressSwap {
|
|
24
|
+
> extends IEscrowSelfInitSwap<T, D, S> implements IAddressSwap, IClaimableSwap<T, D, S> {
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
18
28
|
protected abstract readonly inputToken: BtcToken;
|
|
19
29
|
|
|
20
30
|
protected constructor(wrapper: D["Wrapper"], init: IEscrowSelfInitSwapInit<T["Data"]>);
|
|
@@ -27,8 +37,8 @@ export abstract class IFromBTCSelfInitSwap<
|
|
|
27
37
|
}
|
|
28
38
|
|
|
29
39
|
/**
|
|
30
|
-
*
|
|
31
|
-
* @
|
|
40
|
+
* @inheritDoc
|
|
41
|
+
* @internal
|
|
32
42
|
*/
|
|
33
43
|
protected tryRecomputeSwapPrice() {
|
|
34
44
|
const input = this.getInput();
|
|
@@ -43,35 +53,51 @@ export abstract class IFromBTCSelfInitSwap<
|
|
|
43
53
|
//// Getters & utils
|
|
44
54
|
|
|
45
55
|
/**
|
|
46
|
-
*
|
|
56
|
+
* @inheritDoc
|
|
47
57
|
*/
|
|
48
58
|
abstract getAddress(): string;
|
|
49
59
|
|
|
50
60
|
/**
|
|
51
|
-
*
|
|
52
|
-
* (with bitcoin: or lightning: prefix)
|
|
61
|
+
* @inheritDoc
|
|
53
62
|
*/
|
|
54
63
|
abstract getHyperlink(): string;
|
|
55
64
|
|
|
65
|
+
/**
|
|
66
|
+
* @inheritDoc
|
|
67
|
+
*/
|
|
56
68
|
abstract isClaimable(): boolean;
|
|
57
69
|
|
|
58
70
|
/**
|
|
59
71
|
* Returns if the swap can be committed
|
|
72
|
+
* @internal
|
|
60
73
|
*/
|
|
61
74
|
protected abstract canCommit(): boolean;
|
|
62
75
|
|
|
76
|
+
/**
|
|
77
|
+
* @inheritDoc
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
63
80
|
_getInitiator(): string {
|
|
64
81
|
return this.getSwapData().getClaimer();
|
|
65
82
|
}
|
|
66
83
|
|
|
84
|
+
/**
|
|
85
|
+
* @inheritDoc
|
|
86
|
+
*/
|
|
67
87
|
getOutputTxId(): string | null {
|
|
68
|
-
return this.
|
|
88
|
+
return this._claimTxId ?? null;
|
|
69
89
|
}
|
|
70
90
|
|
|
91
|
+
/**
|
|
92
|
+
* @inheritDoc
|
|
93
|
+
*/
|
|
71
94
|
getOutputAddress(): string | null {
|
|
72
95
|
return this._getInitiator();
|
|
73
96
|
}
|
|
74
97
|
|
|
98
|
+
/**
|
|
99
|
+
* @inheritDoc
|
|
100
|
+
*/
|
|
75
101
|
requiresAction(): boolean {
|
|
76
102
|
return this.isClaimable();
|
|
77
103
|
}
|
|
@@ -80,10 +106,21 @@ export abstract class IFromBTCSelfInitSwap<
|
|
|
80
106
|
//////////////////////////////
|
|
81
107
|
//// Amounts & fees
|
|
82
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Returns the swap output amount in destination token based units without any fees, this
|
|
111
|
+
* value is therefore always higher than the actual received output.
|
|
112
|
+
*
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
83
115
|
protected getOutAmountWithoutFee(): bigint {
|
|
84
116
|
return this.getSwapData().getAmount() + this.swapFee;
|
|
85
117
|
}
|
|
86
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Returns the swap fee charged by the intermediary (LP) on this swap
|
|
121
|
+
*
|
|
122
|
+
* @internal
|
|
123
|
+
*/
|
|
87
124
|
protected getSwapFee(): Fee<T["ChainId"], BtcToken, SCToken<T["ChainId"]>> {
|
|
88
125
|
if(this.pricingInfo==null) throw new Error("No pricing info known, cannot estimate fee!");
|
|
89
126
|
|
|
@@ -91,24 +128,30 @@ export abstract class IFromBTCSelfInitSwap<
|
|
|
91
128
|
const inputWithoutFee = this.getInputWithoutFee();
|
|
92
129
|
const swapFeePPM = inputWithoutFee.rawAmount==null ? 0n : feeWithoutBaseFee * 1000000n / inputWithoutFee.rawAmount;
|
|
93
130
|
|
|
94
|
-
const amountInSrcToken = toTokenAmount(this.swapFeeBtc, this.inputToken, this.wrapper.
|
|
131
|
+
const amountInSrcToken = toTokenAmount(this.swapFeeBtc, this.inputToken, this.wrapper._prices, this.pricingInfo);
|
|
95
132
|
return {
|
|
96
133
|
amountInSrcToken,
|
|
97
|
-
amountInDstToken: toTokenAmount(this.swapFee, this.wrapper.
|
|
134
|
+
amountInDstToken: toTokenAmount(this.swapFee, this.wrapper._tokens[this.getSwapData().getToken()], this.wrapper._prices, this.pricingInfo),
|
|
98
135
|
currentUsdValue: amountInSrcToken.currentUsdValue,
|
|
99
136
|
usdValue: amountInSrcToken.usdValue,
|
|
100
137
|
pastUsdValue: amountInSrcToken.pastUsdValue,
|
|
101
138
|
composition: {
|
|
102
|
-
base: toTokenAmount(this.pricingInfo.satsBaseFee, this.inputToken, this.wrapper.
|
|
139
|
+
base: toTokenAmount(this.pricingInfo.satsBaseFee, this.inputToken, this.wrapper._prices, this.pricingInfo),
|
|
103
140
|
percentage: ppmToPercentage(swapFeePPM)
|
|
104
141
|
}
|
|
105
142
|
};
|
|
106
143
|
}
|
|
107
144
|
|
|
145
|
+
/**
|
|
146
|
+
* @inheritDoc
|
|
147
|
+
*/
|
|
108
148
|
getFee(): Fee {
|
|
109
149
|
return this.getSwapFee();
|
|
110
150
|
}
|
|
111
151
|
|
|
152
|
+
/**
|
|
153
|
+
* @inheritDoc
|
|
154
|
+
*/
|
|
112
155
|
getFeeBreakdown(): [{type: FeeType.SWAP, fee: Fee<T["ChainId"], BtcToken, SCToken<T["ChainId"]>>}] {
|
|
113
156
|
return [{
|
|
114
157
|
type: FeeType.SWAP,
|
|
@@ -116,111 +159,141 @@ export abstract class IFromBTCSelfInitSwap<
|
|
|
116
159
|
}];
|
|
117
160
|
}
|
|
118
161
|
|
|
162
|
+
/**
|
|
163
|
+
* @inheritDoc
|
|
164
|
+
*/
|
|
119
165
|
getOutputToken(): SCToken<T["ChainId"]> {
|
|
120
|
-
return this.wrapper.
|
|
166
|
+
return this.wrapper._tokens[this.getSwapData().getToken()];
|
|
121
167
|
}
|
|
122
168
|
|
|
169
|
+
/**
|
|
170
|
+
* @inheritDoc
|
|
171
|
+
*/
|
|
123
172
|
getOutput(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true> {
|
|
124
|
-
return toTokenAmount(this.getSwapData().getAmount(), this.wrapper.
|
|
173
|
+
return toTokenAmount(this.getSwapData().getAmount(), this.wrapper._tokens[this.getSwapData().getToken()], this.wrapper._prices, this.pricingInfo);
|
|
125
174
|
}
|
|
126
175
|
|
|
176
|
+
/**
|
|
177
|
+
* @inheritDoc
|
|
178
|
+
*/
|
|
127
179
|
abstract getInput(): TokenAmount<T["ChainId"], BtcToken>;
|
|
128
180
|
|
|
181
|
+
/**
|
|
182
|
+
* @inheritDoc
|
|
183
|
+
*/
|
|
129
184
|
getInputWithoutFee(): TokenAmount<T["ChainId"], BtcToken> {
|
|
130
185
|
const input = this.getInput();
|
|
131
|
-
if(input.rawAmount==null) return toTokenAmount(null, this.inputToken, this.wrapper.
|
|
132
|
-
return toTokenAmount(input.rawAmount - this.swapFeeBtc, this.inputToken, this.wrapper.
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
getSecurityDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true> {
|
|
136
|
-
return toTokenAmount(this.getSwapData().getSecurityDeposit(), this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
getTotalDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true> {
|
|
140
|
-
return toTokenAmount(this.getSwapData().getTotalDeposit(), this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo);
|
|
186
|
+
if(input.rawAmount==null) return toTokenAmount(null, this.inputToken, this.wrapper._prices, this.pricingInfo);
|
|
187
|
+
return toTokenAmount(input.rawAmount - this.swapFeeBtc, this.inputToken, this.wrapper._prices, this.pricingInfo);
|
|
141
188
|
}
|
|
142
189
|
|
|
190
|
+
/**
|
|
191
|
+
* @inheritDoc
|
|
192
|
+
*/
|
|
143
193
|
async hasEnoughForTxFees(): Promise<{
|
|
144
194
|
enoughBalance: boolean,
|
|
145
195
|
balance: TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>,
|
|
146
196
|
required: TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>
|
|
147
197
|
}> {
|
|
148
198
|
const [balance, commitFee] = await Promise.all([
|
|
149
|
-
this.wrapper.
|
|
199
|
+
this.wrapper._contract.getBalance(this._getInitiator(), this.wrapper._chain.getNativeCurrencyAddress(), false),
|
|
150
200
|
this.getCommitFee()
|
|
151
201
|
]);
|
|
152
202
|
const totalFee = commitFee + this.getSwapData().getTotalDeposit();
|
|
153
203
|
return {
|
|
154
204
|
enoughBalance: balance >= totalFee,
|
|
155
|
-
balance: toTokenAmount(balance, this.wrapper.
|
|
156
|
-
required: toTokenAmount(totalFee, this.wrapper.
|
|
205
|
+
balance: toTokenAmount(balance, this.wrapper._getNativeToken(), this.wrapper._prices, this.pricingInfo),
|
|
206
|
+
required: toTokenAmount(totalFee, this.wrapper._getNativeToken(), this.wrapper._prices, this.pricingInfo)
|
|
157
207
|
};
|
|
158
208
|
}
|
|
159
209
|
|
|
210
|
+
/**
|
|
211
|
+
* Returns the amount of native token of the destination chain locked up during initialization of the escrow
|
|
212
|
+
* to act as a security deposit that can be taken by the intermediary (LP) if the user doesn't go through
|
|
213
|
+
* with the swap
|
|
214
|
+
*/
|
|
215
|
+
getSecurityDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true> {
|
|
216
|
+
return toTokenAmount(this.getSwapData().getSecurityDeposit(), this.wrapper._getNativeToken(), this.wrapper._prices, this.pricingInfo);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Returns the total amount of native token of the destination chain locked up during initialization of the escrow.
|
|
221
|
+
* This covers the security deposit and the watchtower fee (if applicable), it is calculated a maximum of those
|
|
222
|
+
* two values.
|
|
223
|
+
*/
|
|
224
|
+
getTotalDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true> {
|
|
225
|
+
return toTokenAmount(this.getSwapData().getTotalDeposit(), this.wrapper._getNativeToken(), this.wrapper._prices, this.pricingInfo);
|
|
226
|
+
}
|
|
227
|
+
|
|
160
228
|
|
|
161
229
|
//////////////////////////////
|
|
162
230
|
//// Commit
|
|
163
231
|
|
|
164
232
|
/**
|
|
165
|
-
* Returns
|
|
166
|
-
*
|
|
233
|
+
* Returns transactions for initiating (committing) the escrow on the destination smart chain side, pre-locking the
|
|
234
|
+
* tokens from the intermediary (LP) into an escrow.
|
|
235
|
+
*
|
|
236
|
+
* @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited
|
|
237
|
+
* yet (this is handled on swap creation, if you commit right after quoting, you can use skipChecks=true)
|
|
167
238
|
*
|
|
168
|
-
* @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
|
|
169
|
-
* (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
|
|
170
239
|
* @throws {Error} When in invalid state to commit the swap
|
|
171
240
|
*/
|
|
172
241
|
async txsCommit(skipChecks?: boolean): Promise<T["TX"][]> {
|
|
173
242
|
if(!this.canCommit()) throw new Error("Must be in CREATED state!");
|
|
174
|
-
if(this.
|
|
243
|
+
if(this._data==null || this.signatureData==null) throw new Error("data or signature data is null, invalid state?");
|
|
175
244
|
|
|
176
245
|
if(!this.initiated) {
|
|
177
246
|
this.initiated = true;
|
|
178
247
|
await this._saveAndEmit();
|
|
179
248
|
}
|
|
180
249
|
|
|
181
|
-
return await this.wrapper.
|
|
182
|
-
this._getInitiator(), this.
|
|
250
|
+
return await this.wrapper._contract.txsInit(
|
|
251
|
+
this._getInitiator(), this._data, this.signatureData, skipChecks, this.feeRate
|
|
183
252
|
).catch(e => Promise.reject(e instanceof SignatureVerificationError ? new Error("Request timed out") : e));
|
|
184
253
|
}
|
|
185
254
|
|
|
186
255
|
/**
|
|
187
|
-
*
|
|
256
|
+
* Creates the escrow on the destination smart chain side, pre-locking the tokens from the intermediary (LP)
|
|
257
|
+
* into an escrow.
|
|
188
258
|
*
|
|
189
259
|
* @param signer Signer to sign the transactions with, must be the same as used in the initialization
|
|
190
|
-
* @param abortSignal Abort signal
|
|
191
|
-
* @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited
|
|
192
|
-
* (this is handled
|
|
260
|
+
* @param abortSignal Abort signal
|
|
261
|
+
* @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited
|
|
262
|
+
* yet (this is handled on swap creation, if you commit right after quoting, you can use skipChecks=true)
|
|
263
|
+
*
|
|
193
264
|
* @throws {Error} If invalid signer is provided that doesn't match the swap data
|
|
194
265
|
*/
|
|
195
266
|
abstract commit(signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean): Promise<string>;
|
|
196
267
|
|
|
197
|
-
abstract waitTillCommited(abortSignal?: AbortSignal): Promise<void>;
|
|
198
|
-
|
|
199
268
|
|
|
200
269
|
//////////////////////////////
|
|
201
270
|
//// Claim
|
|
202
271
|
|
|
203
|
-
|
|
204
|
-
|
|
272
|
+
/**
|
|
273
|
+
* Returns the transaction fee required for the claim transaction to settle the escrow on the destination
|
|
274
|
+
* smart chain
|
|
275
|
+
*/
|
|
276
|
+
async getClaimNetworkFee(): Promise<TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>> {
|
|
277
|
+
const swapContract: T["Contract"] = this.wrapper._contract;
|
|
278
|
+
return toTokenAmount(
|
|
279
|
+
await swapContract.getClaimFee(this._getInitiator(), this.getSwapData()),
|
|
280
|
+
this.wrapper._getNativeToken(),
|
|
281
|
+
this.wrapper._prices
|
|
282
|
+
);
|
|
205
283
|
}
|
|
206
284
|
|
|
285
|
+
/**
|
|
286
|
+
* @inheritDoc
|
|
287
|
+
*/
|
|
207
288
|
abstract txsClaim(signer?: T["Signer"]): Promise<T["TX"][]>;
|
|
208
289
|
|
|
209
290
|
/**
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
* @param signer Signer to sign the transactions with, can also be different to the initializer
|
|
213
|
-
* @param abortSignal Abort signal to stop waiting for transaction confirmation
|
|
291
|
+
* @inheritDoc
|
|
214
292
|
*/
|
|
215
293
|
abstract claim(signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal): Promise<string>;
|
|
216
294
|
|
|
217
295
|
/**
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
* @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled
|
|
221
|
-
* @param abortSignal AbortSignal
|
|
222
|
-
* @throws {Error} If swap is in invalid state (must be COMMIT)
|
|
223
|
-
* @returns {boolean} whether the swap was claimed in time or not
|
|
296
|
+
* @inheritDoc
|
|
224
297
|
*/
|
|
225
298
|
abstract waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
|
|
226
299
|
|
|
@@ -9,6 +9,11 @@ import {AmountData} from "../../../types/AmountData";
|
|
|
9
9
|
|
|
10
10
|
export type IFromBTCDefinition<T extends ChainType, W extends IFromBTCWrapper<T, any>, S extends IEscrowSwap<T>> = IEscrowSwapDefinition<T, W, S>;
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Base class for wrappers of escrow-based Bitcoin (on-chain & lightning) -> Smart chain swaps
|
|
14
|
+
*
|
|
15
|
+
* @category Swaps/Abstract
|
|
16
|
+
*/
|
|
12
17
|
export abstract class IFromBTCWrapper<
|
|
13
18
|
T extends ChainType,
|
|
14
19
|
D extends IFromBTCDefinition<T, IFromBTCWrapper<T, D>, IEscrowSwap<T, D>>,
|
|
@@ -18,22 +23,25 @@ export abstract class IFromBTCWrapper<
|
|
|
18
23
|
/**
|
|
19
24
|
* Returns a random sequence to be used for swaps
|
|
20
25
|
*
|
|
21
|
-
* @protected
|
|
22
26
|
* @returns Random 64-bit sequence number
|
|
27
|
+
*
|
|
28
|
+
* @internal
|
|
23
29
|
*/
|
|
24
30
|
protected getRandomSequence(): bigint {
|
|
25
31
|
return BigIntBufferUtils.fromBuffer(randomBytes(8));
|
|
26
32
|
}
|
|
27
33
|
|
|
28
34
|
/**
|
|
29
|
-
* Pre-fetches
|
|
35
|
+
* Pre-fetches smart chain fee rate for initiating a swap escrow on the smart chain side
|
|
30
36
|
*
|
|
31
37
|
* @param signer Address initiating the swap
|
|
32
38
|
* @param amountData
|
|
33
39
|
* @param claimHash optional claim hash of the swap or null
|
|
34
40
|
* @param abortController
|
|
35
|
-
*
|
|
41
|
+
*
|
|
36
42
|
* @returns Fee rate
|
|
43
|
+
*
|
|
44
|
+
* @internal
|
|
37
45
|
*/
|
|
38
46
|
protected preFetchFeeRate(
|
|
39
47
|
signer: string,
|
|
@@ -41,7 +49,7 @@ export abstract class IFromBTCWrapper<
|
|
|
41
49
|
claimHash: string | undefined,
|
|
42
50
|
abortController: AbortController
|
|
43
51
|
): Promise<string | undefined> {
|
|
44
|
-
return this.
|
|
52
|
+
return this._contract.getInitFeeRate(this._chain.randomAddress(), signer, amountData.token, claimHash)
|
|
45
53
|
.catch(e => {
|
|
46
54
|
this.logger.warn("preFetchFeeRate(): Error: ", e);
|
|
47
55
|
abortController.abort(e);
|
|
@@ -50,15 +58,18 @@ export abstract class IFromBTCWrapper<
|
|
|
50
58
|
}
|
|
51
59
|
|
|
52
60
|
/**
|
|
53
|
-
* Pre-fetches intermediary
|
|
61
|
+
* Pre-fetches intermediary (LP) available smart chain liquidity
|
|
62
|
+
*
|
|
54
63
|
* @param amountData
|
|
55
64
|
* @param lp Intermediary
|
|
56
65
|
* @param abortController
|
|
57
|
-
*
|
|
66
|
+
*
|
|
58
67
|
* @returns Intermediary's liquidity balance
|
|
68
|
+
*
|
|
69
|
+
* @internal
|
|
59
70
|
*/
|
|
60
71
|
protected preFetchIntermediaryLiquidity(amountData: AmountData, lp: Intermediary, abortController: AbortController): Promise<bigint | undefined> {
|
|
61
|
-
return lp.getLiquidity(this.chainIdentifier, this.
|
|
72
|
+
return lp.getLiquidity(this.chainIdentifier, this._contract, amountData.token.toString(), abortController.signal).catch(e => {
|
|
62
73
|
this.logger.warn("preFetchIntermediaryLiquidity(): Error: ", e);
|
|
63
74
|
abortController.abort(e);
|
|
64
75
|
return undefined;
|
|
@@ -66,12 +77,14 @@ export abstract class IFromBTCWrapper<
|
|
|
66
77
|
}
|
|
67
78
|
|
|
68
79
|
/**
|
|
69
|
-
* Verifies whether the intermediary has enough available liquidity such that we can initiate the swap
|
|
80
|
+
* Verifies whether the intermediary (LP) has enough available liquidity such that we can initiate the swap
|
|
81
|
+
*
|
|
82
|
+
* @param amount Swap amount that the recipient should receive
|
|
83
|
+
* @param liquidityPromise pre-fetched liquidity promise as obtained from {@link preFetchIntermediaryLiquidity}
|
|
70
84
|
*
|
|
71
|
-
* @param amount Swap amount that we should receive
|
|
72
|
-
* @param liquidityPromise pre-fetched liquidity promise as obtained from preFetchIntermediaryLiquidity()
|
|
73
|
-
* @protected
|
|
74
85
|
* @throws {IntermediaryError} if intermediary's liquidity is lower than what's required for the swap
|
|
86
|
+
*
|
|
87
|
+
* @internal
|
|
75
88
|
*/
|
|
76
89
|
protected async verifyIntermediaryLiquidity(
|
|
77
90
|
amount: bigint,
|