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,344 @@
1
+ // twcConstants.ts
2
+ var transferWithCommitmentAddress = "0x5C260DD537A9c23Bbd42493e59F3CeA7da2DbC71";
3
+
4
+ // ../contracts/abi/generated.ts
5
+ var transferWithCommitmentAbi = [
6
+ {
7
+ type: "constructor",
8
+ inputs: [
9
+ { name: "name", internalType: "string", type: "string" },
10
+ { name: "version", internalType: "string", type: "string" }
11
+ ],
12
+ stateMutability: "nonpayable"
13
+ },
14
+ {
15
+ type: "function",
16
+ inputs: [],
17
+ name: "BATCH_TRANSFER_WITH_COMMIT_TYPEHASH",
18
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
19
+ stateMutability: "view"
20
+ },
21
+ {
22
+ type: "function",
23
+ inputs: [],
24
+ name: "CANCEL_AUTHORIZATION_TYPEHASH",
25
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
26
+ stateMutability: "view"
27
+ },
28
+ {
29
+ type: "function",
30
+ inputs: [],
31
+ name: "TRANSFER_WITH_COMMIT_TYPEHASH",
32
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
33
+ stateMutability: "view"
34
+ },
35
+ {
36
+ type: "function",
37
+ inputs: [],
38
+ name: "UNI_COMMIT_TRANSFER_TYPEHASH",
39
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
40
+ stateMutability: "view"
41
+ },
42
+ {
43
+ type: "function",
44
+ inputs: [
45
+ { name: "authorizer", internalType: "address", type: "address" },
46
+ { name: "commitment", internalType: "bytes32", type: "bytes32" },
47
+ { name: "signature", internalType: "bytes", type: "bytes" }
48
+ ],
49
+ name: "cancelAuthorization",
50
+ outputs: [],
51
+ stateMutability: "nonpayable"
52
+ },
53
+ {
54
+ type: "function",
55
+ inputs: [
56
+ { name: "payer", internalType: "address", type: "address" },
57
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
58
+ ],
59
+ name: "commitmentState",
60
+ outputs: [{ name: "", internalType: "bool", type: "bool" }],
61
+ stateMutability: "view"
62
+ },
63
+ {
64
+ type: "function",
65
+ inputs: [],
66
+ name: "eip712Domain",
67
+ outputs: [
68
+ { name: "fields", internalType: "bytes1", type: "bytes1" },
69
+ { name: "name", internalType: "string", type: "string" },
70
+ { name: "version", internalType: "string", type: "string" },
71
+ { name: "chainId", internalType: "uint256", type: "uint256" },
72
+ { name: "verifyingContract", internalType: "address", type: "address" },
73
+ { name: "salt", internalType: "bytes32", type: "bytes32" },
74
+ { name: "extensions", internalType: "uint256[]", type: "uint256[]" }
75
+ ],
76
+ stateMutability: "view"
77
+ },
78
+ {
79
+ type: "function",
80
+ inputs: [
81
+ { name: "token", internalType: "address", type: "address" },
82
+ { name: "to", internalType: "address", type: "address" },
83
+ { name: "value", internalType: "uint256", type: "uint256" },
84
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
85
+ ],
86
+ name: "transfer",
87
+ outputs: [],
88
+ stateMutability: "nonpayable"
89
+ },
90
+ {
91
+ type: "function",
92
+ inputs: [
93
+ {
94
+ name: "details",
95
+ internalType: "struct TransferDetail[]",
96
+ type: "tuple[]",
97
+ components: [
98
+ { name: "to", internalType: "address", type: "address" },
99
+ { name: "token", internalType: "address", type: "address" },
100
+ { name: "value", internalType: "uint256", type: "uint256" }
101
+ ]
102
+ },
103
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
104
+ ],
105
+ name: "transfer",
106
+ outputs: [],
107
+ stateMutability: "nonpayable"
108
+ },
109
+ {
110
+ type: "function",
111
+ inputs: [
112
+ {
113
+ name: "details",
114
+ internalType: "struct CommittedTransferDetail[]",
115
+ type: "tuple[]",
116
+ components: [
117
+ { name: "to", internalType: "address", type: "address" },
118
+ { name: "token", internalType: "address", type: "address" },
119
+ { name: "value", internalType: "uint256", type: "uint256" },
120
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
121
+ ]
122
+ }
123
+ ],
124
+ name: "transfer",
125
+ outputs: [],
126
+ stateMutability: "nonpayable"
127
+ },
128
+ {
129
+ type: "function",
130
+ inputs: [
131
+ { name: "from", internalType: "address", type: "address" },
132
+ {
133
+ name: "details",
134
+ internalType: "struct TransferDetail[]",
135
+ type: "tuple[]",
136
+ components: [
137
+ { name: "to", internalType: "address", type: "address" },
138
+ { name: "token", internalType: "address", type: "address" },
139
+ { name: "value", internalType: "uint256", type: "uint256" }
140
+ ]
141
+ },
142
+ { name: "validAfter", internalType: "uint256", type: "uint256" },
143
+ { name: "validBefore", internalType: "uint256", type: "uint256" },
144
+ { name: "commitment", internalType: "bytes32", type: "bytes32" },
145
+ { name: "signature", internalType: "bytes", type: "bytes" }
146
+ ],
147
+ name: "transferWithAuthorization",
148
+ outputs: [],
149
+ stateMutability: "nonpayable"
150
+ },
151
+ {
152
+ type: "function",
153
+ inputs: [
154
+ { name: "from", internalType: "address", type: "address" },
155
+ {
156
+ name: "details",
157
+ internalType: "struct CommittedTransferDetail[]",
158
+ type: "tuple[]",
159
+ components: [
160
+ { name: "to", internalType: "address", type: "address" },
161
+ { name: "token", internalType: "address", type: "address" },
162
+ { name: "value", internalType: "uint256", type: "uint256" },
163
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
164
+ ]
165
+ },
166
+ { name: "validAfter", internalType: "uint256", type: "uint256" },
167
+ { name: "validBefore", internalType: "uint256", type: "uint256" },
168
+ { name: "batchCommitment", internalType: "bytes32", type: "bytes32" },
169
+ { name: "signature", internalType: "bytes", type: "bytes" }
170
+ ],
171
+ name: "transferWithAuthorization",
172
+ outputs: [],
173
+ stateMutability: "nonpayable"
174
+ },
175
+ {
176
+ type: "function",
177
+ inputs: [
178
+ { name: "from", internalType: "address", type: "address" },
179
+ { name: "to", internalType: "address", type: "address" },
180
+ { name: "token", internalType: "address", type: "address" },
181
+ { name: "value", internalType: "uint256", type: "uint256" },
182
+ { name: "validAfter", internalType: "uint256", type: "uint256" },
183
+ { name: "validBefore", internalType: "uint256", type: "uint256" },
184
+ { name: "commitment", internalType: "bytes32", type: "bytes32" },
185
+ { name: "signature", internalType: "bytes", type: "bytes" }
186
+ ],
187
+ name: "transferWithAuthorization",
188
+ outputs: [],
189
+ stateMutability: "nonpayable"
190
+ },
191
+ {
192
+ type: "event",
193
+ anonymous: false,
194
+ inputs: [
195
+ {
196
+ name: "payer",
197
+ internalType: "address",
198
+ type: "address",
199
+ indexed: true
200
+ },
201
+ {
202
+ name: "commitment",
203
+ internalType: "bytes32",
204
+ type: "bytes32",
205
+ indexed: true
206
+ }
207
+ ],
208
+ name: "CommitmentUsed"
209
+ },
210
+ { type: "event", anonymous: false, inputs: [], name: "EIP712DomainChanged" },
211
+ {
212
+ type: "event",
213
+ anonymous: false,
214
+ inputs: [
215
+ { name: "from", internalType: "address", type: "address", indexed: true },
216
+ { name: "to", internalType: "address", type: "address", indexed: true },
217
+ {
218
+ name: "token",
219
+ internalType: "address",
220
+ type: "address",
221
+ indexed: true
222
+ },
223
+ {
224
+ name: "value",
225
+ internalType: "uint256",
226
+ type: "uint256",
227
+ indexed: false
228
+ },
229
+ {
230
+ name: "commitment",
231
+ internalType: "bytes32",
232
+ type: "bytes32",
233
+ indexed: false
234
+ }
235
+ ],
236
+ name: "TransferWithCommitmentSent"
237
+ },
238
+ {
239
+ type: "error",
240
+ inputs: [
241
+ { name: "token", internalType: "address", type: "address" },
242
+ { name: "from", internalType: "address", type: "address" },
243
+ { name: "value", internalType: "uint256", type: "uint256" }
244
+ ],
245
+ name: "AllowanceNotEnough"
246
+ },
247
+ { type: "error", inputs: [], name: "InvalidShortString" },
248
+ { type: "error", inputs: [], name: "ReentrancyGuardReentrantCall" },
249
+ {
250
+ type: "error",
251
+ inputs: [{ name: "token", internalType: "address", type: "address" }],
252
+ name: "SafeERC20FailedOperation"
253
+ },
254
+ {
255
+ type: "error",
256
+ inputs: [{ name: "str", internalType: "string", type: "string" }],
257
+ name: "StringTooLong"
258
+ }
259
+ ];
260
+
261
+ // utils.ts
262
+ var assertPublicWalletSameChain = (publicClient, wallet) => {
263
+ const publicId = publicClient.chain?.id;
264
+ const walletId = wallet.chain?.id;
265
+ if (publicId === void 0 || walletId === void 0) {
266
+ throw new Error(
267
+ "Chain is not set on public client and/or wallet client"
268
+ );
269
+ }
270
+ if (publicId !== walletId) {
271
+ throw new Error(
272
+ `PublicClient and WalletClient chain mismatch: ${publicId} vs ${walletId}`
273
+ );
274
+ }
275
+ };
276
+ async function assertTransferContractDeployed(publicClient, contractAddress = transferWithCommitmentAddress) {
277
+ const code = await publicClient.getCode({ address: contractAddress });
278
+ if (code === void 0 || code === "0x") {
279
+ throw new Error(
280
+ `TransferWithCommitment is not deployed at ${contractAddress} on this chain (no contract code). Deploy with CREATE2 (see contracts/TWC_CREATE2.md) or switch network.`
281
+ );
282
+ }
283
+ }
284
+
285
+ // selfTransfer/unified/types.ts
286
+ import { type as type3 } from "arktype";
287
+
288
+ // types/utils.ts
289
+ import { type } from "arktype";
290
+ var UINT256_MAX = (1n << 256n) - 1n;
291
+ var uint256 = type("bigint").filter(
292
+ (v, ctx) => v <= UINT256_MAX && v >= 0n ? true : ctx.reject(`must be: 0n <= value <= ${UINT256_MAX}`)
293
+ );
294
+ var reBytes32 = /^0x[0-9a-fA-F]{64}$/;
295
+ var reBytes = /^0x[0-9a-fA-F]+$/;
296
+ var reAddress = /^0x[0-9a-fA-F]{40}$/;
297
+ var bytes32 = type("string").narrow(
298
+ (s) => reBytes32.test(s)
299
+ );
300
+ var bytes = type("string").narrow((s) => reBytes.test(s));
301
+ var address = type("string").narrow(
302
+ (s) => reAddress.test(s)
303
+ );
304
+
305
+ // types/transferDetail.ts
306
+ import { type as type2 } from "arktype";
307
+ var transferDetail = type2({
308
+ to: address,
309
+ token: address,
310
+ value: uint256
311
+ });
312
+ var committedTransferDetail = type2({
313
+ to: address,
314
+ token: address,
315
+ value: uint256,
316
+ commitment: bytes32
317
+ });
318
+
319
+ // selfTransfer/unified/types.ts
320
+ var unifiedTransfer = type3({
321
+ details: transferDetail.array(),
322
+ commitment: bytes32
323
+ });
324
+ var argsSchema = unifiedTransfer;
325
+
326
+ // selfTransfer/unified/sendTx.ts
327
+ var sendTx = async (publicClient, wallet, account, args) => {
328
+ assertPublicWalletSameChain(publicClient, wallet);
329
+ await assertTransferContractDeployed(publicClient);
330
+ argsSchema.assert(args);
331
+ const { request } = await publicClient.simulateContract({
332
+ address: transferWithCommitmentAddress,
333
+ abi: transferWithCommitmentAbi,
334
+ functionName: "transfer",
335
+ args: [args.details, args.commitment],
336
+ account
337
+ });
338
+ const hash = await wallet.writeContract(request);
339
+ return hash;
340
+ };
341
+ export {
342
+ argsSchema,
343
+ sendTx
344
+ };