@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
|
@@ -6,45 +6,68 @@ import { TokenAmount } from "../../../../types/TokenAmount";
|
|
|
6
6
|
import { BtcToken } from "../../../../types/Token";
|
|
7
7
|
import { LoggerType } from "../../../../utils/Logger";
|
|
8
8
|
export type ToBTCSwapInit<T extends SwapData> = IToBTCSwapInit<T> & {
|
|
9
|
-
address
|
|
10
|
-
amount
|
|
9
|
+
address?: string;
|
|
10
|
+
amount?: bigint;
|
|
11
11
|
confirmationTarget: number;
|
|
12
12
|
satsPerVByte: number;
|
|
13
|
-
requiredConfirmations
|
|
14
|
-
nonce
|
|
13
|
+
requiredConfirmations?: number;
|
|
14
|
+
nonce?: bigint;
|
|
15
15
|
};
|
|
16
16
|
export declare function isToBTCSwapInit<T extends SwapData>(obj: any): obj is ToBTCSwapInit<T>;
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* Escrow based (PrTLC) swap for Smart chains -> Bitcoin
|
|
19
|
+
*
|
|
19
20
|
* @category Swaps
|
|
20
21
|
*/
|
|
21
22
|
export declare class ToBTCSwap<T extends ChainType = ChainType> extends IToBTCSwap<T, ToBTCDefinition<T>> {
|
|
23
|
+
protected readonly TYPE: SwapType.TO_BTC;
|
|
24
|
+
/**
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
22
27
|
protected readonly outputToken: BtcToken<false>;
|
|
23
|
-
|
|
28
|
+
/**
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
24
31
|
protected readonly logger: LoggerType;
|
|
25
|
-
private
|
|
26
|
-
private
|
|
32
|
+
private address?;
|
|
33
|
+
private amount?;
|
|
27
34
|
private readonly confirmationTarget;
|
|
28
35
|
private readonly satsPerVByte;
|
|
29
|
-
private
|
|
30
|
-
private
|
|
36
|
+
private requiredConfirmations?;
|
|
37
|
+
private nonce?;
|
|
31
38
|
private txId?;
|
|
32
39
|
constructor(wrapper: ToBTCWrapper<T>, serializedObject: any);
|
|
33
40
|
constructor(wrapper: ToBTCWrapper<T>, init: ToBTCSwapInit<T["Data"]>);
|
|
41
|
+
/**
|
|
42
|
+
* @inheritDoc
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
34
45
|
_setPaymentResult(result: {
|
|
35
46
|
secret?: string;
|
|
36
47
|
txId?: string;
|
|
37
48
|
}, check?: boolean): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* @inheritDoc
|
|
51
|
+
*/
|
|
38
52
|
getOutputToken(): BtcToken<false>;
|
|
53
|
+
/**
|
|
54
|
+
* @inheritDoc
|
|
55
|
+
*/
|
|
39
56
|
getOutput(): TokenAmount<T["ChainId"], BtcToken<false>>;
|
|
40
57
|
/**
|
|
41
|
-
*
|
|
58
|
+
* @inheritDoc
|
|
59
|
+
*/
|
|
60
|
+
getOutputAddress(): string | null;
|
|
61
|
+
/**
|
|
62
|
+
* @inheritDoc
|
|
42
63
|
*/
|
|
43
|
-
getOutputAddress(): string;
|
|
44
64
|
getOutputTxId(): string | null;
|
|
45
65
|
/**
|
|
46
|
-
* Returns fee rate of the bitcoin transaction in sats/vB
|
|
66
|
+
* Returns fee rate of the output bitcoin transaction in sats/vB as reported by the intermediary (LP)
|
|
47
67
|
*/
|
|
48
68
|
getBitcoinFeeRate(): number;
|
|
69
|
+
/**
|
|
70
|
+
* @inheritDoc
|
|
71
|
+
*/
|
|
49
72
|
serialize(): any;
|
|
50
73
|
}
|
|
@@ -9,18 +9,20 @@ const Utils_1 = require("../../../../utils/Utils");
|
|
|
9
9
|
const TokenAmount_1 = require("../../../../types/TokenAmount");
|
|
10
10
|
const Token_1 = require("../../../../types/Token");
|
|
11
11
|
const Logger_1 = require("../../../../utils/Logger");
|
|
12
|
+
const BitcoinUtils_1 = require("../../../../utils/BitcoinUtils");
|
|
12
13
|
function isToBTCSwapInit(obj) {
|
|
13
|
-
return typeof (obj.address) === "string" &&
|
|
14
|
-
typeof (obj.amount) === "bigint" &&
|
|
14
|
+
return (obj.address == null || typeof (obj.address) === "string") &&
|
|
15
|
+
(obj.amount == null || typeof (obj.amount) === "bigint") &&
|
|
15
16
|
typeof (obj.confirmationTarget) === "number" &&
|
|
16
17
|
typeof (obj.satsPerVByte) === "number" &&
|
|
17
|
-
typeof (obj.requiredConfirmations) === "number" &&
|
|
18
|
-
typeof (obj.nonce) === "bigint" &&
|
|
18
|
+
(obj.requiredConfirmations == null || typeof (obj.requiredConfirmations) === "number") &&
|
|
19
|
+
(obj.nonce == null || typeof (obj.nonce) === "bigint") &&
|
|
19
20
|
(0, IToBTCSwap_1.isIToBTCSwapInit)(obj);
|
|
20
21
|
}
|
|
21
22
|
exports.isToBTCSwapInit = isToBTCSwapInit;
|
|
22
23
|
/**
|
|
23
|
-
*
|
|
24
|
+
* Escrow based (PrTLC) swap for Smart chains -> Bitcoin
|
|
25
|
+
*
|
|
24
26
|
* @category Swaps
|
|
25
27
|
*/
|
|
26
28
|
class ToBTCSwap extends IToBTCSwap_1.IToBTCSwap {
|
|
@@ -28,8 +30,11 @@ class ToBTCSwap extends IToBTCSwap_1.IToBTCSwap {
|
|
|
28
30
|
if (isToBTCSwapInit(initOrObject) && initOrObject.url != null)
|
|
29
31
|
initOrObject.url += "/tobtc";
|
|
30
32
|
super(wrapper, initOrObject);
|
|
31
|
-
this.outputToken = Token_1.BitcoinTokens.BTC;
|
|
32
33
|
this.TYPE = SwapType_1.SwapType.TO_BTC;
|
|
34
|
+
/**
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
this.outputToken = Token_1.BitcoinTokens.BTC;
|
|
33
38
|
if (isToBTCSwapInit(initOrObject)) {
|
|
34
39
|
this.address = initOrObject.address;
|
|
35
40
|
this.amount = initOrObject.amount;
|
|
@@ -40,64 +45,105 @@ class ToBTCSwap extends IToBTCSwap_1.IToBTCSwap {
|
|
|
40
45
|
}
|
|
41
46
|
else {
|
|
42
47
|
this.address = initOrObject.address;
|
|
43
|
-
this.amount =
|
|
48
|
+
this.amount = (0, Utils_1.toBigInt)(initOrObject.amount);
|
|
44
49
|
this.confirmationTarget = initOrObject.confirmationTarget;
|
|
45
50
|
this.satsPerVByte = initOrObject.satsPerVByte;
|
|
46
51
|
this.txId = initOrObject.txId;
|
|
47
|
-
this.requiredConfirmations = initOrObject.requiredConfirmations ?? this.
|
|
48
|
-
this.nonce = (0, Utils_1.toBigInt)(initOrObject.nonce) ?? this.
|
|
52
|
+
this.requiredConfirmations = initOrObject.requiredConfirmations ?? this._data.getConfirmationsHint();
|
|
53
|
+
this.nonce = (0, Utils_1.toBigInt)(initOrObject.nonce) ?? this._data.getNonceHint();
|
|
49
54
|
}
|
|
50
55
|
this.logger = (0, Logger_1.getLogger)("ToBTC(" + this.getIdentifierHashString() + "): ");
|
|
51
56
|
this.tryRecomputeSwapPrice();
|
|
52
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* @inheritDoc
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
53
62
|
async _setPaymentResult(result, check = false) {
|
|
54
63
|
if (result == null)
|
|
55
64
|
return false;
|
|
56
65
|
if (result.txId == null)
|
|
57
66
|
throw new IntermediaryError_1.IntermediaryError("No btc txId returned!");
|
|
58
|
-
if (check) {
|
|
59
|
-
const btcTx = await this.wrapper.
|
|
67
|
+
if (check || this.address == null || this.amount == null || this.nonce == null || this.requiredConfirmations == null) {
|
|
68
|
+
const btcTx = await this.wrapper._btcRpc.getTransaction(result.txId);
|
|
60
69
|
if (btcTx == null)
|
|
61
70
|
return false;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
71
|
+
//Extract nonce from tx
|
|
72
|
+
const nonce = this.nonce ?? (BigInt(btcTx.ins[0].sequence) & 0x00ffffffn) | (BigInt(btcTx.locktime - 500000000) << 24n);
|
|
73
|
+
let requiredConfirmations = this.requiredConfirmations;
|
|
74
|
+
const foundVout = btcTx.outs.find(vout => {
|
|
75
|
+
if (requiredConfirmations != null) {
|
|
76
|
+
return this._data.getClaimHash() === this.wrapper._contract.getHashForOnchain(buffer_1.Buffer.from(vout.scriptPubKey.hex, "hex"), BigInt(vout.value), requiredConfirmations, nonce).toString("hex");
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
for (let i = 1; i <= 20; i++) {
|
|
80
|
+
if (this._data.getClaimHash() === this.wrapper._contract.getHashForOnchain(buffer_1.Buffer.from(vout.scriptPubKey.hex, "hex"), BigInt(vout.value), i, nonce).toString("hex")) {
|
|
81
|
+
requiredConfirmations = i;
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
if (requiredConfirmations == null)
|
|
88
|
+
this.logger.warn(`_setPaymentResult(): Tried to recover data from bitcoin transaction ${result.txId} data, but wasn't able to!`);
|
|
89
|
+
if (foundVout != null) {
|
|
90
|
+
this.nonce = nonce;
|
|
91
|
+
this.address = (0, BitcoinUtils_1.fromOutputScript)(this.wrapper._options.bitcoinNetwork, foundVout.scriptPubKey.hex);
|
|
92
|
+
this.amount = BigInt(foundVout.value);
|
|
93
|
+
this.requiredConfirmations = requiredConfirmations;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
if (check)
|
|
97
|
+
throw new IntermediaryError_1.IntermediaryError("Invalid btc txId returned");
|
|
98
|
+
}
|
|
65
99
|
}
|
|
66
100
|
this.txId = result.txId;
|
|
67
101
|
return true;
|
|
68
102
|
}
|
|
69
103
|
//////////////////////////////
|
|
70
104
|
//// Amounts & fees
|
|
105
|
+
/**
|
|
106
|
+
* @inheritDoc
|
|
107
|
+
*/
|
|
71
108
|
getOutputToken() {
|
|
72
109
|
return Token_1.BitcoinTokens.BTC;
|
|
73
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* @inheritDoc
|
|
113
|
+
*/
|
|
74
114
|
getOutput() {
|
|
75
|
-
return (0, TokenAmount_1.toTokenAmount)(this.amount, this.outputToken, this.wrapper.
|
|
115
|
+
return (0, TokenAmount_1.toTokenAmount)(this.amount ?? null, this.outputToken, this.wrapper._prices, this.pricingInfo);
|
|
76
116
|
}
|
|
77
117
|
//////////////////////////////
|
|
78
118
|
//// Getters & utils
|
|
79
119
|
/**
|
|
80
|
-
*
|
|
120
|
+
* @inheritDoc
|
|
81
121
|
*/
|
|
82
122
|
getOutputAddress() {
|
|
83
|
-
return this.address;
|
|
123
|
+
return this.address ?? null;
|
|
84
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* @inheritDoc
|
|
127
|
+
*/
|
|
85
128
|
getOutputTxId() {
|
|
86
129
|
return this.txId ?? null;
|
|
87
130
|
}
|
|
88
131
|
/**
|
|
89
|
-
* Returns fee rate of the bitcoin transaction in sats/vB
|
|
132
|
+
* Returns fee rate of the output bitcoin transaction in sats/vB as reported by the intermediary (LP)
|
|
90
133
|
*/
|
|
91
134
|
getBitcoinFeeRate() {
|
|
92
135
|
return this.satsPerVByte;
|
|
93
136
|
}
|
|
94
137
|
//////////////////////////////
|
|
95
138
|
//// Storage
|
|
139
|
+
/**
|
|
140
|
+
* @inheritDoc
|
|
141
|
+
*/
|
|
96
142
|
serialize() {
|
|
97
143
|
return {
|
|
98
144
|
...super.serialize(),
|
|
99
145
|
address: this.address,
|
|
100
|
-
amount: this.amount.toString(10),
|
|
146
|
+
amount: this.amount == null ? null : this.amount.toString(10),
|
|
101
147
|
confirmationTarget: this.confirmationTarget,
|
|
102
148
|
satsPerVByte: this.satsPerVByte,
|
|
103
149
|
nonce: this.nonce == null ? null : this.nonce.toString(10),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { ToBTCSwap } from "./ToBTCSwap";
|
|
3
3
|
import { IToBTCDefinition, IToBTCWrapper } from "../IToBTCWrapper";
|
|
4
|
-
import { BitcoinRpc, ChainType } from "@atomiqlabs/base";
|
|
4
|
+
import { BitcoinRpc, ChainType, SwapCommitState } from "@atomiqlabs/base";
|
|
5
5
|
import { Intermediary } from "../../../../intermediaries/Intermediary";
|
|
6
6
|
import { ISwapPrice } from "../../../../prices/abstract/ISwapPrice";
|
|
7
7
|
import { EventEmitter } from "events";
|
|
@@ -26,10 +26,21 @@ export type ToBTCWrapperOptions = ISwapWrapperOptions & {
|
|
|
26
26
|
maxExpectedOnchainSendGracePeriodBlocks: number;
|
|
27
27
|
};
|
|
28
28
|
export type ToBTCDefinition<T extends ChainType> = IToBTCDefinition<T, ToBTCWrapper<T>, ToBTCSwap<T>>;
|
|
29
|
+
/**
|
|
30
|
+
* Escrow based (PrTLC) swap for Smart chains -> Bitcoin
|
|
31
|
+
*
|
|
32
|
+
* @category Swaps
|
|
33
|
+
*/
|
|
29
34
|
export declare class ToBTCWrapper<T extends ChainType> extends IToBTCWrapper<T, ToBTCDefinition<T>, ToBTCWrapperOptions> {
|
|
30
|
-
readonly TYPE
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
readonly TYPE: SwapType.TO_BTC;
|
|
36
|
+
/**
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
readonly _swapDeserializer: typeof ToBTCSwap;
|
|
40
|
+
/**
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
readonly _btcRpc: BitcoinRpc<any>;
|
|
33
44
|
/**
|
|
34
45
|
* @param chainIdentifier
|
|
35
46
|
* @param unifiedStorage Storage interface for the current environment
|
|
@@ -47,18 +58,22 @@ export declare class ToBTCWrapper<T extends ChainType> extends IToBTCWrapper<T,
|
|
|
47
58
|
swapState: [ISwap];
|
|
48
59
|
}>);
|
|
49
60
|
/**
|
|
50
|
-
* Returns randomly generated random
|
|
51
|
-
*
|
|
61
|
+
* Returns randomly generated random bitcoin transaction nonce to be used for BTC on-chain swaps
|
|
62
|
+
*
|
|
52
63
|
* @returns Escrow nonce
|
|
64
|
+
*
|
|
65
|
+
* @private
|
|
53
66
|
*/
|
|
54
67
|
private getRandomNonce;
|
|
55
68
|
/**
|
|
56
69
|
* Converts bitcoin address to its corresponding output script
|
|
57
70
|
*
|
|
58
71
|
* @param addr Bitcoin address to get the output script for
|
|
59
|
-
*
|
|
72
|
+
*
|
|
60
73
|
* @returns Output script as Buffer
|
|
61
74
|
* @throws {UserError} if invalid address is specified
|
|
75
|
+
*
|
|
76
|
+
* @private
|
|
62
77
|
*/
|
|
63
78
|
private btcAddressToOutputScript;
|
|
64
79
|
/**
|
|
@@ -71,23 +86,37 @@ export declare class ToBTCWrapper<T extends ChainType> extends IToBTCWrapper<T,
|
|
|
71
86
|
* @param options Options as passed to the swap create function
|
|
72
87
|
* @param data LP's returned parsed swap data
|
|
73
88
|
* @param hash Payment hash of the swap
|
|
74
|
-
*
|
|
89
|
+
*
|
|
75
90
|
* @throws {IntermediaryError} if returned data are not correct
|
|
91
|
+
*
|
|
92
|
+
* @private
|
|
76
93
|
*/
|
|
77
94
|
private verifyReturnedData;
|
|
78
95
|
/**
|
|
79
|
-
* Returns
|
|
96
|
+
* Returns a newly created Smart chain -> Bitcoin swap using the PrTLC based escrow swap protocol,
|
|
97
|
+
* with the passed amount.
|
|
80
98
|
*
|
|
81
|
-
* @param signer
|
|
82
|
-
* @param
|
|
83
|
-
* @param amountData
|
|
84
|
-
* @param lps
|
|
85
|
-
* @param options
|
|
86
|
-
* @param additionalParams
|
|
87
|
-
* @param abortSignal
|
|
99
|
+
* @param signer Source chain signer address initiating the swap
|
|
100
|
+
* @param recipient Recipient bitcoin on-chain address
|
|
101
|
+
* @param amountData Amount, token and exact input/output data for to swap
|
|
102
|
+
* @param lps An array of intermediaries (LPs) to get the quotes from
|
|
103
|
+
* @param options Optional additional quote options
|
|
104
|
+
* @param additionalParams Optional additional parameters sent to the LP when creating the swap
|
|
105
|
+
* @param abortSignal Abort signal
|
|
88
106
|
*/
|
|
89
|
-
create(signer: string,
|
|
107
|
+
create(signer: string, recipient: string, amountData: AmountData, lps: Intermediary[], options?: ToBTCOptions, additionalParams?: Record<string, any>, abortSignal?: AbortSignal): {
|
|
90
108
|
quote: Promise<ToBTCSwap<T>>;
|
|
91
109
|
intermediary: Intermediary;
|
|
92
110
|
}[];
|
|
111
|
+
/**
|
|
112
|
+
* @inheritDoc
|
|
113
|
+
*/
|
|
114
|
+
recoverFromSwapDataAndState(init: {
|
|
115
|
+
data: T["Data"];
|
|
116
|
+
getInitTxId: () => Promise<string>;
|
|
117
|
+
getTxBlock: () => Promise<{
|
|
118
|
+
blockTime: number;
|
|
119
|
+
blockHeight: number;
|
|
120
|
+
}>;
|
|
121
|
+
}, state: SwapCommitState, lp?: Intermediary): Promise<ToBTCSwap<T> | null>;
|
|
93
122
|
}
|
|
@@ -13,6 +13,12 @@ const IntermediaryAPI_1 = require("../../../../intermediaries/apis/IntermediaryA
|
|
|
13
13
|
const RequestError_1 = require("../../../../errors/RequestError");
|
|
14
14
|
const utils_1 = require("@scure/btc-signer/utils");
|
|
15
15
|
const RetryUtils_1 = require("../../../../utils/RetryUtils");
|
|
16
|
+
const IToBTCSwap_1 = require("../IToBTCSwap");
|
|
17
|
+
/**
|
|
18
|
+
* Escrow based (PrTLC) swap for Smart chains -> Bitcoin
|
|
19
|
+
*
|
|
20
|
+
* @category Swaps
|
|
21
|
+
*/
|
|
16
22
|
class ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {
|
|
17
23
|
/**
|
|
18
24
|
* @param chainIdentifier
|
|
@@ -37,13 +43,18 @@ class ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {
|
|
|
37
43
|
maxExpectedOnchainSendGracePeriodBlocks: options?.maxExpectedOnchainSendGracePeriodBlocks ?? 12,
|
|
38
44
|
}, events);
|
|
39
45
|
this.TYPE = SwapType_1.SwapType.TO_BTC;
|
|
40
|
-
|
|
41
|
-
|
|
46
|
+
/**
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
this._swapDeserializer = ToBTCSwap_1.ToBTCSwap;
|
|
50
|
+
this._btcRpc = btcRpc;
|
|
42
51
|
}
|
|
43
52
|
/**
|
|
44
|
-
* Returns randomly generated random
|
|
45
|
-
*
|
|
53
|
+
* Returns randomly generated random bitcoin transaction nonce to be used for BTC on-chain swaps
|
|
54
|
+
*
|
|
46
55
|
* @returns Escrow nonce
|
|
56
|
+
*
|
|
57
|
+
* @private
|
|
47
58
|
*/
|
|
48
59
|
getRandomNonce() {
|
|
49
60
|
const firstPart = BigInt(Math.floor((Date.now() / 1000)) - 700000000);
|
|
@@ -53,13 +64,15 @@ class ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {
|
|
|
53
64
|
* Converts bitcoin address to its corresponding output script
|
|
54
65
|
*
|
|
55
66
|
* @param addr Bitcoin address to get the output script for
|
|
56
|
-
*
|
|
67
|
+
*
|
|
57
68
|
* @returns Output script as Buffer
|
|
58
69
|
* @throws {UserError} if invalid address is specified
|
|
70
|
+
*
|
|
71
|
+
* @private
|
|
59
72
|
*/
|
|
60
73
|
btcAddressToOutputScript(addr) {
|
|
61
74
|
try {
|
|
62
|
-
return (0, BitcoinUtils_1.toOutputScript)(this.
|
|
75
|
+
return (0, BitcoinUtils_1.toOutputScript)(this._options.bitcoinNetwork, addr);
|
|
63
76
|
}
|
|
64
77
|
catch (e) {
|
|
65
78
|
throw new UserError_1.UserError("Invalid address specified");
|
|
@@ -75,8 +88,10 @@ class ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {
|
|
|
75
88
|
* @param options Options as passed to the swap create function
|
|
76
89
|
* @param data LP's returned parsed swap data
|
|
77
90
|
* @param hash Payment hash of the swap
|
|
78
|
-
*
|
|
91
|
+
*
|
|
79
92
|
* @throws {IntermediaryError} if returned data are not correct
|
|
93
|
+
*
|
|
94
|
+
* @private
|
|
80
95
|
*/
|
|
81
96
|
verifyReturnedData(signer, resp, amountData, lp, options, data, hash) {
|
|
82
97
|
if (resp.totalFee !== (resp.swapFee + resp.networkFee))
|
|
@@ -91,10 +106,10 @@ class ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {
|
|
|
91
106
|
}
|
|
92
107
|
const maxAllowedBlockDelta = BigInt(options.confirmations +
|
|
93
108
|
options.confirmationTarget +
|
|
94
|
-
this.
|
|
109
|
+
this._options.maxExpectedOnchainSendGracePeriodBlocks);
|
|
95
110
|
const maxAllowedExpiryDelta = maxAllowedBlockDelta
|
|
96
|
-
* BigInt(this.
|
|
97
|
-
* BigInt(this.
|
|
111
|
+
* BigInt(this._options.maxExpectedOnchainSendSafetyFactor)
|
|
112
|
+
* BigInt(this._options.bitcoinBlocktime);
|
|
98
113
|
const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));
|
|
99
114
|
const maxAllowedExpiryTimestamp = currentTimestamp + maxAllowedExpiryDelta;
|
|
100
115
|
if (data.getExpiry() > maxAllowedExpiryTimestamp) {
|
|
@@ -112,17 +127,18 @@ class ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {
|
|
|
112
127
|
}
|
|
113
128
|
}
|
|
114
129
|
/**
|
|
115
|
-
* Returns
|
|
130
|
+
* Returns a newly created Smart chain -> Bitcoin swap using the PrTLC based escrow swap protocol,
|
|
131
|
+
* with the passed amount.
|
|
116
132
|
*
|
|
117
|
-
* @param signer
|
|
118
|
-
* @param
|
|
119
|
-
* @param amountData
|
|
120
|
-
* @param lps
|
|
121
|
-
* @param options
|
|
122
|
-
* @param additionalParams
|
|
123
|
-
* @param abortSignal
|
|
133
|
+
* @param signer Source chain signer address initiating the swap
|
|
134
|
+
* @param recipient Recipient bitcoin on-chain address
|
|
135
|
+
* @param amountData Amount, token and exact input/output data for to swap
|
|
136
|
+
* @param lps An array of intermediaries (LPs) to get the quotes from
|
|
137
|
+
* @param options Optional additional quote options
|
|
138
|
+
* @param additionalParams Optional additional parameters sent to the LP when creating the swap
|
|
139
|
+
* @param abortSignal Abort signal
|
|
124
140
|
*/
|
|
125
|
-
create(signer,
|
|
141
|
+
create(signer, recipient, amountData, lps, options, additionalParams, abortSignal) {
|
|
126
142
|
if (!this.isInitialized)
|
|
127
143
|
throw new Error("Not initialized, call init() first!");
|
|
128
144
|
const _options = {
|
|
@@ -130,15 +146,15 @@ class ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {
|
|
|
130
146
|
confirmations: options?.confirmations ?? 2
|
|
131
147
|
};
|
|
132
148
|
const nonce = this.getRandomNonce();
|
|
133
|
-
const outputScript = this.btcAddressToOutputScript(
|
|
149
|
+
const outputScript = this.btcAddressToOutputScript(recipient);
|
|
134
150
|
const _hash = !amountData.exactIn ?
|
|
135
|
-
this.
|
|
151
|
+
this._contract.getHashForOnchain(outputScript, amountData.amount, _options.confirmations, nonce).toString("hex") :
|
|
136
152
|
undefined;
|
|
137
153
|
const _abortController = (0, Utils_1.extendAbortController)(abortSignal);
|
|
138
154
|
const pricePreFetchPromise = this.preFetchPrice(amountData, _abortController.signal);
|
|
139
155
|
const usdPricePrefetchPromise = this.preFetchUsdPrice(_abortController.signal);
|
|
140
156
|
const feeRatePromise = this.preFetchFeeRate(signer, amountData, _hash, _abortController);
|
|
141
|
-
const _signDataPromise = this.
|
|
157
|
+
const _signDataPromise = this._contract.preFetchBlockDataForSignatures == null ?
|
|
142
158
|
this.preFetchSignData(Promise.resolve(true)) :
|
|
143
159
|
undefined;
|
|
144
160
|
return lps.map(lp => {
|
|
@@ -152,7 +168,7 @@ class ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {
|
|
|
152
168
|
try {
|
|
153
169
|
const { signDataPromise, resp } = await (0, RetryUtils_1.tryWithRetries)(async (retryCount) => {
|
|
154
170
|
const { signDataPrefetch, response } = IntermediaryAPI_1.IntermediaryAPI.initToBTC(this.chainIdentifier, lp.url, {
|
|
155
|
-
btcAddress:
|
|
171
|
+
btcAddress: recipient,
|
|
156
172
|
amount: amountData.amount,
|
|
157
173
|
confirmationTarget: _options.confirmationTarget,
|
|
158
174
|
confirmations: _options.confirmations,
|
|
@@ -162,14 +178,14 @@ class ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {
|
|
|
162
178
|
exactIn: amountData.exactIn,
|
|
163
179
|
feeRate: (0, Utils_1.throwIfUndefined)(feeRatePromise),
|
|
164
180
|
additionalParams
|
|
165
|
-
}, this.
|
|
181
|
+
}, this._options.postRequestTimeout, abortController.signal, retryCount > 0 ? false : undefined);
|
|
166
182
|
return {
|
|
167
183
|
signDataPromise: _signDataPromise ?? this.preFetchSignData(signDataPrefetch),
|
|
168
184
|
resp: await response
|
|
169
185
|
};
|
|
170
186
|
}, undefined, RequestError_1.RequestError, abortController.signal);
|
|
171
|
-
let hash = _hash ?? this.
|
|
172
|
-
const data = new this.
|
|
187
|
+
let hash = _hash ?? this._contract.getHashForOnchain(outputScript, resp.amount, _options.confirmations, nonce).toString("hex");
|
|
188
|
+
const data = new this._swapDataDeserializer(resp.data);
|
|
173
189
|
data.setOfferer(signer);
|
|
174
190
|
this.verifyReturnedData(signer, resp, amountData, lp, _options, data, hash);
|
|
175
191
|
const [pricingInfo, signatureExpiry, reputation] = await Promise.all([
|
|
@@ -194,7 +210,7 @@ class ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {
|
|
|
194
210
|
data,
|
|
195
211
|
networkFee: resp.networkFee,
|
|
196
212
|
networkFeeBtc,
|
|
197
|
-
address,
|
|
213
|
+
address: recipient,
|
|
198
214
|
amount: resp.amount,
|
|
199
215
|
confirmationTarget: _options.confirmationTarget,
|
|
200
216
|
satsPerVByte: Number(resp.satsPervByte),
|
|
@@ -213,5 +229,44 @@ class ToBTCWrapper extends IToBTCWrapper_1.IToBTCWrapper {
|
|
|
213
229
|
};
|
|
214
230
|
});
|
|
215
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* @inheritDoc
|
|
234
|
+
*/
|
|
235
|
+
async recoverFromSwapDataAndState(init, state, lp) {
|
|
236
|
+
const data = init.data;
|
|
237
|
+
const swapInit = {
|
|
238
|
+
pricingInfo: {
|
|
239
|
+
isValid: true,
|
|
240
|
+
satsBaseFee: 0n,
|
|
241
|
+
swapPriceUSatPerToken: 100000000000000n,
|
|
242
|
+
realPriceUSatPerToken: 100000000000000n,
|
|
243
|
+
differencePPM: 0n,
|
|
244
|
+
feePPM: 0n,
|
|
245
|
+
},
|
|
246
|
+
url: lp?.url,
|
|
247
|
+
expiry: 0,
|
|
248
|
+
swapFee: 0n,
|
|
249
|
+
swapFeeBtc: 0n,
|
|
250
|
+
confirmationTarget: 1,
|
|
251
|
+
satsPerVByte: 0,
|
|
252
|
+
feeRate: "",
|
|
253
|
+
signatureData: undefined,
|
|
254
|
+
nonce: data.getNonceHint() ?? undefined,
|
|
255
|
+
requiredConfirmations: data.getConfirmationsHint() ?? undefined,
|
|
256
|
+
data,
|
|
257
|
+
networkFee: 0n,
|
|
258
|
+
networkFeeBtc: 0n,
|
|
259
|
+
exactIn: true
|
|
260
|
+
};
|
|
261
|
+
const swap = new ToBTCSwap_1.ToBTCSwap(this, swapInit);
|
|
262
|
+
swap._commitTxId = await init.getInitTxId();
|
|
263
|
+
const blockData = await init.getTxBlock();
|
|
264
|
+
swap.createdAt = blockData.blockTime * 1000;
|
|
265
|
+
swap._setInitiated();
|
|
266
|
+
swap._state = IToBTCSwap_1.ToBTCSwapState.COMMITED;
|
|
267
|
+
await swap._sync(false, false, state);
|
|
268
|
+
await swap._save();
|
|
269
|
+
return swap;
|
|
270
|
+
}
|
|
216
271
|
}
|
|
217
272
|
exports.ToBTCWrapper = ToBTCWrapper;
|