@pushchain/core 3.0.9-alpha-v0 → 4.0.2

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.
@@ -8,42 +8,159 @@
8
8
  },
9
9
  "instructions": [
10
10
  {
11
- "name": "add_funds",
11
+ "name": "execute_universal_tx",
12
12
  "docs": [
13
- "@notice Legacy-compatible add funds event for offchain relayers (pushsolanalocker)"
13
+ "@notice TSS-verified execute arbitrary Solana instruction with SOL",
14
+ "@param tx_id Transaction ID from Push chain event",
15
+ "@param amount Amount of SOL to transfer to cea authority",
16
+ "@param target_program Target Solana program to invoke",
17
+ "@param sender EVM sender address (same as origin_caller in EVM)",
18
+ "@param accounts Ordered list of accounts for target program",
19
+ "@param ix_data Instruction data for target program"
20
+ ],
21
+ "discriminator": [
22
+ 248,
23
+ 132,
24
+ 87,
25
+ 87,
26
+ 210,
27
+ 51,
28
+ 117,
29
+ 76
14
30
  ],
15
- "discriminator": [132, 237, 76, 57, 80, 10, 179, 138],
16
31
  "accounts": [
32
+ {
33
+ "name": "caller",
34
+ "writable": true,
35
+ "signer": true
36
+ },
17
37
  {
18
38
  "name": "config",
19
39
  "pda": {
20
40
  "seeds": [
21
41
  {
22
42
  "kind": "const",
23
- "value": [99, 111, 110, 102, 105, 103]
43
+ "value": [
44
+ 99,
45
+ 111,
46
+ 110,
47
+ 102,
48
+ 105,
49
+ 103
50
+ ]
24
51
  }
25
52
  ]
26
53
  }
27
54
  },
28
55
  {
29
- "name": "vault",
56
+ "name": "vault_sol",
57
+ "docs": [
58
+ "Vault SOL PDA - holds all bridged SOL"
59
+ ],
30
60
  "writable": true,
31
61
  "pda": {
32
62
  "seeds": [
33
63
  {
34
64
  "kind": "const",
35
- "value": [118, 97, 117, 108, 116]
65
+ "value": [
66
+ 118,
67
+ 97,
68
+ 117,
69
+ 108,
70
+ 116
71
+ ]
36
72
  }
37
73
  ]
38
74
  }
39
75
  },
40
76
  {
41
- "name": "user",
77
+ "name": "cea_authority",
78
+ "docs": [
79
+ "CEA (Chain Executor Account) - persistent identity per Push Chain user",
80
+ "This PDA represents the user on Solana and can sign for target programs",
81
+ "Auto-created by Solana on first transfer, persists across transactions"
82
+ ],
42
83
  "writable": true,
43
- "signer": true
84
+ "pda": {
85
+ "seeds": [
86
+ {
87
+ "kind": "const",
88
+ "value": [
89
+ 112,
90
+ 117,
91
+ 115,
92
+ 104,
93
+ 95,
94
+ 105,
95
+ 100,
96
+ 101,
97
+ 110,
98
+ 116,
99
+ 105,
100
+ 116,
101
+ 121
102
+ ]
103
+ },
104
+ {
105
+ "kind": "arg",
106
+ "path": "sender"
107
+ }
108
+ ]
109
+ }
44
110
  },
45
111
  {
46
- "name": "price_update"
112
+ "name": "tss_pda",
113
+ "writable": true,
114
+ "pda": {
115
+ "seeds": [
116
+ {
117
+ "kind": "const",
118
+ "value": [
119
+ 116,
120
+ 115,
121
+ 115,
122
+ 112,
123
+ 100,
124
+ 97
125
+ ]
126
+ }
127
+ ]
128
+ }
129
+ },
130
+ {
131
+ "name": "executed_tx",
132
+ "docs": [
133
+ "Executed transaction tracker (replay protection)",
134
+ "Relayer pays for this account creation and gets reimbursed via gas_fee"
135
+ ],
136
+ "writable": true,
137
+ "pda": {
138
+ "seeds": [
139
+ {
140
+ "kind": "const",
141
+ "value": [
142
+ 101,
143
+ 120,
144
+ 101,
145
+ 99,
146
+ 117,
147
+ 116,
148
+ 101,
149
+ 100,
150
+ 95,
151
+ 116,
152
+ 120
153
+ ]
154
+ },
155
+ {
156
+ "kind": "arg",
157
+ "path": "tx_id"
158
+ }
159
+ ]
160
+ }
161
+ },
162
+ {
163
+ "name": "destination_program"
47
164
  },
48
165
  {
49
166
  "name": "system_program",
@@ -51,208 +168,451 @@
51
168
  }
52
169
  ],
53
170
  "args": [
171
+ {
172
+ "name": "tx_id",
173
+ "type": {
174
+ "array": [
175
+ "u8",
176
+ 32
177
+ ]
178
+ }
179
+ },
54
180
  {
55
181
  "name": "amount",
56
182
  "type": "u64"
57
183
  },
58
184
  {
59
- "name": "transaction_hash",
185
+ "name": "target_program",
186
+ "type": "pubkey"
187
+ },
188
+ {
189
+ "name": "sender",
190
+ "type": {
191
+ "array": [
192
+ "u8",
193
+ 20
194
+ ]
195
+ }
196
+ },
197
+ {
198
+ "name": "accounts",
199
+ "type": {
200
+ "vec": {
201
+ "defined": {
202
+ "name": "GatewayAccountMeta"
203
+ }
204
+ }
205
+ }
206
+ },
207
+ {
208
+ "name": "ix_data",
209
+ "type": "bytes"
210
+ },
211
+ {
212
+ "name": "gas_fee",
213
+ "type": "u64"
214
+ },
215
+ {
216
+ "name": "rent_fee",
217
+ "type": "u64"
218
+ },
219
+ {
220
+ "name": "signature",
60
221
  "type": {
61
- "array": ["u8", 32]
222
+ "array": [
223
+ "u8",
224
+ 64
225
+ ]
62
226
  }
227
+ },
228
+ {
229
+ "name": "recovery_id",
230
+ "type": "u8"
231
+ },
232
+ {
233
+ "name": "message_hash",
234
+ "type": {
235
+ "array": [
236
+ "u8",
237
+ 32
238
+ ]
239
+ }
240
+ },
241
+ {
242
+ "name": "nonce",
243
+ "type": "u64"
63
244
  }
64
245
  ]
65
246
  },
66
247
  {
67
- "name": "get_sol_price",
248
+ "name": "execute_universal_tx_token",
68
249
  "docs": [
69
- "@notice View function for SOL price (locker-compatible)",
70
- "@dev Anyone can fetch SOL price in USD"
250
+ "@notice TSS-verified execute arbitrary Solana instruction with SPL tokens",
251
+ "@param tx_id Transaction ID from Push chain event",
252
+ "@param amount Amount of SPL tokens to transfer to cea ATA",
253
+ "@param target_program Target Solana program to invoke",
254
+ "@param sender EVM sender address (same as origin_caller in EVM)",
255
+ "@param accounts Ordered list of accounts for target program",
256
+ "@param ix_data Instruction data for target program"
71
257
  ],
72
- "discriminator": [230, 145, 206, 175, 43, 184, 97, 110],
73
- "accounts": [
74
- {
75
- "name": "price_update"
76
- }
258
+ "discriminator": [
259
+ 109,
260
+ 179,
261
+ 159,
262
+ 72,
263
+ 154,
264
+ 247,
265
+ 19,
266
+ 188
77
267
  ],
78
- "args": [],
79
- "returns": {
80
- "defined": {
81
- "name": "PriceData"
82
- }
83
- }
84
- },
85
- {
86
- "name": "init_tss",
87
- "discriminator": [47, 31, 100, 111, 115, 2, 22, 208],
88
268
  "accounts": [
89
269
  {
90
- "name": "tss_pda",
270
+ "name": "caller",
91
271
  "writable": true,
272
+ "signer": true
273
+ },
274
+ {
275
+ "name": "config",
92
276
  "pda": {
93
277
  "seeds": [
94
278
  {
95
279
  "kind": "const",
96
- "value": [116, 115, 115]
280
+ "value": [
281
+ 99,
282
+ 111,
283
+ 110,
284
+ 102,
285
+ 105,
286
+ 103
287
+ ]
97
288
  }
98
289
  ]
99
290
  }
100
291
  },
101
292
  {
102
- "name": "config",
293
+ "name": "vault_authority",
294
+ "docs": [
295
+ "Vault authority PDA - owner of all vault ATAs"
296
+ ],
103
297
  "pda": {
104
298
  "seeds": [
105
299
  {
106
300
  "kind": "const",
107
- "value": [99, 111, 110, 102, 105, 103]
301
+ "value": [
302
+ 118,
303
+ 97,
304
+ 117,
305
+ 108,
306
+ 116
307
+ ]
108
308
  }
109
309
  ]
110
310
  }
111
311
  },
112
312
  {
113
- "name": "authority",
114
- "writable": true,
115
- "signer": true
313
+ "name": "vault_ata",
314
+ "docs": [
315
+ "Vault ATA for this mint"
316
+ ],
317
+ "writable": true
116
318
  },
117
319
  {
118
- "name": "system_program",
119
- "address": "11111111111111111111111111111111"
120
- }
121
- ],
122
- "args": [
123
- {
124
- "name": "tss_eth_address",
125
- "type": {
126
- "array": ["u8", 20]
320
+ "name": "cea_authority",
321
+ "docs": [
322
+ "CEA (Chain Executor Account) - persistent identity per Push Chain user",
323
+ "This PDA represents the user on Solana and can sign for target programs"
324
+ ],
325
+ "writable": true,
326
+ "pda": {
327
+ "seeds": [
328
+ {
329
+ "kind": "const",
330
+ "value": [
331
+ 112,
332
+ 117,
333
+ 115,
334
+ 104,
335
+ 95,
336
+ 105,
337
+ 100,
338
+ 101,
339
+ 110,
340
+ 116,
341
+ 105,
342
+ 116,
343
+ 121
344
+ ]
345
+ },
346
+ {
347
+ "kind": "arg",
348
+ "path": "sender"
349
+ }
350
+ ]
127
351
  }
128
352
  },
129
353
  {
130
- "name": "chain_id",
131
- "type": "u64"
132
- }
133
- ]
134
- },
135
- {
136
- "name": "initialize",
137
- "docs": ["@notice Initialize the gateway"],
138
- "discriminator": [175, 175, 109, 31, 13, 152, 155, 237],
139
- "accounts": [
354
+ "name": "cea_ata",
355
+ "docs": [
356
+ "CEA ATA for this user+mint",
357
+ "Created per-tx, closed after (rent reclaim)"
358
+ ],
359
+ "writable": true
360
+ },
140
361
  {
141
- "name": "config",
362
+ "name": "mint",
363
+ "docs": [
364
+ "Token mint"
365
+ ]
366
+ },
367
+ {
368
+ "name": "tss_pda",
142
369
  "writable": true,
143
370
  "pda": {
144
371
  "seeds": [
145
372
  {
146
373
  "kind": "const",
147
- "value": [99, 111, 110, 102, 105, 103]
374
+ "value": [
375
+ 116,
376
+ 115,
377
+ 115,
378
+ 112,
379
+ 100,
380
+ 97
381
+ ]
148
382
  }
149
383
  ]
150
384
  }
151
385
  },
152
386
  {
153
- "name": "vault",
387
+ "name": "vault_sol",
388
+ "docs": [
389
+ "Vault SOL PDA (needed for rent_fee transfer to CEA and gas_fee reimbursement to relayer)"
390
+ ],
154
391
  "writable": true,
155
392
  "pda": {
156
393
  "seeds": [
157
394
  {
158
395
  "kind": "const",
159
- "value": [118, 97, 117, 108, 116]
396
+ "value": [
397
+ 118,
398
+ 97,
399
+ 117,
400
+ 108,
401
+ 116
402
+ ]
160
403
  }
161
404
  ]
162
405
  }
163
406
  },
164
407
  {
165
- "name": "admin",
408
+ "name": "executed_tx",
409
+ "docs": [
410
+ "Executed transaction tracker (replay protection)",
411
+ "Relayer pays for this account creation and gets reimbursed via gas_fee"
412
+ ],
166
413
  "writable": true,
167
- "signer": true
414
+ "pda": {
415
+ "seeds": [
416
+ {
417
+ "kind": "const",
418
+ "value": [
419
+ 101,
420
+ 120,
421
+ 101,
422
+ 99,
423
+ 117,
424
+ 116,
425
+ 101,
426
+ 100,
427
+ 95,
428
+ 116,
429
+ 120
430
+ ]
431
+ },
432
+ {
433
+ "kind": "arg",
434
+ "path": "tx_id"
435
+ }
436
+ ]
437
+ }
438
+ },
439
+ {
440
+ "name": "destination_program"
441
+ },
442
+ {
443
+ "name": "token_program",
444
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
168
445
  },
169
446
  {
170
447
  "name": "system_program",
171
448
  "address": "11111111111111111111111111111111"
449
+ },
450
+ {
451
+ "name": "rent",
452
+ "address": "SysvarRent111111111111111111111111111111111"
453
+ },
454
+ {
455
+ "name": "associated_token_program",
456
+ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
172
457
  }
173
458
  ],
174
459
  "args": [
175
460
  {
176
- "name": "admin",
177
- "type": "pubkey"
461
+ "name": "tx_id",
462
+ "type": {
463
+ "array": [
464
+ "u8",
465
+ 32
466
+ ]
467
+ }
178
468
  },
179
469
  {
180
- "name": "pauser",
181
- "type": "pubkey"
470
+ "name": "amount",
471
+ "type": "u64"
182
472
  },
183
473
  {
184
- "name": "tss",
474
+ "name": "target_program",
185
475
  "type": "pubkey"
186
476
  },
187
477
  {
188
- "name": "min_cap_usd",
189
- "type": "u128"
478
+ "name": "sender",
479
+ "type": {
480
+ "array": [
481
+ "u8",
482
+ 20
483
+ ]
484
+ }
190
485
  },
191
486
  {
192
- "name": "max_cap_usd",
193
- "type": "u128"
487
+ "name": "accounts",
488
+ "type": {
489
+ "vec": {
490
+ "defined": {
491
+ "name": "GatewayAccountMeta"
492
+ }
493
+ }
494
+ }
194
495
  },
195
496
  {
196
- "name": "pyth_price_feed",
197
- "type": "pubkey"
497
+ "name": "ix_data",
498
+ "type": "bytes"
499
+ },
500
+ {
501
+ "name": "gas_fee",
502
+ "type": "u64"
503
+ },
504
+ {
505
+ "name": "rent_fee",
506
+ "type": "u64"
507
+ },
508
+ {
509
+ "name": "signature",
510
+ "type": {
511
+ "array": [
512
+ "u8",
513
+ 64
514
+ ]
515
+ }
516
+ },
517
+ {
518
+ "name": "recovery_id",
519
+ "type": "u8"
520
+ },
521
+ {
522
+ "name": "message_hash",
523
+ "type": {
524
+ "array": [
525
+ "u8",
526
+ 32
527
+ ]
528
+ }
529
+ },
530
+ {
531
+ "name": "nonce",
532
+ "type": "u64"
198
533
  }
199
534
  ]
200
535
  },
201
536
  {
202
- "name": "pause",
203
- "docs": ["@notice Pause the gateway"],
204
- "discriminator": [211, 22, 221, 251, 74, 121, 193, 47],
537
+ "name": "get_sol_price",
538
+ "docs": [
539
+ "@notice View function for SOL price (locker-compatible)",
540
+ "@dev Anyone can fetch SOL price in USD"
541
+ ],
542
+ "discriminator": [
543
+ 230,
544
+ 145,
545
+ 206,
546
+ 175,
547
+ 43,
548
+ 184,
549
+ 97,
550
+ 110
551
+ ],
205
552
  "accounts": [
206
553
  {
207
- "name": "config",
208
- "writable": true,
209
- "pda": {
210
- "seeds": [
211
- {
212
- "kind": "const",
213
- "value": [99, 111, 110, 102, 105, 103]
214
- }
215
- ]
216
- }
217
- },
218
- {
219
- "name": "pauser",
220
- "signer": true
554
+ "name": "price_update"
221
555
  }
222
556
  ],
223
- "args": []
557
+ "args": [],
558
+ "returns": {
559
+ "defined": {
560
+ "name": "PriceData"
561
+ }
562
+ }
224
563
  },
225
564
  {
226
- "name": "remove_whitelist_token",
227
- "docs": ["@notice Remove token from whitelist"],
228
- "discriminator": [65, 182, 42, 255, 198, 163, 73, 46],
565
+ "name": "init_tss",
566
+ "discriminator": [
567
+ 47,
568
+ 31,
569
+ 100,
570
+ 111,
571
+ 115,
572
+ 2,
573
+ 22,
574
+ 208
575
+ ],
229
576
  "accounts": [
230
577
  {
231
- "name": "config",
578
+ "name": "tss_pda",
232
579
  "writable": true,
233
580
  "pda": {
234
581
  "seeds": [
235
582
  {
236
583
  "kind": "const",
237
- "value": [99, 111, 110, 102, 105, 103]
584
+ "value": [
585
+ 116,
586
+ 115,
587
+ 115,
588
+ 112,
589
+ 100,
590
+ 97
591
+ ]
238
592
  }
239
593
  ]
240
594
  }
241
595
  },
242
596
  {
243
- "name": "whitelist",
244
- "writable": true,
597
+ "name": "config",
245
598
  "pda": {
246
599
  "seeds": [
247
600
  {
248
601
  "kind": "const",
249
- "value": [119, 104, 105, 116, 101, 108, 105, 115, 116]
602
+ "value": [
603
+ 99,
604
+ 111,
605
+ 110,
606
+ 102,
607
+ 105,
608
+ 103
609
+ ]
250
610
  }
251
611
  ]
252
612
  }
253
613
  },
254
614
  {
255
- "name": "admin",
615
+ "name": "authority",
256
616
  "writable": true,
257
617
  "signer": true
258
618
  },
@@ -263,51 +623,51 @@
263
623
  ],
264
624
  "args": [
265
625
  {
266
- "name": "token",
267
- "type": "pubkey"
268
- }
269
- ]
270
- },
271
- {
272
- "name": "reset_nonce",
273
- "discriminator": [104, 139, 110, 85, 234, 155, 132, 248],
274
- "accounts": [
275
- {
276
- "name": "tss_pda",
277
- "writable": true,
278
- "pda": {
279
- "seeds": [
280
- {
281
- "kind": "const",
282
- "value": [116, 115, 115]
283
- }
626
+ "name": "tss_eth_address",
627
+ "type": {
628
+ "array": [
629
+ "u8",
630
+ 20
284
631
  ]
285
632
  }
286
633
  },
287
634
  {
288
- "name": "authority",
289
- "signer": true
290
- }
291
- ],
292
- "args": [
293
- {
294
- "name": "new_nonce",
295
- "type": "u64"
635
+ "name": "chain_id",
636
+ "type": "string"
296
637
  }
297
638
  ]
298
639
  },
299
640
  {
300
- "name": "revert_withdraw",
301
- "docs": ["@notice TSS-verified revert withdraw for SOL"],
302
- "discriminator": [8, 232, 107, 216, 153, 25, 204, 116],
641
+ "name": "initialize",
642
+ "docs": [
643
+ "@notice Initialize the gateway"
644
+ ],
645
+ "discriminator": [
646
+ 175,
647
+ 175,
648
+ 109,
649
+ 31,
650
+ 13,
651
+ 152,
652
+ 155,
653
+ 237
654
+ ],
303
655
  "accounts": [
304
656
  {
305
657
  "name": "config",
658
+ "writable": true,
306
659
  "pda": {
307
660
  "seeds": [
308
661
  {
309
662
  "kind": "const",
310
- "value": [99, 111, 110, 102, 105, 103]
663
+ "value": [
664
+ 99,
665
+ 111,
666
+ 110,
667
+ 102,
668
+ 105,
669
+ 103
670
+ ]
311
671
  }
312
672
  ]
313
673
  }
@@ -319,26 +679,21 @@
319
679
  "seeds": [
320
680
  {
321
681
  "kind": "const",
322
- "value": [118, 97, 117, 108, 116]
682
+ "value": [
683
+ 118,
684
+ 97,
685
+ 117,
686
+ 108,
687
+ 116
688
+ ]
323
689
  }
324
690
  ]
325
691
  }
326
692
  },
327
693
  {
328
- "name": "tss_pda",
694
+ "name": "admin",
329
695
  "writable": true,
330
- "pda": {
331
- "seeds": [
332
- {
333
- "kind": "const",
334
- "value": [116, 115, 115]
335
- }
336
- ]
337
- }
338
- },
339
- {
340
- "name": "recipient",
341
- "writable": true
696
+ "signer": true
342
697
  },
343
698
  {
344
699
  "name": "system_program",
@@ -347,152 +702,222 @@
347
702
  ],
348
703
  "args": [
349
704
  {
350
- "name": "amount",
351
- "type": "u64"
705
+ "name": "admin",
706
+ "type": "pubkey"
352
707
  },
353
708
  {
354
- "name": "revert_instruction",
355
- "type": {
356
- "defined": {
357
- "name": "RevertInstructions"
358
- }
359
- }
709
+ "name": "pauser",
710
+ "type": "pubkey"
360
711
  },
361
712
  {
362
- "name": "signature",
363
- "type": {
364
- "array": ["u8", 64]
365
- }
713
+ "name": "tss",
714
+ "type": "pubkey"
366
715
  },
367
716
  {
368
- "name": "recovery_id",
369
- "type": "u8"
717
+ "name": "min_cap_usd",
718
+ "type": "u128"
370
719
  },
371
720
  {
372
- "name": "message_hash",
373
- "type": {
374
- "array": ["u8", 32]
375
- }
721
+ "name": "max_cap_usd",
722
+ "type": "u128"
376
723
  },
377
724
  {
378
- "name": "nonce",
379
- "type": "u64"
725
+ "name": "pyth_price_feed",
726
+ "type": "pubkey"
380
727
  }
381
728
  ]
382
729
  },
383
730
  {
384
- "name": "revert_withdraw_spl_token",
385
- "docs": ["@notice TSS-verified revert withdraw for SPL tokens"],
386
- "discriminator": [172, 155, 56, 3, 92, 190, 159, 191],
731
+ "name": "pause",
732
+ "docs": [
733
+ "@notice Pause the gateway"
734
+ ],
735
+ "discriminator": [
736
+ 211,
737
+ 22,
738
+ 221,
739
+ 251,
740
+ 74,
741
+ 121,
742
+ 193,
743
+ 47
744
+ ],
387
745
  "accounts": [
388
746
  {
389
747
  "name": "config",
748
+ "writable": true,
390
749
  "pda": {
391
750
  "seeds": [
392
751
  {
393
752
  "kind": "const",
394
- "value": [99, 111, 110, 102, 105, 103]
753
+ "value": [
754
+ 99,
755
+ 111,
756
+ 110,
757
+ 102,
758
+ 105,
759
+ 103
760
+ ]
395
761
  }
396
762
  ]
397
763
  }
398
764
  },
399
765
  {
400
- "name": "whitelist"
401
- },
766
+ "name": "pauser",
767
+ "signer": true
768
+ }
769
+ ],
770
+ "args": []
771
+ },
772
+ {
773
+ "name": "remove_whitelist_token",
774
+ "docs": [
775
+ "@notice Remove token from whitelist"
776
+ ],
777
+ "discriminator": [
778
+ 65,
779
+ 182,
780
+ 42,
781
+ 255,
782
+ 198,
783
+ 163,
784
+ 73,
785
+ 46
786
+ ],
787
+ "accounts": [
402
788
  {
403
- "name": "vault",
789
+ "name": "config",
404
790
  "writable": true,
405
791
  "pda": {
406
792
  "seeds": [
407
793
  {
408
794
  "kind": "const",
409
- "value": [118, 97, 117, 108, 116]
795
+ "value": [
796
+ 99,
797
+ 111,
798
+ 110,
799
+ 102,
800
+ 105,
801
+ 103
802
+ ]
410
803
  }
411
804
  ]
412
805
  }
413
806
  },
414
807
  {
415
- "name": "token_vault",
416
- "writable": true
417
- },
418
- {
419
- "name": "tss_pda",
808
+ "name": "whitelist",
420
809
  "writable": true,
421
810
  "pda": {
422
811
  "seeds": [
423
812
  {
424
813
  "kind": "const",
425
- "value": [116, 115, 115]
814
+ "value": [
815
+ 119,
816
+ 104,
817
+ 105,
818
+ 116,
819
+ 101,
820
+ 108,
821
+ 105,
822
+ 115,
823
+ 116
824
+ ]
426
825
  }
427
826
  ]
428
827
  }
429
828
  },
430
829
  {
431
- "name": "recipient_token_account",
432
- "writable": true
433
- },
434
- {
435
- "name": "token_mint"
830
+ "name": "admin",
831
+ "writable": true,
832
+ "signer": true
436
833
  },
437
834
  {
438
- "name": "token_program",
439
- "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
835
+ "name": "system_program",
836
+ "address": "11111111111111111111111111111111"
440
837
  }
441
838
  ],
442
839
  "args": [
443
840
  {
444
- "name": "amount",
445
- "type": "u64"
446
- },
447
- {
448
- "name": "revert_instruction",
449
- "type": {
450
- "defined": {
451
- "name": "RevertInstructions"
452
- }
453
- }
454
- },
841
+ "name": "token",
842
+ "type": "pubkey"
843
+ }
844
+ ]
845
+ },
846
+ {
847
+ "name": "reset_nonce",
848
+ "discriminator": [
849
+ 104,
850
+ 139,
851
+ 110,
852
+ 85,
853
+ 234,
854
+ 155,
855
+ 132,
856
+ 248
857
+ ],
858
+ "accounts": [
455
859
  {
456
- "name": "signature",
457
- "type": {
458
- "array": ["u8", 64]
860
+ "name": "tss_pda",
861
+ "writable": true,
862
+ "pda": {
863
+ "seeds": [
864
+ {
865
+ "kind": "const",
866
+ "value": [
867
+ 116,
868
+ 115,
869
+ 115,
870
+ 112,
871
+ 100,
872
+ 97
873
+ ]
874
+ }
875
+ ]
459
876
  }
460
877
  },
461
878
  {
462
- "name": "recovery_id",
463
- "type": "u8"
464
- },
465
- {
466
- "name": "message_hash",
467
- "type": {
468
- "array": ["u8", 32]
469
- }
470
- },
879
+ "name": "authority",
880
+ "signer": true
881
+ }
882
+ ],
883
+ "args": [
471
884
  {
472
- "name": "nonce",
885
+ "name": "new_nonce",
473
886
  "type": "u64"
474
887
  }
475
888
  ]
476
889
  },
477
890
  {
478
- "name": "send_funds",
891
+ "name": "revert_universal_tx",
479
892
  "docs": [
480
- "@notice Allows initiating a TX for movement of funds from source chain to Push Chain.",
481
- "@dev Supports both native SOL and SPL token deposits (like ETH Gateway).",
482
- "For native SOL: pass Pubkey::default() as bridge_token",
483
- "For SPL tokens: pass token mint address as bridge_token",
484
- "The route emits UniversalTx event."
893
+ "@notice TSS-verified revert withdraw for SOL (EVM parity: `revertUniversalTx`)",
894
+ "@param tx_id Transaction ID for tracking"
895
+ ],
896
+ "discriminator": [
897
+ 124,
898
+ 49,
899
+ 81,
900
+ 233,
901
+ 23,
902
+ 147,
903
+ 82,
904
+ 122
485
905
  ],
486
- "discriminator": [84, 247, 211, 40, 63, 106, 15, 59],
487
906
  "accounts": [
488
907
  {
489
908
  "name": "config",
490
- "writable": true,
491
909
  "pda": {
492
910
  "seeds": [
493
911
  {
494
912
  "kind": "const",
495
- "value": [99, 111, 110, 102, 105, 103]
913
+ "value": [
914
+ 99,
915
+ 111,
916
+ 110,
917
+ 102,
918
+ 105,
919
+ 103
920
+ ]
496
921
  }
497
922
  ]
498
923
  }
@@ -504,42 +929,79 @@
504
929
  "seeds": [
505
930
  {
506
931
  "kind": "const",
507
- "value": [118, 97, 117, 108, 116]
932
+ "value": [
933
+ 118,
934
+ 97,
935
+ 117,
936
+ 108,
937
+ 116
938
+ ]
508
939
  }
509
940
  ]
510
941
  }
511
942
  },
512
943
  {
513
- "name": "token_whitelist",
944
+ "name": "tss_pda",
945
+ "writable": true,
514
946
  "pda": {
515
947
  "seeds": [
516
948
  {
517
949
  "kind": "const",
518
- "value": [119, 104, 105, 116, 101, 108, 105, 115, 116]
950
+ "value": [
951
+ 116,
952
+ 115,
953
+ 115,
954
+ 112,
955
+ 100,
956
+ 97
957
+ ]
519
958
  }
520
959
  ]
521
960
  }
522
961
  },
523
962
  {
524
- "name": "user_token_account",
963
+ "name": "recipient",
525
964
  "writable": true
526
965
  },
527
966
  {
528
- "name": "gateway_token_account",
529
- "writable": true
967
+ "name": "executed_tx",
968
+ "docs": [
969
+ "Executed transaction tracker (EVM parity: isExecuted[txID])"
970
+ ],
971
+ "writable": true,
972
+ "pda": {
973
+ "seeds": [
974
+ {
975
+ "kind": "const",
976
+ "value": [
977
+ 101,
978
+ 120,
979
+ 101,
980
+ 99,
981
+ 117,
982
+ 116,
983
+ 101,
984
+ 100,
985
+ 95,
986
+ 116,
987
+ 120
988
+ ]
989
+ },
990
+ {
991
+ "kind": "arg",
992
+ "path": "tx_id"
993
+ }
994
+ ]
995
+ }
530
996
  },
531
997
  {
532
- "name": "user",
998
+ "name": "caller",
999
+ "docs": [
1000
+ "The caller/relayer who pays for the transaction (including executed_tx account creation)"
1001
+ ],
533
1002
  "writable": true,
534
1003
  "signer": true
535
1004
  },
536
- {
537
- "name": "bridge_token"
538
- },
539
- {
540
- "name": "token_program",
541
- "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
542
- },
543
1005
  {
544
1006
  "name": "system_program",
545
1007
  "address": "11111111111111111111111111111111"
@@ -547,17 +1009,16 @@
547
1009
  ],
548
1010
  "args": [
549
1011
  {
550
- "name": "recipient",
1012
+ "name": "tx_id",
551
1013
  "type": {
552
- "array": ["u8", 20]
1014
+ "array": [
1015
+ "u8",
1016
+ 32
1017
+ ]
553
1018
  }
554
1019
  },
555
1020
  {
556
- "name": "bridge_token",
557
- "type": "pubkey"
558
- },
559
- {
560
- "name": "bridge_amount",
1021
+ "name": "amount",
561
1022
  "type": "u64"
562
1023
  },
563
1024
  {
@@ -567,30 +1028,77 @@
567
1028
  "name": "RevertInstructions"
568
1029
  }
569
1030
  }
1031
+ },
1032
+ {
1033
+ "name": "gas_fee",
1034
+ "type": "u64"
1035
+ },
1036
+ {
1037
+ "name": "signature",
1038
+ "type": {
1039
+ "array": [
1040
+ "u8",
1041
+ 64
1042
+ ]
1043
+ }
1044
+ },
1045
+ {
1046
+ "name": "recovery_id",
1047
+ "type": "u8"
1048
+ },
1049
+ {
1050
+ "name": "message_hash",
1051
+ "type": {
1052
+ "array": [
1053
+ "u8",
1054
+ 32
1055
+ ]
1056
+ }
1057
+ },
1058
+ {
1059
+ "name": "nonce",
1060
+ "type": "u64"
570
1061
  }
571
1062
  ]
572
1063
  },
