@invisi-labs/contracts 1.0.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.
package/dist/index.cjs ADDED
@@ -0,0 +1,572 @@
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
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ invisiProtocolAbi: () => invisiProtocolAbi
24
+ });
25
+ module.exports = __toCommonJS(index_exports);
26
+
27
+ // src/abis/InvisiProtocol.ts
28
+ var invisiProtocolAbi = [
29
+ // ── Write functions ──────────────────────────────────────────────────────
30
+ {
31
+ type: "function",
32
+ name: "payOpen",
33
+ stateMutability: "nonpayable",
34
+ inputs: [
35
+ { name: "identityCommitment", type: "bytes32" },
36
+ {
37
+ name: "asset",
38
+ type: "tuple",
39
+ components: [
40
+ { name: "addr", type: "address" },
41
+ { name: "amount", type: "uint256" }
42
+ ]
43
+ },
44
+ { name: "nonce", type: "bytes32" },
45
+ { name: "treeId", type: "uint256" },
46
+ { name: "refundLink", type: "bytes32" }
47
+ ],
48
+ outputs: []
49
+ },
50
+ {
51
+ type: "function",
52
+ name: "payBlind",
53
+ stateMutability: "nonpayable",
54
+ inputs: [
55
+ { name: "proof", type: "bytes" },
56
+ { name: "paymentCommitment", type: "bytes32" },
57
+ { name: "changeCommitment", type: "bytes32" },
58
+ { name: "inputAmount", type: "uint256" },
59
+ { name: "tokenAddress", type: "address" },
60
+ { name: "treeId", type: "uint256" },
61
+ { name: "refundLink", type: "bytes32" }
62
+ ],
63
+ outputs: []
64
+ },
65
+ {
66
+ type: "function",
67
+ name: "withdraw",
68
+ stateMutability: "nonpayable",
69
+ inputs: [
70
+ { name: "proof", type: "bytes" },
71
+ { name: "merkleRoot", type: "bytes32" },
72
+ { name: "nullifiers", type: "bytes32[]" },
73
+ { name: "totalAmount", type: "uint256" },
74
+ { name: "receivingAddress", type: "address" },
75
+ { name: "tokenAddress", type: "address" },
76
+ { name: "treeId", type: "uint256" }
77
+ ],
78
+ outputs: []
79
+ },
80
+ // ── Meta-transaction (WithSig) ────────────────────────────────────────
81
+ {
82
+ type: "function",
83
+ name: "payOpenWithSig",
84
+ stateMutability: "nonpayable",
85
+ inputs: [
86
+ { name: "identityCommitment", type: "bytes32" },
87
+ {
88
+ name: "asset",
89
+ type: "tuple",
90
+ components: [
91
+ { name: "addr", type: "address" },
92
+ { name: "amount", type: "uint256" }
93
+ ]
94
+ },
95
+ { name: "nonce", type: "bytes32" },
96
+ { name: "treeId", type: "uint256" },
97
+ { name: "refundLink", type: "bytes32" },
98
+ {
99
+ name: "permit",
100
+ type: "tuple",
101
+ components: [
102
+ { name: "deadline", type: "uint256" },
103
+ { name: "v", type: "uint8" },
104
+ { name: "r", type: "bytes32" },
105
+ { name: "s", type: "bytes32" }
106
+ ]
107
+ },
108
+ { name: "signer", type: "address" },
109
+ { name: "sigNonce", type: "uint256" },
110
+ { name: "deadline", type: "uint256" },
111
+ { name: "signature", type: "bytes" }
112
+ ],
113
+ outputs: []
114
+ },
115
+ {
116
+ type: "function",
117
+ name: "payBlindWithSig",
118
+ stateMutability: "nonpayable",
119
+ inputs: [
120
+ { name: "proof", type: "bytes" },
121
+ { name: "paymentCommitment", type: "bytes32" },
122
+ { name: "changeCommitment", type: "bytes32" },
123
+ { name: "inputAmount", type: "uint256" },
124
+ { name: "tokenAddress", type: "address" },
125
+ { name: "treeId", type: "uint256" },
126
+ { name: "refundLink", type: "bytes32" },
127
+ {
128
+ name: "meta",
129
+ type: "tuple",
130
+ components: [
131
+ {
132
+ name: "permit",
133
+ type: "tuple",
134
+ components: [
135
+ { name: "deadline", type: "uint256" },
136
+ { name: "v", type: "uint8" },
137
+ { name: "r", type: "bytes32" },
138
+ { name: "s", type: "bytes32" }
139
+ ]
140
+ },
141
+ { name: "signer", type: "address" },
142
+ { name: "sigNonce", type: "uint256" },
143
+ { name: "deadline", type: "uint256" },
144
+ { name: "signature", type: "bytes" }
145
+ ]
146
+ }
147
+ ],
148
+ outputs: []
149
+ },
150
+ {
151
+ type: "function",
152
+ name: "depositCreditWithSig",
153
+ stateMutability: "nonpayable",
154
+ inputs: [
155
+ { name: "identityCommitment", type: "bytes32" },
156
+ { name: "payerCommitment", type: "bytes32" },
157
+ {
158
+ name: "asset",
159
+ type: "tuple",
160
+ components: [
161
+ { name: "addr", type: "address" },
162
+ { name: "amount", type: "uint256" }
163
+ ]
164
+ },
165
+ { name: "nonce", type: "bytes32" },
166
+ { name: "expiry", type: "uint256" },
167
+ { name: "nullifierKeyHash", type: "bytes32" },
168
+ { name: "treeId", type: "uint256" },
169
+ {
170
+ name: "meta",
171
+ type: "tuple",
172
+ components: [
173
+ {
174
+ name: "permit",
175
+ type: "tuple",
176
+ components: [
177
+ { name: "deadline", type: "uint256" },
178
+ { name: "v", type: "uint8" },
179
+ { name: "r", type: "bytes32" },
180
+ { name: "s", type: "bytes32" }
181
+ ]
182
+ },
183
+ { name: "signer", type: "address" },
184
+ { name: "sigNonce", type: "uint256" },
185
+ { name: "deadline", type: "uint256" },
186
+ { name: "signature", type: "bytes" }
187
+ ]
188
+ }
189
+ ],
190
+ outputs: []
191
+ },
192
+ {
193
+ type: "function",
194
+ name: "invalidateNonce",
195
+ stateMutability: "nonpayable",
196
+ inputs: [],
197
+ outputs: []
198
+ },
199
+ // ── View functions ───────────────────────────────────────────────────────
200
+ {
201
+ type: "function",
202
+ name: "getTreeCount",
203
+ stateMutability: "view",
204
+ inputs: [],
205
+ outputs: [{ name: "count", type: "uint256" }]
206
+ },
207
+ {
208
+ type: "function",
209
+ name: "getPaymentTreeRoot",
210
+ stateMutability: "view",
211
+ inputs: [{ name: "treeId", type: "uint256" }],
212
+ outputs: [{ name: "", type: "bytes32" }]
213
+ },
214
+ {
215
+ type: "function",
216
+ name: "isTreeFull",
217
+ stateMutability: "view",
218
+ inputs: [{ name: "treeId", type: "uint256" }],
219
+ outputs: [{ name: "", type: "bool" }]
220
+ },
221
+ {
222
+ type: "function",
223
+ name: "isNullifierSpent",
224
+ stateMutability: "view",
225
+ inputs: [{ name: "nullifier", type: "bytes32" }],
226
+ outputs: [{ name: "", type: "bool" }]
227
+ },
228
+ {
229
+ type: "function",
230
+ name: "nonces",
231
+ stateMutability: "view",
232
+ inputs: [{ name: "signer", type: "address" }],
233
+ outputs: [{ name: "", type: "uint256" }]
234
+ },
235
+ {
236
+ type: "function",
237
+ name: "isCommitmentPaid",
238
+ stateMutability: "view",
239
+ inputs: [{ name: "paymentCommitment", type: "bytes32" }],
240
+ outputs: [{ name: "", type: "bool" }]
241
+ },
242
+ {
243
+ type: "function",
244
+ name: "VERSION",
245
+ stateMutability: "view",
246
+ inputs: [],
247
+ outputs: [{ name: "", type: "uint256" }]
248
+ },
249
+ {
250
+ type: "function",
251
+ name: "emergencyAdmin",
252
+ stateMutability: "view",
253
+ inputs: [],
254
+ outputs: [{ name: "", type: "address" }]
255
+ },
256
+ {
257
+ type: "function",
258
+ name: "timelockAdmin",
259
+ stateMutability: "view",
260
+ inputs: [],
261
+ outputs: [{ name: "", type: "address" }]
262
+ },
263
+ {
264
+ type: "function",
265
+ name: "getTokenConfig",
266
+ stateMutability: "view",
267
+ inputs: [{ name: "token", type: "address" }],
268
+ outputs: [
269
+ {
270
+ name: "",
271
+ type: "tuple",
272
+ components: [
273
+ { name: "registered", type: "bool" },
274
+ { name: "enabled", type: "bool" },
275
+ { name: "maxPerDeposit", type: "uint256" }
276
+ ]
277
+ }
278
+ ]
279
+ },
280
+ {
281
+ type: "function",
282
+ name: "isTokenEnabled",
283
+ stateMutability: "view",
284
+ inputs: [{ name: "token", type: "address" }],
285
+ outputs: [{ name: "", type: "bool" }]
286
+ },
287
+ // ── Admin functions ──────────────────────────────────────────────────────
288
+ // emergencyAdmin (instant)
289
+ {
290
+ type: "function",
291
+ name: "pause",
292
+ stateMutability: "nonpayable",
293
+ inputs: [],
294
+ outputs: []
295
+ },
296
+ {
297
+ type: "function",
298
+ name: "unpause",
299
+ stateMutability: "nonpayable",
300
+ inputs: [],
301
+ outputs: []
302
+ },
303
+ {
304
+ type: "function",
305
+ name: "pauseToken",
306
+ stateMutability: "nonpayable",
307
+ inputs: [{ name: "token", type: "address" }],
308
+ outputs: []
309
+ },
310
+ // timelockAdmin (delayed)
311
+ {
312
+ type: "function",
313
+ name: "addToken",
314
+ stateMutability: "nonpayable",
315
+ inputs: [
316
+ { name: "token", type: "address" },
317
+ { name: "maxPerDeposit", type: "uint256" }
318
+ ],
319
+ outputs: []
320
+ },
321
+ {
322
+ type: "function",
323
+ name: "removeToken",
324
+ stateMutability: "nonpayable",
325
+ inputs: [{ name: "token", type: "address" }],
326
+ outputs: []
327
+ },
328
+ {
329
+ type: "function",
330
+ name: "setTokenLimit",
331
+ stateMutability: "nonpayable",
332
+ inputs: [
333
+ { name: "token", type: "address" },
334
+ { name: "maxPerDeposit", type: "uint256" }
335
+ ],
336
+ outputs: []
337
+ },
338
+ {
339
+ type: "function",
340
+ name: "unpauseToken",
341
+ stateMutability: "nonpayable",
342
+ inputs: [{ name: "token", type: "address" }],
343
+ outputs: []
344
+ },
345
+ // ── Credit functions ────────────────────────────────────────────────────
346
+ {
347
+ type: "function",
348
+ name: "depositCredit",
349
+ inputs: [
350
+ { name: "identityCommitment", type: "bytes32" },
351
+ { name: "payerCommitment", type: "bytes32" },
352
+ {
353
+ name: "asset",
354
+ type: "tuple",
355
+ components: [
356
+ { name: "addr", type: "address" },
357
+ { name: "amount", type: "uint256" }
358
+ ]
359
+ },
360
+ { name: "nonce", type: "bytes32" },
361
+ { name: "expiry", type: "uint256" },
362
+ { name: "nullifierKeyHash", type: "bytes32" },
363
+ { name: "treeId", type: "uint256" }
364
+ ],
365
+ outputs: [],
366
+ stateMutability: "nonpayable"
367
+ },
368
+ {
369
+ type: "function",
370
+ name: "creditDraw",
371
+ inputs: [
372
+ { name: "proof", type: "bytes" },
373
+ {
374
+ name: "params",
375
+ type: "tuple",
376
+ components: [
377
+ { name: "merkleRoot", type: "bytes32" },
378
+ { name: "nullifiers", type: "bytes32[]" },
379
+ { name: "totalAmount", type: "uint256" },
380
+ { name: "receivingAddress", type: "address" },
381
+ { name: "tokenAddress", type: "address" },
382
+ { name: "treeId", type: "uint256" },
383
+ { name: "remainderCommitments", type: "bytes32[]" },
384
+ { name: "expiry", type: "uint256" }
385
+ ]
386
+ }
387
+ ],
388
+ outputs: [],
389
+ stateMutability: "nonpayable"
390
+ },
391
+ {
392
+ type: "function",
393
+ name: "reclaim",
394
+ inputs: [
395
+ { name: "proof", type: "bytes" },
396
+ { name: "merkleRoot", type: "bytes32" },
397
+ { name: "nullifier", type: "bytes32" },
398
+ { name: "amount", type: "uint256" },
399
+ { name: "receivingAddress", type: "address" },
400
+ { name: "tokenAddress", type: "address" },
401
+ { name: "treeId", type: "uint256" },
402
+ { name: "expiry", type: "uint256" }
403
+ ],
404
+ outputs: [],
405
+ stateMutability: "nonpayable"
406
+ },
407
+ {
408
+ type: "function",
409
+ name: "COOLDOWN_PERIOD",
410
+ inputs: [],
411
+ outputs: [{ name: "", type: "uint256" }],
412
+ stateMutability: "view"
413
+ },
414
+ // ── Events ───────────────────────────────────────────────────────────────
415
+ {
416
+ type: "event",
417
+ name: "PayOpen",
418
+ inputs: [
419
+ { name: "paymentCommitment", type: "bytes32", indexed: true },
420
+ { name: "payer", type: "address", indexed: true },
421
+ { name: "treeId", type: "uint256", indexed: true },
422
+ { name: "leafIndex", type: "uint32", indexed: false },
423
+ { name: "tokenAddress", type: "address", indexed: false },
424
+ { name: "amount", type: "uint256", indexed: false },
425
+ { name: "identityCommitment", type: "bytes32", indexed: false },
426
+ { name: "nonce", type: "bytes32", indexed: false },
427
+ { name: "refundLink", type: "bytes32", indexed: false }
428
+ ]
429
+ },
430
+ {
431
+ type: "event",
432
+ name: "PayBlind",
433
+ inputs: [
434
+ { name: "paymentCommitment", type: "bytes32", indexed: true },
435
+ { name: "payer", type: "address", indexed: true },
436
+ { name: "treeId", type: "uint256", indexed: true },
437
+ { name: "changeCommitment", type: "bytes32", indexed: false },
438
+ { name: "paymentLeafIndex", type: "uint32", indexed: false },
439
+ { name: "changeLeafIndex", type: "uint32", indexed: false },
440
+ { name: "tokenAddress", type: "address", indexed: false },
441
+ { name: "inputAmount", type: "uint256", indexed: false },
442
+ { name: "refundLink", type: "bytes32", indexed: false }
443
+ ]
444
+ },
445
+ {
446
+ type: "event",
447
+ name: "Withdraw",
448
+ inputs: [
449
+ { name: "receivingAddress", type: "address", indexed: true },
450
+ { name: "tokenAddress", type: "address", indexed: true },
451
+ { name: "treeId", type: "uint256", indexed: true },
452
+ { name: "merkleRoot", type: "bytes32", indexed: false },
453
+ { name: "nullifiers", type: "bytes32[]", indexed: false },
454
+ { name: "totalAmount", type: "uint256", indexed: false }
455
+ ]
456
+ },
457
+ {
458
+ type: "event",
459
+ name: "TreeCreated",
460
+ inputs: [{ name: "treeId", type: "uint256", indexed: true }]
461
+ },
462
+ {
463
+ type: "event",
464
+ name: "TokenAdded",
465
+ inputs: [
466
+ { name: "token", type: "address", indexed: true },
467
+ { name: "maxPerDeposit", type: "uint256", indexed: false }
468
+ ]
469
+ },
470
+ {
471
+ type: "event",
472
+ name: "TokenRemoved",
473
+ inputs: [{ name: "token", type: "address", indexed: true }]
474
+ },
475
+ {
476
+ type: "event",
477
+ name: "TokenPaused",
478
+ inputs: [{ name: "token", type: "address", indexed: true }]
479
+ },
480
+ {
481
+ type: "event",
482
+ name: "TokenUnpaused",
483
+ inputs: [{ name: "token", type: "address", indexed: true }]
484
+ },
485
+ {
486
+ type: "event",
487
+ name: "TokenLimitUpdated",
488
+ inputs: [
489
+ { name: "token", type: "address", indexed: true },
490
+ { name: "maxPerDeposit", type: "uint256", indexed: false }
491
+ ]
492
+ },
493
+ {
494
+ type: "event",
495
+ name: "CreditDeposit",
496
+ inputs: [
497
+ { name: "commitment", type: "bytes32", indexed: true },
498
+ { name: "depositor", type: "address", indexed: true },
499
+ { name: "treeId", type: "uint256", indexed: true },
500
+ { name: "leafIndex", type: "uint32", indexed: false },
501
+ { name: "identityCommitment", type: "bytes32", indexed: false },
502
+ { name: "payerCommitment", type: "bytes32", indexed: false },
503
+ { name: "tokenAddress", type: "address", indexed: false },
504
+ { name: "amount", type: "uint256", indexed: false },
505
+ { name: "nonce", type: "bytes32", indexed: false },
506
+ { name: "expiry", type: "uint256", indexed: false },
507
+ { name: "nullifierKeyHash", type: "bytes32", indexed: false }
508
+ ]
509
+ },
510
+ {
511
+ type: "event",
512
+ name: "CreditDraw",
513
+ inputs: [
514
+ { name: "receivingAddress", type: "address", indexed: true },
515
+ { name: "tokenAddress", type: "address", indexed: true },
516
+ { name: "treeId", type: "uint256", indexed: true },
517
+ { name: "merkleRoot", type: "bytes32", indexed: false },
518
+ { name: "nullifiers", type: "bytes32[]", indexed: false },
519
+ { name: "totalAmount", type: "uint256", indexed: false },
520
+ { name: "remainderCommitments", type: "bytes32[]", indexed: false },
521
+ { name: "remainderLeafIndices", type: "uint32[]", indexed: false },
522
+ { name: "expiry", type: "uint256", indexed: false }
523
+ ]
524
+ },
525
+ {
526
+ type: "event",
527
+ name: "CreditReclaim",
528
+ inputs: [
529
+ { name: "receivingAddress", type: "address", indexed: true },
530
+ { name: "treeId", type: "uint256", indexed: true },
531
+ { name: "nullifier", type: "bytes32", indexed: true },
532
+ { name: "merkleRoot", type: "bytes32", indexed: false },
533
+ { name: "tokenAddress", type: "address", indexed: false },
534
+ { name: "amount", type: "uint256", indexed: false },
535
+ { name: "expiry", type: "uint256", indexed: false }
536
+ ]
537
+ },
538
+ // ── Meta-transaction events ───────────────────────────────────────────
539
+ {
540
+ type: "event",
541
+ name: "NonceInvalidated",
542
+ inputs: [
543
+ { name: "signer", type: "address", indexed: true },
544
+ { name: "newNonce", type: "uint256", indexed: false }
545
+ ]
546
+ },
547
+ // ── Errors ─────────────────────────────────────────────────────────────
548
+ {
549
+ type: "error",
550
+ name: "TokenNotRegistered",
551
+ inputs: [{ name: "token", type: "address" }]
552
+ },
553
+ {
554
+ type: "error",
555
+ name: "TokenNotEnabled",
556
+ inputs: [{ name: "token", type: "address" }]
557
+ },
558
+ {
559
+ type: "error",
560
+ name: "ExceedsDepositLimit",
561
+ inputs: [
562
+ { name: "token", type: "address" },
563
+ { name: "amount", type: "uint256" },
564
+ { name: "maxPerDeposit", type: "uint256" }
565
+ ]
566
+ }
567
+ ];
568
+ // Annotate the CommonJS export names for ESM import in node:
569
+ 0 && (module.exports = {
570
+ invisiProtocolAbi
571
+ });
572
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/abis/InvisiProtocol.ts"],"sourcesContent":["export { invisiProtocolAbi } from \"./abis/InvisiProtocol\"\nexport type { InvisiProtocolAbi } from \"./types\"\n","export const invisiProtocolAbi = [\n // ── Write functions ──────────────────────────────────────────────────────\n {\n type: \"function\",\n name: \"payOpen\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"identityCommitment\", type: \"bytes32\" },\n {\n name: \"asset\",\n type: \"tuple\",\n components: [\n { name: \"addr\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n },\n { name: \"nonce\", type: \"bytes32\" },\n { name: \"treeId\", type: \"uint256\" },\n { name: \"refundLink\", type: \"bytes32\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"payBlind\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"proof\", type: \"bytes\" },\n { name: \"paymentCommitment\", type: \"bytes32\" },\n { name: \"changeCommitment\", type: \"bytes32\" },\n { name: \"inputAmount\", type: \"uint256\" },\n { name: \"tokenAddress\", type: \"address\" },\n { name: \"treeId\", type: \"uint256\" },\n { name: \"refundLink\", type: \"bytes32\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"withdraw\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"proof\", type: \"bytes\" },\n { name: \"merkleRoot\", type: \"bytes32\" },\n { name: \"nullifiers\", type: \"bytes32[]\" },\n { name: \"totalAmount\", type: \"uint256\" },\n { name: \"receivingAddress\", type: \"address\" },\n { name: \"tokenAddress\", type: \"address\" },\n { name: \"treeId\", type: \"uint256\" },\n ],\n outputs: [],\n },\n\n // ── Meta-transaction (WithSig) ────────────────────────────────────────\n {\n type: \"function\",\n name: \"payOpenWithSig\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"identityCommitment\", type: \"bytes32\" },\n {\n name: \"asset\",\n type: \"tuple\",\n components: [\n { name: \"addr\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n },\n { name: \"nonce\", type: \"bytes32\" },\n { name: \"treeId\", type: \"uint256\" },\n { name: \"refundLink\", type: \"bytes32\" },\n {\n name: \"permit\",\n type: \"tuple\",\n components: [\n { name: \"deadline\", type: \"uint256\" },\n { name: \"v\", type: \"uint8\" },\n { name: \"r\", type: \"bytes32\" },\n { name: \"s\", type: \"bytes32\" },\n ],\n },\n { name: \"signer\", type: \"address\" },\n { name: \"sigNonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n { name: \"signature\", type: \"bytes\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"payBlindWithSig\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"proof\", type: \"bytes\" },\n { name: \"paymentCommitment\", type: \"bytes32\" },\n { name: \"changeCommitment\", type: \"bytes32\" },\n { name: \"inputAmount\", type: \"uint256\" },\n { name: \"tokenAddress\", type: \"address\" },\n { name: \"treeId\", type: \"uint256\" },\n { name: \"refundLink\", type: \"bytes32\" },\n {\n name: \"meta\",\n type: \"tuple\",\n components: [\n {\n name: \"permit\",\n type: \"tuple\",\n components: [\n { name: \"deadline\", type: \"uint256\" },\n { name: \"v\", type: \"uint8\" },\n { name: \"r\", type: \"bytes32\" },\n { name: \"s\", type: \"bytes32\" },\n ],\n },\n { name: \"signer\", type: \"address\" },\n { name: \"sigNonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n { name: \"signature\", type: \"bytes\" },\n ],\n },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"depositCreditWithSig\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"identityCommitment\", type: \"bytes32\" },\n { name: \"payerCommitment\", type: \"bytes32\" },\n {\n name: \"asset\",\n type: \"tuple\",\n components: [\n { name: \"addr\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n },\n { name: \"nonce\", type: \"bytes32\" },\n { name: \"expiry\", type: \"uint256\" },\n { name: \"nullifierKeyHash\", type: \"bytes32\" },\n { name: \"treeId\", type: \"uint256\" },\n {\n name: \"meta\",\n type: \"tuple\",\n components: [\n {\n name: \"permit\",\n type: \"tuple\",\n components: [\n { name: \"deadline\", type: \"uint256\" },\n { name: \"v\", type: \"uint8\" },\n { name: \"r\", type: \"bytes32\" },\n { name: \"s\", type: \"bytes32\" },\n ],\n },\n { name: \"signer\", type: \"address\" },\n { name: \"sigNonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n { name: \"signature\", type: \"bytes\" },\n ],\n },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"invalidateNonce\",\n stateMutability: \"nonpayable\",\n inputs: [],\n outputs: [],\n },\n\n // ── View functions ───────────────────────────────────────────────────────\n {\n type: \"function\",\n name: \"getTreeCount\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"count\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"getPaymentTreeRoot\",\n stateMutability: \"view\",\n inputs: [{ name: \"treeId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"bytes32\" }],\n },\n {\n type: \"function\",\n name: \"isTreeFull\",\n stateMutability: \"view\",\n inputs: [{ name: \"treeId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"isNullifierSpent\",\n stateMutability: \"view\",\n inputs: [{ name: \"nullifier\", type: \"bytes32\" }],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"nonces\",\n stateMutability: \"view\",\n inputs: [{ name: \"signer\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"isCommitmentPaid\",\n stateMutability: \"view\",\n inputs: [{ name: \"paymentCommitment\", type: \"bytes32\" }],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"VERSION\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"emergencyAdmin\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n type: \"function\",\n name: \"timelockAdmin\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n type: \"function\",\n name: \"getTokenConfig\",\n stateMutability: \"view\",\n inputs: [{ name: \"token\", type: \"address\" }],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n components: [\n { name: \"registered\", type: \"bool\" },\n { name: \"enabled\", type: \"bool\" },\n { name: \"maxPerDeposit\", type: \"uint256\" },\n ],\n },\n ],\n },\n {\n type: \"function\",\n name: \"isTokenEnabled\",\n stateMutability: \"view\",\n inputs: [{ name: \"token\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n\n // ── Admin functions ──────────────────────────────────────────────────────\n // emergencyAdmin (instant)\n {\n type: \"function\",\n name: \"pause\",\n stateMutability: \"nonpayable\",\n inputs: [],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"unpause\",\n stateMutability: \"nonpayable\",\n inputs: [],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"pauseToken\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"token\", type: \"address\" }],\n outputs: [],\n },\n\n // timelockAdmin (delayed)\n {\n type: \"function\",\n name: \"addToken\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"token\", type: \"address\" },\n { name: \"maxPerDeposit\", type: \"uint256\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"removeToken\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"token\", type: \"address\" }],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"setTokenLimit\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"token\", type: \"address\" },\n { name: \"maxPerDeposit\", type: \"uint256\" },\n ],\n outputs: [],\n },\n {\n type: \"function\",\n name: \"unpauseToken\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"token\", type: \"address\" }],\n outputs: [],\n },\n\n // ── Credit functions ────────────────────────────────────────────────────\n {\n type: \"function\",\n name: \"depositCredit\",\n inputs: [\n { name: \"identityCommitment\", type: \"bytes32\" },\n { name: \"payerCommitment\", type: \"bytes32\" },\n {\n name: \"asset\",\n type: \"tuple\",\n components: [\n { name: \"addr\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n },\n { name: \"nonce\", type: \"bytes32\" },\n { name: \"expiry\", type: \"uint256\" },\n { name: \"nullifierKeyHash\", type: \"bytes32\" },\n { name: \"treeId\", type: \"uint256\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"creditDraw\",\n inputs: [\n { name: \"proof\", type: \"bytes\" },\n {\n name: \"params\",\n type: \"tuple\",\n components: [\n { name: \"merkleRoot\", type: \"bytes32\" },\n { name: \"nullifiers\", type: \"bytes32[]\" },\n { name: \"totalAmount\", type: \"uint256\" },\n { name: \"receivingAddress\", type: \"address\" },\n { name: \"tokenAddress\", type: \"address\" },\n { name: \"treeId\", type: \"uint256\" },\n { name: \"remainderCommitments\", type: \"bytes32[]\" },\n { name: \"expiry\", type: \"uint256\" },\n ],\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"reclaim\",\n inputs: [\n { name: \"proof\", type: \"bytes\" },\n { name: \"merkleRoot\", type: \"bytes32\" },\n { name: \"nullifier\", type: \"bytes32\" },\n { name: \"amount\", type: \"uint256\" },\n { name: \"receivingAddress\", type: \"address\" },\n { name: \"tokenAddress\", type: \"address\" },\n { name: \"treeId\", type: \"uint256\" },\n { name: \"expiry\", type: \"uint256\" },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"COOLDOWN_PERIOD\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n },\n\n // ── Events ───────────────────────────────────────────────────────────────\n {\n type: \"event\",\n name: \"PayOpen\",\n inputs: [\n { name: \"paymentCommitment\", type: \"bytes32\", indexed: true },\n { name: \"payer\", type: \"address\", indexed: true },\n { name: \"treeId\", type: \"uint256\", indexed: true },\n { name: \"leafIndex\", type: \"uint32\", indexed: false },\n { name: \"tokenAddress\", type: \"address\", indexed: false },\n { name: \"amount\", type: \"uint256\", indexed: false },\n { name: \"identityCommitment\", type: \"bytes32\", indexed: false },\n { name: \"nonce\", type: \"bytes32\", indexed: false },\n { name: \"refundLink\", type: \"bytes32\", indexed: false },\n ],\n },\n {\n type: \"event\",\n name: \"PayBlind\",\n inputs: [\n { name: \"paymentCommitment\", type: \"bytes32\", indexed: true },\n { name: \"payer\", type: \"address\", indexed: true },\n { name: \"treeId\", type: \"uint256\", indexed: true },\n { name: \"changeCommitment\", type: \"bytes32\", indexed: false },\n { name: \"paymentLeafIndex\", type: \"uint32\", indexed: false },\n { name: \"changeLeafIndex\", type: \"uint32\", indexed: false },\n { name: \"tokenAddress\", type: \"address\", indexed: false },\n { name: \"inputAmount\", type: \"uint256\", indexed: false },\n { name: \"refundLink\", type: \"bytes32\", indexed: false },\n ],\n },\n {\n type: \"event\",\n name: \"Withdraw\",\n inputs: [\n { name: \"receivingAddress\", type: \"address\", indexed: true },\n { name: \"tokenAddress\", type: \"address\", indexed: true },\n { name: \"treeId\", type: \"uint256\", indexed: true },\n { name: \"merkleRoot\", type: \"bytes32\", indexed: false },\n { name: \"nullifiers\", type: \"bytes32[]\", indexed: false },\n { name: \"totalAmount\", type: \"uint256\", indexed: false },\n ],\n },\n {\n type: \"event\",\n name: \"TreeCreated\",\n inputs: [{ name: \"treeId\", type: \"uint256\", indexed: true }],\n },\n {\n type: \"event\",\n name: \"TokenAdded\",\n inputs: [\n { name: \"token\", type: \"address\", indexed: true },\n { name: \"maxPerDeposit\", type: \"uint256\", indexed: false },\n ],\n },\n {\n type: \"event\",\n name: \"TokenRemoved\",\n inputs: [{ name: \"token\", type: \"address\", indexed: true }],\n },\n {\n type: \"event\",\n name: \"TokenPaused\",\n inputs: [{ name: \"token\", type: \"address\", indexed: true }],\n },\n {\n type: \"event\",\n name: \"TokenUnpaused\",\n inputs: [{ name: \"token\", type: \"address\", indexed: true }],\n },\n {\n type: \"event\",\n name: \"TokenLimitUpdated\",\n inputs: [\n { name: \"token\", type: \"address\", indexed: true },\n { name: \"maxPerDeposit\", type: \"uint256\", indexed: false },\n ],\n },\n {\n type: \"event\",\n name: \"CreditDeposit\",\n inputs: [\n { name: \"commitment\", type: \"bytes32\", indexed: true },\n { name: \"depositor\", type: \"address\", indexed: true },\n { name: \"treeId\", type: \"uint256\", indexed: true },\n { name: \"leafIndex\", type: \"uint32\", indexed: false },\n { name: \"identityCommitment\", type: \"bytes32\", indexed: false },\n { name: \"payerCommitment\", type: \"bytes32\", indexed: false },\n { name: \"tokenAddress\", type: \"address\", indexed: false },\n { name: \"amount\", type: \"uint256\", indexed: false },\n { name: \"nonce\", type: \"bytes32\", indexed: false },\n { name: \"expiry\", type: \"uint256\", indexed: false },\n { name: \"nullifierKeyHash\", type: \"bytes32\", indexed: false },\n ],\n },\n {\n type: \"event\",\n name: \"CreditDraw\",\n inputs: [\n { name: \"receivingAddress\", type: \"address\", indexed: true },\n { name: \"tokenAddress\", type: \"address\", indexed: true },\n { name: \"treeId\", type: \"uint256\", indexed: true },\n { name: \"merkleRoot\", type: \"bytes32\", indexed: false },\n { name: \"nullifiers\", type: \"bytes32[]\", indexed: false },\n { name: \"totalAmount\", type: \"uint256\", indexed: false },\n { name: \"remainderCommitments\", type: \"bytes32[]\", indexed: false },\n { name: \"remainderLeafIndices\", type: \"uint32[]\", indexed: false },\n { name: \"expiry\", type: \"uint256\", indexed: false },\n ],\n },\n {\n type: \"event\",\n name: \"CreditReclaim\",\n inputs: [\n { name: \"receivingAddress\", type: \"address\", indexed: true },\n { name: \"treeId\", type: \"uint256\", indexed: true },\n { name: \"nullifier\", type: \"bytes32\", indexed: true },\n { name: \"merkleRoot\", type: \"bytes32\", indexed: false },\n { name: \"tokenAddress\", type: \"address\", indexed: false },\n { name: \"amount\", type: \"uint256\", indexed: false },\n { name: \"expiry\", type: \"uint256\", indexed: false },\n ],\n },\n\n // ── Meta-transaction events ───────────────────────────────────────────\n {\n type: \"event\",\n name: \"NonceInvalidated\",\n inputs: [\n { name: \"signer\", type: \"address\", indexed: true },\n { name: \"newNonce\", type: \"uint256\", indexed: false },\n ],\n },\n // ── Errors ─────────────────────────────────────────────────────────────\n {\n type: \"error\",\n name: \"TokenNotRegistered\",\n inputs: [{ name: \"token\", type: \"address\" }],\n },\n {\n type: \"error\",\n name: \"TokenNotEnabled\",\n inputs: [{ name: \"token\", type: \"address\" }],\n },\n {\n type: \"error\",\n name: \"ExceedsDepositLimit\",\n inputs: [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n { name: \"maxPerDeposit\", type: \"uint256\" },\n ],\n },\n] as const\n"],"mappings":"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","names":[]}