@atomiqlabs/chain-starknet 4.0.0-dev.12 → 4.0.0-dev.13

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 (146) hide show
  1. package/LICENSE +201 -201
  2. package/dist/index.d.ts +38 -38
  3. package/dist/index.js +54 -54
  4. package/dist/starknet/StarknetChainType.d.ts +13 -13
  5. package/dist/starknet/StarknetChainType.js +2 -2
  6. package/dist/starknet/StarknetInitializer.d.ts +27 -27
  7. package/dist/starknet/StarknetInitializer.js +69 -69
  8. package/dist/starknet/btcrelay/BtcRelayAbi.d.ts +250 -250
  9. package/dist/starknet/btcrelay/BtcRelayAbi.js +341 -341
  10. package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +186 -186
  11. package/dist/starknet/btcrelay/StarknetBtcRelay.js +379 -379
  12. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +31 -31
  13. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +74 -74
  14. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +51 -51
  15. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +113 -113
  16. package/dist/starknet/chain/StarknetAction.d.ts +19 -19
  17. package/dist/starknet/chain/StarknetAction.js +73 -73
  18. package/dist/starknet/chain/StarknetChainInterface.d.ts +52 -52
  19. package/dist/starknet/chain/StarknetChainInterface.js +91 -91
  20. package/dist/starknet/chain/StarknetModule.d.ts +14 -14
  21. package/dist/starknet/chain/StarknetModule.js +13 -13
  22. package/dist/starknet/chain/modules/ERC20Abi.d.ts +755 -755
  23. package/dist/starknet/chain/modules/ERC20Abi.js +1032 -1032
  24. package/dist/starknet/chain/modules/StarknetAccounts.d.ts +6 -6
  25. package/dist/starknet/chain/modules/StarknetAccounts.js +24 -24
  26. package/dist/starknet/chain/modules/StarknetAddresses.d.ts +9 -9
  27. package/dist/starknet/chain/modules/StarknetAddresses.js +26 -26
  28. package/dist/starknet/chain/modules/StarknetBlocks.d.ts +20 -20
  29. package/dist/starknet/chain/modules/StarknetBlocks.js +64 -64
  30. package/dist/starknet/chain/modules/StarknetEvents.d.ts +44 -44
  31. package/dist/starknet/chain/modules/StarknetEvents.js +88 -88
  32. package/dist/starknet/chain/modules/StarknetFees.d.ts +77 -77
  33. package/dist/starknet/chain/modules/StarknetFees.js +114 -114
  34. package/dist/starknet/chain/modules/StarknetSignatures.d.ts +29 -29
  35. package/dist/starknet/chain/modules/StarknetSignatures.js +72 -72
  36. package/dist/starknet/chain/modules/StarknetTokens.d.ts +69 -69
  37. package/dist/starknet/chain/modules/StarknetTokens.js +102 -98
  38. package/dist/starknet/chain/modules/StarknetTransactions.d.ts +93 -93
  39. package/dist/starknet/chain/modules/StarknetTransactions.js +261 -260
  40. package/dist/starknet/contract/StarknetContractBase.d.ts +13 -13
  41. package/dist/starknet/contract/StarknetContractBase.js +20 -16
  42. package/dist/starknet/contract/StarknetContractModule.d.ts +8 -8
  43. package/dist/starknet/contract/StarknetContractModule.js +11 -11
  44. package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +51 -51
  45. package/dist/starknet/contract/modules/StarknetContractEvents.js +97 -97
  46. package/dist/starknet/events/StarknetChainEvents.d.ts +21 -21
  47. package/dist/starknet/events/StarknetChainEvents.js +52 -52
  48. package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +89 -90
  49. package/dist/starknet/events/StarknetChainEventsBrowser.js +296 -294
  50. package/dist/starknet/provider/RpcProviderWithRetries.d.ts +21 -21
  51. package/dist/starknet/provider/RpcProviderWithRetries.js +32 -32
  52. package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -488
  53. package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -656
  54. package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +66 -66
  55. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +382 -382
  56. package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +49 -49
  57. package/dist/starknet/spv_swap/StarknetSpvVaultData.js +145 -145
  58. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +25 -25
  59. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +72 -72
  60. package/dist/starknet/swaps/EscrowManagerAbi.d.ts +431 -431
  61. package/dist/starknet/swaps/EscrowManagerAbi.js +583 -583
  62. package/dist/starknet/swaps/StarknetSwapContract.d.ts +191 -191
  63. package/dist/starknet/swaps/StarknetSwapContract.js +424 -424
  64. package/dist/starknet/swaps/StarknetSwapData.d.ts +74 -74
  65. package/dist/starknet/swaps/StarknetSwapData.js +325 -325
  66. package/dist/starknet/swaps/StarknetSwapModule.d.ts +10 -10
  67. package/dist/starknet/swaps/StarknetSwapModule.js +11 -11
  68. package/dist/starknet/swaps/handlers/IHandler.d.ts +13 -13
  69. package/dist/starknet/swaps/handlers/IHandler.js +2 -2
  70. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +13 -13
  71. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.js +13 -13
  72. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +21 -21
  73. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +44 -44
  74. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
  75. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +48 -48
  76. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
  77. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +40 -40
  78. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +20 -20
  79. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +30 -30
  80. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +45 -45
  81. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +52 -52
  82. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
  83. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +27 -27
  84. package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +69 -69
  85. package/dist/starknet/swaps/modules/StarknetLpVault.js +122 -122
  86. package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +53 -53
  87. package/dist/starknet/swaps/modules/StarknetSwapClaim.js +100 -100
  88. package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +94 -87
  89. package/dist/starknet/swaps/modules/StarknetSwapInit.js +235 -225
  90. package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +62 -62
  91. package/dist/starknet/swaps/modules/StarknetSwapRefund.js +128 -128
  92. package/dist/starknet/wallet/StarknetKeypairWallet.d.ts +7 -7
  93. package/dist/starknet/wallet/StarknetKeypairWallet.js +35 -30
  94. package/dist/starknet/wallet/StarknetSigner.d.ts +12 -12
  95. package/dist/starknet/wallet/StarknetSigner.js +47 -46
  96. package/dist/utils/Utils.d.ts +37 -37
  97. package/dist/utils/Utils.js +260 -261
  98. package/package.json +43 -37
  99. package/src/index.ts +47 -47
  100. package/src/starknet/StarknetChainType.ts +28 -28
  101. package/src/starknet/StarknetInitializer.ts +108 -108
  102. package/src/starknet/btcrelay/BtcRelayAbi.ts +338 -338
  103. package/src/starknet/btcrelay/StarknetBtcRelay.ts +494 -494
  104. package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +100 -100
  105. package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +141 -141
  106. package/src/starknet/chain/StarknetAction.ts +85 -85
  107. package/src/starknet/chain/StarknetChainInterface.ts +149 -149
  108. package/src/starknet/chain/StarknetModule.ts +19 -19
  109. package/src/starknet/chain/modules/ERC20Abi.ts +1029 -1029
  110. package/src/starknet/chain/modules/StarknetAccounts.ts +25 -25
  111. package/src/starknet/chain/modules/StarknetAddresses.ts +22 -22
  112. package/src/starknet/chain/modules/StarknetBlocks.ts +75 -74
  113. package/src/starknet/chain/modules/StarknetEvents.ts +104 -104
  114. package/src/starknet/chain/modules/StarknetFees.ts +154 -154
  115. package/src/starknet/chain/modules/StarknetSignatures.ts +91 -91
  116. package/src/starknet/chain/modules/StarknetTokens.ts +120 -116
  117. package/src/starknet/chain/modules/StarknetTransactions.ts +285 -283
  118. package/src/starknet/contract/StarknetContractBase.ts +30 -26
  119. package/src/starknet/contract/StarknetContractModule.ts +16 -16
  120. package/src/starknet/contract/modules/StarknetContractEvents.ts +134 -134
  121. package/src/starknet/events/StarknetChainEvents.ts +67 -67
  122. package/src/starknet/events/StarknetChainEventsBrowser.ts +411 -411
  123. package/src/starknet/provider/RpcProviderWithRetries.ts +43 -43
  124. package/src/starknet/spv_swap/SpvVaultContractAbi.ts +656 -656
  125. package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +483 -483
  126. package/src/starknet/spv_swap/StarknetSpvVaultData.ts +195 -195
  127. package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +79 -79
  128. package/src/starknet/swaps/EscrowManagerAbi.ts +582 -582
  129. package/src/starknet/swaps/StarknetSwapContract.ts +647 -647
  130. package/src/starknet/swaps/StarknetSwapData.ts +455 -455
  131. package/src/starknet/swaps/StarknetSwapModule.ts +17 -17
  132. package/src/starknet/swaps/handlers/IHandler.ts +20 -20
  133. package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +23 -23
  134. package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +53 -53
  135. package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +73 -73
  136. package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +67 -67
  137. package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +50 -50
  138. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +102 -102
  139. package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +38 -38
  140. package/src/starknet/swaps/modules/StarknetLpVault.ts +147 -147
  141. package/src/starknet/swaps/modules/StarknetSwapClaim.ts +141 -141
  142. package/src/starknet/swaps/modules/StarknetSwapInit.ts +300 -287
  143. package/src/starknet/swaps/modules/StarknetSwapRefund.ts +196 -196
  144. package/src/starknet/wallet/StarknetKeypairWallet.ts +44 -39
  145. package/src/starknet/wallet/StarknetSigner.ts +55 -55
  146. package/src/utils/Utils.ts +251 -252
