eth-twc-sdk-js 0.1.0

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 (54) hide show
  1. package/README.md +29 -0
  2. package/dist/abi.cjs +286 -0
  3. package/dist/abi.d.cts +419 -0
  4. package/dist/abi.d.ts +419 -0
  5. package/dist/abi.js +259 -0
  6. package/dist/config.cjs +41 -0
  7. package/dist/config.d.cts +14 -0
  8. package/dist/config.d.ts +14 -0
  9. package/dist/config.js +11 -0
  10. package/dist/selfTransfer/batch/index.cjs +373 -0
  11. package/dist/selfTransfer/batch/index.d.cts +24 -0
  12. package/dist/selfTransfer/batch/index.d.ts +24 -0
  13. package/dist/selfTransfer/batch/index.js +345 -0
  14. package/dist/selfTransfer/single/index.cjs +360 -0
  15. package/dist/selfTransfer/single/index.d.cts +20 -0
  16. package/dist/selfTransfer/single/index.d.ts +20 -0
  17. package/dist/selfTransfer/single/index.js +332 -0
  18. package/dist/selfTransfer/unified/index.cjs +372 -0
  19. package/dist/selfTransfer/unified/index.d.cts +24 -0
  20. package/dist/selfTransfer/unified/index.d.ts +24 -0
  21. package/dist/selfTransfer/unified/index.js +344 -0
  22. package/dist/signatureTransfer/batch/index.cjs +545 -0
  23. package/dist/signatureTransfer/batch/index.d.cts +100 -0
  24. package/dist/signatureTransfer/batch/index.d.ts +100 -0
  25. package/dist/signatureTransfer/batch/index.js +514 -0
  26. package/dist/signatureTransfer/cancelAuthorization/index.cjs +491 -0
  27. package/dist/signatureTransfer/cancelAuthorization/index.d.cts +49 -0
  28. package/dist/signatureTransfer/cancelAuthorization/index.d.ts +49 -0
  29. package/dist/signatureTransfer/cancelAuthorization/index.js +460 -0
  30. package/dist/signatureTransfer/single/index.cjs +528 -0
  31. package/dist/signatureTransfer/single/index.d.cts +84 -0
  32. package/dist/signatureTransfer/single/index.d.ts +84 -0
  33. package/dist/signatureTransfer/single/index.js +497 -0
  34. package/dist/signatureTransfer/unified/index.cjs +541 -0
  35. package/dist/signatureTransfer/unified/index.d.cts +95 -0
  36. package/dist/signatureTransfer/unified/index.d.ts +95 -0
  37. package/dist/signatureTransfer/unified/index.js +510 -0
  38. package/dist/types/transferDetail.cjs +62 -0
  39. package/dist/types/transferDetail.d.cts +15 -0
  40. package/dist/types/transferDetail.d.ts +15 -0
  41. package/dist/types/transferDetail.js +36 -0
  42. package/dist/types/utils.cjs +52 -0
  43. package/dist/types/utils.d.cts +12 -0
  44. package/dist/types/utils.d.ts +12 -0
  45. package/dist/types/utils.js +23 -0
  46. package/dist/utils.cjs +123 -0
  47. package/dist/utils.d.cts +21 -0
  48. package/dist/utils.d.ts +21 -0
  49. package/dist/utils.js +90 -0
  50. package/dist/verify.cjs +366 -0
  51. package/dist/verify.d.cts +433 -0
  52. package/dist/verify.d.ts +433 -0
  53. package/dist/verify.js +339 -0
  54. package/package.json +100 -0
