@atomiqlabs/lp-lib 17.5.1 → 17.5.2

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