@@ -1,325 +1,325 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StarknetSwapData = void 0;
4
- const base_1 = require("@atomiqlabs/base");
5
- const TimelockRefundHandler_1 = require("./handlers/refund/TimelockRefundHandler");
6
- const starknet_1 = require("starknet");
7
- const Utils_1 = require("../../utils/Utils");
8
- const FLAG_PAY_OUT = 0x01n;
9
- const FLAG_PAY_IN = 0x02n;
10
- const FLAG_REPUTATION = 0x04n;
11
- function successActionEquals(a, b) {
12
- if (a != null && b != null) {
13
- return a.executionHash.toLowerCase() === b.executionHash.toLowerCase() &&
14
- a.executionExpiry === b.executionExpiry &&
15
- a.executionFee === b.executionFee;
16
- }
17
- return a === b;
18
- }
19
- class StarknetSwapData extends base_1.SwapData {
20
- static toFlags(value) {
21
- const val = (0, Utils_1.toBigInt)(value);
22
- return {
23
- sequence: val >> 64n,
24
- payOut: (val & FLAG_PAY_OUT) === FLAG_PAY_OUT,
25
- payIn: (val & FLAG_PAY_IN) === FLAG_PAY_IN,
26
- reputation: (val & FLAG_REPUTATION) === FLAG_REPUTATION
27
- };
28
- }
29
- getFlags() {
30
- return (this.sequence << 64n) +
31
- (this.payOut ? FLAG_PAY_OUT : 0n) +
32
- (this.payIn ? FLAG_PAY_IN : 0n) +
33
- (this.reputation ? FLAG_REPUTATION : 0n);
34
- }
35
- constructor(offererOrData, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, kind, extraData, successAction) {
36
- super();
37
- if (claimer != null || token != null || refundHandler != null || claimHandler != null ||
38
- payOut != null || payIn != null || reputation != null || sequence != null || claimData != null || refundData != null ||
39
- amount != null || feeToken != null || securityDeposit != null || claimerBounty != null) {
40
- this.offerer = offererOrData;
41
- this.claimer = claimer;
42
- this.token = token;
43
- this.refundHandler = refundHandler;
44
- this.claimHandler = claimHandler;
45
- this.payOut = payOut;
46
- this.payIn = payIn;
47
- this.reputation = reputation;
48
- this.sequence = sequence;
49
- this.claimData = claimData;
50
- this.refundData = refundData;
51
- this.amount = amount;
52
- this.feeToken = feeToken;
53
- this.securityDeposit = securityDeposit;
54
- this.claimerBounty = claimerBounty;
55
- this.kind = kind;
56
- this.extraData = extraData;
57
- this.successAction = successAction;
58
- }
59
- else {
60
- this.offerer = offererOrData.offerer;
61
- this.claimer = offererOrData.claimer;
62
- this.token = offererOrData.token;
63
- this.refundHandler = offererOrData.refundHandler;
64
- this.claimHandler = offererOrData.claimHandler;
65
- this.payOut = offererOrData.payOut;
66
- this.payIn = offererOrData.payIn;
67
- this.reputation = offererOrData.reputation;
68
- this.sequence = offererOrData.sequence == null ? null : BigInt(offererOrData.sequence);
69
- this.claimData = offererOrData.claimData;
70
- this.refundData = offererOrData.refundData;
71
- this.amount = offererOrData.amount == null ? null : BigInt(offererOrData.amount);
72
- this.feeToken = offererOrData.feeToken;
73
- this.securityDeposit = offererOrData.securityDeposit == null ? null : BigInt(offererOrData.securityDeposit);
74
- this.claimerBounty = offererOrData.claimerBounty == null ? null : BigInt(offererOrData.claimerBounty);
75
- this.kind = offererOrData.kind;
76
- this.extraData = offererOrData.extraData;
77
- this.successAction = offererOrData.successAction == null ? null : {
78
- executionHash: offererOrData.successAction.executionHash,
79
- executionExpiry: BigInt(offererOrData.successAction.executionExpiry),
80
- executionFee: BigInt(offererOrData.successAction.executionFee),
81
- };
82
- }
83
- }
84
- getOfferer() {
85
- return this.offerer;
86
- }
87
- setOfferer(newOfferer) {
88
- this.offerer = newOfferer;
89
- this.payIn = true;
90
- }
91
- getClaimer() {
92
- return this.claimer;
93
- }
94
- setClaimer(newClaimer) {
95
- this.claimer = newClaimer;
96
- this.payIn = false;
97
- this.payOut = true;
98
- this.reputation = false;
99
- }
100
- serialize() {
101
- return {
102
- type: "strk",
103
- offerer: this.offerer,
104
- claimer: this.claimer,
105
- token: this.token,
106
- refundHandler: this.refundHandler,
107
- claimHandler: this.claimHandler,
108
- payOut: this.payOut,
109
- payIn: this.payIn,
110
- reputation: this.reputation,
111
- sequence: this.sequence == null ? null : this.sequence.toString(10),
112
- claimData: this.claimData,
113
- refundData: this.refundData,
114
- amount: this.amount == null ? null : this.amount.toString(10),
115
- feeToken: this.feeToken,
116
- securityDeposit: this.securityDeposit == null ? null : this.securityDeposit.toString(10),
117
- claimerBounty: this.claimerBounty == null ? null : this.claimerBounty.toString(10),
118
- kind: this.kind,
119
- extraData: this.extraData,
120
- successAction: this.successAction == null ? null : {
121
- executionHash: this.successAction.executionHash,
122
- executionExpiry: this.successAction.executionExpiry.toString(10),
123
- executionFee: this.successAction.executionFee.toString(10)
124
- }
125
- };
126
- }
127
- getAmount() {
128
- return this.amount;
129
- }
130
- getToken() {
131
- return this.token;
132
- }
133
- isToken(token) {
134
- return this.token.toLowerCase() === token.toLowerCase();
135
- }
136
- getType() {
137
- return this.kind;
138
- }
139
- getExpiry() {
140
- return TimelockRefundHandler_1.TimelockRefundHandler.getExpiry(this);
141
- }
142
- isPayIn() {
143
- return this.payIn;
144
- }
145
- isPayOut() {
146
- return this.payOut;
147
- }
148
- getEscrowHash() {
149
- const amountValue = starknet_1.cairo.uint256("0x" + this.amount.toString(16));
150
- const securityDepositValue = starknet_1.cairo.uint256("0x" + this.securityDeposit.toString(16));
151
- const claimerBountyValue = starknet_1.cairo.uint256("0x" + this.claimerBounty.toString(16));
152
- const elements = [
153
- this.offerer,
154
- this.claimer,
155
- this.token,
156
- this.refundHandler,
157
- this.claimHandler,
158
- this.getFlags(),
159
- this.claimData,
160
- this.refundData,
161
- amountValue.low,
162
- amountValue.high,
163
- this.feeToken,
164
- securityDepositValue.low,
165
- securityDepositValue.high,
166
- claimerBountyValue.low,
167
- claimerBountyValue.high
168
- ];
169
- if (this.successAction != null) {
170
- elements.push(this.successAction.executionHash);
171
- elements.push(this.successAction.executionExpiry);
172
- const feeValue = starknet_1.cairo.uint256("0x" + this.successAction.executionFee.toString(16));
173
- elements.push(feeValue.low, feeValue.high);
174
- }
175
- let escrowHash = starknet_1.hash.computePoseidonHashOnElements(elements);
176
- if (escrowHash.startsWith("0x"))
177
- escrowHash = escrowHash.slice(2);
178
- return escrowHash.padStart(64, "0");
179
- }
180
- getClaimHash() {
181
- let hash = this.claimData;
182
- if (hash.startsWith("0x"))
183
- hash = hash.slice(2);
184
- return hash.padStart(64, "0");
185
- }
186
- getSequence() {
187
- return this.sequence;
188
- }
189
- getConfirmationsHint() {
190
- if (this.extraData == null)
191
- return null;
192
- if (this.extraData.length != 84)
193
- return null;
194
- return parseInt(this.extraData.slice(80), 16);
195
- }
196
- getNonceHint() {
197
- if (this.extraData == null)
198
- return null;
199
- if (this.extraData.length != 84)
200
- return null;
201
- return BigInt("0x" + this.extraData.slice(64, 80));
202
- }
203
- getTxoHashHint() {
204
- if (this.extraData == null)
205
- return null;
206
- if (this.extraData.length != 84)
207
- return null;
208
- return this.extraData.slice(0, 64);
209
- }
210
- getExtraData() {
211
- return this.extraData;
212
- }
213
- setExtraData(extraData) {
214
- this.extraData = extraData;
215
- }
216
- getSecurityDeposit() {
217
- return this.securityDeposit;
218
- }
219
- getClaimerBounty() {
220
- return this.claimerBounty;
221
- }
222
- getTotalDeposit() {
223
- return this.claimerBounty < this.securityDeposit ? this.securityDeposit : this.claimerBounty;
224
- }
225
- getDepositToken() {
226
- return this.feeToken;
227
- }
228
- isDepositToken(token) {
229
- if (!token.startsWith("0x"))
230
- token = "0x" + token;
231
- return (0, Utils_1.toHex)(this.feeToken) === (0, Utils_1.toHex)(token);
232
- }
233
- isClaimer(address) {
234
- if (!address.startsWith("0x"))
235
- address = "0x" + address;
236
- return (0, Utils_1.toHex)(this.claimer) === (0, Utils_1.toHex)(address);
237
- }
238
- isOfferer(address) {
239
- if (!address.startsWith("0x"))
240
- address = "0x" + address;
241
- return (0, Utils_1.toHex)(this.offerer) === (0, Utils_1.toHex)(address);
242
- }
243
- isRefundHandler(address) {
244
- if (!address.startsWith("0x"))
245
- address = "0x" + address;
246
- return (0, Utils_1.toHex)(this.refundHandler) === (0, Utils_1.toHex)(address);
247
- }
248
- isClaimHandler(address) {
249
- if (!address.startsWith("0x"))
250
- address = "0x" + address;
251
- return (0, Utils_1.toHex)(this.claimHandler) === (0, Utils_1.toHex)(address);
252
- }
253
- isClaimData(data) {
254
- if (!data.startsWith("0x"))
255
- data = "0x" + data;
256
- return (0, Utils_1.toHex)(this.claimData) === (0, Utils_1.toHex)(data);
257
- }
258
- equals(other) {
259
- return other.offerer.toLowerCase() === this.offerer.toLowerCase() &&
260
- other.claimer.toLowerCase() === this.claimer.toLowerCase() &&
261
- other.token.toLowerCase() === this.token.toLowerCase() &&
262
- other.refundHandler.toLowerCase() === this.refundHandler.toLowerCase() &&
263
- other.claimHandler.toLowerCase() === this.claimHandler.toLowerCase() &&
264
- other.payIn === this.payIn &&
265
- other.payOut === this.payOut &&
266
- other.reputation === this.reputation &&
267
- this.sequence === other.sequence &&
268
- other.claimData.toLowerCase() === this.claimData.toLowerCase() &&
269
- other.refundData.toLowerCase() === this.refundData.toLowerCase() &&
270
- other.amount === this.amount &&
271
- other.securityDeposit === this.securityDeposit &&
272
- other.claimerBounty === this.claimerBounty &&
273
- successActionEquals(other.successAction, this.successAction);
274
- }
275
- toEscrowStruct() {
276
- return {
277
- offerer: this.offerer,
278
- claimer: this.claimer,
279
- token: this.token,
280
- refund_handler: this.refundHandler,
281
- claim_handler: this.claimHandler,
282
- flags: this.getFlags(),
283
- claim_data: this.claimData,
284
- refund_data: this.refundData,
285
- amount: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.amount)),
286
- fee_token: this.feeToken,
287
- security_deposit: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.securityDeposit)),
288
- claimer_bounty: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.claimerBounty)),
289
- success_action: new starknet_1.CairoOption(this.successAction == null ? starknet_1.CairoOptionVariant.None : starknet_1.CairoOptionVariant.Some, this.successAction == null ? undefined : {
290
- hash: this.successAction.executionHash,
291
- expiry: this.successAction.executionExpiry,
292
- fee: starknet_1.cairo.uint256(this.successAction.executionFee)
293
- })
294
- };
295
- }
296
- static fromSerializedFeltArray(span, claimHandlerImpl) {
297
- const offerer = (0, Utils_1.toHex)(span.shift());
298
- const claimer = (0, Utils_1.toHex)(span.shift());
299
- const token = (0, Utils_1.toHex)(span.shift());
300
- const refundHandler = (0, Utils_1.toHex)(span.shift());
301
- const claimHandler = (0, Utils_1.toHex)(span.shift());
302
- const { payOut, payIn, reputation, sequence } = StarknetSwapData.toFlags(span.shift());
303
- const claimData = (0, Utils_1.toHex)(span.shift());
304
- const refundData = (0, Utils_1.toHex)(span.shift());
305
- const amount = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
306
- const feeToken = (0, Utils_1.toHex)(span.shift());
307
- const securityDeposit = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
308
- const claimerBounty = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
309
- const hasSuccessAction = (0, Utils_1.toBigInt)(span.shift()) === 0n;
310
- let successAction = null;
311
- if (hasSuccessAction) {
312
- successAction = {
313
- executionHash: (0, Utils_1.toHex)(span.shift()),
314
- executionExpiry: (0, Utils_1.toBigInt)(span.shift()),
315
- executionFee: (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() })
316
- };
317
- }
318
- return new StarknetSwapData(offerer, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, claimHandlerImpl.getType(), null, successAction);
319
- }
320
- hasSuccessAction() {
321
- return this.successAction != null;
322
- }
323
- }
324
- exports.StarknetSwapData = StarknetSwapData;
325
- base_1.SwapData.deserializers["strk"] = StarknetSwapData;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StarknetSwapData = void 0;
4
+ const base_1 = require("@atomiqlabs/base");
5
+ const TimelockRefundHandler_1 = require("./handlers/refund/TimelockRefundHandler");
6
+ const starknet_1 = require("starknet");
7
+ const Utils_1 = require("../../utils/Utils");
8
+ const FLAG_PAY_OUT = 0x01n;
9
+ const FLAG_PAY_IN = 0x02n;
10
+ const FLAG_REPUTATION = 0x04n;
11
+ function successActionEquals(a, b) {
12
+ if (a != null && b != null) {
13
+ return a.executionHash.toLowerCase() === b.executionHash.toLowerCase() &&
14
+ a.executionExpiry === b.executionExpiry &&
15
+ a.executionFee === b.executionFee;
16
+ }
17
+ return a === b;
18
+ }
19
+ class StarknetSwapData extends base_1.SwapData {
20
+ static toFlags(value) {
21
+ const val = (0, Utils_1.toBigInt)(value);
22
+ return {
23
+ sequence: val >> 64n,
24
+ payOut: (val & FLAG_PAY_OUT) === FLAG_PAY_OUT,
25
+ payIn: (val & FLAG_PAY_IN) === FLAG_PAY_IN,
26
+ reputation: (val & FLAG_REPUTATION) === FLAG_REPUTATION
27
+ };
28
+ }
29
+ getFlags() {
30
+ return (this.sequence << 64n) +
31
+ (this.payOut ? FLAG_PAY_OUT : 0n) +
32
+ (this.payIn ? FLAG_PAY_IN : 0n) +
33
+ (this.reputation ? FLAG_REPUTATION : 0n);
34
+ }
35
+ constructor(offererOrData, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, kind, extraData, successAction) {
36
+ super();
37
+ if (claimer != null || token != null || refundHandler != null || claimHandler != null ||
38
+ payOut != null || payIn != null || reputation != null || sequence != null || claimData != null || refundData != null ||
39
+ amount != null || feeToken != null || securityDeposit != null || claimerBounty != null) {
40
+ this.offerer = offererOrData;
41
+ this.claimer = claimer;
42
+ this.token = token;
43
+ this.refundHandler = refundHandler;
44
+ this.claimHandler = claimHandler;
45
+ this.payOut = payOut;
46
+ this.payIn = payIn;
47
+ this.reputation = reputation;
48
+ this.sequence = sequence;
49
+ this.claimData = claimData;
50
+ this.refundData = refundData;
51
+ this.amount = amount;
52
+ this.feeToken = feeToken;
53
+ this.securityDeposit = securityDeposit;
54
+ this.claimerBounty = claimerBounty;
55
+ this.kind = kind;
56
+ this.extraData = extraData;
57
+ this.successAction = successAction;
58
+ }
59
+ else {
60
+ this.offerer = offererOrData.offerer;
61
+ this.claimer = offererOrData.claimer;
62
+ this.token = offererOrData.token;
63
+ this.refundHandler = offererOrData.refundHandler;
64
+ this.claimHandler = offererOrData.claimHandler;
65
+ this.payOut = offererOrData.payOut;
66
+ this.payIn = offererOrData.payIn;
67
+ this.reputation = offererOrData.reputation;
68
+ this.sequence = offererOrData.sequence == null ? null : BigInt(offererOrData.sequence);
69
+ this.claimData = offererOrData.claimData;
70
+ this.refundData = offererOrData.refundData;
71
+ this.amount = offererOrData.amount == null ? null : BigInt(offererOrData.amount);
72
+ this.feeToken = offererOrData.feeToken;
73
+ this.securityDeposit = offererOrData.securityDeposit == null ? null : BigInt(offererOrData.securityDeposit);
74
+ this.claimerBounty = offererOrData.claimerBounty == null ? null : BigInt(offererOrData.claimerBounty);
75
+ this.kind = offererOrData.kind;
76
+ this.extraData = offererOrData.extraData;
77
+ this.successAction = offererOrData.successAction == null ? null : {
78
+ executionHash: offererOrData.successAction.executionHash,
79
+ executionExpiry: BigInt(offererOrData.successAction.executionExpiry),
80
+ executionFee: BigInt(offererOrData.successAction.executionFee),
81
+ };
82
+ }
83
+ }
84
+ getOfferer() {
85
+ return this.offerer;
86
+ }
87
+ setOfferer(newOfferer) {
88
+ this.offerer = newOfferer;
89
+ this.payIn = true;
90
+ }
91
+ getClaimer() {
92
+ return this.claimer;
93
+ }
94
+ setClaimer(newClaimer) {
95
+ this.claimer = newClaimer;
96
+ this.payIn = false;
97
+ this.payOut = true;
98
+ this.reputation = false;
99
+ }
100
+ serialize() {
101
+ return {
102
+ type: "strk",
103
+ offerer: this.offerer,
104
+ claimer: this.claimer,
105
+ token: this.token,
106
+ refundHandler: this.refundHandler,
107
+ claimHandler: this.claimHandler,
108
+ payOut: this.payOut,
109
+ payIn: this.payIn,
110
+ reputation: this.reputation,
111
+ sequence: this.sequence == null ? null : this.sequence.toString(10),
112
+ claimData: this.claimData,
113
+ refundData: this.refundData,
114
+ amount: this.amount == null ? null : this.amount.toString(10),
115
+ feeToken: this.feeToken,
116
+ securityDeposit: this.securityDeposit == null ? null : this.securityDeposit.toString(10),
117
+ claimerBounty: this.claimerBounty == null ? null : this.claimerBounty.toString(10),
118
+ kind: this.kind,
119
+ extraData: this.extraData,
120
+ successAction: this.successAction == null ? null : {
121
+ executionHash: this.successAction.executionHash,
122
+ executionExpiry: this.successAction.executionExpiry.toString(10),
123
+ executionFee: this.successAction.executionFee.toString(10)
124
+ }
125
+ };
126
+ }
127
+ getAmount() {
128
+ return this.amount;
129
+ }
130
+ getToken() {
131
+ return this.token;
132
+ }
133
+ isToken(token) {
134
+ return this.token.toLowerCase() === token.toLowerCase();
135
+ }
136
+ getType() {
137
+ return this.kind;
138
+ }
139
+ getExpiry() {
140
+ return TimelockRefundHandler_1.TimelockRefundHandler.getExpiry(this);
141
+ }
142
+ isPayIn() {
143
+ return this.payIn;
144
+ }
145
+ isPayOut() {
146
+ return this.payOut;
147
+ }
148
+ getEscrowHash() {
149
+ const amountValue = starknet_1.cairo.uint256("0x" + this.amount.toString(16));
150
+ const securityDepositValue = starknet_1.cairo.uint256("0x" + this.securityDeposit.toString(16));
151
+ const claimerBountyValue = starknet_1.cairo.uint256("0x" + this.claimerBounty.toString(16));
152
+ const elements = [
153
+ this.offerer,
154
+ this.claimer,
155
+ this.token,
156
+ this.refundHandler,
157
+ this.claimHandler,
158
+ this.getFlags(),
159
+ this.claimData,
160
+ this.refundData,
161
+ amountValue.low,
162
+ amountValue.high,
163
+ this.feeToken,
164
+ securityDepositValue.low,
165
+ securityDepositValue.high,
166
+ claimerBountyValue.low,
167
+ claimerBountyValue.high
168
+ ];
169
+ if (this.successAction != null) {
170
+ elements.push(this.successAction.executionHash);
171
+ elements.push(this.successAction.executionExpiry);
172
+ const feeValue = starknet_1.cairo.uint256("0x" + this.successAction.executionFee.toString(16));
173
+ elements.push(feeValue.low, feeValue.high);
174
+ }
175
+ let escrowHash = starknet_1.hash.computePoseidonHashOnElements(elements);
176
+ if (escrowHash.startsWith("0x"))
177
+ escrowHash = escrowHash.slice(2);
178
+ return escrowHash.padStart(64, "0");
179
+ }
180
+ getClaimHash() {
181
+ let hash = this.claimData;
182
+ if (hash.startsWith("0x"))
183
+ hash = hash.slice(2);
184
+ return hash.padStart(64, "0");
185
+ }
186
+ getSequence() {
187
+ return this.sequence;
188
+ }
189
+ getConfirmationsHint() {
190
+ if (this.extraData == null)
191
+ return null;
192
+ if (this.extraData.length != 84)
193
+ return null;
194
+ return parseInt(this.extraData.slice(80), 16);
195
+ }
196
+ getNonceHint() {
197
+ if (this.extraData == null)
198
+ return null;
199
+ if (this.extraData.length != 84)
200
+ return null;
201
+ return BigInt("0x" + this.extraData.slice(64, 80));
202
+ }
203
+ getTxoHashHint() {
204
+ if (this.extraData == null)
205
+ return null;
206
+ if (this.extraData.length != 84)
207
+ return null;
208
+ return this.extraData.slice(0, 64);
209
+ }
210
+ getExtraData() {
211
+ return this.extraData;
212
+ }
213
+ setExtraData(extraData) {
214
+ this.extraData = extraData;
215
+ }
216
+ getSecurityDeposit() {
217
+ return this.securityDeposit;
218
+ }
219
+ getClaimerBounty() {
220
+ return this.claimerBounty;
221
+ }
222
+ getTotalDeposit() {
223
+ return this.claimerBounty < this.securityDeposit ? this.securityDeposit : this.claimerBounty;
224
+ }
225
+ getDepositToken() {
226
+ return this.feeToken;
227
+ }
228
+ isDepositToken(token) {
229
+ if (!token.startsWith("0x"))
230
+ token = "0x" + token;
231
+ return (0, Utils_1.toHex)(this.feeToken) === (0, Utils_1.toHex)(token);
232
+ }
233
+ isClaimer(address) {
234
+ if (!address.startsWith("0x"))
235
+ address = "0x" + address;
236
+ return (0, Utils_1.toHex)(this.claimer) === (0, Utils_1.toHex)(address);
237
+ }
238
+ isOfferer(address) {
239
+ if (!address.startsWith("0x"))
240
+ address = "0x" + address;
241
+ return (0, Utils_1.toHex)(this.offerer) === (0, Utils_1.toHex)(address);
242
+ }
243
+ isRefundHandler(address) {
244
+ if (!address.startsWith("0x"))
245
+ address = "0x" + address;
246
+ return (0, Utils_1.toHex)(this.refundHandler) === (0, Utils_1.toHex)(address);
247
+ }
248
+ isClaimHandler(address) {
249
+ if (!address.startsWith("0x"))
250
+ address = "0x" + address;
251
+ return (0, Utils_1.toHex)(this.claimHandler) === (0, Utils_1.toHex)(address);
252
+ }
253
+ isClaimData(data) {
254
+ if (!data.startsWith("0x"))
255
+ data = "0x" + data;
256
+ return (0, Utils_1.toHex)(this.claimData) === (0, Utils_1.toHex)(data);
257
+ }
258
+ equals(other) {
259
+ return other.offerer.toLowerCase() === this.offerer.toLowerCase() &&
260
+ other.claimer.toLowerCase() === this.claimer.toLowerCase() &&
261
+ other.token.toLowerCase() === this.token.toLowerCase() &&
262
+ other.refundHandler.toLowerCase() === this.refundHandler.toLowerCase() &&
263
+ other.claimHandler.toLowerCase() === this.claimHandler.toLowerCase() &&
264
+ other.payIn === this.payIn &&
265
+ other.payOut === this.payOut &&
266
+ other.reputation === this.reputation &&
267
+ this.sequence === other.sequence &&
268
+ other.claimData.toLowerCase() === this.claimData.toLowerCase() &&
269
+ other.refundData.toLowerCase() === this.refundData.toLowerCase() &&
270
+ other.amount === this.amount &&
271
+ other.securityDeposit === this.securityDeposit &&
272
+ other.claimerBounty === this.claimerBounty &&
273
+ successActionEquals(other.successAction, this.successAction);
274
+ }
275
+ toEscrowStruct() {
276
+ return {
277
+ offerer: this.offerer,
278
+ claimer: this.claimer,
279
+ token: this.token,
280
+ refund_handler: this.refundHandler,
281
+ claim_handler: this.claimHandler,
282
+ flags: this.getFlags(),
283
+ claim_data: this.claimData,
284
+ refund_data: this.refundData,
285
+ amount: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.amount)),
286
+ fee_token: this.feeToken,
287
+ security_deposit: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.securityDeposit)),
288
+ claimer_bounty: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.claimerBounty)),
289
+ success_action: new starknet_1.CairoOption(this.successAction == null ? starknet_1.CairoOptionVariant.None : starknet_1.CairoOptionVariant.Some, this.successAction == null ? undefined : {
290
+ hash: this.successAction.executionHash,
291
+ expiry: this.successAction.executionExpiry,
292
+ fee: starknet_1.cairo.uint256(this.successAction.executionFee)
293
+ })
294
+ };
295
+ }
296
+ static fromSerializedFeltArray(span, claimHandlerImpl) {
297
+ const offerer = (0, Utils_1.toHex)(span.shift());
298
+ const claimer = (0, Utils_1.toHex)(span.shift());
299
+ const token = (0, Utils_1.toHex)(span.shift());
300
+ const refundHandler = (0, Utils_1.toHex)(span.shift());
301
+ const claimHandler = (0, Utils_1.toHex)(span.shift());
302
+ const { payOut, payIn, reputation, sequence } = StarknetSwapData.toFlags(span.shift());
303
+ const claimData = (0, Utils_1.toHex)(span.shift());
304
+ const refundData = (0, Utils_1.toHex)(span.shift());
305
+ const amount = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
306
+ const feeToken = (0, Utils_1.toHex)(span.shift());
307
+ const securityDeposit = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
308
+ const claimerBounty = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
309
+ const hasSuccessAction = (0, Utils_1.toBigInt)(span.shift()) === 0n;
310
+ let successAction = null;
311
+ if (hasSuccessAction) {
312
+ successAction = {
313
+ executionHash: (0, Utils_1.toHex)(span.shift()),
314
+ executionExpiry: (0, Utils_1.toBigInt)(span.shift()),
315
+ executionFee: (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() })
316
+ };
317
+ }
318
+ return new StarknetSwapData(offerer, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, claimHandlerImpl.getType(), null, successAction);
319
+ }
320
+ hasSuccessAction() {
321
+ return this.successAction != null;
322
+ }
323
+ }
324
+ exports.StarknetSwapData = StarknetSwapData;
325
+ base_1.SwapData.deserializers["strk"] = StarknetSwapData;