@atomiqlabs/lp-lib 14.0.0-dev.21 → 14.0.0-dev.23
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/LICENSE +201 -201
- package/dist/fees/IBtcFeeEstimator.d.ts +3 -3
- package/dist/fees/IBtcFeeEstimator.js +2 -2
- package/dist/index.d.ts +42 -42
- package/dist/index.js +58 -58
- package/dist/info/InfoHandler.d.ts +17 -17
- package/dist/info/InfoHandler.js +61 -61
- package/dist/plugins/IPlugin.d.ts +143 -143
- package/dist/plugins/IPlugin.js +34 -34
- package/dist/plugins/PluginManager.d.ts +112 -112
- package/dist/plugins/PluginManager.js +259 -259
- package/dist/prices/BinanceSwapPrice.d.ts +26 -26
- package/dist/prices/BinanceSwapPrice.js +92 -92
- package/dist/prices/CoinGeckoSwapPrice.d.ts +30 -30
- package/dist/prices/CoinGeckoSwapPrice.js +64 -64
- package/dist/prices/ISwapPrice.d.ts +43 -43
- package/dist/prices/ISwapPrice.js +55 -55
- package/dist/prices/OKXSwapPrice.d.ts +26 -26
- package/dist/prices/OKXSwapPrice.js +92 -92
- package/dist/storage/IIntermediaryStorage.d.ts +18 -18
- package/dist/storage/IIntermediaryStorage.js +2 -2
- package/dist/storagemanager/IntermediaryStorageManager.d.ts +19 -19
- package/dist/storagemanager/IntermediaryStorageManager.js +111 -111
- package/dist/storagemanager/StorageManager.d.ts +13 -13
- package/dist/storagemanager/StorageManager.js +64 -64
- package/dist/swaps/SwapHandler.d.ts +153 -153
- package/dist/swaps/SwapHandler.js +160 -160
- package/dist/swaps/SwapHandlerSwap.d.ts +79 -79
- package/dist/swaps/SwapHandlerSwap.js +78 -78
- package/dist/swaps/assertions/AmountAssertions.d.ts +28 -28
- package/dist/swaps/assertions/AmountAssertions.js +72 -72
- package/dist/swaps/assertions/FromBtcAmountAssertions.d.ts +76 -76
- package/dist/swaps/assertions/FromBtcAmountAssertions.js +180 -180
- package/dist/swaps/assertions/LightningAssertions.d.ts +44 -44
- package/dist/swaps/assertions/LightningAssertions.js +86 -86
- package/dist/swaps/assertions/ToBtcAmountAssertions.d.ts +53 -53
- package/dist/swaps/assertions/ToBtcAmountAssertions.js +150 -150
- package/dist/swaps/escrow/EscrowHandler.d.ts +51 -51
- package/dist/swaps/escrow/EscrowHandler.js +158 -158
- package/dist/swaps/escrow/EscrowHandlerSwap.d.ts +35 -35
- package/dist/swaps/escrow/EscrowHandlerSwap.js +69 -69
- package/dist/swaps/escrow/FromBtcBaseSwap.d.ts +14 -14
- package/dist/swaps/escrow/FromBtcBaseSwap.js +32 -32
- package/dist/swaps/escrow/FromBtcBaseSwapHandler.d.ts +102 -102
- package/dist/swaps/escrow/FromBtcBaseSwapHandler.js +210 -210
- package/dist/swaps/escrow/ToBtcBaseSwap.d.ts +36 -36
- package/dist/swaps/escrow/ToBtcBaseSwap.js +67 -67
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.d.ts +53 -53
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.js +81 -81
- package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.d.ts +83 -83
- package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.js +318 -318
- package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.d.ts +21 -21
- package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.js +50 -50
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.d.ts +107 -107
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.js +675 -675
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.d.ts +33 -33
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.js +91 -91
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.d.ts +111 -111
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.js +684 -684
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.d.ts +55 -55
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.js +120 -120
- package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.d.ts +171 -171
- package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.js +706 -706
- package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.d.ts +26 -26
- package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.js +62 -62
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.d.ts +177 -177
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.js +863 -863
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.d.ts +24 -24
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.js +58 -58
- package/dist/swaps/spv_vault_swap/SpvVault.d.ts +40 -41
- package/dist/swaps/spv_vault_swap/SpvVault.js +111 -111
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.d.ts +67 -67
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.js +158 -158
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.d.ts +68 -68
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.js +492 -492
- package/dist/swaps/spv_vault_swap/SpvVaults.d.ts +52 -52
- package/dist/swaps/spv_vault_swap/SpvVaults.js +386 -364
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.d.ts +51 -51
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.js +650 -650
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.d.ts +52 -52
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.js +118 -118
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.d.ts +76 -76
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.js +494 -494
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.d.ts +34 -34
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.js +81 -81
- package/dist/utils/BitcoinUtils.d.ts +2 -2
- package/dist/utils/BitcoinUtils.js +45 -45
- package/dist/utils/Utils.d.ts +29 -29
- package/dist/utils/Utils.js +89 -89
- package/dist/utils/paramcoders/IParamReader.d.ts +5 -5
- package/dist/utils/paramcoders/IParamReader.js +2 -2
- package/dist/utils/paramcoders/IParamWriter.d.ts +4 -4
- package/dist/utils/paramcoders/IParamWriter.js +2 -2
- package/dist/utils/paramcoders/LegacyParamEncoder.d.ts +10 -10
- package/dist/utils/paramcoders/LegacyParamEncoder.js +22 -22
- package/dist/utils/paramcoders/ParamDecoder.d.ts +25 -25
- package/dist/utils/paramcoders/ParamDecoder.js +222 -222
- package/dist/utils/paramcoders/ParamEncoder.d.ts +9 -9
- package/dist/utils/paramcoders/ParamEncoder.js +22 -22
- package/dist/utils/paramcoders/SchemaVerifier.d.ts +21 -21
- package/dist/utils/paramcoders/SchemaVerifier.js +84 -84
- package/dist/utils/paramcoders/server/ServerParamDecoder.d.ts +8 -8
- package/dist/utils/paramcoders/server/ServerParamDecoder.js +107 -107
- package/dist/utils/paramcoders/server/ServerParamEncoder.d.ts +11 -11
- package/dist/utils/paramcoders/server/ServerParamEncoder.js +65 -65
- package/dist/wallets/IBitcoinWallet.d.ts +67 -67
- package/dist/wallets/IBitcoinWallet.js +2 -2
- package/dist/wallets/ILightningWallet.d.ts +117 -117
- package/dist/wallets/ILightningWallet.js +37 -37
- package/dist/wallets/ISpvVaultSigner.d.ts +7 -7
- package/dist/wallets/ISpvVaultSigner.js +2 -2
- package/package.json +36 -36
- package/src/fees/IBtcFeeEstimator.ts +6 -6
- package/src/index.ts +53 -53
- package/src/info/InfoHandler.ts +106 -106
- package/src/plugins/IPlugin.ts +168 -168
- package/src/plugins/PluginManager.ts +336 -336
- package/src/prices/BinanceSwapPrice.ts +113 -113
- package/src/prices/CoinGeckoSwapPrice.ts +87 -87
- package/src/prices/ISwapPrice.ts +88 -88
- package/src/prices/OKXSwapPrice.ts +113 -113
- package/src/storage/IIntermediaryStorage.ts +19 -19
- package/src/storagemanager/IntermediaryStorageManager.ts +118 -118
- package/src/storagemanager/StorageManager.ts +78 -78
- package/src/swaps/SwapHandler.ts +277 -277
- package/src/swaps/SwapHandlerSwap.ts +141 -141
- package/src/swaps/assertions/AmountAssertions.ts +76 -76
- package/src/swaps/assertions/FromBtcAmountAssertions.ts +246 -246
- package/src/swaps/assertions/LightningAssertions.ts +103 -103
- package/src/swaps/assertions/ToBtcAmountAssertions.ts +203 -203
- package/src/swaps/escrow/EscrowHandler.ts +179 -179
- package/src/swaps/escrow/EscrowHandlerSwap.ts +86 -86
- package/src/swaps/escrow/FromBtcBaseSwap.ts +38 -38
- package/src/swaps/escrow/FromBtcBaseSwapHandler.ts +286 -286
- package/src/swaps/escrow/ToBtcBaseSwap.ts +85 -85
- package/src/swaps/escrow/ToBtcBaseSwapHandler.ts +129 -129
- package/src/swaps/escrow/frombtc_abstract/FromBtcAbs.ts +452 -452
- package/src/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.ts +61 -61
- package/src/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.ts +856 -856
- package/src/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.ts +141 -141
- package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.ts +850 -850
- package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.ts +196 -196
- package/src/swaps/escrow/tobtc_abstract/ToBtcAbs.ts +879 -879
- package/src/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.ts +102 -102
- package/src/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.ts +1112 -1112
- package/src/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.ts +80 -80
- package/src/swaps/spv_vault_swap/SpvVault.ts +143 -143
- package/src/swaps/spv_vault_swap/SpvVaultSwap.ts +225 -225
- package/src/swaps/spv_vault_swap/SpvVaultSwapHandler.ts +628 -628
- package/src/swaps/spv_vault_swap/SpvVaults.ts +458 -435
- package/src/swaps/trusted/frombtc_trusted/FromBtcTrusted.ts +747 -747
- package/src/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.ts +185 -185
- package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.ts +590 -590
- package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.ts +121 -121
- package/src/utils/BitcoinUtils.ts +42 -42
- package/src/utils/Utils.ts +104 -104
- package/src/utils/paramcoders/IParamReader.ts +7 -7
- package/src/utils/paramcoders/IParamWriter.ts +8 -8
- package/src/utils/paramcoders/LegacyParamEncoder.ts +27 -27
- package/src/utils/paramcoders/ParamDecoder.ts +218 -218
- package/src/utils/paramcoders/ParamEncoder.ts +29 -29
- package/src/utils/paramcoders/SchemaVerifier.ts +96 -96
- package/src/utils/paramcoders/server/ServerParamDecoder.ts +118 -118
- package/src/utils/paramcoders/server/ServerParamEncoder.ts +75 -75
- package/src/wallets/IBitcoinWallet.ts +68 -68
- package/src/wallets/ILightningWallet.ts +178 -178
- package/src/wallets/ISpvVaultSigner.ts +10 -10
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
import {SwapData} from "@atomiqlabs/base";
|
|
2
|
-
import {deserializeBN, serializeBN} from "../../utils/Utils";
|
|
3
|
-
import {EscrowHandlerSwap} from "./EscrowHandlerSwap";
|
|
4
|
-
|
|
5
|
-
export abstract class ToBtcBaseSwap<T extends SwapData = SwapData, S = any> extends EscrowHandlerSwap<T, S> {
|
|
6
|
-
|
|
7
|
-
amount: bigint;
|
|
8
|
-
|
|
9
|
-
quotedNetworkFee: bigint;
|
|
10
|
-
readonly quotedNetworkFeeInToken: bigint;
|
|
11
|
-
realNetworkFee: bigint;
|
|
12
|
-
realNetworkFeeInToken: bigint;
|
|
13
|
-
|
|
14
|
-
protected constructor(chainIdentifier: string, amount: bigint, swapFee: bigint, swapFeeInToken: bigint, quotedNetworkFee: bigint, quotedNetworkFeeInToken: bigint);
|
|
15
|
-
protected constructor(obj: any);
|
|
16
|
-
|
|
17
|
-
protected constructor(obj?: any | string, amount?: bigint, swapFee?: bigint, swapFeeInToken?: bigint, quotedNetworkFee?: bigint, quotedNetworkFeeInToken?: bigint) {
|
|
18
|
-
if(
|
|
19
|
-
typeof(obj)==="string" && typeof(amount)==="bigint" && typeof(swapFee)==="bigint" && typeof(swapFeeInToken)==="bigint" &&
|
|
20
|
-
typeof(quotedNetworkFee)==="bigint" && typeof(quotedNetworkFeeInToken)==="bigint"
|
|
21
|
-
) {
|
|
22
|
-
super(obj, swapFee, swapFeeInToken);
|
|
23
|
-
this.amount = amount;
|
|
24
|
-
this.quotedNetworkFee = quotedNetworkFee;
|
|
25
|
-
this.quotedNetworkFeeInToken = quotedNetworkFeeInToken;
|
|
26
|
-
return;
|
|
27
|
-
} else {
|
|
28
|
-
super(obj);
|
|
29
|
-
this.amount = deserializeBN(obj.amount);
|
|
30
|
-
this.quotedNetworkFee = deserializeBN(obj.quotedNetworkFee);
|
|
31
|
-
this.quotedNetworkFeeInToken = deserializeBN(obj.quotedNetworkFeeInToken);
|
|
32
|
-
this.realNetworkFee = deserializeBN(obj.realNetworkFee);
|
|
33
|
-
this.realNetworkFeeInToken = deserializeBN(obj.realNetworkFeeInToken);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
serialize(): any {
|
|
38
|
-
const obj = super.serialize();
|
|
39
|
-
obj.amount = serializeBN(this.amount);
|
|
40
|
-
obj.quotedNetworkFee = serializeBN(this.quotedNetworkFee);
|
|
41
|
-
obj.quotedNetworkFeeInToken = serializeBN(this.quotedNetworkFeeInToken);
|
|
42
|
-
obj.realNetworkFee = serializeBN(this.realNetworkFee);
|
|
43
|
-
obj.realNetworkFeeInToken = serializeBN(this.realNetworkFeeInToken);
|
|
44
|
-
return obj;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
setRealNetworkFee(networkFeeInBtc: bigint) {
|
|
48
|
-
this.realNetworkFee = networkFeeInBtc;
|
|
49
|
-
if(this.quotedNetworkFee!=null && this.quotedNetworkFeeInToken!=null) {
|
|
50
|
-
this.realNetworkFeeInToken = this.realNetworkFee * this.quotedNetworkFeeInToken / this.quotedNetworkFee;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
getInputAmount(): bigint {
|
|
55
|
-
return this.getTotalInputAmount() - this.getSwapFee().inInputToken - this.getQuotedNetworkFee().inInputToken;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
getTotalInputAmount(): bigint {
|
|
59
|
-
return this.data.getAmount();
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
getSwapFee(): { inInputToken: bigint; inOutputToken: bigint } {
|
|
63
|
-
return {inInputToken: this.swapFeeInToken, inOutputToken: this.swapFee};
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Returns quoted (expected) network fee, denominated in input & output tokens (the fee is paid only once, it is
|
|
68
|
-
* just represented here in both denomination for ease of use)
|
|
69
|
-
*/
|
|
70
|
-
getQuotedNetworkFee(): { inInputToken: bigint; inOutputToken: bigint } {
|
|
71
|
-
return {inInputToken: this.quotedNetworkFeeInToken, inOutputToken: this.quotedNetworkFee};
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Returns real network fee paid for the swap, denominated in input & output tokens (the fee is paid only once, it is
|
|
76
|
-
* just represented here in both denomination for ease of use)
|
|
77
|
-
*/
|
|
78
|
-
getRealNetworkFee(): { inInputToken: bigint; inOutputToken: bigint } {
|
|
79
|
-
return {inInputToken: this.realNetworkFeeInToken, inOutputToken: this.realNetworkFee};
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
getOutputAmount(): bigint {
|
|
83
|
-
return this.amount;
|
|
84
|
-
}
|
|
85
|
-
|
|
1
|
+
import {SwapData} from "@atomiqlabs/base";
|
|
2
|
+
import {deserializeBN, serializeBN} from "../../utils/Utils";
|
|
3
|
+
import {EscrowHandlerSwap} from "./EscrowHandlerSwap";
|
|
4
|
+
|
|
5
|
+
export abstract class ToBtcBaseSwap<T extends SwapData = SwapData, S = any> extends EscrowHandlerSwap<T, S> {
|
|
6
|
+
|
|
7
|
+
amount: bigint;
|
|
8
|
+
|
|
9
|
+
quotedNetworkFee: bigint;
|
|
10
|
+
readonly quotedNetworkFeeInToken: bigint;
|
|
11
|
+
realNetworkFee: bigint;
|
|
12
|
+
realNetworkFeeInToken: bigint;
|
|
13
|
+
|
|
14
|
+
protected constructor(chainIdentifier: string, amount: bigint, swapFee: bigint, swapFeeInToken: bigint, quotedNetworkFee: bigint, quotedNetworkFeeInToken: bigint);
|
|
15
|
+
protected constructor(obj: any);
|
|
16
|
+
|
|
17
|
+
protected constructor(obj?: any | string, amount?: bigint, swapFee?: bigint, swapFeeInToken?: bigint, quotedNetworkFee?: bigint, quotedNetworkFeeInToken?: bigint) {
|
|
18
|
+
if(
|
|
19
|
+
typeof(obj)==="string" && typeof(amount)==="bigint" && typeof(swapFee)==="bigint" && typeof(swapFeeInToken)==="bigint" &&
|
|
20
|
+
typeof(quotedNetworkFee)==="bigint" && typeof(quotedNetworkFeeInToken)==="bigint"
|
|
21
|
+
) {
|
|
22
|
+
super(obj, swapFee, swapFeeInToken);
|
|
23
|
+
this.amount = amount;
|
|
24
|
+
this.quotedNetworkFee = quotedNetworkFee;
|
|
25
|
+
this.quotedNetworkFeeInToken = quotedNetworkFeeInToken;
|
|
26
|
+
return;
|
|
27
|
+
} else {
|
|
28
|
+
super(obj);
|
|
29
|
+
this.amount = deserializeBN(obj.amount);
|
|
30
|
+
this.quotedNetworkFee = deserializeBN(obj.quotedNetworkFee);
|
|
31
|
+
this.quotedNetworkFeeInToken = deserializeBN(obj.quotedNetworkFeeInToken);
|
|
32
|
+
this.realNetworkFee = deserializeBN(obj.realNetworkFee);
|
|
33
|
+
this.realNetworkFeeInToken = deserializeBN(obj.realNetworkFeeInToken);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
serialize(): any {
|
|
38
|
+
const obj = super.serialize();
|
|
39
|
+
obj.amount = serializeBN(this.amount);
|
|
40
|
+
obj.quotedNetworkFee = serializeBN(this.quotedNetworkFee);
|
|
41
|
+
obj.quotedNetworkFeeInToken = serializeBN(this.quotedNetworkFeeInToken);
|
|
42
|
+
obj.realNetworkFee = serializeBN(this.realNetworkFee);
|
|
43
|
+
obj.realNetworkFeeInToken = serializeBN(this.realNetworkFeeInToken);
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
setRealNetworkFee(networkFeeInBtc: bigint) {
|
|
48
|
+
this.realNetworkFee = networkFeeInBtc;
|
|
49
|
+
if(this.quotedNetworkFee!=null && this.quotedNetworkFeeInToken!=null) {
|
|
50
|
+
this.realNetworkFeeInToken = this.realNetworkFee * this.quotedNetworkFeeInToken / this.quotedNetworkFee;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
getInputAmount(): bigint {
|
|
55
|
+
return this.getTotalInputAmount() - this.getSwapFee().inInputToken - this.getQuotedNetworkFee().inInputToken;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
getTotalInputAmount(): bigint {
|
|
59
|
+
return this.data.getAmount();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
getSwapFee(): { inInputToken: bigint; inOutputToken: bigint } {
|
|
63
|
+
return {inInputToken: this.swapFeeInToken, inOutputToken: this.swapFee};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Returns quoted (expected) network fee, denominated in input & output tokens (the fee is paid only once, it is
|
|
68
|
+
* just represented here in both denomination for ease of use)
|
|
69
|
+
*/
|
|
70
|
+
getQuotedNetworkFee(): { inInputToken: bigint; inOutputToken: bigint } {
|
|
71
|
+
return {inInputToken: this.quotedNetworkFeeInToken, inOutputToken: this.quotedNetworkFee};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Returns real network fee paid for the swap, denominated in input & output tokens (the fee is paid only once, it is
|
|
76
|
+
* just represented here in both denomination for ease of use)
|
|
77
|
+
*/
|
|
78
|
+
getRealNetworkFee(): { inInputToken: bigint; inOutputToken: bigint } {
|
|
79
|
+
return {inInputToken: this.realNetworkFeeInToken, inOutputToken: this.realNetworkFee};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
getOutputAmount(): bigint {
|
|
83
|
+
return this.amount;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
86
|
}
|
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
import {MultichainData, SwapBaseConfig} from "../SwapHandler";
|
|
2
|
-
import {SwapData} from "@atomiqlabs/base";
|
|
3
|
-
import {ServerParamEncoder} from "../../utils/paramcoders/server/ServerParamEncoder";
|
|
4
|
-
import {IParamReader} from "../../utils/paramcoders/IParamReader";
|
|
5
|
-
import {FieldTypeEnum} from "../../utils/paramcoders/SchemaVerifier";
|
|
6
|
-
import {Request} from "express";
|
|
7
|
-
import {ToBtcBaseSwap} from "./ToBtcBaseSwap";
|
|
8
|
-
import {EscrowHandler} from "./EscrowHandler";
|
|
9
|
-
import {ToBtcAmountAssertions} from "../assertions/ToBtcAmountAssertions";
|
|
10
|
-
import {IIntermediaryStorage} from "../../storage/IIntermediaryStorage";
|
|
11
|
-
import {ISwapPrice} from "../../prices/ISwapPrice";
|
|
12
|
-
|
|
13
|
-
export type ToBtcBaseConfig = SwapBaseConfig & {
|
|
14
|
-
gracePeriod: bigint,
|
|
15
|
-
refundAuthorizationTimeout: number
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export abstract class ToBtcBaseSwapHandler<V extends ToBtcBaseSwap<SwapData, S>, S> extends EscrowHandler<V, S> {
|
|
19
|
-
|
|
20
|
-
readonly AmountAssertions: ToBtcAmountAssertions;
|
|
21
|
-
|
|
22
|
-
readonly pdaExistsForToken: {
|
|
23
|
-
[chainIdentifier: string]: {
|
|
24
|
-
[token: string]: boolean
|
|
25
|
-
}
|
|
26
|
-
} = {};
|
|
27
|
-
|
|
28
|
-
constructor(
|
|
29
|
-
storageDirectory: IIntermediaryStorage<V>,
|
|
30
|
-
path: string,
|
|
31
|
-
chainsData: MultichainData,
|
|
32
|
-
swapPricing: ISwapPrice,
|
|
33
|
-
config: ToBtcBaseConfig
|
|
34
|
-
) {
|
|
35
|
-
super(storageDirectory, path, chainsData, swapPricing);
|
|
36
|
-
this.AmountAssertions = new ToBtcAmountAssertions(config, swapPricing);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
protected async checkVaultInitialized(chainIdentifier: string, token: string): Promise<void> {
|
|
40
|
-
if(!this.pdaExistsForToken[chainIdentifier] || !this.pdaExistsForToken[chainIdentifier][token]) {
|
|
41
|
-
this.logger.debug("checkVaultInitialized(): checking vault exists for chain: "+chainIdentifier+" token: "+token);
|
|
42
|
-
const {swapContract, signer} = this.getChain(chainIdentifier);
|
|
43
|
-
const reputation = await swapContract.getIntermediaryReputation(signer.getAddress(), token);
|
|
44
|
-
this.logger.debug("checkVaultInitialized(): vault state, chain: "+chainIdentifier+" token: "+token+" exists: "+(reputation!=null));
|
|
45
|
-
if(reputation!=null) {
|
|
46
|
-
if(this.pdaExistsForToken[chainIdentifier]==null) this.pdaExistsForToken[chainIdentifier] = {};
|
|
47
|
-
this.pdaExistsForToken[chainIdentifier][token] = true;
|
|
48
|
-
} else {
|
|
49
|
-
throw {
|
|
50
|
-
code: 20201,
|
|
51
|
-
msg: "Token not supported!"
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Starts pre-fetches for swap pricing & signature data
|
|
59
|
-
*
|
|
60
|
-
* @param chainIdentifier
|
|
61
|
-
* @param token
|
|
62
|
-
* @param responseStream
|
|
63
|
-
* @param abortController
|
|
64
|
-
*/
|
|
65
|
-
protected getToBtcPrefetches(chainIdentifier: string, token: string, responseStream: ServerParamEncoder, abortController: AbortController): {
|
|
66
|
-
pricePrefetchPromise?: Promise<bigint>,
|
|
67
|
-
signDataPrefetchPromise?: Promise<any>
|
|
68
|
-
} {
|
|
69
|
-
//Fetch pricing & signature data in parallel
|
|
70
|
-
const pricePrefetchPromise: Promise<bigint> = this.swapPricing.preFetchPrice(token, chainIdentifier).catch(e => {
|
|
71
|
-
this.logger.error("getToBtcPrefetches(): pricePrefetch error", e);
|
|
72
|
-
abortController.abort(e);
|
|
73
|
-
return null;
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
return {
|
|
77
|
-
pricePrefetchPromise,
|
|
78
|
-
signDataPrefetchPromise: this.getSignDataPrefetch(chainIdentifier, abortController, responseStream)
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Signs the created swap
|
|
84
|
-
*
|
|
85
|
-
* @param chainIdentifier
|
|
86
|
-
* @param swapObject
|
|
87
|
-
* @param req
|
|
88
|
-
* @param abortSignal
|
|
89
|
-
* @param signDataPrefetchPromise
|
|
90
|
-
*/
|
|
91
|
-
protected async getToBtcSignatureData(
|
|
92
|
-
chainIdentifier: string,
|
|
93
|
-
swapObject: SwapData,
|
|
94
|
-
req: Request & {paramReader: IParamReader},
|
|
95
|
-
abortSignal: AbortSignal,
|
|
96
|
-
signDataPrefetchPromise?: Promise<any>
|
|
97
|
-
): Promise<{
|
|
98
|
-
prefix: string,
|
|
99
|
-
timeout: string,
|
|
100
|
-
signature: string,
|
|
101
|
-
feeRate: string
|
|
102
|
-
}> {
|
|
103
|
-
const prefetchedSignData = signDataPrefetchPromise!=null ? await signDataPrefetchPromise : null;
|
|
104
|
-
if(prefetchedSignData!=null) this.logger.debug("getToBtcSignatureData(): pre-fetched signature data: ", prefetchedSignData);
|
|
105
|
-
abortSignal.throwIfAborted();
|
|
106
|
-
|
|
107
|
-
const feeRateObj = await req.paramReader.getParams({
|
|
108
|
-
feeRate: FieldTypeEnum.String
|
|
109
|
-
}).catch(() => null);
|
|
110
|
-
abortSignal.throwIfAborted();
|
|
111
|
-
|
|
112
|
-
const feeRate = feeRateObj?.feeRate!=null && typeof(feeRateObj.feeRate)==="string" ? feeRateObj.feeRate : null;
|
|
113
|
-
this.logger.debug("getToBtcSignatureData(): using fee rate from client: ", feeRate);
|
|
114
|
-
const {swapContract, signer} = this.getChain(chainIdentifier);
|
|
115
|
-
const sigData = await swapContract.getInitSignature(
|
|
116
|
-
signer,
|
|
117
|
-
swapObject,
|
|
118
|
-
this.getInitAuthorizationTimeout(chainIdentifier),
|
|
119
|
-
prefetchedSignData,
|
|
120
|
-
feeRate
|
|
121
|
-
);
|
|
122
|
-
abortSignal.throwIfAborted();
|
|
123
|
-
|
|
124
|
-
return {
|
|
125
|
-
...sigData,
|
|
126
|
-
feeRate
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
|
|
1
|
+
import {MultichainData, SwapBaseConfig} from "../SwapHandler";
|
|
2
|
+
import {SwapData} from "@atomiqlabs/base";
|
|
3
|
+
import {ServerParamEncoder} from "../../utils/paramcoders/server/ServerParamEncoder";
|
|
4
|
+
import {IParamReader} from "../../utils/paramcoders/IParamReader";
|
|
5
|
+
import {FieldTypeEnum} from "../../utils/paramcoders/SchemaVerifier";
|
|
6
|
+
import {Request} from "express";
|
|
7
|
+
import {ToBtcBaseSwap} from "./ToBtcBaseSwap";
|
|
8
|
+
import {EscrowHandler} from "./EscrowHandler";
|
|
9
|
+
import {ToBtcAmountAssertions} from "../assertions/ToBtcAmountAssertions";
|
|
10
|
+
import {IIntermediaryStorage} from "../../storage/IIntermediaryStorage";
|
|
11
|
+
import {ISwapPrice} from "../../prices/ISwapPrice";
|
|
12
|
+
|
|
13
|
+
export type ToBtcBaseConfig = SwapBaseConfig & {
|
|
14
|
+
gracePeriod: bigint,
|
|
15
|
+
refundAuthorizationTimeout: number
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export abstract class ToBtcBaseSwapHandler<V extends ToBtcBaseSwap<SwapData, S>, S> extends EscrowHandler<V, S> {
|
|
19
|
+
|
|
20
|
+
readonly AmountAssertions: ToBtcAmountAssertions;
|
|
21
|
+
|
|
22
|
+
readonly pdaExistsForToken: {
|
|
23
|
+
[chainIdentifier: string]: {
|
|
24
|
+
[token: string]: boolean
|
|
25
|
+
}
|
|
26
|
+
} = {};
|
|
27
|
+
|
|
28
|
+
constructor(
|
|
29
|
+
storageDirectory: IIntermediaryStorage<V>,
|
|
30
|
+
path: string,
|
|
31
|
+
chainsData: MultichainData,
|
|
32
|
+
swapPricing: ISwapPrice,
|
|
33
|
+
config: ToBtcBaseConfig
|
|
34
|
+
) {
|
|
35
|
+
super(storageDirectory, path, chainsData, swapPricing);
|
|
36
|
+
this.AmountAssertions = new ToBtcAmountAssertions(config, swapPricing);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
protected async checkVaultInitialized(chainIdentifier: string, token: string): Promise<void> {
|
|
40
|
+
if(!this.pdaExistsForToken[chainIdentifier] || !this.pdaExistsForToken[chainIdentifier][token]) {
|
|
41
|
+
this.logger.debug("checkVaultInitialized(): checking vault exists for chain: "+chainIdentifier+" token: "+token);
|
|
42
|
+
const {swapContract, signer} = this.getChain(chainIdentifier);
|
|
43
|
+
const reputation = await swapContract.getIntermediaryReputation(signer.getAddress(), token);
|
|
44
|
+
this.logger.debug("checkVaultInitialized(): vault state, chain: "+chainIdentifier+" token: "+token+" exists: "+(reputation!=null));
|
|
45
|
+
if(reputation!=null) {
|
|
46
|
+
if(this.pdaExistsForToken[chainIdentifier]==null) this.pdaExistsForToken[chainIdentifier] = {};
|
|
47
|
+
this.pdaExistsForToken[chainIdentifier][token] = true;
|
|
48
|
+
} else {
|
|
49
|
+
throw {
|
|
50
|
+
code: 20201,
|
|
51
|
+
msg: "Token not supported!"
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Starts pre-fetches for swap pricing & signature data
|
|
59
|
+
*
|
|
60
|
+
* @param chainIdentifier
|
|
61
|
+
* @param token
|
|
62
|
+
* @param responseStream
|
|
63
|
+
* @param abortController
|
|
64
|
+
*/
|
|
65
|
+
protected getToBtcPrefetches(chainIdentifier: string, token: string, responseStream: ServerParamEncoder, abortController: AbortController): {
|
|
66
|
+
pricePrefetchPromise?: Promise<bigint>,
|
|
67
|
+
signDataPrefetchPromise?: Promise<any>
|
|
68
|
+
} {
|
|
69
|
+
//Fetch pricing & signature data in parallel
|
|
70
|
+
const pricePrefetchPromise: Promise<bigint> = this.swapPricing.preFetchPrice(token, chainIdentifier).catch(e => {
|
|
71
|
+
this.logger.error("getToBtcPrefetches(): pricePrefetch error", e);
|
|
72
|
+
abortController.abort(e);
|
|
73
|
+
return null;
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
return {
|
|
77
|
+
pricePrefetchPromise,
|
|
78
|
+
signDataPrefetchPromise: this.getSignDataPrefetch(chainIdentifier, abortController, responseStream)
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Signs the created swap
|
|
84
|
+
*
|
|
85
|
+
* @param chainIdentifier
|
|
86
|
+
* @param swapObject
|
|
87
|
+
* @param req
|
|
88
|
+
* @param abortSignal
|
|
89
|
+
* @param signDataPrefetchPromise
|
|
90
|
+
*/
|
|
91
|
+
protected async getToBtcSignatureData(
|
|
92
|
+
chainIdentifier: string,
|
|
93
|
+
swapObject: SwapData,
|
|
94
|
+
req: Request & {paramReader: IParamReader},
|
|
95
|
+
abortSignal: AbortSignal,
|
|
96
|
+
signDataPrefetchPromise?: Promise<any>
|
|
97
|
+
): Promise<{
|
|
98
|
+
prefix: string,
|
|
99
|
+
timeout: string,
|
|
100
|
+
signature: string,
|
|
101
|
+
feeRate: string
|
|
102
|
+
}> {
|
|
103
|
+
const prefetchedSignData = signDataPrefetchPromise!=null ? await signDataPrefetchPromise : null;
|
|
104
|
+
if(prefetchedSignData!=null) this.logger.debug("getToBtcSignatureData(): pre-fetched signature data: ", prefetchedSignData);
|
|
105
|
+
abortSignal.throwIfAborted();
|
|
106
|
+
|
|
107
|
+
const feeRateObj = await req.paramReader.getParams({
|
|
108
|
+
feeRate: FieldTypeEnum.String
|
|
109
|
+
}).catch(() => null);
|
|
110
|
+
abortSignal.throwIfAborted();
|
|
111
|
+
|
|
112
|
+
const feeRate = feeRateObj?.feeRate!=null && typeof(feeRateObj.feeRate)==="string" ? feeRateObj.feeRate : null;
|
|
113
|
+
this.logger.debug("getToBtcSignatureData(): using fee rate from client: ", feeRate);
|
|
114
|
+
const {swapContract, signer} = this.getChain(chainIdentifier);
|
|
115
|
+
const sigData = await swapContract.getInitSignature(
|
|
116
|
+
signer,
|
|
117
|
+
swapObject,
|
|
118
|
+
this.getInitAuthorizationTimeout(chainIdentifier),
|
|
119
|
+
prefetchedSignData,
|
|
120
|
+
feeRate
|
|
121
|
+
);
|
|
122
|
+
abortSignal.throwIfAborted();
|
|
123
|
+
|
|
124
|
+
return {
|
|
125
|
+
...sigData,
|
|
126
|
+
feeRate
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
130
|
}
|