@atomiqlabs/chain-starknet 3.0.0-dev.8 → 4.0.0-dev.3

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 -19
  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 -19
  29. package/dist/starknet/chain/modules/StarknetBlocks.js +64 -49
  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 +98 -98
  38. package/dist/starknet/chain/modules/StarknetTransactions.d.ts +93 -93
  39. package/dist/starknet/chain/modules/StarknetTransactions.js +255 -255
  40. package/dist/starknet/contract/StarknetContractBase.d.ts +13 -13
  41. package/dist/starknet/contract/StarknetContractBase.js +16 -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 +90 -91
  49. package/dist/starknet/events/StarknetChainEventsBrowser.js +292 -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 -65
  55. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +382 -376
  56. package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +49 -49
  57. package/dist/starknet/spv_swap/StarknetSpvVaultData.js +145 -144
  58. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +25 -24
  59. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +72 -61
  60. package/dist/starknet/swaps/EscrowManagerAbi.d.ts +434 -434
  61. package/dist/starknet/swaps/EscrowManagerAbi.js +587 -587
  62. package/dist/starknet/swaps/StarknetSwapContract.d.ts +190 -196
  63. package/dist/starknet/swaps/StarknetSwapContract.js +409 -395
  64. package/dist/starknet/swaps/StarknetSwapData.d.ts +67 -67
  65. package/dist/starknet/swaps/StarknetSwapData.js +290 -290
  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 +86 -84
  89. package/dist/starknet/swaps/modules/StarknetSwapInit.js +224 -200
  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 +30 -30
  94. package/dist/starknet/wallet/StarknetSigner.d.ts +12 -12
  95. package/dist/starknet/wallet/StarknetSigner.js +46 -46
  96. package/dist/utils/Utils.d.ts +37 -37
  97. package/dist/utils/Utils.js +261 -257
  98. package/package.json +37 -37
  99. package/src/index.ts +47 -47
  100. package/src/starknet/StarknetChainType.ts +28 -28
  101. package/src/starknet/StarknetInitializer.ts +108 -100
  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 +74 -58
  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 +116 -116
  117. package/src/starknet/chain/modules/StarknetTransactions.ts +277 -277
  118. package/src/starknet/contract/StarknetContractBase.ts +26 -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 +410 -412
  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 -477
  126. package/src/starknet/spv_swap/StarknetSpvVaultData.ts +195 -194
  127. package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +79 -68
  128. package/src/starknet/swaps/EscrowManagerAbi.ts +586 -586
  129. package/src/starknet/swaps/StarknetSwapContract.ts +628 -605
  130. package/src/starknet/swaps/StarknetSwapData.ts +403 -403
  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 +286 -260
  143. package/src/starknet/swaps/modules/StarknetSwapRefund.ts +196 -196
  144. package/src/starknet/wallet/StarknetKeypairWallet.ts +39 -39
  145. package/src/starknet/wallet/StarknetSigner.ts +55 -55
  146. package/src/utils/Utils.ts +252 -248
