@atomiqlabs/lp-lib 14.0.0-dev.21 → 14.0.0-dev.24

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.
Files changed (167) hide show
  1. package/LICENSE +201 -201
  2. package/dist/fees/IBtcFeeEstimator.d.ts +3 -3
  3. package/dist/fees/IBtcFeeEstimator.js +2 -2
  4. package/dist/index.d.ts +42 -42
  5. package/dist/index.js +58 -58
  6. package/dist/info/InfoHandler.d.ts +17 -17
  7. package/dist/info/InfoHandler.js +61 -61
  8. package/dist/plugins/IPlugin.d.ts +143 -143
  9. package/dist/plugins/IPlugin.js +34 -34
  10. package/dist/plugins/PluginManager.d.ts +112 -112
  11. package/dist/plugins/PluginManager.js +259 -259
  12. package/dist/prices/BinanceSwapPrice.d.ts +26 -26
  13. package/dist/prices/BinanceSwapPrice.js +92 -92
  14. package/dist/prices/CoinGeckoSwapPrice.d.ts +30 -30
  15. package/dist/prices/CoinGeckoSwapPrice.js +64 -64
  16. package/dist/prices/ISwapPrice.d.ts +43 -43
  17. package/dist/prices/ISwapPrice.js +55 -55
  18. package/dist/prices/OKXSwapPrice.d.ts +26 -26
  19. package/dist/prices/OKXSwapPrice.js +92 -92
  20. package/dist/storage/IIntermediaryStorage.d.ts +18 -18
  21. package/dist/storage/IIntermediaryStorage.js +2 -2
  22. package/dist/storagemanager/IntermediaryStorageManager.d.ts +19 -19
  23. package/dist/storagemanager/IntermediaryStorageManager.js +111 -111
  24. package/dist/storagemanager/StorageManager.d.ts +13 -13
  25. package/dist/storagemanager/StorageManager.js +64 -64
  26. package/dist/swaps/SwapHandler.d.ts +153 -153
  27. package/dist/swaps/SwapHandler.js +160 -160
  28. package/dist/swaps/SwapHandlerSwap.d.ts +79 -79
  29. package/dist/swaps/SwapHandlerSwap.js +78 -78
  30. package/dist/swaps/assertions/AmountAssertions.d.ts +28 -28
  31. package/dist/swaps/assertions/AmountAssertions.js +72 -72
  32. package/dist/swaps/assertions/FromBtcAmountAssertions.d.ts +76 -76
  33. package/dist/swaps/assertions/FromBtcAmountAssertions.js +180 -180
  34. package/dist/swaps/assertions/LightningAssertions.d.ts +44 -44
  35. package/dist/swaps/assertions/LightningAssertions.js +86 -86
  36. package/dist/swaps/assertions/ToBtcAmountAssertions.d.ts +53 -53
  37. package/dist/swaps/assertions/ToBtcAmountAssertions.js +150 -150
  38. package/dist/swaps/escrow/EscrowHandler.d.ts +51 -51
  39. package/dist/swaps/escrow/EscrowHandler.js +158 -158
  40. package/dist/swaps/escrow/EscrowHandlerSwap.d.ts +35 -35
  41. package/dist/swaps/escrow/EscrowHandlerSwap.js +69 -69
  42. package/dist/swaps/escrow/FromBtcBaseSwap.d.ts +14 -14
  43. package/dist/swaps/escrow/FromBtcBaseSwap.js +32 -32
  44. package/dist/swaps/escrow/FromBtcBaseSwapHandler.d.ts +102 -102
  45. package/dist/swaps/escrow/FromBtcBaseSwapHandler.js +210 -210
  46. package/dist/swaps/escrow/ToBtcBaseSwap.d.ts +36 -36
  47. package/dist/swaps/escrow/ToBtcBaseSwap.js +67 -67
  48. package/dist/swaps/escrow/ToBtcBaseSwapHandler.d.ts +53 -53
  49. package/dist/swaps/escrow/ToBtcBaseSwapHandler.js +81 -81
  50. package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.d.ts +83 -83
  51. package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.js +318 -318
  52. package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.d.ts +21 -21
  53. package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.js +50 -50
  54. package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.d.ts +107 -107
  55. package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.js +675 -675
  56. package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.d.ts +33 -33
  57. package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.js +91 -91
  58. package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.d.ts +111 -111
  59. package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.js +684 -684
  60. package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.d.ts +55 -55
  61. package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.js +120 -120
  62. package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.d.ts +171 -171
  63. package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.js +706 -706
  64. package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.d.ts +26 -26
  65. package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.js +62 -62
  66. package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.d.ts +177 -177
  67. package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.js +863 -863
  68. package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.d.ts +24 -24
  69. package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.js +58 -58
  70. package/dist/swaps/spv_vault_swap/SpvVault.d.ts +40 -41
  71. package/dist/swaps/spv_vault_swap/SpvVault.js +111 -111
  72. package/dist/swaps/spv_vault_swap/SpvVaultSwap.d.ts +67 -67
  73. package/dist/swaps/spv_vault_swap/SpvVaultSwap.js +158 -158
  74. package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.d.ts +68 -68
  75. package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.js +492 -492
  76. package/dist/swaps/spv_vault_swap/SpvVaults.d.ts +52 -52
  77. package/dist/swaps/spv_vault_swap/SpvVaults.js +394 -364
  78. package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.d.ts +51 -51
  79. package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.js +650 -650
  80. package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.d.ts +52 -52
  81. package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.js +118 -118
  82. package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.d.ts +76 -76
  83. package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.js +494 -494
  84. package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.d.ts +34 -34
  85. package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.js +81 -81
  86. package/dist/utils/BitcoinUtils.d.ts +2 -2
  87. package/dist/utils/BitcoinUtils.js +45 -45
  88. package/dist/utils/Utils.d.ts +29 -29
  89. package/dist/utils/Utils.js +89 -89
  90. package/dist/utils/paramcoders/IParamReader.d.ts +5 -5
  91. package/dist/utils/paramcoders/IParamReader.js +2 -2
  92. package/dist/utils/paramcoders/IParamWriter.d.ts +4 -4
  93. package/dist/utils/paramcoders/IParamWriter.js +2 -2
  94. package/dist/utils/paramcoders/LegacyParamEncoder.d.ts +10 -10
  95. package/dist/utils/paramcoders/LegacyParamEncoder.js +22 -22
  96. package/dist/utils/paramcoders/ParamDecoder.d.ts +25 -25
  97. package/dist/utils/paramcoders/ParamDecoder.js +222 -222
  98. package/dist/utils/paramcoders/ParamEncoder.d.ts +9 -9
  99. package/dist/utils/paramcoders/ParamEncoder.js +22 -22
  100. package/dist/utils/paramcoders/SchemaVerifier.d.ts +21 -21
  101. package/dist/utils/paramcoders/SchemaVerifier.js +84 -84
  102. package/dist/utils/paramcoders/server/ServerParamDecoder.d.ts +8 -8
  103. package/dist/utils/paramcoders/server/ServerParamDecoder.js +107 -107
  104. package/dist/utils/paramcoders/server/ServerParamEncoder.d.ts +11 -11
  105. package/dist/utils/paramcoders/server/ServerParamEncoder.js +65 -65
  106. package/dist/wallets/IBitcoinWallet.d.ts +67 -67
  107. package/dist/wallets/IBitcoinWallet.js +2 -2
  108. package/dist/wallets/ILightningWallet.d.ts +117 -117
  109. package/dist/wallets/ILightningWallet.js +37 -37
  110. package/dist/wallets/ISpvVaultSigner.d.ts +7 -7
  111. package/dist/wallets/ISpvVaultSigner.js +2 -2
  112. package/package.json +36 -36
  113. package/src/fees/IBtcFeeEstimator.ts +6 -6
  114. package/src/index.ts +53 -53
  115. package/src/info/InfoHandler.ts +106 -106
  116. package/src/plugins/IPlugin.ts +168 -168
  117. package/src/plugins/PluginManager.ts +336 -336
  118. package/src/prices/BinanceSwapPrice.ts +113 -113
  119. package/src/prices/CoinGeckoSwapPrice.ts +87 -87
  120. package/src/prices/ISwapPrice.ts +88 -88
  121. package/src/prices/OKXSwapPrice.ts +113 -113
  122. package/src/storage/IIntermediaryStorage.ts +19 -19
  123. package/src/storagemanager/IntermediaryStorageManager.ts +118 -118
  124. package/src/storagemanager/StorageManager.ts +78 -78
  125. package/src/swaps/SwapHandler.ts +277 -277
  126. package/src/swaps/SwapHandlerSwap.ts +141 -141
  127. package/src/swaps/assertions/AmountAssertions.ts +76 -76
  128. package/src/swaps/assertions/FromBtcAmountAssertions.ts +246 -246
  129. package/src/swaps/assertions/LightningAssertions.ts +103 -103
  130. package/src/swaps/assertions/ToBtcAmountAssertions.ts +203 -203
  131. package/src/swaps/escrow/EscrowHandler.ts +179 -179
  132. package/src/swaps/escrow/EscrowHandlerSwap.ts +86 -86
  133. package/src/swaps/escrow/FromBtcBaseSwap.ts +38 -38
  134. package/src/swaps/escrow/FromBtcBaseSwapHandler.ts +286 -286
  135. package/src/swaps/escrow/ToBtcBaseSwap.ts +85 -85
  136. package/src/swaps/escrow/ToBtcBaseSwapHandler.ts +129 -129
  137. package/src/swaps/escrow/frombtc_abstract/FromBtcAbs.ts +452 -452
  138. package/src/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.ts +61 -61
  139. package/src/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.ts +856 -856
  140. package/src/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.ts +141 -141
  141. package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.ts +850 -850
  142. package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.ts +196 -196
  143. package/src/swaps/escrow/tobtc_abstract/ToBtcAbs.ts +879 -879
  144. package/src/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.ts +102 -102
  145. package/src/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.ts +1112 -1112
  146. package/src/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.ts +80 -80
  147. package/src/swaps/spv_vault_swap/SpvVault.ts +143 -143
  148. package/src/swaps/spv_vault_swap/SpvVaultSwap.ts +225 -225
  149. package/src/swaps/spv_vault_swap/SpvVaultSwapHandler.ts +628 -628
  150. package/src/swaps/spv_vault_swap/SpvVaults.ts +469 -435
  151. package/src/swaps/trusted/frombtc_trusted/FromBtcTrusted.ts +747 -747
  152. package/src/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.ts +185 -185
  153. package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.ts +590 -590
  154. package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.ts +121 -121
  155. package/src/utils/BitcoinUtils.ts +42 -42
  156. package/src/utils/Utils.ts +104 -104
  157. package/src/utils/paramcoders/IParamReader.ts +7 -7
  158. package/src/utils/paramcoders/IParamWriter.ts +8 -8
  159. package/src/utils/paramcoders/LegacyParamEncoder.ts +27 -27
  160. package/src/utils/paramcoders/ParamDecoder.ts +218 -218
  161. package/src/utils/paramcoders/ParamEncoder.ts +29 -29
  162. package/src/utils/paramcoders/SchemaVerifier.ts +96 -96
  163. package/src/utils/paramcoders/server/ServerParamDecoder.ts +118 -118
  164. package/src/utils/paramcoders/server/ServerParamEncoder.ts +75 -75
  165. package/src/wallets/IBitcoinWallet.ts +68 -68
  166. package/src/wallets/ILightningWallet.ts +178 -178
  167. package/src/wallets/ISpvVaultSigner.ts +10 -10