573
1064
  {
574
- "name": "send_tx_with_funds",
1065
+ "name": "revert_universal_tx_token",
575
1066
  "docs": [
576
- "@notice Allows initiating a TX for movement of funds and payload from source chain to Push Chain.",
577
- "@dev Supports both native SOL and SPL token deposits with payload execution.",
578
- "The route emits UniversalTx event."
1067
+ "@notice TSS-verified revert withdraw for SPL tokens (EVM parity: `revertUniversalTxToken`)",
1068
+ "@param tx_id Transaction ID for tracking"
1069
+ ],
1070
+ "discriminator": [
1071
+ 139,
1072
+ 196,
1073
+ 1,
1074
+ 242,
1075
+ 109,
1076
+ 31,
1077
+ 98,
1078
+ 32
579
1079
  ],
580
- "discriminator": [224, 179, 202, 222, 121, 238, 38, 168],
581
1080
  "accounts": [
582
1081
  {
583
1082
  "name": "config",
584
- "writable": true,
585
1083
  "pda": {
586
1084
  "seeds": [
587
1085
  {
588
1086
  "kind": "const",
589
- "value": [99, 111, 110, 102, 105, 103]
1087
+ "value": [
1088
+ 99,
1089
+ 111,
1090
+ 110,
1091
+ 102,
1092
+ 105,
1093
+ 103
1094
+ ]
590
1095
  }
591
1096
  ]
592
1097
  }
593
1098
  },
1099
+ {
1100
+ "name": "whitelist"
1101
+ },
594
1102
  {
595
1103
  "name": "vault",
596
1104
  "writable": true,
@@ -598,125 +1106,113 @@
598
1106
  "seeds": [
599
1107
  {
600
1108
  "kind": "const",
601
- "value": [118, 97, 117, 108, 116]
1109
+ "value": [
1110
+ 118,
1111
+ 97,
1112
+ 117,
1113
+ 108,
1114
+ 116
1115
+ ]
602
1116
  }
603
1117
  ]
604
1118
  }
605
1119
  },
606
1120
  {
607
- "name": "token_whitelist",
1121
+ "name": "token_vault",
1122
+ "writable": true
1123
+ },
1124
+ {
1125
+ "name": "tss_pda",
1126
+ "writable": true,
608
1127
  "pda": {
609
1128
  "seeds": [
610
1129
  {
611
1130
  "kind": "const",
612
- "value": [119, 104, 105, 116, 101, 108, 105, 115, 116]
1131
+ "value": [
1132
+ 116,
1133
+ 115,
1134
+ 115,
1135
+ 112,
1136
+ 100,
1137
+ 97
1138
+ ]
613
1139
  }
614
1140
  ]
615
1141
  }
616
1142
  },
617
1143
  {
618
- "name": "user_token_account",
619
- "writable": true
620
- },
621
- {
622
- "name": "gateway_token_account",
1144
+ "name": "recipient_token_account",
1145
+ "docs": [
1146
+ "Recipient token account (ATA for fund_recipient + token_mint)"
1147
+ ],
623
1148
  "writable": true
624
1149
  },
625
1150
  {
626
- "name": "user",
627
- "writable": true,
628
- "signer": true
629
- },
630
- {
631
- "name": "price_update"
632
- },
633
- {
634
- "name": "bridge_token"
635
- },
636
- {
637
- "name": "token_program",
638
- "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
639
- },
640
- {
641
- "name": "system_program",
642
- "address": "11111111111111111111111111111111"
643
- }
644
- ],
645
- "args": [
646
- {
647
- "name": "bridge_token",
648
- "type": "pubkey"
649
- },
650
- {
651
- "name": "bridge_amount",
652
- "type": "u64"
653
- },
654
- {
655
- "name": "payload",
656
- "type": {
657
- "defined": {
658
- "name": "UniversalPayload"
659
- }
660
- }
661
- },
662
- {
663
- "name": "revert_instruction",
664
- "type": {
665
- "defined": {
666
- "name": "RevertInstructions"
667
- }
668
- }
669
- },
670
- {
671
- "name": "gas_amount",
672
- "type": "u64"
1151
+ "name": "token_mint"
673
1152
  },
674
1153
  {
675
- "name": "signature_data",
676
- "type": "bytes"
677
- }
678
- ]
679
- },
680
- {
681
- "name": "send_tx_with_gas",
682
- "docs": [
683
- "@notice Allows initiating a TX for funding UEA with gas deposits from source chain.",
684
- "@dev Supports only native SOL deposits for gas funding.",
685
- "The route emits UniversalTx event - important for Instant TX Route."
686
- ],
687
- "discriminator": [220, 10, 179, 127, 41, 153, 193, 213],
688
- "accounts": [
689
- {
690
- "name": "config",
1154
+ "name": "executed_tx",
1155
+ "docs": [
1156
+ "Executed transaction tracker (EVM parity: isExecuted[txID])"
1157
+ ],
691
1158
  "writable": true,
692
1159
  "pda": {
693
1160
  "seeds": [
694
1161
  {
695
1162
  "kind": "const",
696
- "value": [99, 111, 110, 102, 105, 103]
1163
+ "value": [
1164
+ 101,
1165
+ 120,
1166
+ 101,
1167
+ 99,
1168
+ 117,
1169
+ 116,
1170
+ 101,
1171
+ 100,
1172
+ 95,
1173
+ 116,
1174
+ 120
1175
+ ]
1176
+ },
1177
+ {
1178
+ "kind": "arg",
1179
+ "path": "tx_id"
697
1180
  }
698
1181
  ]
699
1182
  }
700
1183
  },
701
1184
  {
702
- "name": "vault",
1185
+ "name": "caller",
1186
+ "docs": [
1187
+ "The caller/relayer who pays for the transaction (including executed_tx account creation)"
1188
+ ],
1189
+ "writable": true,
1190
+ "signer": true
1191
+ },
1192
+ {
1193
+ "name": "vault_sol",
1194
+ "docs": [
1195
+ "Vault SOL PDA (needed for gas_fee transfer to caller)"
1196
+ ],
703
1197
  "writable": true,
704
1198
  "pda": {
705
1199
  "seeds": [
706
1200
  {
707
1201
  "kind": "const",
708
- "value": [118, 97, 117, 108, 116]
1202
+ "value": [
1203
+ 118,
1204
+ 97,
1205
+ 117,
1206
+ 108,
1207
+ 116
1208
+ ]
709
1209
  }
710
1210
  ]
711
1211
  }
712
1212
  },
713
1213
  {
714
- "name": "user",
715
- "writable": true,
716
- "signer": true
717
- },
718
- {
719
- "name": "price_update"
1214
+ "name": "token_program",
1215
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
720
1216
  },
721
1217
  {
722
1218
  "name": "system_program",
@@ -725,13 +1221,18 @@
725
1221
  ],
726
1222
  "args": [
727
1223
  {
728
- "name": "payload",
1224
+ "name": "tx_id",
729
1225
  "type": {
730
- "defined": {
731
- "name": "UniversalPayload"
732
- }
1226
+ "array": [
1227
+ "u8",
1228
+ 32
1229
+ ]
733
1230
  }
734
1231
  },
1232
+ {
1233
+ "name": "amount",
1234
+ "type": "u64"
1235
+ },
735
1236
  {
736
1237
  "name": "revert_instruction",
737
1238
  "type": {
@@ -741,12 +1242,34 @@
741
1242
  }
742
1243
  },
743
1244
  {
744
- "name": "amount",
1245
+ "name": "gas_fee",
745
1246
  "type": "u64"
746
1247
  },
747
1248
  {
748
- "name": "signature_data",
749
- "type": "bytes"
1249
+ "name": "signature",
1250
+ "type": {
1251
+ "array": [
1252
+ "u8",
1253
+ 64
1254
+ ]
1255
+ }
1256
+ },
1257
+ {
1258
+ "name": "recovery_id",
1259
+ "type": "u8"
1260
+ },
1261
+ {
1262
+ "name": "message_hash",
1263
+ "type": {
1264
+ "array": [
1265
+ "u8",
1266
+ 32
1267
+ ]
1268
+ }
1269
+ },
1270
+ {
1271
+ "name": "nonce",
1272
+ "type": "u64"
750
1273
  }
751
1274
  ]
752
1275
  },
@@ -757,7 +1280,16 @@
757
1280
  "@dev Native amount parameter mirrors `msg.value` on EVM chains.",
758
1281
  "All routing (gas / funds / batching) is handled inside the deposit module."
759
1282
  ],