@@ -1,290 +1,290 @@
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
- class StarknetSwapData extends base_1.SwapData {
12
- static toFlags(value) {
13
- const val = (0, Utils_1.toBigInt)(value);
14
- return {
15
- sequence: val >> 64n,
16
- payOut: (val & FLAG_PAY_OUT) === FLAG_PAY_OUT,
17
- payIn: (val & FLAG_PAY_IN) === FLAG_PAY_IN,
18
- reputation: (val & FLAG_REPUTATION) === FLAG_REPUTATION
19
- };
20
- }
21
- getFlags() {
22
- return (this.sequence << 64n) +
23
- (this.payOut ? FLAG_PAY_OUT : 0n) +
24
- (this.payIn ? FLAG_PAY_IN : 0n) +
25
- (this.reputation ? FLAG_REPUTATION : 0n);
26
- }
27
- constructor(offererOrData, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, kind, extraData) {
28
- super();
29
- if (claimer != null || token != null || refundHandler != null || claimHandler != null ||
30
- payOut != null || payIn != null || reputation != null || sequence != null || claimData != null || refundData != null ||
31
- amount != null || feeToken != null || securityDeposit != null || claimerBounty != null) {
32
- this.offerer = offererOrData;
33
- this.claimer = claimer;
34
- this.token = token;
35
- this.refundHandler = refundHandler;
36
- this.claimHandler = claimHandler;
37
- this.payOut = payOut;
38
- this.payIn = payIn;
39
- this.reputation = reputation;
40
- this.sequence = sequence;
41
- this.claimData = claimData;
42
- this.refundData = refundData;
43
- this.amount = amount;
44
- this.feeToken = feeToken;
45
- this.securityDeposit = securityDeposit;
46
- this.claimerBounty = claimerBounty;
47
- this.kind = kind;
48
- this.extraData = extraData;
49
- }
50
- else {
51
- this.offerer = offererOrData.offerer;
52
- this.claimer = offererOrData.claimer;
53
- this.token = offererOrData.token;
54
- this.refundHandler = offererOrData.refundHandler;
55
- this.claimHandler = offererOrData.claimHandler;
56
- this.payOut = offererOrData.payOut;
57
- this.payIn = offererOrData.payIn;
58
- this.reputation = offererOrData.reputation;
59
- this.sequence = offererOrData.sequence == null ? null : BigInt(offererOrData.sequence);
60
- this.claimData = offererOrData.claimData;
61
- this.refundData = offererOrData.refundData;
62
- this.amount = offererOrData.amount == null ? null : BigInt(offererOrData.amount);
63
- this.feeToken = offererOrData.feeToken;
64
- this.securityDeposit = offererOrData.securityDeposit == null ? null : BigInt(offererOrData.securityDeposit);
65
- this.claimerBounty = offererOrData.claimerBounty == null ? null : BigInt(offererOrData.claimerBounty);
66
- this.kind = offererOrData.kind;
67
- this.extraData = offererOrData.extraData;
68
- }
69
- }
70
- getOfferer() {
71
- return this.offerer;
72
- }
73
- setOfferer(newOfferer) {
74
- this.offerer = newOfferer;
75
- this.payIn = true;
76
- }
77
- getClaimer() {
78
- return this.claimer;
79
- }
80
- setClaimer(newClaimer) {
81
- this.claimer = newClaimer;
82
- this.payIn = false;
83
- this.payOut = true;
84
- this.reputation = false;
85
- }
86
- serialize() {
87
- return {
88
- type: "strk",
89
- offerer: this.offerer,
90
- claimer: this.claimer,
91
- token: this.token,
92
- refundHandler: this.refundHandler,
93
- claimHandler: this.claimHandler,
94
- payOut: this.payOut,
95
- payIn: this.payIn,
96
- reputation: this.reputation,
97
- sequence: this.sequence == null ? null : this.sequence.toString(10),
98
- claimData: this.claimData,
99
- refundData: this.refundData,
100
- amount: this.amount == null ? null : this.amount.toString(10),
101
- feeToken: this.feeToken,
102
- securityDeposit: this.securityDeposit == null ? null : this.securityDeposit.toString(10),
103
- claimerBounty: this.claimerBounty == null ? null : this.claimerBounty.toString(10),
104
- kind: this.kind,
105
- extraData: this.extraData
106
- };
107
- }
108
- getAmount() {
109
- return this.amount;
110
- }
111
- getToken() {
112
- return this.token;
113
- }
114
- isToken(token) {
115
- return this.token.toLowerCase() === token.toLowerCase();
116
- }
117
- getType() {
118
- return this.kind;
119
- }
120
- getExpiry() {
121
- return TimelockRefundHandler_1.TimelockRefundHandler.getExpiry(this);
122
- }
123
- isPayIn() {
124
- return this.payIn;
125
- }
126
- isPayOut() {
127
- return this.payOut;
128
- }
129
- getEscrowHash() {
130
- const amountValue = starknet_1.cairo.uint256("0x" + this.amount.toString(16));
131
- const securityDepositValue = starknet_1.cairo.uint256("0x" + this.securityDeposit.toString(16));
132
- const claimerBountyValue = starknet_1.cairo.uint256("0x" + this.claimerBounty.toString(16));
133
- let escrowHash = starknet_1.hash.computePoseidonHashOnElements([
134
- this.offerer,
135
- this.claimer,
136
- this.token,
137
- this.refundHandler,
138
- this.claimHandler,
139
- this.getFlags(),
140
- this.claimData,
141
- this.refundData,
142
- amountValue.low,
143
- amountValue.high,
144
- this.feeToken,
145
- securityDepositValue.low,
146
- securityDepositValue.high,
147
- claimerBountyValue.low,
148
- claimerBountyValue.high
149
- ]);
150
- if (escrowHash.startsWith("0x"))
151
- escrowHash = escrowHash.slice(2);
152
- return escrowHash.padStart(64, "0");
153
- }
154
- getClaimHash() {
155
- let hash = this.claimData;
156
- if (hash.startsWith("0x"))
157
- hash = hash.slice(2);
158
- return hash.padStart(64, "0");
159
- }
160
- getSequence() {
161
- return this.sequence;
162
- }
163
- getConfirmationsHint() {
164
- if (this.extraData == null)
165
- return null;
166
- if (this.extraData.length != 84)
167
- return null;
168
- return parseInt(this.extraData.slice(80), 16);
169
- }
170
- getNonceHint() {
171
- if (this.extraData == null)
172
- return null;
173
- if (this.extraData.length != 84)
174
- return null;
175
- return BigInt("0x" + this.extraData.slice(64, 80));
176
- }
177
- getTxoHashHint() {
178
- if (this.extraData == null)
179
- return null;
180
- if (this.extraData.length != 84)
181
- return null;
182
- return this.extraData.slice(0, 64);
183
- }
184
- getExtraData() {
185
- return this.extraData;
186
- }
187
- setExtraData(extraData) {
188
- this.extraData = extraData;
189
- }
190
- getSecurityDeposit() {
191
- return this.securityDeposit;
192
- }
193
- getClaimerBounty() {
194
- return this.claimerBounty;
195
- }
196
- getTotalDeposit() {
197
- return this.claimerBounty < this.securityDeposit ? this.securityDeposit : this.claimerBounty;
198
- }
199
- getDepositToken() {
200
- return this.feeToken;
201
- }
202
- isDepositToken(token) {
203
- if (!token.startsWith("0x"))
204
- token = "0x" + token;
205
- return (0, Utils_1.toHex)(this.feeToken) === (0, Utils_1.toHex)(token);
206
- }
207
- isClaimer(address) {
208
- if (!address.startsWith("0x"))
209
- address = "0x" + address;
210
- return (0, Utils_1.toHex)(this.claimer) === (0, Utils_1.toHex)(address);
211
- }
212
- isOfferer(address) {
213
- if (!address.startsWith("0x"))
214
- address = "0x" + address;
215
- return (0, Utils_1.toHex)(this.offerer) === (0, Utils_1.toHex)(address);
216
- }
217
- isRefundHandler(address) {
218
- if (!address.startsWith("0x"))
219
- address = "0x" + address;
220
- return (0, Utils_1.toHex)(this.refundHandler) === (0, Utils_1.toHex)(address);
221
- }
222
- isClaimHandler(address) {
223
- if (!address.startsWith("0x"))
224
- address = "0x" + address;
225
- return (0, Utils_1.toHex)(this.claimHandler) === (0, Utils_1.toHex)(address);
226
- }
227
- isClaimData(data) {
228
- if (!data.startsWith("0x"))
229
- data = "0x" + data;
230
- return (0, Utils_1.toHex)(this.claimData) === (0, Utils_1.toHex)(data);
231
- }
232
- equals(other) {
233
- return other.offerer.toLowerCase() === this.offerer.toLowerCase() &&
234
- other.claimer.toLowerCase() === this.claimer.toLowerCase() &&
235
- other.token.toLowerCase() === this.token.toLowerCase() &&
236
- other.refundHandler.toLowerCase() === this.refundHandler.toLowerCase() &&
237
- other.claimHandler.toLowerCase() === this.claimHandler.toLowerCase() &&
238
- other.payIn === this.payIn &&
239
- other.payOut === this.payOut &&
240
- other.reputation === this.reputation &&
241
- this.sequence === other.sequence &&
242
- other.claimData.toLowerCase() === this.claimData.toLowerCase() &&
243
- other.refundData.toLowerCase() === this.refundData.toLowerCase() &&
244
- other.amount === this.amount &&
245
- other.securityDeposit === this.securityDeposit &&
246
- other.claimerBounty === this.claimerBounty;
247
- }
248
- toEscrowStruct() {
249
- return {
250
- offerer: this.offerer,
251
- claimer: this.claimer,
252
- token: this.token,
253
- refund_handler: this.refundHandler,
254
- claim_handler: this.claimHandler,
255
- flags: this.getFlags(),
256
- claim_data: this.claimData,
257
- refund_data: this.refundData,
258
- amount: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.amount)),
259
- fee_token: this.feeToken,
260
- security_deposit: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.securityDeposit)),
261
- claimer_bounty: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.claimerBounty)),
262
- success_action: new starknet_1.CairoOption(starknet_1.CairoOptionVariant.None) //For now enforce no success action
263
- };
264
- }
265
- static fromSerializedFeltArray(span, claimHandlerImpl) {
266
- const offerer = (0, Utils_1.toHex)(span.shift());
267
- const claimer = (0, Utils_1.toHex)(span.shift());
268
- const token = (0, Utils_1.toHex)(span.shift());
269
- const refundHandler = (0, Utils_1.toHex)(span.shift());
270
- const claimHandler = (0, Utils_1.toHex)(span.shift());
271
- const { payOut, payIn, reputation, sequence } = StarknetSwapData.toFlags(span.shift());
272
- const claimData = (0, Utils_1.toHex)(span.shift());
273
- const refundData = (0, Utils_1.toHex)(span.shift());
274
- const amount = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
275
- const feeToken = (0, Utils_1.toHex)(span.shift());
276
- const securityDeposit = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
277
- const claimerBounty = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
278
- const hasSuccessAction = (0, Utils_1.toBigInt)(span.shift()) === 0n;
279
- if (hasSuccessAction) {
280
- const executionContract = (0, Utils_1.toHex)(span.shift());
281
- const executionHash = (0, Utils_1.toHex)(span.shift());
282
- const executionExpiry = (0, Utils_1.toBigInt)(span.shift());
283
- const executionFee = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
284
- // throw new Error("Success action not allowed!");
285
- }
286
- return new StarknetSwapData(offerer, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, claimHandlerImpl.getType(), null);
287
- }
288
- }
289
- exports.StarknetSwapData = StarknetSwapData;
290
- 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
+ class StarknetSwapData extends base_1.SwapData {
12
+ static toFlags(value) {
13
+ const val = (0, Utils_1.toBigInt)(value);
14
+ return {
15
+ sequence: val >> 64n,
16
+ payOut: (val & FLAG_PAY_OUT) === FLAG_PAY_OUT,
17
+ payIn: (val & FLAG_PAY_IN) === FLAG_PAY_IN,
18
+ reputation: (val & FLAG_REPUTATION) === FLAG_REPUTATION
19
+ };
20
+ }
21
+ getFlags() {
22
+ return (this.sequence << 64n) +
23
+ (this.payOut ? FLAG_PAY_OUT : 0n) +
24
+ (this.payIn ? FLAG_PAY_IN : 0n) +
25
+ (this.reputation ? FLAG_REPUTATION : 0n);
26
+ }
27
+ constructor(offererOrData, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, kind, extraData) {
28
+ super();
29
+ if (claimer != null || token != null || refundHandler != null || claimHandler != null ||
30
+ payOut != null || payIn != null || reputation != null || sequence != null || claimData != null || refundData != null ||
31
+ amount != null || feeToken != null || securityDeposit != null || claimerBounty != null) {
32
+ this.offerer = offererOrData;
33
+ this.claimer = claimer;
34
+ this.token = token;
35
+ this.refundHandler = refundHandler;
36
+ this.claimHandler = claimHandler;
37
+ this.payOut = payOut;
38
+ this.payIn = payIn;
39
+ this.reputation = reputation;
40
+ this.sequence = sequence;
41
+ this.claimData = claimData;
42
+ this.refundData = refundData;
43
+ this.amount = amount;
44
+ this.feeToken = feeToken;
45
+ this.securityDeposit = securityDeposit;
46
+ this.claimerBounty = claimerBounty;
47
+ this.kind = kind;
48
+ this.extraData = extraData;
49
+ }
50
+ else {
51
+ this.offerer = offererOrData.offerer;
52
+ this.claimer = offererOrData.claimer;
53
+ this.token = offererOrData.token;
54
+ this.refundHandler = offererOrData.refundHandler;
55
+ this.claimHandler = offererOrData.claimHandler;
56
+ this.payOut = offererOrData.payOut;
57
+ this.payIn = offererOrData.payIn;
58
+ this.reputation = offererOrData.reputation;
59
+ this.sequence = offererOrData.sequence == null ? null : BigInt(offererOrData.sequence);
60
+ this.claimData = offererOrData.claimData;
61
+ this.refundData = offererOrData.refundData;
62
+ this.amount = offererOrData.amount == null ? null : BigInt(offererOrData.amount);
63
+ this.feeToken = offererOrData.feeToken;
64
+ this.securityDeposit = offererOrData.securityDeposit == null ? null : BigInt(offererOrData.securityDeposit);
65
+ this.claimerBounty = offererOrData.claimerBounty == null ? null : BigInt(offererOrData.claimerBounty);
66
+ this.kind = offererOrData.kind;
67
+ this.extraData = offererOrData.extraData;
68
+ }
69
+ }
70
+ getOfferer() {
71
+ return this.offerer;
72
+ }
73
+ setOfferer(newOfferer) {
74
+ this.offerer = newOfferer;
75
+ this.payIn = true;
76
+ }
77
+ getClaimer() {
78
+ return this.claimer;
79
+ }
80
+ setClaimer(newClaimer) {
81
+ this.claimer = newClaimer;
82
+ this.payIn = false;
83
+ this.payOut = true;
84
+ this.reputation = false;
85
+ }
86
+ serialize() {
87
+ return {
88
+ type: "strk",
89
+ offerer: this.offerer,
90
+ claimer: this.claimer,
91
+ token: this.token,
92
+ refundHandler: this.refundHandler,
93
+ claimHandler: this.claimHandler,
94
+ payOut: this.payOut,
95
+ payIn: this.payIn,
96
+ reputation: this.reputation,
97
+ sequence: this.sequence == null ? null : this.sequence.toString(10),
98
+ claimData: this.claimData,
99
+ refundData: this.refundData,
100
+ amount: this.amount == null ? null : this.amount.toString(10),
101
+ feeToken: this.feeToken,
102
+ securityDeposit: this.securityDeposit == null ? null : this.securityDeposit.toString(10),
103
+ claimerBounty: this.claimerBounty == null ? null : this.claimerBounty.toString(10),
104
+ kind: this.kind,
105
+ extraData: this.extraData
106
+ };
107
+ }
108
+ getAmount() {
109
+ return this.amount;
110
+ }
111
+ getToken() {
112
+ return this.token;
113
+ }
114
+ isToken(token) {
115
+ return this.token.toLowerCase() === token.toLowerCase();
116
+ }
117
+ getType() {
118
+ return this.kind;
119
+ }
120
+ getExpiry() {
121
+ return TimelockRefundHandler_1.TimelockRefundHandler.getExpiry(this);
122
+ }
123
+ isPayIn() {
124
+ return this.payIn;
125
+ }
126
+ isPayOut() {
127
+ return this.payOut;
128
+ }
129
+ getEscrowHash() {
130
+ const amountValue = starknet_1.cairo.uint256("0x" + this.amount.toString(16));
131
+ const securityDepositValue = starknet_1.cairo.uint256("0x" + this.securityDeposit.toString(16));
132
+ const claimerBountyValue = starknet_1.cairo.uint256("0x" + this.claimerBounty.toString(16));
133
+ let escrowHash = starknet_1.hash.computePoseidonHashOnElements([
134
+ this.offerer,
135
+ this.claimer,
136
+ this.token,
137
+ this.refundHandler,
138
+ this.claimHandler,
139
+ this.getFlags(),
140
+ this.claimData,
141
+ this.refundData,
142
+ amountValue.low,
143
+ amountValue.high,
144
+ this.feeToken,
145
+ securityDepositValue.low,
146
+ securityDepositValue.high,
147
+ claimerBountyValue.low,
148
+ claimerBountyValue.high
149
+ ]);
150
+ if (escrowHash.startsWith("0x"))
151
+ escrowHash = escrowHash.slice(2);
152
+ return escrowHash.padStart(64, "0");
153
+ }
154
+ getClaimHash() {
155
+ let hash = this.claimData;
156
+ if (hash.startsWith("0x"))
157
+ hash = hash.slice(2);
158
+ return hash.padStart(64, "0");
159
+ }
160
+ getSequence() {
161
+ return this.sequence;
162
+ }
163
+ getConfirmationsHint() {
164
+ if (this.extraData == null)
165
+ return null;
166
+ if (this.extraData.length != 84)
167
+ return null;
168
+ return parseInt(this.extraData.slice(80), 16);
169
+ }
170
+ getNonceHint() {
171
+ if (this.extraData == null)
172
+ return null;
173
+ if (this.extraData.length != 84)
174
+ return null;
175
+ return BigInt("0x" + this.extraData.slice(64, 80));
176
+ }
177
+ getTxoHashHint() {
178
+ if (this.extraData == null)
179
+ return null;
180
+ if (this.extraData.length != 84)
181
+ return null;
182
+ return this.extraData.slice(0, 64);
183
+ }
184
+ getExtraData() {
185
+ return this.extraData;
186
+ }
187
+ setExtraData(extraData) {
188
+ this.extraData = extraData;
189
+ }
190
+ getSecurityDeposit() {
191
+ return this.securityDeposit;
192
+ }
193
+ getClaimerBounty() {
194
+ return this.claimerBounty;
195
+ }
196
+ getTotalDeposit() {
197
+ return this.claimerBounty < this.securityDeposit ? this.securityDeposit : this.claimerBounty;
198
+ }
199
+ getDepositToken() {
200
+ return this.feeToken;
201
+ }
202
+ isDepositToken(token) {
203
+ if (!token.startsWith("0x"))
204
+ token = "0x" + token;
205
+ return (0, Utils_1.toHex)(this.feeToken) === (0, Utils_1.toHex)(token);
206
+ }
207
+ isClaimer(address) {
208
+ if (!address.startsWith("0x"))
209
+ address = "0x" + address;
210
+ return (0, Utils_1.toHex)(this.claimer) === (0, Utils_1.toHex)(address);
211
+ }
212
+ isOfferer(address) {
213
+ if (!address.startsWith("0x"))
214
+ address = "0x" + address;
215
+ return (0, Utils_1.toHex)(this.offerer) === (0, Utils_1.toHex)(address);
216
+ }
217
+ isRefundHandler(address) {
218
+ if (!address.startsWith("0x"))
219
+ address = "0x" + address;
220
+ return (0, Utils_1.toHex)(this.refundHandler) === (0, Utils_1.toHex)(address);
221
+ }
222
+ isClaimHandler(address) {
223
+ if (!address.startsWith("0x"))
224
+ address = "0x" + address;
225
+ return (0, Utils_1.toHex)(this.claimHandler) === (0, Utils_1.toHex)(address);
226
+ }
227
+ isClaimData(data) {
228
+ if (!data.startsWith("0x"))
229
+ data = "0x" + data;
230
+ return (0, Utils_1.toHex)(this.claimData) === (0, Utils_1.toHex)(data);
231
+ }
232
+ equals(other) {
233
+ return other.offerer.toLowerCase() === this.offerer.toLowerCase() &&
234
+ other.claimer.toLowerCase() === this.claimer.toLowerCase() &&
235
+ other.token.toLowerCase() === this.token.toLowerCase() &&
236
+ other.refundHandler.toLowerCase() === this.refundHandler.toLowerCase() &&
237
+ other.claimHandler.toLowerCase() === this.claimHandler.toLowerCase() &&
238
+ other.payIn === this.payIn &&
239
+ other.payOut === this.payOut &&
240
+ other.reputation === this.reputation &&
241
+ this.sequence === other.sequence &&
242
+ other.claimData.toLowerCase() === this.claimData.toLowerCase() &&
243
+ other.refundData.toLowerCase() === this.refundData.toLowerCase() &&
244
+ other.amount === this.amount &&
245
+ other.securityDeposit === this.securityDeposit &&
246
+ other.claimerBounty === this.claimerBounty;
247
+ }
248
+ toEscrowStruct() {
249
+ return {
250
+ offerer: this.offerer,
251
+ claimer: this.claimer,
252
+ token: this.token,
253
+ refund_handler: this.refundHandler,
254
+ claim_handler: this.claimHandler,
255
+ flags: this.getFlags(),
256
+ claim_data: this.claimData,
257
+ refund_data: this.refundData,
258
+ amount: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.amount)),
259
+ fee_token: this.feeToken,
260
+ security_deposit: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.securityDeposit)),
261
+ claimer_bounty: starknet_1.cairo.uint256((0, Utils_1.toBigInt)(this.claimerBounty)),
262
+ success_action: new starknet_1.CairoOption(starknet_1.CairoOptionVariant.None) //For now enforce no success action
263
+ };
264
+ }
265
+ static fromSerializedFeltArray(span, claimHandlerImpl) {
266
+ const offerer = (0, Utils_1.toHex)(span.shift());
267
+ const claimer = (0, Utils_1.toHex)(span.shift());
268
+ const token = (0, Utils_1.toHex)(span.shift());
269
+ const refundHandler = (0, Utils_1.toHex)(span.shift());
270
+ const claimHandler = (0, Utils_1.toHex)(span.shift());
271
+ const { payOut, payIn, reputation, sequence } = StarknetSwapData.toFlags(span.shift());
272
+ const claimData = (0, Utils_1.toHex)(span.shift());
273
+ const refundData = (0, Utils_1.toHex)(span.shift());
274
+ const amount = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
275
+ const feeToken = (0, Utils_1.toHex)(span.shift());
276
+ const securityDeposit = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
277
+ const claimerBounty = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
278
+ const hasSuccessAction = (0, Utils_1.toBigInt)(span.shift()) === 0n;
279
+ if (hasSuccessAction) {
280
+ const executionContract = (0, Utils_1.toHex)(span.shift());
281
+ const executionHash = (0, Utils_1.toHex)(span.shift());
282
+ const executionExpiry = (0, Utils_1.toBigInt)(span.shift());
283
+ const executionFee = (0, Utils_1.toBigInt)({ low: span.shift(), high: span.shift() });
284
+ // throw new Error("Success action not allowed!");
285
+ }
286
+ return new StarknetSwapData(offerer, claimer, token, refundHandler, claimHandler, payOut, payIn, reputation, sequence, claimData, refundData, amount, feeToken, securityDeposit, claimerBounty, claimHandlerImpl.getType(), null);
287
+ }
288
+ }
289
+ exports.StarknetSwapData = StarknetSwapData;
290
+ base_1.SwapData.deserializers["strk"] = StarknetSwapData;
@@ -1,10 +1,10 @@
1
- import { StarknetSwapContract } from "./StarknetSwapContract";
2
- import { TypedContractV2 } from "starknet";
3
- import { EscrowManagerAbi } from "./EscrowManagerAbi";
4
- import { StarknetChainInterface } from "../chain/StarknetChainInterface";
5
- import { StarknetContractModule } from "../contract/StarknetContractModule";
6
- export declare class StarknetSwapModule extends StarknetContractModule<typeof EscrowManagerAbi> {
7
- readonly contract: StarknetSwapContract;
8
- readonly swapContract: TypedContractV2<typeof EscrowManagerAbi>;
9
- constructor(chainInterface: StarknetChainInterface, contract: StarknetSwapContract);
10
- }
1
+ import { StarknetSwapContract } from "./StarknetSwapContract";
2
+ import { TypedContractV2 } from "starknet";
3
+ import { EscrowManagerAbi } from "./EscrowManagerAbi";
4
+ import { StarknetChainInterface } from "../chain/StarknetChainInterface";
5
+ import { StarknetContractModule } from "../contract/StarknetContractModule";
6
+ export declare class StarknetSwapModule extends StarknetContractModule<typeof EscrowManagerAbi> {
7
+ readonly contract: StarknetSwapContract;
8
+ readonly swapContract: TypedContractV2<typeof EscrowManagerAbi>;
9
+ constructor(chainInterface: StarknetChainInterface, contract: StarknetSwapContract);
10
+ }
@@ -1,11 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StarknetSwapModule = void 0;
4
- const StarknetContractModule_1 = require("../contract/StarknetContractModule");
5
- class StarknetSwapModule extends StarknetContractModule_1.StarknetContractModule {
6
- constructor(chainInterface, contract) {
7
- super(chainInterface, contract);
8
- this.swapContract = contract.contract;
9
- }
10
- }
11
- exports.StarknetSwapModule = StarknetSwapModule;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StarknetSwapModule = void 0;
4
+ const StarknetContractModule_1 = require("../contract/StarknetContractModule");
5
+ class StarknetSwapModule extends StarknetContractModule_1.StarknetContractModule {
6
+ constructor(chainInterface, contract) {
7
+ super(chainInterface, contract);
8
+ this.swapContract = contract.contract;
9
+ }
10
+ }
11
+ exports.StarknetSwapModule = StarknetSwapModule;
@@ -1,13 +1,13 @@
1
- import { StarknetSwapData } from "../StarknetSwapData";
2
- import { BigNumberish } from "starknet";
3
- import { StarknetTx } from "../../chain/modules/StarknetTransactions";
4
- import { StarknetGas } from "../../chain/modules/StarknetFees";
5
- export interface IHandler<TCommitmentData, TWitnessData> {
6
- readonly address: string;
7
- getCommitment(data: TCommitmentData): BigNumberish;
8
- getWitness(signer: string, data: StarknetSwapData, witnessData: TWitnessData, feeRate?: string): Promise<{
9
- initialTxns: StarknetTx[];
10
- witness: BigNumberish[];
11
- }>;
12
- getGas(data: StarknetSwapData): StarknetGas;
13
- }
1
+ import { StarknetSwapData } from "../StarknetSwapData";
2
+ import { BigNumberish } from "starknet";
3
+ import { StarknetTx } from "../../chain/modules/StarknetTransactions";
4
+ import { StarknetGas } from "../../chain/modules/StarknetFees";
5
+ export interface IHandler<TCommitmentData, TWitnessData> {
6
+ readonly address: string;
7
+ getCommitment(data: TCommitmentData): BigNumberish;
8
+ getWitness(signer: string, data: StarknetSwapData, witnessData: TWitnessData, feeRate?: string): Promise<{
9
+ initialTxns: StarknetTx[];
10
+ witness: BigNumberish[];
11
+ }>;
12
+ getGas(data: StarknetSwapData): StarknetGas;
13
+ }