@atomiqlabs/lp-lib 14.0.0-dev.13 → 14.0.0-dev.16
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 -172
- 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 +104 -104
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.js +659 -659
- 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 +861 -861
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.d.ts +23 -23
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.js +56 -56
- package/dist/swaps/spv_vault_swap/SpvVault.d.ts +41 -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 +491 -491
- package/dist/swaps/spv_vault_swap/SpvVaults.d.ts +52 -52
- package/dist/swaps/spv_vault_swap/SpvVaults.js +364 -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/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 -238
- 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 +822 -822
- 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 +1110 -1110
- package/src/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.ts +77 -77
- 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 +627 -627
- package/src/swaps/spv_vault_swap/SpvVaults.ts +435 -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/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,179 +1,179 @@
|
|
|
1
|
-
import {SwapBaseConfig, SwapHandler} from "../SwapHandler";
|
|
2
|
-
import {
|
|
3
|
-
ChainEvent, ChainSwapType, ClaimEvent, InitializeEvent, RefundEvent,
|
|
4
|
-
SwapData,
|
|
5
|
-
SwapEvent
|
|
6
|
-
} from "@atomiqlabs/base";
|
|
7
|
-
import {PluginManager} from "../../plugins/PluginManager";
|
|
8
|
-
import {EscrowHandlerSwap} from "./EscrowHandlerSwap";
|
|
9
|
-
import {ServerParamEncoder} from "../../utils/paramcoders/server/ServerParamEncoder";
|
|
10
|
-
import {SwapHandlerSwap} from "../SwapHandlerSwap";
|
|
11
|
-
|
|
12
|
-
export type ToBtcBaseConfig = SwapBaseConfig & {
|
|
13
|
-
gracePeriod: bigint,
|
|
14
|
-
refundAuthorizationTimeout: number
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export abstract class EscrowHandler<V extends EscrowHandlerSwap<SwapData, S>, S> extends SwapHandler<V, S> {
|
|
18
|
-
|
|
19
|
-
abstract readonly swapType: ChainSwapType;
|
|
20
|
-
|
|
21
|
-
readonly escrowHashMap: Map<string, V> = new Map();
|
|
22
|
-
|
|
23
|
-
protected swapLogger = {
|
|
24
|
-
debug: (swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData, msg: string, ...args: any) => this.logger.debug(this.getIdentifier(swap)+": "+msg, ...args),
|
|
25
|
-
info: (swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData, msg: string, ...args: any) => this.logger.info(this.getIdentifier(swap)+": "+msg, ...args),
|
|
26
|
-
warn: (swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData, msg: string, ...args: any) => this.logger.warn(this.getIdentifier(swap)+": "+msg, ...args),
|
|
27
|
-
error: (swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData, msg: string, ...args: any) => this.logger.error(this.getIdentifier(swap)+": "+msg, ...args)
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
protected abstract processInitializeEvent(chainIdentifier: string, swap: V, event: InitializeEvent<SwapData>): Promise<void>;
|
|
31
|
-
protected abstract processClaimEvent(chainIdentifier: string, swap: V, event: ClaimEvent<SwapData>): Promise<void>;
|
|
32
|
-
protected abstract processRefundEvent(chainIdentifier: string, swap: V, event: RefundEvent<SwapData>): Promise<void>;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Chain event processor
|
|
36
|
-
*
|
|
37
|
-
* @param chainIdentifier
|
|
38
|
-
* @param eventData
|
|
39
|
-
*/
|
|
40
|
-
protected async processEvent(chainIdentifier: string, eventData: ChainEvent<SwapData>[]): Promise<boolean> {
|
|
41
|
-
if(this.swapType==null) return true;
|
|
42
|
-
|
|
43
|
-
for(let event of eventData) {
|
|
44
|
-
if(event instanceof InitializeEvent) {
|
|
45
|
-
if(event.swapType!==this.swapType) continue;
|
|
46
|
-
const swap = this.getSwapByEscrowHash(chainIdentifier, event.escrowHash);
|
|
47
|
-
if(swap==null) continue;
|
|
48
|
-
|
|
49
|
-
swap.txIds.init = event.meta?.txId;
|
|
50
|
-
if(swap.metadata!=null) swap.metadata.times.initTxReceived = Date.now();
|
|
51
|
-
|
|
52
|
-
await this.processInitializeEvent(chainIdentifier, swap, event);
|
|
53
|
-
} else if(event instanceof ClaimEvent) {
|
|
54
|
-
const swap = this.getSwapByEscrowHash(chainIdentifier, event.escrowHash);
|
|
55
|
-
if(swap==null) continue;
|
|
56
|
-
|
|
57
|
-
swap.txIds.claim = event.meta?.txId;
|
|
58
|
-
if(swap.metadata!=null) swap.metadata.times.claimTxReceived = Date.now();
|
|
59
|
-
|
|
60
|
-
await this.processClaimEvent(chainIdentifier, swap, event);
|
|
61
|
-
} else if(event instanceof RefundEvent) {
|
|
62
|
-
const swap = this.getSwapByEscrowHash(chainIdentifier, event.escrowHash);
|
|
63
|
-
if(swap==null) continue;
|
|
64
|
-
|
|
65
|
-
swap.txIds.refund = event.meta?.txId;
|
|
66
|
-
if(swap.metadata!=null) swap.metadata.times.refundTxReceived = Date.now();
|
|
67
|
-
|
|
68
|
-
await this.processRefundEvent(chainIdentifier, swap, event);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Initializes chain events subscription
|
|
77
|
-
*/
|
|
78
|
-
protected subscribeToEvents() {
|
|
79
|
-
for(let key in this.chains.chains) {
|
|
80
|
-
this.chains.chains[key].chainEvents.registerListener((events: ChainEvent<SwapData>[]) => this.processEvent(key, events));
|
|
81
|
-
}
|
|
82
|
-
this.logger.info("SC: Events: subscribed to smartchain events");
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
protected async loadData(ctor: new (data: any) => V) {
|
|
86
|
-
await super.loadData(ctor);
|
|
87
|
-
for(let {obj: swap, hash, sequence} of await this.storageManager.query([])) {
|
|
88
|
-
this.saveSwapToEscrowHashMap(swap);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
protected removeSwapData(hash: string, sequence: bigint): Promise<void>;
|
|
93
|
-
protected removeSwapData(swap: V, ultimateState?: S): Promise<void>;
|
|
94
|
-
protected async removeSwapData(hashOrSwap: string | V, sequenceOrUltimateState?: bigint | S) {
|
|
95
|
-
let swap: V;
|
|
96
|
-
if(typeof(hashOrSwap)==="string") {
|
|
97
|
-
if(typeof(sequenceOrUltimateState)!=="bigint") throw new Error("Sequence must be a BN instance!");
|
|
98
|
-
swap = await this.storageManager.getData(hashOrSwap, sequenceOrUltimateState);
|
|
99
|
-
} else {
|
|
100
|
-
swap = hashOrSwap;
|
|
101
|
-
if(sequenceOrUltimateState!=null && typeof(sequenceOrUltimateState)!=="bigint") await swap.setState(sequenceOrUltimateState);
|
|
102
|
-
}
|
|
103
|
-
if(swap!=null) await PluginManager.swapRemove(swap);
|
|
104
|
-
this.swapLogger.debug(swap, "removeSwapData(): removing swap final state: "+swap.state);
|
|
105
|
-
this.removeSwapFromEscrowHashMap(swap);
|
|
106
|
-
await this.storageManager.removeData(swap.getIdentifierHash(), swap.getSequence());
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
protected async saveSwapData(swap: V) {
|
|
110
|
-
this.saveSwapToEscrowHashMap(swap);
|
|
111
|
-
return super.saveSwapData(swap);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
protected saveSwapToEscrowHashMap(swap: V) {
|
|
115
|
-
if(swap.data!=null) this.escrowHashMap.set(swap.chainIdentifier+"_"+swap.getEscrowHash(), swap);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
protected removeSwapFromEscrowHashMap(swap: V) {
|
|
119
|
-
if(swap.data!=null) this.escrowHashMap.delete(swap.chainIdentifier+"_"+swap.getEscrowHash());
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
protected getSwapByEscrowHash(chainIdentifier: string, escrowHash: string) {
|
|
123
|
-
return this.escrowHashMap.get(chainIdentifier+"_"+escrowHash);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
protected getIdentifierFromEvent(event: SwapEvent<SwapData>): string {
|
|
127
|
-
if(event instanceof SwapEvent) {
|
|
128
|
-
const foundSwap = this.escrowHashMap.get(event.escrowHash);
|
|
129
|
-
if(foundSwap!=null) {
|
|
130
|
-
return foundSwap.getIdentifier();
|
|
131
|
-
}
|
|
132
|
-
return "UNKNOWN_"+event.escrowHash;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
protected getIdentifierFromSwapData(swapData: SwapData): string {
|
|
137
|
-
if(swapData.getSequence==null) return swapData.getClaimHash();
|
|
138
|
-
return swapData.getClaimHash()+"_"+swapData.getSequence().toString(16);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
protected getIdentifier(swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData) {
|
|
142
|
-
if(swap instanceof SwapHandlerSwap) {
|
|
143
|
-
return swap.getIdentifier();
|
|
144
|
-
}
|
|
145
|
-
if(swap instanceof ChainEvent) {
|
|
146
|
-
return this.getIdentifierFromEvent(swap);
|
|
147
|
-
}
|
|
148
|
-
return this.getIdentifierFromSwapData(swap);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Starts a pre-fetch for signature data
|
|
153
|
-
*
|
|
154
|
-
* @param chainIdentifier
|
|
155
|
-
* @param abortController
|
|
156
|
-
* @param responseStream
|
|
157
|
-
*/
|
|
158
|
-
protected getSignDataPrefetch(chainIdentifier: string, abortController: AbortController, responseStream?: ServerParamEncoder): Promise<any> {
|
|
159
|
-
const {swapContract} = this.getChain(chainIdentifier);
|
|
160
|
-
let signDataPrefetchPromise: Promise<any> = swapContract.preFetchBlockDataForSignatures!=null ? swapContract.preFetchBlockDataForSignatures().catch(e => {
|
|
161
|
-
this.logger.error("getSignDataPrefetch(): signDataPrefetch: ", e);
|
|
162
|
-
abortController.abort(e);
|
|
163
|
-
return null;
|
|
164
|
-
}) : null;
|
|
165
|
-
|
|
166
|
-
if(signDataPrefetchPromise!=null && responseStream!=null) {
|
|
167
|
-
signDataPrefetchPromise = signDataPrefetchPromise.then(val => val==null || abortController.signal.aborted ? null : responseStream.writeParams({
|
|
168
|
-
signDataPrefetch: val
|
|
169
|
-
}).then(() => val).catch(e => {
|
|
170
|
-
this.logger.error("getSignDataPrefetch(): signDataPreFetch: error when sending sign data to the client: ", e);
|
|
171
|
-
abortController.abort(e);
|
|
172
|
-
return null;
|
|
173
|
-
}));
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
return signDataPrefetchPromise;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
}
|
|
1
|
+
import {SwapBaseConfig, SwapHandler} from "../SwapHandler";
|
|
2
|
+
import {
|
|
3
|
+
ChainEvent, ChainSwapType, ClaimEvent, InitializeEvent, RefundEvent,
|
|
4
|
+
SwapData,
|
|
5
|
+
SwapEvent
|
|
6
|
+
} from "@atomiqlabs/base";
|
|
7
|
+
import {PluginManager} from "../../plugins/PluginManager";
|
|
8
|
+
import {EscrowHandlerSwap} from "./EscrowHandlerSwap";
|
|
9
|
+
import {ServerParamEncoder} from "../../utils/paramcoders/server/ServerParamEncoder";
|
|
10
|
+
import {SwapHandlerSwap} from "../SwapHandlerSwap";
|
|
11
|
+
|
|
12
|
+
export type ToBtcBaseConfig = SwapBaseConfig & {
|
|
13
|
+
gracePeriod: bigint,
|
|
14
|
+
refundAuthorizationTimeout: number
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export abstract class EscrowHandler<V extends EscrowHandlerSwap<SwapData, S>, S> extends SwapHandler<V, S> {
|
|
18
|
+
|
|
19
|
+
abstract readonly swapType: ChainSwapType;
|
|
20
|
+
|
|
21
|
+
readonly escrowHashMap: Map<string, V> = new Map();
|
|
22
|
+
|
|
23
|
+
protected swapLogger = {
|
|
24
|
+
debug: (swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData, msg: string, ...args: any) => this.logger.debug(this.getIdentifier(swap)+": "+msg, ...args),
|
|
25
|
+
info: (swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData, msg: string, ...args: any) => this.logger.info(this.getIdentifier(swap)+": "+msg, ...args),
|
|
26
|
+
warn: (swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData, msg: string, ...args: any) => this.logger.warn(this.getIdentifier(swap)+": "+msg, ...args),
|
|
27
|
+
error: (swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData, msg: string, ...args: any) => this.logger.error(this.getIdentifier(swap)+": "+msg, ...args)
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
protected abstract processInitializeEvent(chainIdentifier: string, swap: V, event: InitializeEvent<SwapData>): Promise<void>;
|
|
31
|
+
protected abstract processClaimEvent(chainIdentifier: string, swap: V, event: ClaimEvent<SwapData>): Promise<void>;
|
|
32
|
+
protected abstract processRefundEvent(chainIdentifier: string, swap: V, event: RefundEvent<SwapData>): Promise<void>;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Chain event processor
|
|
36
|
+
*
|
|
37
|
+
* @param chainIdentifier
|
|
38
|
+
* @param eventData
|
|
39
|
+
*/
|
|
40
|
+
protected async processEvent(chainIdentifier: string, eventData: ChainEvent<SwapData>[]): Promise<boolean> {
|
|
41
|
+
if(this.swapType==null) return true;
|
|
42
|
+
|
|
43
|
+
for(let event of eventData) {
|
|
44
|
+
if(event instanceof InitializeEvent) {
|
|
45
|
+
if(event.swapType!==this.swapType) continue;
|
|
46
|
+
const swap = this.getSwapByEscrowHash(chainIdentifier, event.escrowHash);
|
|
47
|
+
if(swap==null) continue;
|
|
48
|
+
|
|
49
|
+
swap.txIds.init = event.meta?.txId;
|
|
50
|
+
if(swap.metadata!=null) swap.metadata.times.initTxReceived = Date.now();
|
|
51
|
+
|
|
52
|
+
await this.processInitializeEvent(chainIdentifier, swap, event);
|
|
53
|
+
} else if(event instanceof ClaimEvent) {
|
|
54
|
+
const swap = this.getSwapByEscrowHash(chainIdentifier, event.escrowHash);
|
|
55
|
+
if(swap==null) continue;
|
|
56
|
+
|
|
57
|
+
swap.txIds.claim = event.meta?.txId;
|
|
58
|
+
if(swap.metadata!=null) swap.metadata.times.claimTxReceived = Date.now();
|
|
59
|
+
|
|
60
|
+
await this.processClaimEvent(chainIdentifier, swap, event);
|
|
61
|
+
} else if(event instanceof RefundEvent) {
|
|
62
|
+
const swap = this.getSwapByEscrowHash(chainIdentifier, event.escrowHash);
|
|
63
|
+
if(swap==null) continue;
|
|
64
|
+
|
|
65
|
+
swap.txIds.refund = event.meta?.txId;
|
|
66
|
+
if(swap.metadata!=null) swap.metadata.times.refundTxReceived = Date.now();
|
|
67
|
+
|
|
68
|
+
await this.processRefundEvent(chainIdentifier, swap, event);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Initializes chain events subscription
|
|
77
|
+
*/
|
|
78
|
+
protected subscribeToEvents() {
|
|
79
|
+
for(let key in this.chains.chains) {
|
|
80
|
+
this.chains.chains[key].chainEvents.registerListener((events: ChainEvent<SwapData>[]) => this.processEvent(key, events));
|
|
81
|
+
}
|
|
82
|
+
this.logger.info("SC: Events: subscribed to smartchain events");
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
protected async loadData(ctor: new (data: any) => V) {
|
|
86
|
+
await super.loadData(ctor);
|
|
87
|
+
for(let {obj: swap, hash, sequence} of await this.storageManager.query([])) {
|
|
88
|
+
this.saveSwapToEscrowHashMap(swap);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
protected removeSwapData(hash: string, sequence: bigint): Promise<void>;
|
|
93
|
+
protected removeSwapData(swap: V, ultimateState?: S): Promise<void>;
|
|
94
|
+
protected async removeSwapData(hashOrSwap: string | V, sequenceOrUltimateState?: bigint | S) {
|
|
95
|
+
let swap: V;
|
|
96
|
+
if(typeof(hashOrSwap)==="string") {
|
|
97
|
+
if(typeof(sequenceOrUltimateState)!=="bigint") throw new Error("Sequence must be a BN instance!");
|
|
98
|
+
swap = await this.storageManager.getData(hashOrSwap, sequenceOrUltimateState);
|
|
99
|
+
} else {
|
|
100
|
+
swap = hashOrSwap;
|
|
101
|
+
if(sequenceOrUltimateState!=null && typeof(sequenceOrUltimateState)!=="bigint") await swap.setState(sequenceOrUltimateState);
|
|
102
|
+
}
|
|
103
|
+
if(swap!=null) await PluginManager.swapRemove(swap);
|
|
104
|
+
this.swapLogger.debug(swap, "removeSwapData(): removing swap final state: "+swap.state);
|
|
105
|
+
this.removeSwapFromEscrowHashMap(swap);
|
|
106
|
+
await this.storageManager.removeData(swap.getIdentifierHash(), swap.getSequence());
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
protected async saveSwapData(swap: V) {
|
|
110
|
+
this.saveSwapToEscrowHashMap(swap);
|
|
111
|
+
return super.saveSwapData(swap);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
protected saveSwapToEscrowHashMap(swap: V) {
|
|
115
|
+
if(swap.data!=null) this.escrowHashMap.set(swap.chainIdentifier+"_"+swap.getEscrowHash(), swap);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
protected removeSwapFromEscrowHashMap(swap: V) {
|
|
119
|
+
if(swap.data!=null) this.escrowHashMap.delete(swap.chainIdentifier+"_"+swap.getEscrowHash());
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
protected getSwapByEscrowHash(chainIdentifier: string, escrowHash: string) {
|
|
123
|
+
return this.escrowHashMap.get(chainIdentifier+"_"+escrowHash);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
protected getIdentifierFromEvent(event: SwapEvent<SwapData>): string {
|
|
127
|
+
if(event instanceof SwapEvent) {
|
|
128
|
+
const foundSwap = this.escrowHashMap.get(event.escrowHash);
|
|
129
|
+
if(foundSwap!=null) {
|
|
130
|
+
return foundSwap.getIdentifier();
|
|
131
|
+
}
|
|
132
|
+
return "UNKNOWN_"+event.escrowHash;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
protected getIdentifierFromSwapData(swapData: SwapData): string {
|
|
137
|
+
if(swapData.getSequence==null) return swapData.getClaimHash();
|
|
138
|
+
return swapData.getClaimHash()+"_"+swapData.getSequence().toString(16);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
protected getIdentifier(swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData) {
|
|
142
|
+
if(swap instanceof SwapHandlerSwap) {
|
|
143
|
+
return swap.getIdentifier();
|
|
144
|
+
}
|
|
145
|
+
if(swap instanceof ChainEvent) {
|
|
146
|
+
return this.getIdentifierFromEvent(swap);
|
|
147
|
+
}
|
|
148
|
+
return this.getIdentifierFromSwapData(swap);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Starts a pre-fetch for signature data
|
|
153
|
+
*
|
|
154
|
+
* @param chainIdentifier
|
|
155
|
+
* @param abortController
|
|
156
|
+
* @param responseStream
|
|
157
|
+
*/
|
|
158
|
+
protected getSignDataPrefetch(chainIdentifier: string, abortController: AbortController, responseStream?: ServerParamEncoder): Promise<any> {
|
|
159
|
+
const {swapContract} = this.getChain(chainIdentifier);
|
|
160
|
+
let signDataPrefetchPromise: Promise<any> = swapContract.preFetchBlockDataForSignatures!=null ? swapContract.preFetchBlockDataForSignatures().catch(e => {
|
|
161
|
+
this.logger.error("getSignDataPrefetch(): signDataPrefetch: ", e);
|
|
162
|
+
abortController.abort(e);
|
|
163
|
+
return null;
|
|
164
|
+
}) : null;
|
|
165
|
+
|
|
166
|
+
if(signDataPrefetchPromise!=null && responseStream!=null) {
|
|
167
|
+
signDataPrefetchPromise = signDataPrefetchPromise.then(val => val==null || abortController.signal.aborted ? null : responseStream.writeParams({
|
|
168
|
+
signDataPrefetch: val
|
|
169
|
+
}).then(() => val).catch(e => {
|
|
170
|
+
this.logger.error("getSignDataPrefetch(): signDataPreFetch: error when sending sign data to the client: ", e);
|
|
171
|
+
abortController.abort(e);
|
|
172
|
+
return null;
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return signDataPrefetchPromise;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
}
|
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
import {Lockable, StorageObject, SwapData} from "@atomiqlabs/base";
|
|
2
|
-
import {SwapHandlerSwap} from "../SwapHandlerSwap";
|
|
3
|
-
|
|
4
|
-
function objectBigIntsToString(obj: Object) {
|
|
5
|
-
for(let key in obj) {
|
|
6
|
-
if(typeof obj[key] === "bigint") obj[key] = obj[key].toString(10);
|
|
7
|
-
if(typeof obj[key] === "object") objectBigIntsToString(obj[key]);
|
|
8
|
-
}
|
|
9
|
-
return obj;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export abstract class EscrowHandlerSwap<T extends SwapData = SwapData, S = any> extends SwapHandlerSwap<S> {
|
|
13
|
-
|
|
14
|
-
data: T;
|
|
15
|
-
|
|
16
|
-
txIds: {
|
|
17
|
-
init?: string,
|
|
18
|
-
claim?: string,
|
|
19
|
-
refund?: string
|
|
20
|
-
} = {};
|
|
21
|
-
|
|
22
|
-
prefix: string;
|
|
23
|
-
timeout: string;
|
|
24
|
-
signature: string;
|
|
25
|
-
feeRate: string;
|
|
26
|
-
|
|
27
|
-
protected constructor(chainIdentifier: string, swapFee: bigint, swapFeeInToken: bigint);
|
|
28
|
-
protected constructor(obj: any);
|
|
29
|
-
|
|
30
|
-
protected constructor(obj?: any | string, swapFee?: bigint, swapFeeInToken?: bigint) {
|
|
31
|
-
super(obj, swapFee, swapFeeInToken);
|
|
32
|
-
if(typeof(obj)==="string" && typeof(swapFee)==="bigint" && typeof(swapFeeInToken)==="bigint") {
|
|
33
|
-
return;
|
|
34
|
-
} else {
|
|
35
|
-
this.data = obj.data==null ? null : SwapData.deserialize(obj.data);
|
|
36
|
-
this.prefix = obj.prefix;
|
|
37
|
-
this.timeout = obj.timeout;
|
|
38
|
-
this.signature = obj.signature;
|
|
39
|
-
this.feeRate = obj.feeRate;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
serialize(): any {
|
|
44
|
-
return {
|
|
45
|
-
...super.serialize(),
|
|
46
|
-
data: this.data==null ? null : this.data.serialize(),
|
|
47
|
-
prefix: this.prefix,
|
|
48
|
-
timeout: this.timeout,
|
|
49
|
-
signature: this.signature,
|
|
50
|
-
feeRate: this.feeRate
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Returns the escrow hash - i.e. hash of the escrow data
|
|
56
|
-
*/
|
|
57
|
-
getEscrowHash(): string {
|
|
58
|
-
return this.data?.getEscrowHash();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Returns the claim data hash - i.e. hash passed to the claim handler
|
|
63
|
-
*/
|
|
64
|
-
getClaimHash(): string {
|
|
65
|
-
return this.data?.getClaimHash();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Returns the identification hash of the swap, usually claim data hash, but can be overriden, e.g. for
|
|
70
|
-
* lightning swaps the identifier hash is used instead of claim data hash
|
|
71
|
-
*/
|
|
72
|
-
getIdentifierHash(): string {
|
|
73
|
-
return this.getClaimHash();
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
getSequence(): bigint | null {
|
|
77
|
-
return this.data?.getSequence==null ? null : this.data.getSequence();
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Returns the smart chain token used for the swap
|
|
82
|
-
*/
|
|
83
|
-
getToken(): string {
|
|
84
|
-
return this.data?.getToken();
|
|
85
|
-
}
|
|
86
|
-
|
|
1
|
+
import {Lockable, StorageObject, SwapData} from "@atomiqlabs/base";
|
|
2
|
+
import {SwapHandlerSwap} from "../SwapHandlerSwap";
|
|
3
|
+
|
|
4
|
+
function objectBigIntsToString(obj: Object) {
|
|
5
|
+
for(let key in obj) {
|
|
6
|
+
if(typeof obj[key] === "bigint") obj[key] = obj[key].toString(10);
|
|
7
|
+
if(typeof obj[key] === "object") objectBigIntsToString(obj[key]);
|
|
8
|
+
}
|
|
9
|
+
return obj;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export abstract class EscrowHandlerSwap<T extends SwapData = SwapData, S = any> extends SwapHandlerSwap<S> {
|
|
13
|
+
|
|
14
|
+
data: T;
|
|
15
|
+
|
|
16
|
+
txIds: {
|
|
17
|
+
init?: string,
|
|
18
|
+
claim?: string,
|
|
19
|
+
refund?: string
|
|
20
|
+
} = {};
|
|
21
|
+
|
|
22
|
+
prefix: string;
|
|
23
|
+
timeout: string;
|
|
24
|
+
signature: string;
|
|
25
|
+
feeRate: string;
|
|
26
|
+
|
|
27
|
+
protected constructor(chainIdentifier: string, swapFee: bigint, swapFeeInToken: bigint);
|
|
28
|
+
protected constructor(obj: any);
|
|
29
|
+
|
|
30
|
+
protected constructor(obj?: any | string, swapFee?: bigint, swapFeeInToken?: bigint) {
|
|
31
|
+
super(obj, swapFee, swapFeeInToken);
|
|
32
|
+
if(typeof(obj)==="string" && typeof(swapFee)==="bigint" && typeof(swapFeeInToken)==="bigint") {
|
|
33
|
+
return;
|
|
34
|
+
} else {
|
|
35
|
+
this.data = obj.data==null ? null : SwapData.deserialize(obj.data);
|
|
36
|
+
this.prefix = obj.prefix;
|
|
37
|
+
this.timeout = obj.timeout;
|
|
38
|
+
this.signature = obj.signature;
|
|
39
|
+
this.feeRate = obj.feeRate;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
serialize(): any {
|
|
44
|
+
return {
|
|
45
|
+
...super.serialize(),
|
|
46
|
+
data: this.data==null ? null : this.data.serialize(),
|
|
47
|
+
prefix: this.prefix,
|
|
48
|
+
timeout: this.timeout,
|
|
49
|
+
signature: this.signature,
|
|
50
|
+
feeRate: this.feeRate
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Returns the escrow hash - i.e. hash of the escrow data
|
|
56
|
+
*/
|
|
57
|
+
getEscrowHash(): string {
|
|
58
|
+
return this.data?.getEscrowHash();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Returns the claim data hash - i.e. hash passed to the claim handler
|
|
63
|
+
*/
|
|
64
|
+
getClaimHash(): string {
|
|
65
|
+
return this.data?.getClaimHash();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Returns the identification hash of the swap, usually claim data hash, but can be overriden, e.g. for
|
|
70
|
+
* lightning swaps the identifier hash is used instead of claim data hash
|
|
71
|
+
*/
|
|
72
|
+
getIdentifierHash(): string {
|
|
73
|
+
return this.getClaimHash();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
getSequence(): bigint | null {
|
|
77
|
+
return this.data?.getSequence==null ? null : this.data.getSequence();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Returns the smart chain token used for the swap
|
|
82
|
+
*/
|
|
83
|
+
getToken(): string {
|
|
84
|
+
return this.data?.getToken();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
87
|
}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import {deserializeBN, serializeBN} from "../../utils/Utils";
|
|
2
|
-
import {EscrowHandlerSwap} from "./EscrowHandlerSwap";
|
|
3
|
-
import {SwapData} from "@atomiqlabs/base";
|
|
4
|
-
|
|
5
|
-
export abstract class FromBtcBaseSwap<T extends SwapData = SwapData, S = any> extends EscrowHandlerSwap<T, S> {
|
|
6
|
-
|
|
7
|
-
amount: bigint;
|
|
8
|
-
|
|
9
|
-
protected constructor(chainIdentifier: string, amount: bigint, swapFee: bigint, swapFeeInToken: bigint);
|
|
10
|
-
protected constructor(obj: any);
|
|
11
|
-
|
|
12
|
-
protected constructor(obj?: any | string, amount?: bigint, swapFee?: bigint, swapFeeInToken?: bigint) {
|
|
13
|
-
super(obj, swapFee, swapFeeInToken);
|
|
14
|
-
if (typeof (obj) === "string" && typeof(amount)==="bigint" && typeof(swapFee)==="bigint" && typeof(swapFeeInToken)==="bigint") {
|
|
15
|
-
this.amount = amount;
|
|
16
|
-
} else {
|
|
17
|
-
this.amount = deserializeBN(obj.amount);
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
getTotalInputAmount(): bigint {
|
|
22
|
-
return this.amount;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
getOutputAmount(): bigint {
|
|
26
|
-
return this.data?.getAmount();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
getSwapFee(): { inInputToken: bigint; inOutputToken: bigint } {
|
|
30
|
-
return {inInputToken: this.swapFee, inOutputToken: this.swapFeeInToken};
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
serialize(): any {
|
|
34
|
-
const partialSerialized = super.serialize();
|
|
35
|
-
partialSerialized.amount = serializeBN(this.amount);
|
|
36
|
-
return partialSerialized;
|
|
37
|
-
}
|
|
38
|
-
|
|
1
|
+
import {deserializeBN, serializeBN} from "../../utils/Utils";
|
|
2
|
+
import {EscrowHandlerSwap} from "./EscrowHandlerSwap";
|
|
3
|
+
import {SwapData} from "@atomiqlabs/base";
|
|
4
|
+
|
|
5
|
+
export abstract class FromBtcBaseSwap<T extends SwapData = SwapData, S = any> extends EscrowHandlerSwap<T, S> {
|
|
6
|
+
|
|
7
|
+
amount: bigint;
|
|
8
|
+
|
|
9
|
+
protected constructor(chainIdentifier: string, amount: bigint, swapFee: bigint, swapFeeInToken: bigint);
|
|
10
|
+
protected constructor(obj: any);
|
|
11
|
+
|
|
12
|
+
protected constructor(obj?: any | string, amount?: bigint, swapFee?: bigint, swapFeeInToken?: bigint) {
|
|
13
|
+
super(obj, swapFee, swapFeeInToken);
|
|
14
|
+
if (typeof (obj) === "string" && typeof(amount)==="bigint" && typeof(swapFee)==="bigint" && typeof(swapFeeInToken)==="bigint") {
|
|
15
|
+
this.amount = amount;
|
|
16
|
+
} else {
|
|
17
|
+
this.amount = deserializeBN(obj.amount);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
getTotalInputAmount(): bigint {
|
|
22
|
+
return this.amount;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
getOutputAmount(): bigint {
|
|
26
|
+
return this.data?.getAmount();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
getSwapFee(): { inInputToken: bigint; inOutputToken: bigint } {
|
|
30
|
+
return {inInputToken: this.swapFee, inOutputToken: this.swapFeeInToken};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
serialize(): any {
|
|
34
|
+
const partialSerialized = super.serialize();
|
|
35
|
+
partialSerialized.amount = serializeBN(this.amount);
|
|
36
|
+
return partialSerialized;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
39
|
}
|