760
- "discriminator": [145, 19, 164, 55, 165, 220, 23, 97],
1283
+ "discriminator": [
1284
+ 145,
1285
+ 19,
1286
+ 164,
1287
+ 55,
1288
+ 165,
1289
+ 220,
1290
+ 23,
1291
+ 97
1292
+ ],
761
1293
  "accounts": [
762
1294
  {
763
1295
  "name": "config",
@@ -766,7 +1298,14 @@
766
1298
  "seeds": [
767
1299
  {
768
1300
  "kind": "const",
769
- "value": [99, 111, 110, 102, 105, 103]
1301
+ "value": [
1302
+ 99,
1303
+ 111,
1304
+ 110,
1305
+ 102,
1306
+ 105,
1307
+ 103
1308
+ ]
770
1309
  }
771
1310
  ]
772
1311
  }
@@ -778,7 +1317,13 @@
778
1317
  "seeds": [
779
1318
  {
780
1319
  "kind": "const",
781
- "value": [118, 97, 117, 108, 116]
1320
+ "value": [
1321
+ 118,
1322
+ 97,
1323
+ 117,
1324
+ 108,
1325
+ 116
1326
+ ]
782
1327
  }
783
1328
  ]
784
1329
  }
@@ -807,15 +1352,32 @@
807
1352
  },