@@ -0,0 +1,366 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // verify.ts
21
+ var verify_exports = {};
22
+ __export(verify_exports, {
23
+ getTransferWithCommitmentSentEventLogs: () => getTransferWithCommitmentSentEventLogs,
24
+ verify: () => verify,
25
+ verifyArgsSchema: () => verifyArgsSchema
26
+ });
27
+ module.exports = __toCommonJS(verify_exports);
28
+ var import_arktype2 = require("arktype");
29
+ var import_viem = require("viem");
30
+
31
+ // ../contracts/abi/generated.ts
32
+ var transferWithCommitmentAbi = [
33
+ {
34
+ type: "constructor",
35
+ inputs: [
36
+ { name: "name", internalType: "string", type: "string" },
37
+ { name: "version", internalType: "string", type: "string" }
38
+ ],
39
+ stateMutability: "nonpayable"
40
+ },
41
+ {
42
+ type: "function",
43
+ inputs: [],
44
+ name: "BATCH_TRANSFER_WITH_COMMIT_TYPEHASH",
45
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
46
+ stateMutability: "view"
47
+ },
48
+ {
49
+ type: "function",
50
+ inputs: [],
51
+ name: "CANCEL_AUTHORIZATION_TYPEHASH",
52
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
53
+ stateMutability: "view"
54
+ },
55
+ {
56
+ type: "function",
57
+ inputs: [],
58
+ name: "TRANSFER_WITH_COMMIT_TYPEHASH",
59
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
60
+ stateMutability: "view"
61
+ },
62
+ {
63
+ type: "function",
64
+ inputs: [],
65
+ name: "UNI_COMMIT_TRANSFER_TYPEHASH",
66
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
67
+ stateMutability: "view"
68
+ },
69
+ {
70
+ type: "function",
71
+ inputs: [
72
+ { name: "authorizer", internalType: "address", type: "address" },
73
+ { name: "commitment", internalType: "bytes32", type: "bytes32" },
74
+ { name: "signature", internalType: "bytes", type: "bytes" }
75
+ ],
76
+ name: "cancelAuthorization",
77
+ outputs: [],
78
+ stateMutability: "nonpayable"
79
+ },
80
+ {
81
+ type: "function",
82
+ inputs: [
83
+ { name: "payer", internalType: "address", type: "address" },
84
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
85
+ ],
86
+ name: "commitmentState",
87
+ outputs: [{ name: "", internalType: "bool", type: "bool" }],
88
+ stateMutability: "view"
89
+ },
90
+ {
91
+ type: "function",
92
+ inputs: [],
93
+ name: "eip712Domain",
94
+ outputs: [
95
+ { name: "fields", internalType: "bytes1", type: "bytes1" },
96
+ { name: "name", internalType: "string", type: "string" },
97
+ { name: "version", internalType: "string", type: "string" },
98
+ { name: "chainId", internalType: "uint256", type: "uint256" },
99
+ { name: "verifyingContract", internalType: "address", type: "address" },
100
+ { name: "salt", internalType: "bytes32", type: "bytes32" },
101
+ { name: "extensions", internalType: "uint256[]", type: "uint256[]" }
102
+ ],
103
+ stateMutability: "view"
104
+ },
105
+ {
106
+ type: "function",
107
+ inputs: [
108
+ { name: "token", internalType: "address", type: "address" },
109
+ { name: "to", internalType: "address", type: "address" },
110
+ { name: "value", internalType: "uint256", type: "uint256" },
111
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
112
+ ],
113
+ name: "transfer",
114
+ outputs: [],
115
+ stateMutability: "nonpayable"
116
+ },
117
+ {
118
+ type: "function",
119
+ inputs: [
120
+ {
121
+ name: "details",
122
+ internalType: "struct TransferDetail[]",
123
+ type: "tuple[]",
124
+ components: [
125
+ { name: "to", internalType: "address", type: "address" },
126
+ { name: "token", internalType: "address", type: "address" },
127
+ { name: "value", internalType: "uint256", type: "uint256" }
128
+ ]
129
+ },
130
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
131
+ ],
132
+ name: "transfer",
133
+ outputs: [],
134
+ stateMutability: "nonpayable"
135
+ },
136
+ {
137
+ type: "function",
138
+ inputs: [
139
+ {
140
+ name: "details",
141
+ internalType: "struct CommittedTransferDetail[]",
142
+ type: "tuple[]",
143
+ components: [
144
+ { name: "to", internalType: "address", type: "address" },
145
+ { name: "token", internalType: "address", type: "address" },
146
+ { name: "value", internalType: "uint256", type: "uint256" },
147
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
148
+ ]
149
+ }
150
+ ],
151
+ name: "transfer",
152
+ outputs: [],
153
+ stateMutability: "nonpayable"
154
+ },
155
+ {
156
+ type: "function",
157
+ inputs: [
158
+ { name: "from", internalType: "address", type: "address" },
159
+ {
160
+ name: "details",
161
+ internalType: "struct TransferDetail[]",
162
+ type: "tuple[]",
163
+ components: [
164
+ { name: "to", internalType: "address", type: "address" },
165
+ { name: "token", internalType: "address", type: "address" },
166
+ { name: "value", internalType: "uint256", type: "uint256" }
167
+ ]
168
+ },
169
+ { name: "validAfter", internalType: "uint256", type: "uint256" },
170
+ { name: "validBefore", internalType: "uint256", type: "uint256" },
171
+ { name: "commitment", internalType: "bytes32", type: "bytes32" },
172
+ { name: "signature", internalType: "bytes", type: "bytes" }
173
+ ],
174
+ name: "transferWithAuthorization",
175
+ outputs: [],
176
+ stateMutability: "nonpayable"
177
+ },
178
+ {
179
+ type: "function",
180
+ inputs: [
181
+ { name: "from", internalType: "address", type: "address" },
182
+ {
183
+ name: "details",
184
+ internalType: "struct CommittedTransferDetail[]",
185
+ type: "tuple[]",
186
+ components: [
187
+ { name: "to", internalType: "address", type: "address" },
188
+ { name: "token", internalType: "address", type: "address" },
189
+ { name: "value", internalType: "uint256", type: "uint256" },
190
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
191
+ ]
192
+ },
193
+ { name: "validAfter", internalType: "uint256", type: "uint256" },
194
+ { name: "validBefore", internalType: "uint256", type: "uint256" },
195
+ { name: "batchCommitment", internalType: "bytes32", type: "bytes32" },
196
+ { name: "signature", internalType: "bytes", type: "bytes" }
197
+ ],
198
+ name: "transferWithAuthorization",
199
+ outputs: [],
200
+ stateMutability: "nonpayable"
201
+ },
202
+ {
203
+ type: "function",
204
+ inputs: [
205
+ { name: "from", internalType: "address", type: "address" },
206
+ { name: "to", internalType: "address", type: "address" },
207
+ { name: "token", internalType: "address", type: "address" },
208
+ { name: "value", internalType: "uint256", type: "uint256" },
209
+ { name: "validAfter", internalType: "uint256", type: "uint256" },
210
+ { name: "validBefore", internalType: "uint256", type: "uint256" },
211
+ { name: "commitment", internalType: "bytes32", type: "bytes32" },
212
+ { name: "signature", internalType: "bytes", type: "bytes" }
213
+ ],
214
+ name: "transferWithAuthorization",
215
+ outputs: [],
216
+ stateMutability: "nonpayable"
217
+ },
218
+ {
219
+ type: "event",
220
+ anonymous: false,
221
+ inputs: [
222
+ {
223
+ name: "payer",
224
+ internalType: "address",
225
+ type: "address",
226
+ indexed: true
227
+ },
228
+ {
229
+ name: "commitment",
230
+ internalType: "bytes32",
231
+ type: "bytes32",
232
+ indexed: true
233
+ }
234
+ ],
235
+ name: "CommitmentUsed"
236
+ },
237
+ { type: "event", anonymous: false, inputs: [], name: "EIP712DomainChanged" },
238
+ {
239
+ type: "event",
240
+ anonymous: false,
241
+ inputs: [
242
+ { name: "from", internalType: "address", type: "address", indexed: true },
243
+ { name: "to", internalType: "address", type: "address", indexed: true },
244
+ {
245
+ name: "token",
246
+ internalType: "address",
247
+ type: "address",
248
+ indexed: true
249
+ },
250
+ {
251
+ name: "value",
252
+ internalType: "uint256",
253
+ type: "uint256",
254
+ indexed: false
255
+ },
256
+ {
257
+ name: "commitment",
258
+ internalType: "bytes32",
259
+ type: "bytes32",
260
+ indexed: false
261
+ }
262
+ ],
263
+ name: "TransferWithCommitmentSent"
264
+ },
265
+ {
266
+ type: "error",
267
+ inputs: [
268
+ { name: "token", internalType: "address", type: "address" },
269
+ { name: "from", internalType: "address", type: "address" },
270
+ { name: "value", internalType: "uint256", type: "uint256" }
271
+ ],
272
+ name: "AllowanceNotEnough"
273
+ },
274
+ { type: "error", inputs: [], name: "InvalidShortString" },
275
+ { type: "error", inputs: [], name: "ReentrancyGuardReentrantCall" },
276
+ {
277
+ type: "error",
278
+ inputs: [{ name: "token", internalType: "address", type: "address" }],
279
+ name: "SafeERC20FailedOperation"
280
+ },
281
+ {
282
+ type: "error",
283
+ inputs: [{ name: "str", internalType: "string", type: "string" }],
284
+ name: "StringTooLong"
285
+ }
286
+ ];
287
+
288
+ // twcConstants.ts
289
+ var transferWithCommitmentAddress = "0x5C260DD537A9c23Bbd42493e59F3CeA7da2DbC71";
290
+
291
+ // types/utils.ts
292
+ var import_arktype = require("arktype");
293
+ var UINT256_MAX = (1n << 256n) - 1n;
294
+ var uint256 = (0, import_arktype.type)("bigint").filter(
295
+ (v, ctx) => v <= UINT256_MAX && v >= 0n ? true : ctx.reject(`must be: 0n <= value <= ${UINT256_MAX}`)
296
+ );
297
+ var reBytes32 = /^0x[0-9a-fA-F]{64}$/;
298
+ var reBytes = /^0x[0-9a-fA-F]+$/;
299
+ var reAddress = /^0x[0-9a-fA-F]{40}$/;
300
+ var bytes32 = (0, import_arktype.type)("string").narrow(
301
+ (s) => reBytes32.test(s)
302
+ );
303
+ var bytes = (0, import_arktype.type)("string").narrow((s) => reBytes.test(s));
304
+ var address = (0, import_arktype.type)("string").narrow(
305
+ (s) => reAddress.test(s)
306
+ );
307
+
308
+ // utils.ts
309
+ async function assertTransferContractDeployed(publicClient, contractAddress = transferWithCommitmentAddress) {
310
+ const code = await publicClient.getCode({ address: contractAddress });
311
+ if (code === void 0 || code === "0x") {
312
+ throw new Error(
313
+ `TransferWithCommitment is not deployed at ${contractAddress} on this chain (no contract code). Deploy with CREATE2 (see contracts/TWC_CREATE2.md) or switch network.`
314
+ );
315
+ }
316
+ }
317
+
318
+ // verify.ts
319
+ var verifyArgsSchema = (0, import_arktype2.type)({
320
+ from: address,
321
+ token: address,
322
+ to: address,
323
+ value: uint256,
324
+ commitment: bytes32
325
+ });
326
+ var getTransferWithCommitmentSentEventLogs = async (publicClient, hash) => {
327
+ await assertTransferContractDeployed(publicClient);
328
+ const receipt = await publicClient.getTransactionReceipt({ hash });
329
+ const logs = (0, import_viem.parseEventLogs)({
330
+ abi: transferWithCommitmentAbi,
331
+ eventName: "TransferWithCommitmentSent",
332
+ logs: receipt.logs
333
+ });
334
+ return logs.filter(
335
+ (log) => log.address.toLowerCase() === transferWithCommitmentAddress.toLowerCase()
336
+ );
337
+ };
338
+ var verify = async (publicClient, hash, args) => {
339
+ verifyArgsSchema.assert(args);
340
+ await assertTransferContractDeployed(publicClient);
341
+ const receipt = await publicClient.getTransactionReceipt({ hash });
342
+ const logs = (0, import_viem.parseEventLogs)({
343
+ abi: transferWithCommitmentAbi,
344
+ eventName: "TransferWithCommitmentSent",
345
+ args: {
346
+ from: args.from,
347
+ token: args.token,
348
+ to: args.to,
349
+ value: args.value,
350
+ commitment: args.commitment
351
+ },
352
+ logs: receipt.logs
353
+ });
354
+ const fromOurContract = logs.filter(
355
+ (log) => log.address.toLowerCase() === transferWithCommitmentAddress.toLowerCase()
356
+ );
357
+ if (fromOurContract.length === 0) {
358
+ throw new Error("TransferWithCommitmentSent event not found");
359
+ }
360
+ };
361
+ // Annotate the CommonJS export names for ESM import in node:
362
+ 0 && (module.exports = {
363
+ getTransferWithCommitmentSentEventLogs,
364
+ verify,
365
+ verifyArgsSchema
366
+ });