@@ -1,225 +1,225 @@
1
- import {SwapHandlerSwap} from "../SwapHandlerSwap";
2
- import {SpvVault} from "./SpvVault";
3
- import {deserializeBN, serializeBN} from "../../utils/Utils";
4
- import {SwapHandlerType} from "../SwapHandler";
5
-
6
- export enum SpvVaultSwapState {
7
- FAILED = -3,
8
- DOUBLE_SPENT = -2,
9
- EXPIRED = -1,
10
- CREATED = 0,
11
- SIGNED = 1,
12
- SENT = 2,
13
- BTC_CONFIRMED = 3,
14
- CLAIMED = 4
15
- }
16
-
17
- export class SpvVaultSwap extends SwapHandlerSwap<SpvVaultSwapState> {
18
-
19
- readonly quoteId: string;
20
-
21
- readonly vaultOwner: string;
22
- readonly vaultId: bigint;
23
- readonly vaultUtxo: string;
24
- readonly vaultAddress: string;
25
-
26
- readonly expiry: number;
27
-
28
- readonly tokenMultiplier: bigint;
29
- readonly gasTokenMultiplier: bigint;
30
-
31
- readonly tokenSwapFee: bigint;
32
- readonly tokenSwapFeeInToken: bigint;
33
- readonly gasSwapFee: bigint;
34
- readonly gasSwapFeeInToken: bigint;
35
-
36
- readonly btcFeeRate: number;
37
- readonly btcAddress: string;
38
- readonly recipient: string;
39
- readonly amountBtc: bigint;
40
- readonly amountToken: bigint;
41
- readonly amountGasToken: bigint;
42
- readonly rawAmountToken: bigint;
43
- readonly rawAmountGasToken: bigint;
44
- readonly callerFeeShare: bigint;
45
- readonly frontingFeeShare: bigint;
46
- readonly executionFeeShare: bigint;
47
-
48
- readonly token: string;
49
- readonly gasToken: string;
50
-
51
- btcTxId: string;
52
-
53
- constructor(
54
- chainIdentifier: string, quoteId: string, expiry: number,
55
- vault: SpvVault, vaultUtxo: string,
56
- btcAddress: string, btcFeeRate: number, recipient: string, amountBtc: bigint, amountToken: bigint, amountGasToken: bigint,
57
- swapFee: bigint, swapFeeInToken: bigint,
58
- gasSwapFee: bigint, gasSwapFeeInToken: bigint,
59
- callerFeeShare: bigint, frontingFeeShare: bigint, executionFeeShare: bigint,
60
- token: string, gasToken: string
61
- );
62
- constructor(data: any);
63
- constructor(
64
- chainIdentifierOrObj: string | any, quoteId?: string, expiry?: number,
65
- vault?: SpvVault, vaultUtxo?: string,
66
- btcAddress?: string, btcFeeRate?: number, recipient?: string, amountBtc?: bigint, amountToken?: bigint, amountGasToken?: bigint,
67
- swapFee?: bigint, swapFeeInToken?: bigint,
68
- gasSwapFee?: bigint, gasSwapFeeInToken?: bigint,
69
- callerFeeShare?: bigint, frontingFeeShare?: bigint, executionFeeShare?: bigint,
70
- token?: string, gasToken?: string
71
- ) {
72
- if(typeof(chainIdentifierOrObj)==="string") {
73
- super(chainIdentifierOrObj, swapFee + gasSwapFee, swapFeeInToken);
74
- this.state = SpvVaultSwapState.CREATED;
75
- this.quoteId = quoteId;
76
- this.expiry = expiry;
77
- this.vaultOwner = vault.data.getOwner();
78
- this.vaultId = vault.data.getVaultId();
79
- this.vaultAddress = vault.btcAddress;
80
- this.vaultUtxo = vaultUtxo;
81
- this.tokenSwapFee = swapFee;
82
- this.tokenSwapFeeInToken = swapFeeInToken;
83
- this.gasSwapFee = gasSwapFee;
84
- this.gasSwapFeeInToken = gasSwapFeeInToken;
85
- this.btcFeeRate = btcFeeRate;
86
- this.btcAddress = btcAddress;
87
- this.recipient = recipient;
88
- this.amountBtc = amountBtc;
89
- this.amountToken = amountToken;
90
- this.amountGasToken = amountGasToken;
91
- const [rawAmountToken, rawAmountGasToken] = vault.toRawAmounts([amountToken, amountGasToken]);
92
- this.rawAmountToken = rawAmountToken;
93
- this.rawAmountGasToken = rawAmountGasToken;
94
- this.callerFeeShare = callerFeeShare;
95
- this.frontingFeeShare = frontingFeeShare;
96
- this.executionFeeShare = executionFeeShare;
97
- this.token = token;
98
- this.tokenMultiplier = vault.data.getTokenData()[0].multiplier;
99
- this.gasToken = gasToken;
100
- this.gasTokenMultiplier = vault.data.getTokenData()[1].multiplier;
101
- } else {
102
- super(chainIdentifierOrObj);
103
- this.quoteId = chainIdentifierOrObj.quoteId;
104
- this.expiry = chainIdentifierOrObj.expiry;
105
- this.vaultOwner = chainIdentifierOrObj.owner;
106
- this.vaultId = deserializeBN(chainIdentifierOrObj.vaultId);
107
- this.vaultAddress = chainIdentifierOrObj.vaultAddress;
108
- this.vaultUtxo = chainIdentifierOrObj.vaultUtxo;
109
- this.tokenSwapFee = deserializeBN(chainIdentifierOrObj.swapFee);
110
- this.tokenSwapFeeInToken = deserializeBN(chainIdentifierOrObj.swapFeeInToken);
111
- this.gasSwapFee = deserializeBN(chainIdentifierOrObj.gasSwapFee);
112
- this.gasSwapFeeInToken = deserializeBN(chainIdentifierOrObj.gasSwapFeeInToken);
113
- this.btcFeeRate = chainIdentifierOrObj.btcFeeRate;
114
- this.btcAddress = chainIdentifierOrObj.btcAddress;
115
- this.recipient = chainIdentifierOrObj.recipient;
116
- this.amountBtc = deserializeBN(chainIdentifierOrObj.amountBtc);
117
- this.amountToken = deserializeBN(chainIdentifierOrObj.amountToken);
118
- this.amountGasToken = deserializeBN(chainIdentifierOrObj.amountGasToken);
119
- this.rawAmountToken = deserializeBN(chainIdentifierOrObj.rawAmountToken);
120
- this.rawAmountGasToken = deserializeBN(chainIdentifierOrObj.rawAmountGasToken);
121
- this.callerFeeShare = deserializeBN(chainIdentifierOrObj.callerFeeShare);
122
- this.frontingFeeShare = deserializeBN(chainIdentifierOrObj.frontingFeeShare);
123
- this.executionFeeShare = deserializeBN(chainIdentifierOrObj.executionFeeShare);
124
- this.token = chainIdentifierOrObj.token;
125
- this.gasToken = chainIdentifierOrObj.gasToken;
126
- this.tokenMultiplier = deserializeBN(chainIdentifierOrObj.tokenMultiplier);
127
- this.gasTokenMultiplier = deserializeBN(chainIdentifierOrObj.gasTokenMultiplier);
128
- this.btcTxId = chainIdentifierOrObj.btcTxId;
129
- }
130
- this.type = SwapHandlerType.FROM_BTC_SPV;
131
- }
132
-
133
- serialize(): any {
134
- return {
135
- ...super.serialize(),
136
- quoteId: this.quoteId,
137
- expiry: this.expiry,
138
- owner: this.vaultOwner,
139
- vaultId: serializeBN(this.vaultId),
140
- vaultAddress: this.vaultAddress,
141
- vaultUtxo: this.vaultUtxo,
142
- tokenSwapFee: serializeBN(this.tokenSwapFee),
143
- tokenSwapFeeInToken: serializeBN(this.tokenSwapFeeInToken),
144
- gasSwapFee: serializeBN(this.gasSwapFee),
145
- gasSwapFeeInToken: serializeBN(this.gasSwapFeeInToken),
146
- btcFeeRate: this.btcFeeRate,
147
- btcAddress: this.btcAddress,
148
- recipient: this.recipient,
149
- amountBtc: serializeBN(this.amountBtc),
150
- amountToken: serializeBN(this.amountToken),
151
- amountGasToken: serializeBN(this.amountGasToken),
152
- rawAmountToken: serializeBN(this.rawAmountToken),
153
- rawAmountGasToken: serializeBN(this.rawAmountGasToken),
154
- callerFeeShare: serializeBN(this.callerFeeShare),
155
- frontingFeeShare: serializeBN(this.frontingFeeShare),
156
- executionFeeShare: serializeBN(this.executionFeeShare),
157
- token: this.token,
158
- gasToken: this.gasToken,
159
- tokenMultiplier: serializeBN(this.tokenMultiplier),
160
- gasTokenMultiplier: serializeBN(this.gasTokenMultiplier),
161
- btcTxId: this.btcTxId
162
- };
163
- }
164
-
165
- getIdentifierHash(): string {
166
- return this.quoteId;
167
- }
168
-
169
- getOutputGasAmount(): bigint {
170
- return this.amountGasToken;
171
- }
172
-
173
- getOutputAmount(): bigint {
174
- return this.amountToken;
175
- }
176
-
177
- getTotalOutputAmount(): bigint {
178
- return this.rawAmountToken * (100_000n + this.callerFeeShare + this.frontingFeeShare + this.executionFeeShare) / 100_000n * this.tokenMultiplier;
179
- }
180
-
181
- getTotalOutputGasAmount(): bigint {
182
- return this.rawAmountGasToken * (100_000n + this.callerFeeShare + this.frontingFeeShare) / 100_000n * this.gasTokenMultiplier;
183
- }
184
-
185
- getSequence(): bigint | null {
186
- return 0n;
187
- }
188
-
189
- getSwapFee(): { inInputToken: bigint; inOutputToken: bigint } {
190
- return {inInputToken: this.swapFee, inOutputToken: this.swapFeeInToken};
191
- }
192
-
193
- getTokenSwapFee(): { inInputToken: bigint; inOutputToken: bigint } {
194
- return {inInputToken: this.tokenSwapFee, inOutputToken: this.tokenSwapFeeInToken};
195
- }
196
-
197
- getGasSwapFee(): { inInputToken: bigint; inOutputToken: bigint } {
198
- return {inInputToken: this.gasSwapFee, inOutputToken: this.gasSwapFeeInToken};
199
- }
200
-
201
- getToken(): string {
202
- return this.token;
203
- }
204
-
205
- getGasToken(): string {
206
- return this.gasToken;
207
- }
208
-
209
- getTotalInputAmount(): bigint {
210
- return this.amountBtc;
211
- }
212
-
213
- isFailed(): boolean {
214
- return this.state===SpvVaultSwapState.FAILED || this.state===SpvVaultSwapState.DOUBLE_SPENT;
215
- }
216
-
217
- isInitiated(): boolean {
218
- return this.state!==SpvVaultSwapState.CREATED;
219
- }
220
-
221
- isSuccess(): boolean {
222
- return this.state===SpvVaultSwapState.CLAIMED;
223
- }
224
-
225
- }
1
+ import {SwapHandlerSwap} from "../SwapHandlerSwap";
2
+ import {SpvVault} from "./SpvVault";
3
+ import {deserializeBN, serializeBN} from "../../utils/Utils";
4
+ import {SwapHandlerType} from "../SwapHandler";
5
+
6
+ export enum SpvVaultSwapState {
7
+ FAILED = -3,
8
+ DOUBLE_SPENT = -2,
9
+ EXPIRED = -1,
10
+ CREATED = 0,
11
+ SIGNED = 1,
12
+ SENT = 2,
13
+ BTC_CONFIRMED = 3,
14
+ CLAIMED = 4
15
+ }
16
+
17
+ export class SpvVaultSwap extends SwapHandlerSwap<SpvVaultSwapState> {
18
+
19
+ readonly quoteId: string;
20
+
21
+ readonly vaultOwner: string;
22
+ readonly vaultId: bigint;
23
+ readonly vaultUtxo: string;
24
+ readonly vaultAddress: string;
25
+
26
+ readonly expiry: number;
27
+
28
+ readonly tokenMultiplier: bigint;
29
+ readonly gasTokenMultiplier: bigint;
30
+
31
+ readonly tokenSwapFee: bigint;
32
+ readonly tokenSwapFeeInToken: bigint;
33
+ readonly gasSwapFee: bigint;
34
+ readonly gasSwapFeeInToken: bigint;
35
+
36
+ readonly btcFeeRate: number;
37
+ readonly btcAddress: string;
38
+ readonly recipient: string;
39
+ readonly amountBtc: bigint;
40
+ readonly amountToken: bigint;
41
+ readonly amountGasToken: bigint;
42
+ readonly rawAmountToken: bigint;
43
+ readonly rawAmountGasToken: bigint;
44
+ readonly callerFeeShare: bigint;
45
+ readonly frontingFeeShare: bigint;
46
+ readonly executionFeeShare: bigint;
47
+
48
+ readonly token: string;
49
+ readonly gasToken: string;
50
+
51
+ btcTxId: string;
52
+
53
+ constructor(
54
+ chainIdentifier: string, quoteId: string, expiry: number,
55
+ vault: SpvVault, vaultUtxo: string,
56
+ btcAddress: string, btcFeeRate: number, recipient: string, amountBtc: bigint, amountToken: bigint, amountGasToken: bigint,
57
+ swapFee: bigint, swapFeeInToken: bigint,
58
+ gasSwapFee: bigint, gasSwapFeeInToken: bigint,
59
+ callerFeeShare: bigint, frontingFeeShare: bigint, executionFeeShare: bigint,
60
+ token: string, gasToken: string
61
+ );
62
+ constructor(data: any);
63
+ constructor(
64
+ chainIdentifierOrObj: string | any, quoteId?: string, expiry?: number,
65
+ vault?: SpvVault, vaultUtxo?: string,
66
+ btcAddress?: string, btcFeeRate?: number, recipient?: string, amountBtc?: bigint, amountToken?: bigint, amountGasToken?: bigint,
67
+ swapFee?: bigint, swapFeeInToken?: bigint,
68
+ gasSwapFee?: bigint, gasSwapFeeInToken?: bigint,
69
+ callerFeeShare?: bigint, frontingFeeShare?: bigint, executionFeeShare?: bigint,
70
+ token?: string, gasToken?: string
71
+ ) {
72
+ if(typeof(chainIdentifierOrObj)==="string") {
73
+ super(chainIdentifierOrObj, swapFee + gasSwapFee, swapFeeInToken);
74
+ this.state = SpvVaultSwapState.CREATED;
75
+ this.quoteId = quoteId;
76
+ this.expiry = expiry;
77
+ this.vaultOwner = vault.data.getOwner();
78
+ this.vaultId = vault.data.getVaultId();
79
+ this.vaultAddress = vault.btcAddress;
80
+ this.vaultUtxo = vaultUtxo;
81
+ this.tokenSwapFee = swapFee;
82
+ this.tokenSwapFeeInToken = swapFeeInToken;
83
+ this.gasSwapFee = gasSwapFee;
84
+ this.gasSwapFeeInToken = gasSwapFeeInToken;
85
+ this.btcFeeRate = btcFeeRate;
86
+ this.btcAddress = btcAddress;
87
+ this.recipient = recipient;
88
+ this.amountBtc = amountBtc;
89
+ this.amountToken = amountToken;
90
+ this.amountGasToken = amountGasToken;
91
+ const [rawAmountToken, rawAmountGasToken] = vault.toRawAmounts([amountToken, amountGasToken]);
92
+ this.rawAmountToken = rawAmountToken;
93
+ this.rawAmountGasToken = rawAmountGasToken;
94
+ this.callerFeeShare = callerFeeShare;
95
+ this.frontingFeeShare = frontingFeeShare;
96
+ this.executionFeeShare = executionFeeShare;
97
+ this.token = token;
98
+ this.tokenMultiplier = vault.data.getTokenData()[0].multiplier;
99
+ this.gasToken = gasToken;
100
+ this.gasTokenMultiplier = vault.data.getTokenData()[1].multiplier;
101
+ } else {
102
+ super(chainIdentifierOrObj);
103
+ this.quoteId = chainIdentifierOrObj.quoteId;
104
+ this.expiry = chainIdentifierOrObj.expiry;
105
+ this.vaultOwner = chainIdentifierOrObj.owner;
106
+ this.vaultId = deserializeBN(chainIdentifierOrObj.vaultId);
107
+ this.vaultAddress = chainIdentifierOrObj.vaultAddress;
108
+ this.vaultUtxo = chainIdentifierOrObj.vaultUtxo;
109
+ this.tokenSwapFee = deserializeBN(chainIdentifierOrObj.swapFee);
110
+ this.tokenSwapFeeInToken = deserializeBN(chainIdentifierOrObj.swapFeeInToken);
111
+ this.gasSwapFee = deserializeBN(chainIdentifierOrObj.gasSwapFee);
112
+ this.gasSwapFeeInToken = deserializeBN(chainIdentifierOrObj.gasSwapFeeInToken);
113
+ this.btcFeeRate = chainIdentifierOrObj.btcFeeRate;
114
+ this.btcAddress = chainIdentifierOrObj.btcAddress;
115
+ this.recipient = chainIdentifierOrObj.recipient;
116
+ this.amountBtc = deserializeBN(chainIdentifierOrObj.amountBtc);
117
+ this.amountToken = deserializeBN(chainIdentifierOrObj.amountToken);
118
+ this.amountGasToken = deserializeBN(chainIdentifierOrObj.amountGasToken);
119
+ this.rawAmountToken = deserializeBN(chainIdentifierOrObj.rawAmountToken);
120
+ this.rawAmountGasToken = deserializeBN(chainIdentifierOrObj.rawAmountGasToken);
121
+ this.callerFeeShare = deserializeBN(chainIdentifierOrObj.callerFeeShare);
122
+ this.frontingFeeShare = deserializeBN(chainIdentifierOrObj.frontingFeeShare);
123
+ this.executionFeeShare = deserializeBN(chainIdentifierOrObj.executionFeeShare);
124
+ this.token = chainIdentifierOrObj.token;
125
+ this.gasToken = chainIdentifierOrObj.gasToken;
126
+ this.tokenMultiplier = deserializeBN(chainIdentifierOrObj.tokenMultiplier);
127
+ this.gasTokenMultiplier = deserializeBN(chainIdentifierOrObj.gasTokenMultiplier);
128
+ this.btcTxId = chainIdentifierOrObj.btcTxId;
129
+ }
130
+ this.type = SwapHandlerType.FROM_BTC_SPV;
131
+ }
132
+
133
+ serialize(): any {
134
+ return {
135
+ ...super.serialize(),
136
+ quoteId: this.quoteId,
137
+ expiry: this.expiry,
138
+ owner: this.vaultOwner,
139
+ vaultId: serializeBN(this.vaultId),
140
+ vaultAddress: this.vaultAddress,
141
+ vaultUtxo: this.vaultUtxo,
142
+ tokenSwapFee: serializeBN(this.tokenSwapFee),
143
+ tokenSwapFeeInToken: serializeBN(this.tokenSwapFeeInToken),
144
+ gasSwapFee: serializeBN(this.gasSwapFee),
145
+ gasSwapFeeInToken: serializeBN(this.gasSwapFeeInToken),
146
+ btcFeeRate: this.btcFeeRate,
147
+ btcAddress: this.btcAddress,
148
+ recipient: this.recipient,
149
+ amountBtc: serializeBN(this.amountBtc),
150
+ amountToken: serializeBN(this.amountToken),
151
+ amountGasToken: serializeBN(this.amountGasToken),
152
+ rawAmountToken: serializeBN(this.rawAmountToken),
153
+ rawAmountGasToken: serializeBN(this.rawAmountGasToken),
154
+ callerFeeShare: serializeBN(this.callerFeeShare),
155
+ frontingFeeShare: serializeBN(this.frontingFeeShare),
156
+ executionFeeShare: serializeBN(this.executionFeeShare),
157
+ token: this.token,
158
+ gasToken: this.gasToken,
159
+ tokenMultiplier: serializeBN(this.tokenMultiplier),
160
+ gasTokenMultiplier: serializeBN(this.gasTokenMultiplier),
161
+ btcTxId: this.btcTxId
162
+ };
163
+ }
164
+
165
+ getIdentifierHash(): string {
166
+ return this.quoteId;
167
+ }
168
+
169
+ getOutputGasAmount(): bigint {
170
+ return this.amountGasToken;
171
+ }
172
+
173
+ getOutputAmount(): bigint {
174
+ return this.amountToken;
175
+ }
176
+
177
+ getTotalOutputAmount(): bigint {
178
+ return this.rawAmountToken * (100_000n + this.callerFeeShare + this.frontingFeeShare + this.executionFeeShare) / 100_000n * this.tokenMultiplier;
179
+ }
180
+
181
+ getTotalOutputGasAmount(): bigint {
182
+ return this.rawAmountGasToken * (100_000n + this.callerFeeShare + this.frontingFeeShare) / 100_000n * this.gasTokenMultiplier;
183
+ }
184
+
185
+ getSequence(): bigint | null {
186
+ return 0n;
187
+ }
188
+
189
+ getSwapFee(): { inInputToken: bigint; inOutputToken: bigint } {
190
+ return {inInputToken: this.swapFee, inOutputToken: this.swapFeeInToken};
191
+ }
192
+
193
+ getTokenSwapFee(): { inInputToken: bigint; inOutputToken: bigint } {
194
+ return {inInputToken: this.tokenSwapFee, inOutputToken: this.tokenSwapFeeInToken};
195
+ }
196
+
197
+ getGasSwapFee(): { inInputToken: bigint; inOutputToken: bigint } {
198
+ return {inInputToken: this.gasSwapFee, inOutputToken: this.gasSwapFeeInToken};
199
+ }
200
+
201
+ getToken(): string {
202
+ return this.token;
203
+ }
204
+
205
+ getGasToken(): string {
206
+ return this.gasToken;
207
+ }
208
+
209
+ getTotalInputAmount(): bigint {
210
+ return this.amountBtc;
211
+ }
212
+
213
+ isFailed(): boolean {
214
+ return this.state===SpvVaultSwapState.FAILED || this.state===SpvVaultSwapState.DOUBLE_SPENT;
215
+ }
216
+
217
+ isInitiated(): boolean {
218
+ return this.state!==SpvVaultSwapState.CREATED;
219
+ }
220
+
221
+ isSuccess(): boolean {
222
+ return this.state===SpvVaultSwapState.CLAIMED;
223
+ }
224
+
225
+ }