808
1353
  {
809
1354
  "name": "rate_limit_config",
810
- "docs": ["Rate limit config - REQUIRED for universal entrypoint"],
1355
+ "docs": [
1356
+ "Rate limit config - REQUIRED for universal entrypoint"
1357
+ ],
811
1358
  "writable": true,
812
1359
  "pda": {
813
1360
  "seeds": [
814
1361
  {
815
1362
  "kind": "const",
816
1363
  "value": [
817
- 114, 97, 116, 101, 95, 108, 105, 109, 105, 116, 95, 99, 111,
818
- 110, 102, 105, 103
1364
+ 114,
1365
+ 97,
1366
+ 116,
1367
+ 101,
1368
+ 95,
1369
+ 108,
1370
+ 105,
1371
+ 109,
1372
+ 105,
1373
+ 116,
1374
+ 95,
1375
+ 99,
1376
+ 111,
1377
+ 110,
1378
+ 102,
1379
+ 105,
1380
+ 103
819
1381
  ]
820
1382
  }
821
1383
  ]
@@ -855,8 +1417,19 @@
855
1417
  },
856
1418
  {
857
1419
  "name": "set_block_usd_cap",
858
- "docs": ["@notice Set block-based USD cap for rate limiting"],
859
- "discriminator": [205, 253, 33, 164, 220, 216, 42, 50],
1420
+ "docs": [
1421
+ "@notice Set block-based USD cap for rate limiting"
1422
+ ],
1423
+ "discriminator": [
1424
+ 205,
1425
+ 253,
1426
+ 33,
1427
+ 164,
1428
+ 220,
1429
+ 216,
1430
+ 42,
1431
+ 50
1432
+ ],
860
1433
  "accounts": [
861
1434
  {
862
1435
  "name": "config",
@@ -865,7 +1438,14 @@
865
1438
  "seeds": [
866
1439
  {
867
1440
  "kind": "const",
868
- "value": [99, 111, 110, 102, 105, 103]
1441
+ "value": [
1442
+ 99,
1443
+ 111,
1444
+ 110,
1445
+ 102,
1446
+ 105,
1447
+ 103
1448
+ ]
869
1449
  }
870
1450
  ]
871
1451
  }
@@ -878,8 +1458,23 @@
878
1458
  {
879
1459
  "kind": "const",
880
1460
  "value": [
881
- 114, 97, 116, 101, 95, 108, 105, 109, 105, 116, 95, 99, 111,
882
- 110, 102, 105, 103
1461
+ 114,
1462
+ 97,
1463
+ 116,
1464
+ 101,
1465
+ 95,
1466
+ 108,
1467
+ 105,
1468
+ 109,
1469
+ 105,
1470
+ 116,
1471
+ 95,
1472
+ 99,
1473
+ 111,
1474
+ 110,
1475
+ 102,
1476
+ 105,
1477
+ 103
883
1478
  ]
884
1479
  }
885
1480
  ]
@@ -904,8 +1499,19 @@
904
1499
  },
905
1500
  {
906
1501
  "name": "set_caps_usd",
907
- "docs": ["@notice Set USD caps"],
908
- "discriminator": [136, 160, 17, 54, 239, 108, 125, 129],
1502
+ "docs": [
1503
+ "@notice Set USD caps"
1504
+ ],
1505
+ "discriminator": [
1506
+ 136,
1507
+ 160,
1508
+ 17,
1509
+ 54,
1510
+ 239,
1511
+ 108,
1512
+ 125,
1513
+ 129
1514
+ ],
909
1515
  "accounts": [
910
1516
  {
911
1517
  "name": "config",
@@ -914,7 +1520,14 @@
914
1520
  "seeds": [
915
1521
  {
916
1522
  "kind": "const",
917
- "value": [99, 111, 110, 102, 105, 103]
1523
+ "value": [
1524
+ 99,
1525
+ 111,
1526
+ 110,
1527
+ 102,
1528
+ 105,
1529
+ 103
1530
+ ]
918
1531
  }
919
1532
  ]
920
1533
  }
@@ -937,8 +1550,19 @@
937
1550
  },
938
1551
  {
939
1552
  "name": "set_pyth_confidence_threshold",
940
- "docs": ["@notice Set Pyth confidence threshold"],
941
- "discriminator": [213, 69, 242, 123, 122, 165, 125, 21],
1553
+ "docs": [
1554
+ "@notice Set Pyth confidence threshold"
1555
+ ],
1556
+ "discriminator": [
1557
+ 213,
1558
+ 69,
1559
+ 242,
1560
+ 123,
1561
+ 122,
1562
+ 165,
1563
+ 125,
1564
+ 21
1565
+ ],
942
1566
  "accounts": [
943
1567
  {
944
1568
  "name": "config",
@@ -947,7 +1571,14 @@
947
1571
  "seeds": [
948
1572
  {
949
1573
  "kind": "const",
950
- "value": [99, 111, 110, 102, 105, 103]
1574
+ "value": [
1575
+ 99,
1576
+ 111,
1577
+ 110,
1578
+ 102,
1579
+ 105,
1580
+ 103
1581
+ ]
951
1582
  }
952
1583
  ]
953
1584
  }
@@ -966,8 +1597,19 @@
966
1597
  },
967
1598
  {
968
1599
  "name": "set_pyth_price_feed",
969
- "docs": ["@notice Set Pyth price feed"],
970
- "discriminator": [202, 185, 109, 150, 255, 130, 210, 208],
1600
+ "docs": [
1601
+ "@notice Set Pyth price feed"
1602
+ ],
1603
+ "discriminator": [
1604
+ 202,
1605
+ 185,
1606
+ 109,
1607
+ 150,
1608
+ 255,
1609
+ 130,
1610
+ 210,
1611
+ 208
1612
+ ],
971
1613
  "accounts": [
972
1614
  {
973
1615
  "name": "config",
@@ -976,7 +1618,14 @@
976
1618
  "seeds": [
977
1619
  {
978
1620
  "kind": "const",
979
- "value": [99, 111, 110, 102, 105, 103]
1621
+ "value": [
1622
+ 99,
1623
+ 111,
1624
+ 110,
1625
+ 102,
1626
+ 105,
1627
+ 103
1628
+ ]
980
1629
  }
981
1630
  ]
982
1631
  }
@@ -1000,7 +1649,16 @@
1000
1649
  "@dev For batch operations, call this function multiple times in a single transaction.",
1001
1650
  "This is the Solana-idiomatic approach and provides better type safety than using remaining_accounts."
1002
1651
  ],
1003
- "discriminator": [67, 225, 226, 248, 119, 98, 18, 68],
1652
+ "discriminator": [
1653
+ 67,
1654
+ 225,
1655
+ 226,
1656
+ 248,
1657
+ 119,
1658
+ 98,
1659
+ 18,
1660
+ 68
1661
+ ],
1004
1662
  "accounts": [
1005
1663
  {
1006
1664
  "name": "config",
@@ -1009,7 +1667,14 @@
1009
1667
  "seeds": [
1010
1668
  {
1011
1669
  "kind": "const",
1012
- "value": [99, 111, 110, 102, 105, 103]
1670
+ "value": [
1671
+ 99,
1672
+ 111,
1673
+ 110,
1674
+ 102,
1675
+ 105,
1676
+ 103
1677
+ ]
1013
1678
  }
1014
1679
  ]
1015
1680
  }
@@ -1021,7 +1686,18 @@
1021
1686
  "seeds": [
1022
1687
  {
1023
1688
  "kind": "const",
1024
- "value": [114, 97, 116, 101, 95, 108, 105, 109, 105, 116]
1689
+ "value": [
1690
+ 114,
1691
+ 97,
1692
+ 116,
1693
+ 101,
1694
+ 95,
1695
+ 108,
1696
+ 105,
1697
+ 109,
1698
+ 105,
1699
+ 116
1700
+ ]
1025
1701
  },
1026
1702
  {
1027
1703
  "kind": "account",
@@ -1050,39 +1726,21 @@
1050
1726
  }
1051
1727
  ]
1052
1728
  },
1053
- {
1054
- "name": "set_tss_address",
1055
- "docs": ["@notice Set TSS address"],
1056
- "discriminator": [158, 254, 147, 0, 154, 3, 56, 50],
1057
- "accounts": [
1058
- {
1059
- "name": "config",
1060
- "writable": true,
1061
- "pda": {
1062
- "seeds": [
1063
- {
1064
- "kind": "const",
1065
- "value": [99, 111, 110, 102, 105, 103]
1066
- }
1067
- ]
1068
- }
1069
- },
1070
- {
1071
- "name": "admin",
1072
- "signer": true
1073
- }
1074
- ],
1075
- "args": [
1076
- {
1077
- "name": "new_tss",
1078
- "type": "pubkey"
1079
- }
1080
- ]
1081
- },
1082
1729
  {
1083
1730
  "name": "unpause",
1084
- "docs": ["@notice Unpause the gateway"],
1085
- "discriminator": [169, 144, 4, 38, 10, 141, 188, 255],
1731
+ "docs": [
1732
+ "@notice Unpause the gateway"
1733
+ ],
1734
+ "discriminator": [
1735
+ 169,
1736
+ 144,
1737
+ 4,
1738
+ 38,
1739
+ 10,
1740
+ 141,
1741
+ 188,
1742
+ 255
1743
+ ],
1086
1744
  "accounts": [
1087
1745
  {
1088
1746
  "name": "config",
@@ -1091,7 +1749,14 @@
1091
1749
  "seeds": [
1092
1750
  {
1093
1751
  "kind": "const",
1094
- "value": [99, 111, 110, 102, 105, 103]
1752
+ "value": [
1753
+ 99,
1754
+ 111,
1755
+ 110,
1756
+ 102,
1757
+ 105,
1758
+ 103
1759
+ ]
1095
1760
  }
1096
1761
  ]
1097
1762
  }
@@ -1105,8 +1770,19 @@
1105
1770
  },
1106
1771
  {
1107
1772
  "name": "update_epoch_duration",
1108
- "docs": ["@notice Update epoch duration for rate limiting"],
1109
- "discriminator": [145, 173, 2, 249, 226, 157, 29, 104],
1773
+ "docs": [
1774
+ "@notice Update epoch duration for rate limiting"
1775
+ ],
1776
+ "discriminator": [
1777
+ 145,
1778
+ 173,
1779
+ 2,
1780
+ 249,
1781
+ 226,
1782
+ 157,
1783
+ 29,
1784
+ 104
1785
+ ],
1110
1786
  "accounts": [
1111
1787
  {
1112
1788
  "name": "config",
@@ -1115,7 +1791,14 @@
1115
1791
  "seeds": [
1116
1792
  {
1117
1793
  "kind": "const",
1118
- "value": [99, 111, 110, 102, 105, 103]
1794
+ "value": [
1795
+ 99,
1796
+ 111,
1797
+ 110,
1798
+ 102,
1799
+ 105,
1800
+ 103
1801
+ ]
1119
1802
  }
1120
1803
  ]
1121
1804
  }
@@ -1128,8 +1811,23 @@
1128
1811
  {
1129
1812
  "kind": "const",
1130
1813
  "value": [
1131
- 114, 97, 116, 101, 95, 108, 105, 109, 105, 116, 95, 99, 111,
1132
- 110, 102, 105, 103
1814
+ 114,
1815
+ 97,
1816
+ 116,
1817
+ 101,
1818
+ 95,
1819
+ 108,
1820
+ 105,
1821
+ 109,
1822
+ 105,
1823
+ 116,
1824
+ 95,
1825
+ 99,
1826
+ 111,
1827
+ 110,
1828
+ 102,
1829
+ 105,
1830
+ 103
1133
1831
  ]
1134
1832
  }
1135
1833
  ]
@@ -1154,7 +1852,16 @@
1154
1852
  },
1155
1853
  {
1156
1854
  "name": "update_tss",
1157
- "discriminator": [227, 136, 3, 242, 177, 168, 10, 160],
1855
+ "discriminator": [
1856
+ 227,
1857
+ 136,
1858
+ 3,
1859
+ 242,
1860
+ 177,
1861
+ 168,
1862
+ 10,
1863
+ 160
1864
+ ],
1158
1865
  "accounts": [
1159
1866
  {
1160
1867
  "name": "tss_pda",
@@ -1163,7 +1870,14 @@
1163
1870
  "seeds": [
1164
1871
  {
1165
1872
  "kind": "const",
1166
- "value": [116, 115, 115]
1873
+ "value": [
1874
+ 116,
1875
+ 115,
1876
+ 115,
1877
+ 112,
1878
+ 100,
1879
+ 97
1880
+ ]
1167
1881
  }
1168
1882
  ]
1169
1883
  }
@@ -1177,19 +1891,33 @@
1177
1891
  {
1178
1892
  "name": "tss_eth_address",
1179
1893
  "type": {
1180
- "array": ["u8", 20]
1894
+ "array": [
1895
+ "u8",
1896
+ 20
1897
+ ]
1181
1898
  }
1182
1899
  },
1183
1900
  {
1184
1901
  "name": "chain_id",
1185
- "type": "u64"
1902
+ "type": "string"
1186
1903
  }
1187
1904
  ]
1188
1905
  },
1189
1906
  {
1190
1907
  "name": "whitelist_token",
1191
- "docs": ["@notice Whitelist a token"],
1192
- "discriminator": [6, 141, 83, 167, 31, 6, 2, 224],
1908
+ "docs": [
1909
+ "@notice Whitelist a token"
1910
+ ],
1911
+ "discriminator": [
1912
+ 6,
1913
+ 141,
1914
+ 83,
1915
+ 167,
1916
+ 31,
1917
+ 6,
1918
+ 2,
1919
+ 224
1920
+ ],
1193
1921
  "accounts": [
1194
1922
  {
1195
1923
  "name": "config",
@@ -1198,7 +1926,14 @@
1198
1926
  "seeds": [
1199
1927
  {
1200
1928
  "kind": "const",
1201
- "value": [99, 111, 110, 102, 105, 103]
1929
+ "value": [
1930
+ 99,
1931
+ 111,
1932
+ 110,
1933
+ 102,
1934
+ 105,
1935
+ 103
1936
+ ]
1202
1937
  }
1203
1938
  ]
1204
1939
  }
@@ -1210,7 +1945,17 @@
1210
1945
  "seeds": [
1211
1946
  {
1212
1947
  "kind": "const",
1213
- "value": [119, 104, 105, 116, 101, 108, 105, 115, 116]
1948
+ "value": [
1949
+ 119,
1950
+ 104,
1951
+ 105,
1952
+ 116,
1953
+ 101,
1954
+ 108,
1955
+ 105,
1956
+ 115,
1957
+ 116
1958
+ ]
1214
1959
  }
1215
1960
  ]
1216
1961
  }
@@ -1233,9 +1978,22 @@
1233
1978
  ]
1234
1979
  },
1235
1980
  {
1236
- "name": "withdraw_spl_token_tss",
1237
- "docs": ["@notice TSS-verified withdraw of SPL tokens"],
1238
- "discriminator": [238, 209, 47, 229, 44, 234, 138, 198],
1981
+ "name": "withdraw",
1982
+ "docs": [
1983
+ "@notice TSS-verified withdraw of native SOL (EVM parity: `withdraw`)",
1984
+ "@param tx_id Transaction ID for tracking",
1985
+ "@param origin_caller Original caller on source chain (EVM address, 20 bytes)"
1986
+ ],
1987
+ "discriminator": [
1988
+ 183,
1989
+ 18,
1990
+ 70,
1991
+ 156,
1992
+ 148,
1993
+ 109,
1994
+ 161,
1995
+ 34
1996
+ ],
1239
1997
  "accounts": [
1240
1998
  {
1241
1999
  "name": "config",
@@ -1243,14 +2001,18 @@
1243
2001
  "seeds": [
1244
2002
  {
1245
2003
  "kind": "const",
1246
- "value": [99, 111, 110, 102, 105, 103]
2004
+ "value": [
2005
+ 99,
2006
+ 111,
2007
+ 110,
2008
+ 102,
2009
+ 105,
2010
+ 103
2011
+ ]
1247
2012
  }
1248
2013
  ]
1249
2014
  }
1250
2015
  },
1251
- {
1252
- "name": "whitelist"
1253
- },
1254
2016
  {
1255
2017
  "name": "vault",
1256
2018
  "writable": true,
@@ -1258,15 +2020,17 @@
1258
2020
  "seeds": [
1259
2021
  {
1260
2022
  "kind": "const",
1261
- "value": [118, 97, 117, 108, 116]
2023
+ "value": [
2024
+ 118,
2025
+ 97,
2026
+ 117,
2027
+ 108,
2028
+ 116
2029
+ ]
1262
2030
  }
1263
2031
  ]
1264
2032
  }
1265
2033
  },
1266
- {
1267
- "name": "token_vault",
1268
- "writable": true
1269
- },
1270
2034
  {
1271
2035
  "name": "tss_pda",
1272
2036
  "writable": true,
@@ -1274,32 +2038,102 @@
1274
2038
  "seeds": [
1275
2039
  {
1276
2040
  "kind": "const",
1277
- "value": [116, 115, 115]
2041
+ "value": [
2042
+ 116,
2043
+ 115,
2044
+ 115,
2045
+ 112,
2046
+ 100,
2047
+ 97
2048
+ ]
1278
2049
  }
1279
2050
  ]
1280
2051
  }
1281
2052
  },
1282
2053
  {
1283
- "name": "recipient_token_account",
2054
+ "name": "recipient",
1284
2055
  "writable": true
1285
2056
  },
1286
2057
  {
1287
- "name": "token_mint"
2058
+ "name": "executed_tx",
2059
+ "docs": [
2060
+ "Executed transaction tracker (EVM parity: isExecuted[txID])",
2061
+ "PDA: [b\"executed_tx\", tx_id] - account existence = transaction executed",
2062
+ "Standard Solana pattern (equivalent to Solidity mapping(bytes32 => bool))"
2063
+ ],
2064
+ "writable": true,
2065
+ "pda": {
2066
+ "seeds": [
2067
+ {
2068
+ "kind": "const",
2069
+ "value": [
2070
+ 101,
2071
+ 120,
2072
+ 101,
2073
+ 99,
2074
+ 117,
2075
+ 116,
2076
+ 101,
2077
+ 100,
2078
+ 95,
2079
+ 116,
2080
+ 120
2081
+ ]
2082
+ },
2083
+ {
2084
+ "kind": "arg",
2085
+ "path": "tx_id"
2086
+ }
2087
+ ]
2088
+ }
1288
2089
  },
1289
2090
  {
1290
- "name": "token_program",
1291
- "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2091
+ "name": "caller",
2092
+ "docs": [
2093
+ "The caller/relayer who pays for the transaction (including executed_tx account creation)"
2094
+ ],
2095
+ "writable": true,
2096
+ "signer": true
2097
+ },
2098
+ {
2099
+ "name": "system_program",
2100
+ "address": "11111111111111111111111111111111"
1292
2101
  }
1293
2102
  ],
1294
2103
  "args": [
2104
+ {
2105
+ "name": "tx_id",
2106
+ "type": {
2107
+ "array": [
2108
+ "u8",
2109
+ 32
2110
+ ]
2111
+ }
2112
+ },
2113
+ {
2114
+ "name": "origin_caller",
2115
+ "type": {
2116
+ "array": [
2117
+ "u8",
2118
+ 20
2119
+ ]
2120
+ }
2121
+ },
1295
2122
  {
1296
2123
  "name": "amount",
1297
2124
  "type": "u64"
1298
2125
  },
2126
+ {
2127
+ "name": "gas_fee",
2128
+ "type": "u64"
2129
+ },
1299
2130
  {
1300
2131
  "name": "signature",
1301
2132
  "type": {
1302
- "array": ["u8", 64]
2133
+ "array": [
2134
+ "u8",
2135
+ 64
2136
+ ]
1303
2137
  }
1304
2138
  },
1305
2139
  {
@@ -1309,7 +2143,10 @@
1309
2143
  {
1310
2144
  "name": "message_hash",
1311
2145
  "type": {
1312
- "array": ["u8", 32]
2146
+ "array": [
2147
+ "u8",
2148
+ 32
2149
+ ]
1313
2150
  }
1314
2151
  },
1315
2152
  {
@@ -1319,9 +2156,22 @@
1319
2156
  ]
1320
2157
  },
1321
2158
  {
1322
- "name": "withdraw_tss",
1323
- "docs": ["@notice TSS-verified withdraw of native SOL"],
1324
- "discriminator": [112, 51, 93, 250, 136, 175, 118, 100],
2159
+ "name": "withdraw_funds",
2160
+ "docs": [
2161
+ "@notice TSS-verified withdraw of SPL tokens (EVM parity: `withdrawFunds`)",
2162
+ "@param tx_id Transaction ID for tracking",
2163
+ "@param origin_caller Original caller on source chain (EVM address, 20 bytes)"
2164
+ ],
2165
+ "discriminator": [
2166
+ 241,
2167
+ 36,
2168
+ 29,
2169
+ 111,
2170
+ 208,
2171
+ 31,
2172
+ 104,
2173
+ 217
2174
+ ],
1325
2175
  "accounts": [
1326
2176
  {
1327
2177
  "name": "config",
@@ -1329,11 +2179,21 @@
1329
2179
  "seeds": [
1330
2180
  {
1331
2181
  "kind": "const",
1332
- "value": [99, 111, 110, 102, 105, 103]
2182
+ "value": [
2183
+ 99,
2184
+ 111,
2185
+ 110,
2186
+ 102,
2187
+ 105,
2188
+ 103
2189
+ ]
1333
2190
  }
1334
2191
  ]
1335
2192
  }
1336
2193
  },
2194
+ {
2195
+ "name": "whitelist"
2196
+ },
1337
2197
  {
1338
2198
  "name": "vault",
1339
2199
  "writable": true,
@@ -1341,11 +2201,21 @@
1341
2201
  "seeds": [
1342
2202
  {
1343
2203
  "kind": "const",
1344
- "value": [118, 97, 117, 108, 116]
2204
+ "value": [
2205
+ 118,
2206
+ 97,
2207
+ 117,
2208
+ 108,
2209
+ 116
2210
+ ]
1345
2211
  }
1346
2212
  ]
1347
2213
  }
1348
2214
  },
2215
+ {
2216
+ "name": "token_vault",
2217
+ "writable": true
2218
+ },
1349
2219
  {
1350
2220
  "name": "tss_pda",
1351
2221
  "writable": true,
@@ -1353,29 +2223,128 @@
1353
2223
  "seeds": [
1354
2224
  {
1355
2225
  "kind": "const",
1356
- "value": [116, 115, 115]
2226
+ "value": [
2227
+ 116,
2228
+ 115,
2229
+ 115,
2230
+ 112,
2231
+ 100,
2232
+ 97
2233
+ ]
1357
2234
  }
1358
2235
  ]
1359
2236
  }
1360
2237
  },
1361
2238
  {
1362
- "name": "recipient",
2239
+ "name": "recipient_token_account",
1363
2240
  "writable": true
1364
2241
  },
1365
- {
1366
- "name": "system_program",
1367
- "address": "11111111111111111111111111111111"
1368
- }
1369
- ],
1370
- "args": [
2242
+ {
2243
+ "name": "token_mint"
2244
+ },
2245
+ {
2246
+ "name": "executed_tx",
2247
+ "docs": [
2248
+ "Executed transaction tracker (EVM parity: isExecuted[txID])"
2249
+ ],
2250
+ "writable": true,
2251
+ "pda": {
2252
+ "seeds": [
2253
+ {
2254
+ "kind": "const",
2255
+ "value": [
2256
+ 101,
2257
+ 120,
2258
+ 101,
2259
+ 99,
2260
+ 117,
2261
+ 116,
2262
+ 101,
2263
+ 100,
2264
+ 95,
2265
+ 116,
2266
+ 120
2267
+ ]
2268
+ },
2269
+ {
2270
+ "kind": "arg",
2271
+ "path": "tx_id"
2272
+ }
2273
+ ]
2274
+ }
2275
+ },
2276
+ {
2277
+ "name": "caller",
2278
+ "docs": [
2279
+ "The caller/relayer who pays for the transaction (including executed_tx account creation)"
2280
+ ],
2281
+ "writable": true,
2282
+ "signer": true
2283
+ },
2284
+ {
2285
+ "name": "vault_sol",
2286
+ "docs": [
2287
+ "Vault SOL PDA (needed for gas_fee transfer to caller)"
2288
+ ],
2289
+ "writable": true,
2290
+ "pda": {
2291
+ "seeds": [
2292
+ {
2293
+ "kind": "const",
2294
+ "value": [
2295
+ 118,
2296
+ 97,
2297
+ 117,
2298
+ 108,
2299
+ 116
2300
+ ]
2301
+ }
2302
+ ]
2303
+ }
2304
+ },
2305
+ {
2306
+ "name": "token_program",
2307
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2308
+ },
2309
+ {
2310
+ "name": "system_program",
2311
+ "address": "11111111111111111111111111111111"
2312
+ }
2313
+ ],
2314
+ "args": [
2315
+ {
2316
+ "name": "tx_id",
2317
+ "type": {
2318
+ "array": [
2319
+ "u8",
2320
+ 32
2321
+ ]
2322
+ }
2323
+ },
2324
+ {
2325
+ "name": "origin_caller",
2326
+ "type": {
2327
+ "array": [
2328
+ "u8",
2329
+ 20
2330
+ ]
2331
+ }
2332
+ },
1371
2333
  {
1372
2334
  "name": "amount",
1373
2335
  "type": "u64"
1374
2336
  },
2337
+ {
2338
+ "name": "gas_fee",
2339
+ "type": "u64"
2340
+ },
1375
2341
  {
1376
2342
  "name": "signature",
1377
2343
  "type": {
1378
- "array": ["u8", 64]
2344
+ "array": [
2345
+ "u8",
2346
+ 64
2347
+ ]
1379
2348
  }
1380
2349
  },
1381
2350
  {
@@ -1385,7 +2354,10 @@
1385
2354
  {
1386
2355
  "name": "message_hash",
1387
2356
  "type": {
1388
- "array": ["u8", 32]
2357
+ "array": [
2358
+ "u8",
2359
+ 32
2360
+ ]
1389
2361
  }
1390
2362
  },
1391
2363
  {
@@ -1398,61 +2370,213 @@
1398
2370
  "accounts": [
1399
2371
  {
1400
2372
  "name": "Config",
1401
- "discriminator": [155, 12, 170, 224, 30, 250, 204, 130]
2373
+ "discriminator": [
2374
+ 155,
2375
+ 12,
2376
+ 170,
2377
+ 224,
2378
+ 30,
2379
+ 250,
2380
+ 204,
2381
+ 130
2382
+ ]
2383
+ },
2384
+ {
2385
+ "name": "ExecutedTx",
2386
+ "discriminator": [
2387
+ 57,
2388
+ 204,
2389
+ 8,
2390
+ 150,
2391
+ 49,
2392
+ 18,
2393
+ 183,
2394
+ 38
2395
+ ]
1402
2396
  },
1403
2397
  {
1404
2398
  "name": "PriceUpdateV2",
1405
- "discriminator": [34, 241, 35, 99, 157, 126, 244, 205]
2399
+ "discriminator": [
2400
+ 34,
2401
+ 241,
2402
+ 35,
2403
+ 99,
2404
+ 157,
2405
+ 126,
2406
+ 244,
2407
+ 205
2408
+ ]
1406
2409
  },
1407
2410
  {
1408
2411
  "name": "RateLimitConfig",
1409
- "discriminator": [172, 233, 8, 17, 15, 174, 216, 176]
2412
+ "discriminator": [
2413
+ 172,
2414
+ 233,
2415
+ 8,
2416
+ 17,
2417
+ 15,
2418
+ 174,
2419
+ 216,
2420
+ 176
2421
+ ]
1410
2422
  },
1411
2423
  {
1412
2424
  "name": "TokenRateLimit",
1413
- "discriminator": [129, 99, 70, 230, 57, 181, 132, 97]
2425
+ "discriminator": [
2426
+ 129,
2427
+ 99,
2428
+ 70,
2429
+ 230,
2430
+ 57,
2431
+ 181,
2432
+ 132,
2433
+ 97
2434
+ ]
1414
2435
  },
1415
2436
  {
1416
2437
  "name": "TokenWhitelist",
1417
- "discriminator": [105, 240, 104, 47, 95, 13, 48, 78]
2438
+ "discriminator": [
2439
+ 105,
2440
+ 240,
2441
+ 104,
2442
+ 47,
2443
+ 95,
2444
+ 13,
2445
+ 48,
2446
+ 78
2447
+ ]
1418
2448
  },
1419
2449
  {
1420
2450
  "name": "TssPda",
1421
- "discriminator": [121, 138, 162, 251, 127, 95, 238, 135]
2451
+ "discriminator": [
2452
+ 121,
2453
+ 138,
2454
+ 162,
2455
+ 251,
2456
+ 127,
2457
+ 95,
2458
+ 238,
2459
+ 135
2460
+ ]
1422
2461
  }
1423
2462
  ],
1424
2463
  "events": [
1425
2464
  {
1426
2465
  "name": "BlockUsdCapUpdated",
1427
- "discriminator": [69, 44, 151, 48, 36, 74, 176, 194]
2466
+ "discriminator": [
2467
+ 69,
2468
+ 44,
2469
+ 151,
2470
+ 48,
2471
+ 36,
2472
+ 74,
2473
+ 176,
2474
+ 194
2475
+ ]
1428
2476
  },
1429
2477
  {
1430
2478
  "name": "CapsUpdated",
1431
- "discriminator": [147, 181, 117, 249, 72, 147, 156, 255]
2479
+ "discriminator": [
2480
+ 147,
2481
+ 181,
2482
+ 117,
2483
+ 249,
2484
+ 72,
2485
+ 147,
2486
+ 156,
2487
+ 255
2488
+ ]
1432
2489
  },
1433
2490
  {
1434
2491
  "name": "EpochDurationUpdated",
1435
- "discriminator": [167, 122, 82, 178, 133, 191, 19, 129]
2492
+ "discriminator": [
2493
+ 167,
2494
+ 122,
2495
+ 82,
2496
+ 178,
2497
+ 133,
2498
+ 191,
2499
+ 19,
2500
+ 129
2501
+ ]
1436
2502
  },
1437
2503
  {
1438
- "name": "FundsAddedEvent",
1439
- "discriminator": [127, 31, 108, 255, 187, 19, 70, 68]
2504
+ "name": "RevertUniversalTx",
2505
+ "discriminator": [
2506
+ 249,
2507
+ 74,
2508
+ 39,
2509
+ 203,
2510
+ 149,
2511
+ 54,
2512
+ 48,
2513
+ 186
2514
+ ]
1440
2515
  },
1441
2516
  {
1442
2517
  "name": "TSSAddressUpdated",
1443
- "discriminator": [157, 148, 149, 250, 42, 118, 17, 232]
2518
+ "discriminator": [
2519
+ 157,
2520
+ 148,
2521
+ 149,
2522
+ 250,
2523
+ 42,
2524
+ 118,
2525
+ 17,
2526
+ 232
2527
+ ]
1444
2528
  },
1445
2529
  {
1446
2530
  "name": "TokenRateLimitUpdated",
1447
- "discriminator": [73, 75, 54, 189, 59, 130, 39, 59]
2531
+ "discriminator": [
2532
+ 73,
2533
+ 75,
2534
+ 54,
2535
+ 189,
2536
+ 59,
2537
+ 130,
2538
+ 39,
2539
+ 59
2540
+ ]
1448
2541
  },
1449
2542
  {
1450
2543
  "name": "UniversalTx",
1451
- "discriminator": [108, 154, 216, 41, 181, 234, 29, 124]
2544
+ "discriminator": [
2545
+ 108,
2546
+ 154,
2547
+ 216,
2548
+ 41,
2549
+ 181,
2550
+ 234,
2551
+ 29,
2552
+ 124
2553
+ ]
1452
2554
  },
1453
2555
  {
1454
- "name": "WithdrawFunds",
1455
- "discriminator": [4, 77, 4, 28, 115, 6, 39, 233]
2556
+ "name": "UniversalTxExecuted",
2557
+ "discriminator": [
2558
+ 85,
2559
+ 124,
2560
+ 2,
2561
+ 217,
2562
+ 112,
2563
+ 75,
2564
+ 63,
2565
+ 203
2566
+ ]
2567
+ },
2568
+ {
2569
+ "name": "WithdrawToken",
2570
+ "discriminator": [
2571
+ 65,
2572
+ 183,
2573
+ 107,
2574
+ 32,
2575
+ 149,
2576
+ 183,
2577
+ 215,
2578
+ 129
2579
+ ]
1456
2580
  }
1457
2581
  ],
1458
2582
  "errors": [
@@ -1498,103 +2622,138 @@
1498
2622
  },
1499
2623
  {
1500
2624
  "code": 6008,
1501
- "name": "InvalidPayload",
1502
- "msg": "Invalid payload"
2625
+ "name": "InvalidPrice",
2626
+ "msg": "Invalid price data"
1503
2627
  },
1504
2628
  {
1505
2629
  "code": 6009,
1506
- "name": "DeadlineExceeded",
1507
- "msg": "Deadline exceeded"
2630
+ "name": "TokenAlreadyWhitelisted",
2631
+ "msg": "Token already whitelisted"
1508
2632
  },
1509
2633
  {
1510
2634
  "code": 6010,
1511
- "name": "InvalidPrice",
1512
- "msg": "Invalid price data"
2635
+ "name": "TokenNotWhitelisted",
2636
+ "msg": "Token not whitelisted"
1513
2637
  },
1514
2638
  {
1515
2639
  "code": 6011,
1516
- "name": "TokenAlreadyWhitelisted",
1517
- "msg": "Token already whitelisted"
2640
+ "name": "InvalidOwner",
2641
+ "msg": "Invalid owner"
1518
2642
  },
1519
2643
  {
1520
2644
  "code": 6012,
1521
- "name": "TokenNotWhitelisted",
1522
- "msg": "Token not whitelisted"
2645
+ "name": "Paused",
2646
+ "msg": "Contract is paused"
1523
2647
  },
1524
2648
  {
1525
2649
  "code": 6013,
1526
- "name": "TokenTransferFailed",
1527
- "msg": "Token transfer failed"
2650
+ "name": "InvalidInput",
2651
+ "msg": "Invalid input"
1528
2652
  },
1529
2653
  {
1530
2654
  "code": 6014,
1531
- "name": "InvalidTokenVault",
1532
- "msg": "Invalid token vault"
2655
+ "name": "InvalidTxType",
2656
+ "msg": "Invalid transaction type"
1533
2657
  },
1534
2658
  {
1535
2659
  "code": 6015,
1536
- "name": "InvalidOwner",
1537
- "msg": "Invalid owner"
2660
+ "name": "InvalidMint",
2661
+ "msg": "Invalid mint"
1538
2662
  },
1539
2663
  {
1540
2664
  "code": 6016,
1541
- "name": "SlippageExceededOrExpired",
1542
- "msg": "Slippage exceeded or expired"
2665
+ "name": "InsufficientBalance",
2666
+ "msg": "Insufficient balance"
1543
2667
  },
1544
2668
  {
1545
2669
  "code": 6017,
1546
- "name": "Paused",
1547
- "msg": "Contract is paused"
2670
+ "name": "InvalidToken",
2671
+ "msg": "Invalid token"
1548
2672
  },
1549
2673
  {
1550
2674
  "code": 6018,
1551
- "name": "InvalidInput",
1552
- "msg": "Invalid input"
2675
+ "name": "BlockUsdCapExceeded",
2676
+ "msg": "Block USD cap exceeded"
1553
2677
  },
1554
2678
  {
1555
2679
  "code": 6019,
1556
- "name": "InvalidTxType",
1557
- "msg": "Invalid transaction type"
2680
+ "name": "RateLimitExceeded",
2681
+ "msg": "Rate limit exceeded"
1558
2682
  },
1559
2683
  {
1560
2684
  "code": 6020,
1561
- "name": "InvalidData",
1562
- "msg": "Invalid data"
2685
+ "name": "InvalidAccount",
2686
+ "msg": "Invalid account"
1563
2687
  },
1564
2688
  {
1565
2689
  "code": 6021,
1566
- "name": "InvalidMint",
1567
- "msg": "Invalid mint"
2690
+ "name": "NotSupported",
2691
+ "msg": "Token not supported"
1568
2692
  },
1569
2693
  {
1570
2694
  "code": 6022,
1571
- "name": "InsufficientBalance",
1572
- "msg": "Insufficient balance"
2695
+ "name": "MessageHashMismatch",
2696
+ "msg": "Message hash mismatch"
1573
2697
  },
1574
2698
  {
1575
2699
  "code": 6023,
1576
- "name": "InvalidToken",
1577
- "msg": "Invalid token"
2700
+ "name": "TssAuthFailed",
2701
+ "msg": "TSS authentication failed"
1578
2702
  },
1579
2703
  {
1580
2704
  "code": 6024,
1581
- "name": "BlockUsdCapExceeded",
1582
- "msg": "Block USD cap exceeded"
2705
+ "name": "NonceMismatch",
2706
+ "msg": "Nonce mismatch"
1583
2707
  },
1584
2708
  {
1585
2709
  "code": 6025,
1586
- "name": "RateLimitExceeded",
1587
- "msg": "Rate limit exceeded"
2710
+ "name": "AccountListLengthMismatch",
2711
+ "msg": "Account list length mismatch"
1588
2712
  },
1589
2713
  {
1590
2714
  "code": 6026,
1591
- "name": "InvalidAccount",
1592
- "msg": "Invalid account"
2715
+ "name": "AccountPubkeyMismatch",
2716
+ "msg": "Account pubkey mismatch"
1593
2717
  },
1594
2718
  {
1595
2719
  "code": 6027,
1596
- "name": "NotSupported",
1597
- "msg": "Token not supported"
2720
+ "name": "AccountWritableFlagMismatch",
2721
+ "msg": "Account writable flag mismatch"
2722
+ },
2723
+ {
2724
+ "code": 6028,
2725
+ "name": "UnexpectedOuterSigner",
2726
+ "msg": "Unexpected outer signer in remaining accounts"
2727
+ },
2728
+ {
2729
+ "code": 6029,
2730
+ "name": "TargetProgramMismatch",
2731
+ "msg": "Target program mismatch"
2732
+ },
2733
+ {
2734
+ "code": 6030,
2735
+ "name": "InvalidProgram",
2736
+ "msg": "Destination program is not executable"
2737
+ },
2738
+ {
2739
+ "code": 6031,
2740
+ "name": "PayloadExecuted",
2741
+ "msg": "Payload already executed"
2742
+ },
2743
+ {
2744
+ "code": 6032,
2745
+ "name": "SerializationError",
2746
+ "msg": "Serialization error"
2747
+ },
2748
+ {
2749
+ "code": 6033,
2750
+ "name": "NoWritableRecipient",
2751
+ "msg": "No writable recipient found in accounts"
2752
+ },
2753
+ {
2754
+ "code": 6034,
2755
+ "name": "InvalidInstruction",
2756
+ "msg": "Invalid instruction"
1598
2757
  }
1599
2758
  ],
1600
2759
  "types": [
@@ -1710,35 +2869,33 @@
1710
2869
  }
1711
2870
  },
1712
2871
  {
1713
- "name": "FundsAddedEvent",
2872
+ "name": "ExecutedTx",
2873
+ "docs": [
2874
+ "Executed transaction tracker (parity with EVM `isExecuted[txID]` mapping).",
2875
+ "PDA: `[b\"executed_tx\", tx_id]`.",
2876
+ "Account existence = transaction executed (replay protection via `init` constraint)."
2877
+ ],
2878
+ "type": {
2879
+ "kind": "struct",
2880
+ "fields": []
2881
+ }
2882
+ },
2883
+ {
2884
+ "name": "GatewayAccountMeta",
1714
2885
  "docs": [
1715
- "Legacy event for fee-abstraction route (locker-compatible).",
1716
- "Matches `pushsolanalocker` `FundsAddedEvent` exactly for offchain compatibility."
2886
+ "Account metadata for execute messages (no isSigner in payload).",
2887
+ "Off-chain builds this from target instruction's account list."
1717
2888
  ],
1718
2889
  "type": {
1719
2890
  "kind": "struct",
1720
2891
  "fields": [
1721
2892
  {
1722
- "name": "user",
2893
+ "name": "pubkey",
1723
2894
  "type": "pubkey"
1724
2895
  },
1725
2896
  {
1726
- "name": "sol_amount",
1727
- "type": "u64"
1728
- },
1729
- {
1730
- "name": "usd_equivalent",
1731
- "type": "i128"
1732
- },
1733
- {
1734
- "name": "usd_exponent",
1735
- "type": "i32"
1736
- },
1737
- {
1738
- "name": "transaction_hash",
1739
- "type": {
1740
- "array": ["u8", 32]
1741
- }
2897
+ "name": "is_writable",
2898
+ "type": "bool"
1742
2899
  }
1743
2900
  ]
1744
2901
  }
@@ -1781,7 +2938,10 @@
1781
2938
  "`FeedId` but avoid the type alias because of compatibility issues with Anchor's `idl-build` feature."
1782
2939
  ],
1783
2940
  "type": {
1784
- "array": ["u8", 32]
2941
+ "array": [
2942
+ "u8",
2943
+ 32
2944
+ ]
1785
2945
  }
1786
2946
  },
1787
2947
  {
@@ -1798,7 +2958,9 @@
1798
2958
  },
1799
2959
  {
1800
2960
  "name": "publish_time",
1801
- "docs": ["The timestamp of this price update in seconds"],
2961
+ "docs": [
2962
+ "The timestamp of this price update in seconds"
2963
+ ],
1802
2964
  "type": "i64"
1803
2965
  },
1804
2966
  {
@@ -1921,6 +3083,46 @@
1921
3083
  ]
1922
3084
  }
1923
3085
  },
3086
+ {
3087
+ "name": "RevertUniversalTx",
3088
+ "docs": [
3089
+ "Revert withdraw event (parity with EVM `RevertUniversalTx`)."
3090
+ ],
3091
+ "type": {
3092
+ "kind": "struct",
3093
+ "fields": [
3094
+ {
3095
+ "name": "tx_id",
3096
+ "type": {
3097
+ "array": [
3098
+ "u8",
3099
+ 32
3100
+ ]
3101
+ }
3102
+ },
3103
+ {
3104
+ "name": "fund_recipient",
3105
+ "type": "pubkey"
3106
+ },
3107
+ {
3108
+ "name": "token",
3109
+ "type": "pubkey"
3110
+ },
3111
+ {
3112
+ "name": "amount",
3113
+ "type": "u64"
3114
+ },
3115
+ {
3116
+ "name": "revert_instruction",
3117
+ "type": {
3118
+ "defined": {
3119
+ "name": "RevertInstructions"
3120
+ }
3121
+ }
3122
+ }
3123
+ ]
3124
+ }
3125
+ },
1924
3126
  {
1925
3127
  "name": "TSSAddressUpdated",
1926
3128
  "type": {
@@ -2011,7 +3213,7 @@
2011
3213
  "name": "TssPda",
2012
3214
  "docs": [
2013
3215
  "TSS state PDA for ECDSA verification (Ethereum-style secp256k1).",
2014
- "Stores 20-byte ETH address, chain id, and replay-protection nonce."
3216
+ "Stores 20-byte ETH address, chain id (Solana cluster pubkey as String), and replay-protection nonce."
2015
3217
  ],
2016
3218
  "type": {
2017
3219
  "kind": "struct",
@@ -2019,12 +3221,15 @@
2019
3221
  {
2020
3222
  "name": "tss_eth_address",
2021
3223
  "type": {
2022
- "array": ["u8", 20]
3224
+ "array": [
3225
+ "u8",
3226
+ 20
3227
+ ]
2023
3228
  }
2024
3229
  },
2025
3230
  {
2026
3231
  "name": "chain_id",
2027
- "type": "u64"
3232
+ "type": "string"
2028
3233
  },
2029
3234
  {
2030
3235
  "name": "nonce",
@@ -2066,78 +3271,92 @@
2066
3271
  }
2067
3272
  },
2068
3273
  {
2069
- "name": "UniversalPayload",
3274
+ "name": "UniversalTx",
2070
3275
  "docs": [
2071
- "Universal payload for cross-chain execution (parity with EVM `UniversalPayload`).",
2072
- "Serialized and hashed for event parity with EVM (payload bytes/hash)."
3276
+ "Universal transaction event (parity with EVM V0 `UniversalTx`).",
3277
+ "Single event for both gas funding and funds movement."
2073
3278
  ],
2074
3279
  "type": {
2075
3280
  "kind": "struct",
2076
3281
  "fields": [
2077
3282
  {
2078
- "name": "to",
2079
- "type": {
2080
- "array": ["u8", 20]
2081
- }
2082
- },
2083
- {
2084
- "name": "value",
2085
- "type": "u64"
2086
- },
2087
- {
2088
- "name": "data",
2089
- "type": "bytes"
3283
+ "name": "sender",
3284
+ "type": "pubkey"
2090
3285
  },
2091
3286
  {
2092
- "name": "gas_limit",
2093
- "type": "u64"
3287
+ "name": "recipient",
3288
+ "type": {
3289
+ "array": [
3290
+ "u8",
3291
+ 20
3292
+ ]
3293
+ }
2094
3294
  },
2095
3295
  {
2096
- "name": "max_fee_per_gas",
2097
- "type": "u64"
3296
+ "name": "token",
3297
+ "type": "pubkey"
2098
3298
  },
2099
3299
  {
2100
- "name": "max_priority_fee_per_gas",
3300
+ "name": "amount",
2101
3301
  "type": "u64"
2102
3302
  },
2103
3303
  {
2104
- "name": "nonce",
2105
- "type": "u64"
3304
+ "name": "payload",
3305
+ "type": "bytes"
2106
3306
  },
2107
3307
  {
2108
- "name": "deadline",
2109
- "type": "i64"
3308
+ "name": "revert_instruction",
3309
+ "type": {
3310
+ "defined": {
3311
+ "name": "RevertInstructions"
3312
+ }
3313
+ }
2110
3314
  },
2111
3315
  {
2112
- "name": "v_type",
3316
+ "name": "tx_type",
2113
3317
  "type": {
2114
3318
  "defined": {
2115
- "name": "VerificationType"
3319
+ "name": "TxType"
2116
3320
  }
2117
3321
  }
3322
+ },
3323
+ {
3324
+ "name": "signature_data",
3325
+ "type": "bytes"
2118
3326
  }
2119
3327
  ]
2120
3328
  }
2121
3329
  },
2122
3330
  {
2123
- "name": "UniversalTx",
3331
+ "name": "UniversalTxExecuted",
2124
3332
  "docs": [
2125
- "Universal transaction event (parity with EVM V0 `UniversalTx`).",
2126
- "Single event for both gas funding and funds movement."
3333
+ "Execute event (parity with EVM `UniversalTxExecuted`)."
2127
3334
  ],
2128
3335
  "type": {
2129
3336
  "kind": "struct",
2130
3337
  "fields": [
2131
3338
  {
2132
- "name": "sender",
2133
- "type": "pubkey"
3339
+ "name": "tx_id",
3340
+ "type": {
3341
+ "array": [
3342
+ "u8",
3343
+ 32
3344
+ ]
3345
+ }
2134
3346
  },
2135
3347
  {
2136
- "name": "recipient",
3348
+ "name": "sender",
2137
3349
  "type": {
2138
- "array": ["u8", 20]
3350
+ "array": [
3351
+ "u8",
3352
+ 20
3353
+ ]
2139
3354
  }
2140
3355
  },
3356
+ {
3357
+ "name": "target",
3358
+ "type": "pubkey"
3359
+ },
2141
3360
  {
2142
3361
  "name": "token",
2143
3362
  "type": "pubkey"
@@ -2149,26 +3368,6 @@
2149
3368
  {
2150
3369
  "name": "payload",
2151
3370
  "type": "bytes"
2152
- },
2153
- {
2154
- "name": "revert_instruction",
2155
- "type": {
2156
- "defined": {
2157
- "name": "RevertInstructions"
2158
- }
2159
- }
2160
- },
2161
- {
2162
- "name": "tx_type",
2163
- "type": {
2164
- "defined": {
2165
- "name": "TxType"
2166
- }
2167
- }
2168
- },
2169
- {
2170
- "name": "signature_data",
2171
- "type": "bytes"
2172
3371
  }
2173
3372
  ]
2174
3373
  }
@@ -2184,7 +3383,10 @@
2184
3383
  {
2185
3384
  "name": "recipient",
2186
3385
  "type": {
2187
- "array": ["u8", 20]
3386
+ "array": [
3387
+ "u8",
3388
+ 20
3389
+ ]
2188
3390
  }
2189
3391
  },
2190
3392
  {
@@ -2248,37 +3450,42 @@
2248
3450
  }
2249
3451
  },
2250
3452
  {
2251
- "name": "VerificationType",
2252
- "docs": ["Verification types for payload execution (parity with EVM)."],
2253
- "type": {
2254
- "kind": "enum",
2255
- "variants": [
2256
- {
2257
- "name": "SignedVerification"
2258
- },
2259
- {
2260
- "name": "UniversalTxVerification"
2261
- }
2262
- ]
2263
- }
2264
- },
2265
- {
2266
- "name": "WithdrawFunds",
2267
- "docs": ["Withdraw event (parity with EVM `WithdrawFunds`)."],
3453
+ "name": "WithdrawToken",
3454
+ "docs": [
3455
+ "Withdraw event (parity with EVM `WithdrawToken`)."
3456
+ ],
2268
3457
  "type": {
2269
3458
  "kind": "struct",
2270
3459
  "fields": [
2271
3460
  {
2272
- "name": "recipient",
2273
- "type": "pubkey"
3461
+ "name": "tx_id",
3462
+ "type": {
3463
+ "array": [
3464
+ "u8",
3465
+ 32
3466
+ ]
3467
+ }
2274
3468
  },
2275
3469
  {
2276
- "name": "amount",
2277
- "type": "u64"
3470
+ "name": "origin_caller",
3471
+ "type": {
3472
+ "array": [
3473
+ "u8",
3474
+ 20
3475
+ ]
3476
+ }
2278
3477
  },
2279
3478
  {
2280
3479
  "name": "token",
2281
3480
  "type": "pubkey"
3481
+ },
3482
+ {
3483
+ "name": "to",
3484
+ "type": "pubkey"
3485
+ },
3486
+ {
3487
+ "name": "amount",
3488
+ "type": "u64"
2282
3489
  }
2283
3490
  ]
2284
3491
  }