@agenttrust-sdk/mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +233 -0
  3. package/dist/chain.d.ts +41 -0
  4. package/dist/chain.js +164 -0
  5. package/dist/chain.js.map +1 -0
  6. package/dist/config.d.ts +35 -0
  7. package/dist/config.js +99 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/idl/policy_vault.json +1723 -0
  10. package/dist/idl/trustgate.json +623 -0
  11. package/dist/idl/validation_registry.json +1052 -0
  12. package/dist/index.d.ts +10 -0
  13. package/dist/index.js +123 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/prompts/audit-payment.d.ts +10 -0
  16. package/dist/prompts/audit-payment.js +55 -0
  17. package/dist/prompts/audit-payment.js.map +1 -0
  18. package/dist/prompts/explain-failure.d.ts +7 -0
  19. package/dist/prompts/explain-failure.js +57 -0
  20. package/dist/prompts/explain-failure.js.map +1 -0
  21. package/dist/prompts/index.d.ts +3 -0
  22. package/dist/prompts/index.js +12 -0
  23. package/dist/prompts/index.js.map +1 -0
  24. package/dist/prompts/setup-agent.d.ts +6 -0
  25. package/dist/prompts/setup-agent.js +43 -0
  26. package/dist/prompts/setup-agent.js.map +1 -0
  27. package/dist/prompts/types.d.ts +23 -0
  28. package/dist/prompts/types.js +6 -0
  29. package/dist/prompts/types.js.map +1 -0
  30. package/dist/resources/docs.d.ts +23 -0
  31. package/dist/resources/docs.js +147 -0
  32. package/dist/resources/docs.js.map +1 -0
  33. package/dist/resources/programs.d.ts +14 -0
  34. package/dist/resources/programs.js +69 -0
  35. package/dist/resources/programs.js.map +1 -0
  36. package/dist/server.d.ts +19 -0
  37. package/dist/server.js +136 -0
  38. package/dist/server.js.map +1 -0
  39. package/dist/tools/common.d.ts +18 -0
  40. package/dist/tools/common.js +77 -0
  41. package/dist/tools/common.js.map +1 -0
  42. package/dist/tools/discovery/docs.d.ts +48 -0
  43. package/dist/tools/discovery/docs.js +200 -0
  44. package/dist/tools/discovery/docs.js.map +1 -0
  45. package/dist/tools/discovery/explain-decision.d.ts +28 -0
  46. package/dist/tools/discovery/explain-decision.js +144 -0
  47. package/dist/tools/discovery/explain-decision.js.map +1 -0
  48. package/dist/tools/discovery/facilitator-walkthrough.d.ts +30 -0
  49. package/dist/tools/discovery/facilitator-walkthrough.js +117 -0
  50. package/dist/tools/discovery/facilitator-walkthrough.js.map +1 -0
  51. package/dist/tools/index.d.ts +9 -0
  52. package/dist/tools/index.js +55 -0
  53. package/dist/tools/index.js.map +1 -0
  54. package/dist/tools/read/demo-state.d.ts +48 -0
  55. package/dist/tools/read/demo-state.js +129 -0
  56. package/dist/tools/read/demo-state.js.map +1 -0
  57. package/dist/tools/read/get-feedback-log.d.ts +28 -0
  58. package/dist/tools/read/get-feedback-log.js +51 -0
  59. package/dist/tools/read/get-feedback-log.js.map +1 -0
  60. package/dist/tools/read/get-killswitch.d.ts +38 -0
  61. package/dist/tools/read/get-killswitch.js +63 -0
  62. package/dist/tools/read/get-killswitch.js.map +1 -0
  63. package/dist/tools/read/get-policy.d.ts +51 -0
  64. package/dist/tools/read/get-policy.js +71 -0
  65. package/dist/tools/read/get-policy.js.map +1 -0
  66. package/dist/tools/read/get-quantu-reputation.d.ts +39 -0
  67. package/dist/tools/read/get-quantu-reputation.js +65 -0
  68. package/dist/tools/read/get-quantu-reputation.js.map +1 -0
  69. package/dist/tools/read/get-validation-attestation.d.ts +45 -0
  70. package/dist/tools/read/get-validation-attestation.js +76 -0
  71. package/dist/tools/read/get-validation-attestation.js.map +1 -0
  72. package/dist/tools/read/get-velocity.d.ts +31 -0
  73. package/dist/tools/read/get-velocity.js +50 -0
  74. package/dist/tools/read/get-velocity.js.map +1 -0
  75. package/dist/tools/read/list-facilitators.d.ts +31 -0
  76. package/dist/tools/read/list-facilitators.js +60 -0
  77. package/dist/tools/read/list-facilitators.js.map +1 -0
  78. package/dist/tools/read/list-policies.d.ts +33 -0
  79. package/dist/tools/read/list-policies.js +49 -0
  80. package/dist/tools/read/list-policies.js.map +1 -0
  81. package/dist/tools/read/simulate-payment.d.ts +44 -0
  82. package/dist/tools/read/simulate-payment.js +54 -0
  83. package/dist/tools/read/simulate-payment.js.map +1 -0
  84. package/dist/tools/types.d.ts +31 -0
  85. package/dist/tools/types.js +12 -0
  86. package/dist/tools/types.js.map +1 -0
  87. package/dist/tools/write/emit-feedback.d.ts +55 -0
  88. package/dist/tools/write/emit-feedback.js +83 -0
  89. package/dist/tools/write/emit-feedback.js.map +1 -0
  90. package/dist/tools/write/init-policy.d.ts +133 -0
  91. package/dist/tools/write/init-policy.js +124 -0
  92. package/dist/tools/write/init-policy.js.map +1 -0
  93. package/dist/tools/write/request-validation.d.ts +39 -0
  94. package/dist/tools/write/request-validation.js +69 -0
  95. package/dist/tools/write/request-validation.js.map +1 -0
  96. package/dist/tools/write/respond-to-validation.d.ts +47 -0
  97. package/dist/tools/write/respond-to-validation.js +81 -0
  98. package/dist/tools/write/respond-to-validation.js.map +1 -0
  99. package/dist/tools/write/set-killswitch.d.ts +34 -0
  100. package/dist/tools/write/set-killswitch.js +70 -0
  101. package/dist/tools/write/set-killswitch.js.map +1 -0
  102. package/package.json +72 -0
  103. package/scripts/install-claude-desktop.sh +72 -0
@@ -0,0 +1,1723 @@
1
+ {
2
+ "address": "8Y6fGeNEHgmWmbt8JsRcF72jxbeBfJhomMjG6SuoJQTR",
3
+ "metadata": {
4
+ "name": "policy_vault",
5
+ "version": "0.1.0",
6
+ "spec": "0.1.0",
7
+ "description": "AgentTrust PolicyVault — policy-as-code engine for agent payments"
8
+ },
9
+ "instructions": [
10
+ {
11
+ "name": "gate_payment",
12
+ "docs": [
13
+ "Compose the 5 policy kinds + return a `GateDecision`. Applies state",
14
+ "mutations (Spending counters, VelocityLedger) only on `Allow`."
15
+ ],
16
+ "discriminator": [
17
+ 99,
18
+ 69,
19
+ 147,
20
+ 127,
21
+ 68,
22
+ 117,
23
+ 154,
24
+ 250
25
+ ],
26
+ "accounts": [
27
+ {
28
+ "name": "caller",
29
+ "docs": [
30
+ "SECURITY: in v1, ANY signer can call gate_payment. The composer's",
31
+ "state writes (Spending counters + VelocityLedger cumulative) are",
32
+ "therefore exposed to a denial-of-service attack: a hostile caller",
33
+ "could exhaust the daily / weekly / window budget via spurious calls.",
34
+ "v1.1 adds a facilitator allowlist on `PolicyAccount`. For the v1",
35
+ "hackathon submission, gate_payment is invoked by TrustGate (Phase 6),",
36
+ "which itself is invoked by trusted x402 facilitators."
37
+ ],
38
+ "signer": true
39
+ },
40
+ {
41
+ "name": "policy_account",
42
+ "writable": true,
43
+ "pda": {
44
+ "seeds": [
45
+ {
46
+ "kind": "const",
47
+ "value": [
48
+ 112,
49
+ 111,
50
+ 108,
51
+ 105,
52
+ 99,
53
+ 121
54
+ ]
55
+ },
56
+ {
57
+ "kind": "arg",
58
+ "path": "payer_agent_asset"
59
+ },
60
+ {
61
+ "kind": "arg",
62
+ "path": "policy_id"
63
+ }
64
+ ]
65
+ }
66
+ },
67
+ {
68
+ "name": "velocity_ledger",
69
+ "writable": true,
70
+ "pda": {
71
+ "seeds": [
72
+ {
73
+ "kind": "const",
74
+ "value": [
75
+ 118,
76
+ 101,
77
+ 108,
78
+ 111,
79
+ 99,
80
+ 105,
81
+ 116,
82
+ 121
83
+ ]
84
+ },
85
+ {
86
+ "kind": "arg",
87
+ "path": "payer_agent_asset"
88
+ },
89
+ {
90
+ "kind": "arg",
91
+ "path": "policy_id"
92
+ }
93
+ ]
94
+ }
95
+ },
96
+ {
97
+ "name": "kill_switch_state",
98
+ "pda": {
99
+ "seeds": [
100
+ {
101
+ "kind": "const",
102
+ "value": [
103
+ 107,
104
+ 105,
105
+ 108,
106
+ 108,
107
+ 115,
108
+ 119,
109
+ 105,
110
+ 116,
111
+ 99,
112
+ 104
113
+ ]
114
+ },
115
+ {
116
+ "kind": "const",
117
+ "value": [
118
+ 2
119
+ ]
120
+ },
121
+ {
122
+ "kind": "arg",
123
+ "path": "payer_agent_asset"
124
+ }
125
+ ]
126
+ }
127
+ },
128
+ {
129
+ "name": "payer_atom_stats",
130
+ "docs": [
131
+ "(owner check, size check, schema_version check, tier-range check)."
132
+ ],
133
+ "optional": true
134
+ },
135
+ {
136
+ "name": "payee_atom_stats",
137
+ "optional": true
138
+ },
139
+ {
140
+ "name": "validation_attestation",
141
+ "docs": [
142
+ "`validation_registry::read_validation_attestation_view`."
143
+ ],
144
+ "optional": true
145
+ }
146
+ ],
147
+ "args": [
148
+ {
149
+ "name": "payer_agent_asset",
150
+ "type": "pubkey"
151
+ },
152
+ {
153
+ "name": "payee_agent_asset",
154
+ "type": "pubkey"
155
+ },
156
+ {
157
+ "name": "amount",
158
+ "type": "u64"
159
+ },
160
+ {
161
+ "name": "mint",
162
+ "type": "pubkey"
163
+ },
164
+ {
165
+ "name": "policy_id",
166
+ "type": "u32"
167
+ }
168
+ ],
169
+ "returns": {
170
+ "defined": {
171
+ "name": "GateDecision"
172
+ }
173
+ }
174
+ },
175
+ {
176
+ "name": "gate_payment_strict",
177
+ "docs": [
178
+ "Strict variant: returns `Err` on Deny / RequireValidation so the",
179
+ "caller's tx reverts atomically. Allow path applies the same state",
180
+ "mutations as `gate_payment`. Used by `composeAtomicSettleTx` to",
181
+ "guarantee gate + transfer + emit_feedback commit-or-revert as a",
182
+ "unit."
183
+ ],
184
+ "discriminator": [
185
+ 12,
186
+ 131,
187
+ 61,
188
+ 178,
189
+ 227,
190
+ 220,
191
+ 24,
192
+ 30
193
+ ],
194
+ "accounts": [
195
+ {
196
+ "name": "caller",
197
+ "docs": [
198
+ "SECURITY: in v1, ANY signer can call gate_payment. The composer's",
199
+ "state writes (Spending counters + VelocityLedger cumulative) are",
200
+ "therefore exposed to a denial-of-service attack: a hostile caller",
201
+ "could exhaust the daily / weekly / window budget via spurious calls.",
202
+ "v1.1 adds a facilitator allowlist on `PolicyAccount`. For the v1",
203
+ "hackathon submission, gate_payment is invoked by TrustGate (Phase 6),",
204
+ "which itself is invoked by trusted x402 facilitators."
205
+ ],
206
+ "signer": true
207
+ },
208
+ {
209
+ "name": "policy_account",
210
+ "writable": true,
211
+ "pda": {
212
+ "seeds": [
213
+ {
214
+ "kind": "const",
215
+ "value": [
216
+ 112,
217
+ 111,
218
+ 108,
219
+ 105,
220
+ 99,
221
+ 121
222
+ ]
223
+ },
224
+ {
225
+ "kind": "arg",
226
+ "path": "payer_agent_asset"
227
+ },
228
+ {
229
+ "kind": "arg",
230
+ "path": "policy_id"
231
+ }
232
+ ]
233
+ }
234
+ },
235
+ {
236
+ "name": "velocity_ledger",
237
+ "writable": true,
238
+ "pda": {
239
+ "seeds": [
240
+ {
241
+ "kind": "const",
242
+ "value": [
243
+ 118,
244
+ 101,
245
+ 108,
246
+ 111,
247
+ 99,
248
+ 105,
249
+ 116,
250
+ 121
251
+ ]
252
+ },
253
+ {
254
+ "kind": "arg",
255
+ "path": "payer_agent_asset"
256
+ },
257
+ {
258
+ "kind": "arg",
259
+ "path": "policy_id"
260
+ }
261
+ ]
262
+ }
263
+ },
264
+ {
265
+ "name": "kill_switch_state",
266
+ "pda": {
267
+ "seeds": [
268
+ {
269
+ "kind": "const",
270
+ "value": [
271
+ 107,
272
+ 105,
273
+ 108,
274
+ 108,
275
+ 115,
276
+ 119,
277
+ 105,
278
+ 116,
279
+ 99,
280
+ 104
281
+ ]
282
+ },
283
+ {
284
+ "kind": "const",
285
+ "value": [
286
+ 2
287
+ ]
288
+ },
289
+ {
290
+ "kind": "arg",
291
+ "path": "payer_agent_asset"
292
+ }
293
+ ]
294
+ }
295
+ },
296
+ {
297
+ "name": "payer_atom_stats",
298
+ "docs": [
299
+ "(owner check, size check, schema_version check, tier-range check)."
300
+ ],
301
+ "optional": true
302
+ },
303
+ {
304
+ "name": "payee_atom_stats",
305
+ "optional": true
306
+ },
307
+ {
308
+ "name": "validation_attestation",
309
+ "docs": [
310
+ "`validation_registry::read_validation_attestation_view`."
311
+ ],
312
+ "optional": true
313
+ }
314
+ ],
315
+ "args": [
316
+ {
317
+ "name": "payer_agent_asset",
318
+ "type": "pubkey"
319
+ },
320
+ {
321
+ "name": "payee_agent_asset",
322
+ "type": "pubkey"
323
+ },
324
+ {
325
+ "name": "amount",
326
+ "type": "u64"
327
+ },
328
+ {
329
+ "name": "mint",
330
+ "type": "pubkey"
331
+ },
332
+ {
333
+ "name": "policy_id",
334
+ "type": "u32"
335
+ }
336
+ ]
337
+ },
338
+ {
339
+ "name": "init_authority",
340
+ "docs": [
341
+ "Create the `PolicyAuthority` PDA for an agent. Must be called BEFORE",
342
+ "`init_policy`. Caller must include themselves in `members`."
343
+ ],
344
+ "discriminator": [
345
+ 136,
346
+ 150,
347
+ 94,
348
+ 172,
349
+ 74,
350
+ 199,
351
+ 236,
352
+ 85
353
+ ],
354
+ "accounts": [
355
+ {
356
+ "name": "payer",
357
+ "writable": true,
358
+ "signer": true
359
+ },
360
+ {
361
+ "name": "policy_authority",
362
+ "writable": true,
363
+ "pda": {
364
+ "seeds": [
365
+ {
366
+ "kind": "const",
367
+ "value": [
368
+ 112,
369
+ 111,
370
+ 108,
371
+ 105,
372
+ 99,
373
+ 121,
374
+ 95,
375
+ 97,
376
+ 117,
377
+ 116,
378
+ 104,
379
+ 111,
380
+ 114,
381
+ 105,
382
+ 116,
383
+ 121
384
+ ]
385
+ },
386
+ {
387
+ "kind": "arg",
388
+ "path": "payer_agent_asset"
389
+ }
390
+ ]
391
+ }
392
+ },
393
+ {
394
+ "name": "system_program",
395
+ "address": "11111111111111111111111111111111"
396
+ }
397
+ ],
398
+ "args": [
399
+ {
400
+ "name": "payer_agent_asset",
401
+ "type": "pubkey"
402
+ },
403
+ {
404
+ "name": "members",
405
+ "type": {
406
+ "vec": "pubkey"
407
+ }
408
+ },
409
+ {
410
+ "name": "threshold",
411
+ "type": "u8"
412
+ }
413
+ ]
414
+ },
415
+ {
416
+ "name": "init_killswitch",
417
+ "docs": [
418
+ "Create a per-agent `KillSwitchState` PDA (initial state: paused = false)."
419
+ ],
420
+ "discriminator": [
421
+ 206,
422
+ 231,
423
+ 253,
424
+ 1,
425
+ 79,
426
+ 155,
427
+ 175,
428
+ 138
429
+ ],
430
+ "accounts": [
431
+ {
432
+ "name": "payer",
433
+ "writable": true,
434
+ "signer": true
435
+ },
436
+ {
437
+ "name": "kill_switch_state",
438
+ "writable": true,
439
+ "pda": {
440
+ "seeds": [
441
+ {
442
+ "kind": "const",
443
+ "value": [
444
+ 107,
445
+ 105,
446
+ 108,
447
+ 108,
448
+ 115,
449
+ 119,
450
+ 105,
451
+ 116,
452
+ 99,
453
+ 104
454
+ ]
455
+ },
456
+ {
457
+ "kind": "const",
458
+ "value": [
459
+ 2
460
+ ]
461
+ },
462
+ {
463
+ "kind": "arg",
464
+ "path": "payer_agent_asset"
465
+ }
466
+ ]
467
+ }
468
+ },
469
+ {
470
+ "name": "system_program",
471
+ "address": "11111111111111111111111111111111"
472
+ }
473
+ ],
474
+ "args": [
475
+ {
476
+ "name": "payer_agent_asset",
477
+ "type": "pubkey"
478
+ }
479
+ ]
480
+ },
481
+ {
482
+ "name": "init_policy",
483
+ "docs": [
484
+ "Initialise a `PolicyAccount` + `VelocityLedger` for a single",
485
+ "(`payer_agent_asset`, `policy_id`) pair. Requires the agent's",
486
+ "`PolicyAuthority` to exist with the payer as a member."
487
+ ],
488
+ "discriminator": [
489
+ 45,
490
+ 234,
491
+ 110,
492
+ 100,
493
+ 209,
494
+ 146,
495
+ 191,
496
+ 86
497
+ ],
498
+ "accounts": [
499
+ {
500
+ "name": "payer",
501
+ "writable": true,
502
+ "signer": true
503
+ },
504
+ {
505
+ "name": "policy_authority",
506
+ "docs": [
507
+ "PolicyAuthority for the agent — must already exist (call `init_authority`",
508
+ "first). The handler validates that `payer` is in `members[]`."
509
+ ],
510
+ "pda": {
511
+ "seeds": [
512
+ {
513
+ "kind": "const",
514
+ "value": [
515
+ 112,
516
+ 111,
517
+ 108,
518
+ 105,
519
+ 99,
520
+ 121,
521
+ 95,
522
+ 97,
523
+ 117,
524
+ 116,
525
+ 104,
526
+ 111,
527
+ 114,
528
+ 105,
529
+ 116,
530
+ 121
531
+ ]
532
+ },
533
+ {
534
+ "kind": "arg",
535
+ "path": "payer_agent_asset"
536
+ }
537
+ ]
538
+ }
539
+ },
540
+ {
541
+ "name": "policy_account",
542
+ "writable": true,
543
+ "pda": {
544
+ "seeds": [
545
+ {
546
+ "kind": "const",
547
+ "value": [
548
+ 112,
549
+ 111,
550
+ 108,
551
+ 105,
552
+ 99,
553
+ 121
554
+ ]
555
+ },
556
+ {
557
+ "kind": "arg",
558
+ "path": "payer_agent_asset"
559
+ },
560
+ {
561
+ "kind": "arg",
562
+ "path": "args.policy_id"
563
+ }
564
+ ]
565
+ }
566
+ },
567
+ {
568
+ "name": "velocity_ledger",
569
+ "writable": true,
570
+ "pda": {
571
+ "seeds": [
572
+ {
573
+ "kind": "const",
574
+ "value": [
575
+ 118,
576
+ 101,
577
+ 108,
578
+ 111,
579
+ 99,
580
+ 105,
581
+ 116,
582
+ 121
583
+ ]
584
+ },
585
+ {
586
+ "kind": "arg",
587
+ "path": "payer_agent_asset"
588
+ },
589
+ {
590
+ "kind": "arg",
591
+ "path": "args.policy_id"
592
+ }
593
+ ]
594
+ }
595
+ },
596
+ {
597
+ "name": "system_program",
598
+ "address": "11111111111111111111111111111111"
599
+ }
600
+ ],
601
+ "args": [
602
+ {
603
+ "name": "payer_agent_asset",
604
+ "type": "pubkey"
605
+ },
606
+ {
607
+ "name": "args",
608
+ "type": {
609
+ "defined": {
610
+ "name": "InitPolicyArgs"
611
+ }
612
+ }
613
+ }
614
+ ]
615
+ },
616
+ {
617
+ "name": "set_killswitch",
618
+ "docs": [
619
+ "Multisig-gated pause / unpause of an agent's KillSwitchState.",
620
+ "Lead signer + additional signers in `remaining_accounts` must reach",
621
+ "`policy_authority.threshold` distinct members."
622
+ ],
623
+ "discriminator": [
624
+ 34,
625
+ 125,
626
+ 234,
627
+ 122,
628
+ 153,
629
+ 20,
630
+ 25,
631
+ 47
632
+ ],
633
+ "accounts": [
634
+ {
635
+ "name": "signer",
636
+ "docs": [
637
+ "The lead signer — pays tx fee AND counts as one of the multisig signers.",
638
+ "Must be in `policy_authority.members`."
639
+ ],
640
+ "signer": true
641
+ },
642
+ {
643
+ "name": "policy_authority",
644
+ "pda": {
645
+ "seeds": [
646
+ {
647
+ "kind": "const",
648
+ "value": [
649
+ 112,
650
+ 111,
651
+ 108,
652
+ 105,
653
+ 99,
654
+ 121,
655
+ 95,
656
+ 97,
657
+ 117,
658
+ 116,
659
+ 104,
660
+ 111,
661
+ 114,
662
+ 105,
663
+ 116,
664
+ 121
665
+ ]
666
+ },
667
+ {
668
+ "kind": "arg",
669
+ "path": "payer_agent_asset"
670
+ }
671
+ ]
672
+ }
673
+ },
674
+ {
675
+ "name": "kill_switch_state",
676
+ "writable": true,
677
+ "pda": {
678
+ "seeds": [
679
+ {
680
+ "kind": "const",
681
+ "value": [
682
+ 107,
683
+ 105,
684
+ 108,
685
+ 108,
686
+ 115,
687
+ 119,
688
+ 105,
689
+ 116,
690
+ 99,
691
+ 104
692
+ ]
693
+ },
694
+ {
695
+ "kind": "const",
696
+ "value": [
697
+ 2
698
+ ]
699
+ },
700
+ {
701
+ "kind": "arg",
702
+ "path": "payer_agent_asset"
703
+ }
704
+ ]
705
+ }
706
+ }
707
+ ],
708
+ "args": [
709
+ {
710
+ "name": "payer_agent_asset",
711
+ "type": "pubkey"
712
+ },
713
+ {
714
+ "name": "paused",
715
+ "type": "bool"
716
+ }
717
+ ]
718
+ }
719
+ ],
720
+ "accounts": [
721
+ {
722
+ "name": "KillSwitchState",
723
+ "discriminator": [
724
+ 254,
725
+ 243,
726
+ 235,
727
+ 232,
728
+ 86,
729
+ 55,
730
+ 45,
731
+ 62
732
+ ]
733
+ },
734
+ {
735
+ "name": "PolicyAccount",
736
+ "discriminator": [
737
+ 218,
738
+ 201,
739
+ 183,
740
+ 164,
741
+ 156,
742
+ 127,
743
+ 81,
744
+ 175
745
+ ]
746
+ },
747
+ {
748
+ "name": "PolicyAuthority",
749
+ "discriminator": [
750
+ 62,
751
+ 36,
752
+ 186,
753
+ 99,
754
+ 38,
755
+ 164,
756
+ 236,
757
+ 205
758
+ ]
759
+ },
760
+ {
761
+ "name": "VelocityLedger",
762
+ "discriminator": [
763
+ 115,
764
+ 201,
765
+ 156,
766
+ 54,
767
+ 58,
768
+ 211,
769
+ 95,
770
+ 214
771
+ ]
772
+ }
773
+ ],
774
+ "events": [
775
+ {
776
+ "name": "KillSwitchTriggered",
777
+ "discriminator": [
778
+ 247,
779
+ 240,
780
+ 128,
781
+ 240,
782
+ 252,
783
+ 177,
784
+ 42,
785
+ 203
786
+ ]
787
+ },
788
+ {
789
+ "name": "PolicyAllowed",
790
+ "discriminator": [
791
+ 240,
792
+ 34,
793
+ 117,
794
+ 111,
795
+ 248,
796
+ 141,
797
+ 198,
798
+ 213
799
+ ]
800
+ },
801
+ {
802
+ "name": "PolicyDenied",
803
+ "discriminator": [
804
+ 18,
805
+ 131,
806
+ 136,
807
+ 241,
808
+ 88,
809
+ 193,
810
+ 230,
811
+ 24
812
+ ]
813
+ },
814
+ {
815
+ "name": "PolicyInitialized",
816
+ "discriminator": [
817
+ 102,
818
+ 184,
819
+ 59,
820
+ 178,
821
+ 235,
822
+ 69,
823
+ 251,
824
+ 181
825
+ ]
826
+ },
827
+ {
828
+ "name": "RequireValidationEmitted",
829
+ "discriminator": [
830
+ 205,
831
+ 228,
832
+ 253,
833
+ 235,
834
+ 171,
835
+ 131,
836
+ 56,
837
+ 35
838
+ ]
839
+ },
840
+ {
841
+ "name": "VelocityIncremented",
842
+ "discriminator": [
843
+ 239,
844
+ 103,
845
+ 170,
846
+ 200,
847
+ 238,
848
+ 140,
849
+ 95,
850
+ 7
851
+ ]
852
+ }
853
+ ],
854
+ "errors": [
855
+ {
856
+ "code": 12000,
857
+ "name": "PolicyMismatch",
858
+ "msg": "Policy ID mismatch between PDA seeds and account state"
859
+ },
860
+ {
861
+ "code": 12001,
862
+ "name": "SpendingPerTxExceeded",
863
+ "msg": "Spending per-tx limit exceeded"
864
+ },
865
+ {
866
+ "code": 12002,
867
+ "name": "SpendingDailyExceeded",
868
+ "msg": "Spending daily limit exceeded"
869
+ },
870
+ {
871
+ "code": 12003,
872
+ "name": "SpendingWeeklyExceeded",
873
+ "msg": "Spending weekly limit exceeded"
874
+ },
875
+ {
876
+ "code": 12004,
877
+ "name": "SpendingOverflow",
878
+ "msg": "Spending counter overflow"
879
+ },
880
+ {
881
+ "code": 12010,
882
+ "name": "VelocityWindowExceeded",
883
+ "msg": "Velocity window cap exceeded"
884
+ },
885
+ {
886
+ "code": 12011,
887
+ "name": "VelocityOverflow",
888
+ "msg": "Velocity counter overflow"
889
+ },
890
+ {
891
+ "code": 12020,
892
+ "name": "CounterpartyTierBelowMin",
893
+ "msg": "Counterparty tier below minimum"
894
+ },
895
+ {
896
+ "code": 12021,
897
+ "name": "CounterpartyRiskAboveMax",
898
+ "msg": "Counterparty risk score above maximum"
899
+ },
900
+ {
901
+ "code": 12022,
902
+ "name": "CounterpartyConfidenceBelow",
903
+ "msg": "Counterparty confidence below minimum"
904
+ },
905
+ {
906
+ "code": 12023,
907
+ "name": "AtomStatsWrongOwner",
908
+ "msg": "AtomStats account has wrong owner"
909
+ },
910
+ {
911
+ "code": 12024,
912
+ "name": "AtomStatsSchemaMismatch",
913
+ "msg": "AtomStats schema version mismatch"
914
+ },
915
+ {
916
+ "code": 12025,
917
+ "name": "AtomStatsSizeMismatch",
918
+ "msg": "AtomStats account size mismatch"
919
+ },
920
+ {
921
+ "code": 12030,
922
+ "name": "AttestationMissing",
923
+ "msg": "Validation attestation missing"
924
+ },
925
+ {
926
+ "code": 12031,
927
+ "name": "AttestationExpired",
928
+ "msg": "Validation attestation expired"
929
+ },
930
+ {
931
+ "code": 12032,
932
+ "name": "AttestationRevoked",
933
+ "msg": "Validation attestation revoked"
934
+ },
935
+ {
936
+ "code": 12033,
937
+ "name": "AttestationAttestorRejected",
938
+ "msg": "Validation attestor not in accepted list"
939
+ },
940
+ {
941
+ "code": 12034,
942
+ "name": "AttestationSubjectMismatch",
943
+ "msg": "Validation subject mismatch"
944
+ },
945
+ {
946
+ "code": 12035,
947
+ "name": "AttestationCapabilityMismatch",
948
+ "msg": "Validation capability mismatch"
949
+ },
950
+ {
951
+ "code": 12036,
952
+ "name": "AttestationWrongOwner",
953
+ "msg": "ValidationAttestation account has wrong owner"
954
+ },
955
+ {
956
+ "code": 12037,
957
+ "name": "AttestationSizeMismatch",
958
+ "msg": "ValidationAttestation account size mismatch (expected 290 bytes)"
959
+ },
960
+ {
961
+ "code": 12040,
962
+ "name": "KillSwitchEngaged",
963
+ "msg": "KillSwitch engaged for this scope"
964
+ },
965
+ {
966
+ "code": 12041,
967
+ "name": "MultisigThresholdNotMet",
968
+ "msg": "Multisig threshold not met"
969
+ },
970
+ {
971
+ "code": 12042,
972
+ "name": "MemberNotInAuthority",
973
+ "msg": "Member not in policy authority"
974
+ },
975
+ {
976
+ "code": 12043,
977
+ "name": "ThresholdExceedsMembers",
978
+ "msg": "Threshold exceeds member count"
979
+ },
980
+ {
981
+ "code": 12044,
982
+ "name": "MemberCountOutOfRange",
983
+ "msg": "Member count out of range (1..=7)"
984
+ },
985
+ {
986
+ "code": 12045,
987
+ "name": "DuplicateAuthorityMember",
988
+ "msg": "Authority members must be unique (no duplicates)"
989
+ },
990
+ {
991
+ "code": 12050,
992
+ "name": "UnratedTreatmentDeny",
993
+ "msg": "Unrated counterparty under deny treatment"
994
+ },
995
+ {
996
+ "code": 12051,
997
+ "name": "InvalidGateMode",
998
+ "msg": "Invalid gate_mode (must be 0=Immediate or 1=Confirmed)"
999
+ },
1000
+ {
1001
+ "code": 12052,
1002
+ "name": "InvalidScopeKind",
1003
+ "msg": "Invalid scope_kind (must be 0=Global, 1=PerCollection, 2=PerAgent)"
1004
+ },
1005
+ {
1006
+ "code": 12053,
1007
+ "name": "ClockBeforeEpoch",
1008
+ "msg": "Clock unix_timestamp negative — pre-1970 not supported"
1009
+ },
1010
+ {
1011
+ "code": 12054,
1012
+ "name": "InvalidEnabledKinds",
1013
+ "msg": "enabled_kinds_bitmask has bits outside the defined KIND_* surface"
1014
+ },
1015
+ {
1016
+ "code": 12055,
1017
+ "name": "InvalidCounterpartyTier",
1018
+ "msg": "Counterparty tier out of range (max 4)"
1019
+ },
1020
+ {
1021
+ "code": 12056,
1022
+ "name": "InvalidConfidence",
1023
+ "msg": "Confidence out of range (max 10000)"
1024
+ },
1025
+ {
1026
+ "code": 12057,
1027
+ "name": "InvalidUnratedTreatment",
1028
+ "msg": "Unrated treatment must be 0=Deny, 1=Allow, or 2=RequireValidation"
1029
+ },
1030
+ {
1031
+ "code": 12060,
1032
+ "name": "AgentAccountUninitialized",
1033
+ "msg": "AgentAccount uninitialized (zero lamports)"
1034
+ },
1035
+ {
1036
+ "code": 12061,
1037
+ "name": "AgentAccountWrongOwner",
1038
+ "msg": "AgentAccount has wrong owner program"
1039
+ },
1040
+ {
1041
+ "code": 12062,
1042
+ "name": "AgentAccountSizeMismatch",
1043
+ "msg": "AgentAccount data size mismatch (expected 748 bytes)"
1044
+ }
1045
+ ],
1046
+ "types": [
1047
+ {
1048
+ "name": "CounterpartyConfig",
1049
+ "type": {
1050
+ "kind": "struct",
1051
+ "fields": [
1052
+ {
1053
+ "name": "min_tier",
1054
+ "type": "u8"
1055
+ },
1056
+ {
1057
+ "name": "max_risk_score",
1058
+ "type": "u8"
1059
+ },
1060
+ {
1061
+ "name": "min_confidence",
1062
+ "type": "u16"
1063
+ },
1064
+ {
1065
+ "name": "default_unrated_treatment",
1066
+ "type": "u8"
1067
+ }
1068
+ ]
1069
+ }
1070
+ },
1071
+ {
1072
+ "name": "DenyReason",
1073
+ "type": {
1074
+ "kind": "enum",
1075
+ "variants": [
1076
+ {
1077
+ "name": "KillSwitchEngaged"
1078
+ },
1079
+ {
1080
+ "name": "SpendingPerTxExceeded"
1081
+ },
1082
+ {
1083
+ "name": "SpendingDailyExceeded"
1084
+ },
1085
+ {
1086
+ "name": "SpendingWeeklyExceeded"
1087
+ },
1088
+ {
1089
+ "name": "VelocityWindowExceeded"
1090
+ },
1091
+ {
1092
+ "name": "CounterpartyTierBelowMin"
1093
+ },
1094
+ {
1095
+ "name": "CounterpartyRiskAboveMax"
1096
+ },
1097
+ {
1098
+ "name": "CounterpartyConfidenceBelow"
1099
+ },
1100
+ {
1101
+ "name": "AtomStatsWrongOwner"
1102
+ },
1103
+ {
1104
+ "name": "AtomStatsSchemaMismatch"
1105
+ },
1106
+ {
1107
+ "name": "AttestationMissing"
1108
+ },
1109
+ {
1110
+ "name": "AttestationExpired"
1111
+ },
1112
+ {
1113
+ "name": "AttestationRevoked"
1114
+ },
1115
+ {
1116
+ "name": "AttestationAttestorRejected"
1117
+ },
1118
+ {
1119
+ "name": "UnratedTreatmentDeny"
1120
+ }
1121
+ ]
1122
+ }
1123
+ },
1124
+ {
1125
+ "name": "GateDecision",
1126
+ "type": {
1127
+ "kind": "enum",
1128
+ "variants": [
1129
+ {
1130
+ "name": "Allow"
1131
+ },
1132
+ {
1133
+ "name": "Deny",
1134
+ "fields": [
1135
+ {
1136
+ "defined": {
1137
+ "name": "DenyReason"
1138
+ }
1139
+ }
1140
+ ]
1141
+ },
1142
+ {
1143
+ "name": "RequireValidation",
1144
+ "fields": [
1145
+ {
1146
+ "array": [
1147
+ "u8",
1148
+ 32
1149
+ ]
1150
+ }
1151
+ ]
1152
+ }
1153
+ ]
1154
+ }
1155
+ },
1156
+ {
1157
+ "name": "InitPolicyArgs",
1158
+ "type": {
1159
+ "kind": "struct",
1160
+ "fields": [
1161
+ {
1162
+ "name": "policy_id",
1163
+ "type": "u32"
1164
+ },
1165
+ {
1166
+ "name": "enabled_kinds_bitmask",
1167
+ "type": "u8"
1168
+ },
1169
+ {
1170
+ "name": "gate_mode",
1171
+ "type": "u8"
1172
+ },
1173
+ {
1174
+ "name": "scope_kind",
1175
+ "type": "u8"
1176
+ },
1177
+ {
1178
+ "name": "spending",
1179
+ "type": {
1180
+ "defined": {
1181
+ "name": "SpendingConfig"
1182
+ }
1183
+ }
1184
+ },
1185
+ {
1186
+ "name": "velocity",
1187
+ "type": {
1188
+ "defined": {
1189
+ "name": "VelocityConfig"
1190
+ }
1191
+ }
1192
+ },
1193
+ {
1194
+ "name": "counterparty",
1195
+ "type": {
1196
+ "defined": {
1197
+ "name": "CounterpartyConfig"
1198
+ }
1199
+ }
1200
+ },
1201
+ {
1202
+ "name": "validation",
1203
+ "type": {
1204
+ "defined": {
1205
+ "name": "ValidationConfig"
1206
+ }
1207
+ }
1208
+ }
1209
+ ]
1210
+ }
1211
+ },
1212
+ {
1213
+ "name": "KillSwitchState",
1214
+ "type": {
1215
+ "kind": "struct",
1216
+ "fields": [
1217
+ {
1218
+ "name": "scope_kind",
1219
+ "type": "u8"
1220
+ },
1221
+ {
1222
+ "name": "bump",
1223
+ "type": "u8"
1224
+ },
1225
+ {
1226
+ "name": "paused",
1227
+ "type": "bool"
1228
+ },
1229
+ {
1230
+ "name": "_pad0",
1231
+ "type": "u8"
1232
+ },
1233
+ {
1234
+ "name": "_pad1",
1235
+ "type": {
1236
+ "array": [
1237
+ "u8",
1238
+ 4
1239
+ ]
1240
+ }
1241
+ },
1242
+ {
1243
+ "name": "scope_key",
1244
+ "type": {
1245
+ "array": [
1246
+ "u8",
1247
+ 32
1248
+ ]
1249
+ }
1250
+ },
1251
+ {
1252
+ "name": "paused_at_slot",
1253
+ "type": "u64"
1254
+ },
1255
+ {
1256
+ "name": "unpaused_at_slot",
1257
+ "type": "u64"
1258
+ },
1259
+ {
1260
+ "name": "paused_by",
1261
+ "type": "pubkey"
1262
+ }
1263
+ ]
1264
+ }
1265
+ },
1266
+ {
1267
+ "name": "KillSwitchTriggered",
1268
+ "type": {
1269
+ "kind": "struct",
1270
+ "fields": [
1271
+ {
1272
+ "name": "scope_kind",
1273
+ "type": "u8"
1274
+ },
1275
+ {
1276
+ "name": "scope_key",
1277
+ "type": {
1278
+ "array": [
1279
+ "u8",
1280
+ 32
1281
+ ]
1282
+ }
1283
+ },
1284
+ {
1285
+ "name": "paused",
1286
+ "type": "bool"
1287
+ },
1288
+ {
1289
+ "name": "triggered_by",
1290
+ "type": "pubkey"
1291
+ },
1292
+ {
1293
+ "name": "slot",
1294
+ "type": "u64"
1295
+ }
1296
+ ]
1297
+ }
1298
+ },
1299
+ {
1300
+ "name": "PolicyAccount",
1301
+ "type": {
1302
+ "kind": "struct",
1303
+ "fields": [
1304
+ {
1305
+ "name": "payer_agent_asset",
1306
+ "type": "pubkey"
1307
+ },
1308
+ {
1309
+ "name": "policy_id",
1310
+ "type": "u32"
1311
+ },
1312
+ {
1313
+ "name": "bump",
1314
+ "type": "u8"
1315
+ },
1316
+ {
1317
+ "name": "_pad0",
1318
+ "type": {
1319
+ "array": [
1320
+ "u8",
1321
+ 3
1322
+ ]
1323
+ }
1324
+ },
1325
+ {
1326
+ "name": "enabled_kinds_bitmask",
1327
+ "type": "u8"
1328
+ },
1329
+ {
1330
+ "name": "gate_mode",
1331
+ "type": "u8"
1332
+ },
1333
+ {
1334
+ "name": "spending_per_tx_max",
1335
+ "type": "u64"
1336
+ },
1337
+ {
1338
+ "name": "spending_daily_max",
1339
+ "type": "u64"
1340
+ },
1341
+ {
1342
+ "name": "spending_weekly_max",
1343
+ "type": "u64"
1344
+ },
1345
+ {
1346
+ "name": "spending_today_used",
1347
+ "type": "u64"
1348
+ },
1349
+ {
1350
+ "name": "spending_week_used",
1351
+ "type": "u64"
1352
+ },
1353
+ {
1354
+ "name": "spending_today_anchor",
1355
+ "type": "u64"
1356
+ },
1357
+ {
1358
+ "name": "spending_week_anchor",
1359
+ "type": "u64"
1360
+ },
1361
+ {
1362
+ "name": "velocity_window_secs",
1363
+ "type": "u64"
1364
+ },
1365
+ {
1366
+ "name": "velocity_max_in_window",
1367
+ "type": "u64"
1368
+ },
1369
+ {
1370
+ "name": "velocity_tier0_decay_factor",
1371
+ "type": "u64"
1372
+ },
1373
+ {
1374
+ "name": "min_counterparty_tier",
1375
+ "type": "u8"
1376
+ },
1377
+ {
1378
+ "name": "max_risk_score",
1379
+ "type": "u8"
1380
+ },
1381
+ {
1382
+ "name": "min_confidence",
1383
+ "type": "u16"
1384
+ },
1385
+ {
1386
+ "name": "default_unrated_treatment",
1387
+ "type": "u8"
1388
+ },
1389
+ {
1390
+ "name": "required_capability_hash",
1391
+ "type": {
1392
+ "array": [
1393
+ "u8",
1394
+ 32
1395
+ ]
1396
+ }
1397
+ },
1398
+ {
1399
+ "name": "accepted_attestors",
1400
+ "type": {
1401
+ "array": [
1402
+ "pubkey",
1403
+ 2
1404
+ ]
1405
+ }
1406
+ },
1407
+ {
1408
+ "name": "scope_kind",
1409
+ "type": "u8"
1410
+ },
1411
+ {
1412
+ "name": "_reserved",
1413
+ "type": {
1414
+ "array": [
1415
+ "u8",
1416
+ 8
1417
+ ]
1418
+ }
1419
+ }
1420
+ ]
1421
+ }
1422
+ },
1423
+ {
1424
+ "name": "PolicyAllowed",
1425
+ "type": {
1426
+ "kind": "struct",
1427
+ "fields": [
1428
+ {
1429
+ "name": "payer_agent_asset",
1430
+ "type": "pubkey"
1431
+ },
1432
+ {
1433
+ "name": "payee_agent_asset",
1434
+ "type": "pubkey"
1435
+ },
1436
+ {
1437
+ "name": "amount",
1438
+ "type": "u64"
1439
+ },
1440
+ {
1441
+ "name": "policy_id",
1442
+ "type": "u32"
1443
+ },
1444
+ {
1445
+ "name": "slot",
1446
+ "type": "u64"
1447
+ }
1448
+ ]
1449
+ }
1450
+ },
1451
+ {
1452
+ "name": "PolicyAuthority",
1453
+ "type": {
1454
+ "kind": "struct",
1455
+ "fields": [
1456
+ {
1457
+ "name": "payer_agent_asset",
1458
+ "type": "pubkey"
1459
+ },
1460
+ {
1461
+ "name": "bump",
1462
+ "type": "u8"
1463
+ },
1464
+ {
1465
+ "name": "threshold",
1466
+ "type": "u8"
1467
+ },
1468
+ {
1469
+ "name": "member_count",
1470
+ "type": "u8"
1471
+ },
1472
+ {
1473
+ "name": "_pad0",
1474
+ "type": "u8"
1475
+ },
1476
+ {
1477
+ "name": "members",
1478
+ "type": {
1479
+ "array": [
1480
+ "pubkey",
1481
+ 7
1482
+ ]
1483
+ }
1484
+ },
1485
+ {
1486
+ "name": "_reserved",
1487
+ "type": {
1488
+ "array": [
1489
+ "u8",
1490
+ 4
1491
+ ]
1492
+ }
1493
+ }
1494
+ ]
1495
+ }
1496
+ },
1497
+ {
1498
+ "name": "PolicyDenied",
1499
+ "type": {
1500
+ "kind": "struct",
1501
+ "fields": [
1502
+ {
1503
+ "name": "payer_agent_asset",
1504
+ "type": "pubkey"
1505
+ },
1506
+ {
1507
+ "name": "payee_agent_asset",
1508
+ "type": "pubkey"
1509
+ },
1510
+ {
1511
+ "name": "amount",
1512
+ "type": "u64"
1513
+ },
1514
+ {
1515
+ "name": "policy_id",
1516
+ "type": "u32"
1517
+ },
1518
+ {
1519
+ "name": "reason",
1520
+ "type": "u8"
1521
+ },
1522
+ {
1523
+ "name": "slot",
1524
+ "type": "u64"
1525
+ }
1526
+ ]
1527
+ }
1528
+ },
1529
+ {
1530
+ "name": "PolicyInitialized",
1531
+ "type": {
1532
+ "kind": "struct",
1533
+ "fields": [
1534
+ {
1535
+ "name": "payer_agent_asset",
1536
+ "type": "pubkey"
1537
+ },
1538
+ {
1539
+ "name": "policy_id",
1540
+ "type": "u32"
1541
+ },
1542
+ {
1543
+ "name": "enabled_kinds",
1544
+ "type": "u8"
1545
+ },
1546
+ {
1547
+ "name": "slot",
1548
+ "type": "u64"
1549
+ }
1550
+ ]
1551
+ }
1552
+ },
1553
+ {
1554
+ "name": "RequireValidationEmitted",
1555
+ "type": {
1556
+ "kind": "struct",
1557
+ "fields": [
1558
+ {
1559
+ "name": "payer_agent_asset",
1560
+ "type": "pubkey"
1561
+ },
1562
+ {
1563
+ "name": "payee_agent_asset",
1564
+ "type": "pubkey"
1565
+ },
1566
+ {
1567
+ "name": "capability_hash",
1568
+ "type": {
1569
+ "array": [
1570
+ "u8",
1571
+ 32
1572
+ ]
1573
+ }
1574
+ },
1575
+ {
1576
+ "name": "slot",
1577
+ "type": "u64"
1578
+ }
1579
+ ]
1580
+ }
1581
+ },
1582
+ {
1583
+ "name": "SpendingConfig",
1584
+ "type": {
1585
+ "kind": "struct",
1586
+ "fields": [
1587
+ {
1588
+ "name": "per_tx_max",
1589
+ "type": "u64"
1590
+ },
1591
+ {
1592
+ "name": "daily_max",
1593
+ "type": "u64"
1594
+ },
1595
+ {
1596
+ "name": "weekly_max",
1597
+ "type": "u64"
1598
+ }
1599
+ ]
1600
+ }
1601
+ },
1602
+ {
1603
+ "name": "ValidationConfig",
1604
+ "type": {
1605
+ "kind": "struct",
1606
+ "fields": [
1607
+ {
1608
+ "name": "required_capability_hash",
1609
+ "type": {
1610
+ "array": [
1611
+ "u8",
1612
+ 32
1613
+ ]
1614
+ }
1615
+ },
1616
+ {
1617
+ "name": "accepted_attestors",
1618
+ "type": {
1619
+ "array": [
1620
+ "pubkey",
1621
+ 2
1622
+ ]
1623
+ }
1624
+ }
1625
+ ]
1626
+ }
1627
+ },
1628
+ {
1629
+ "name": "VelocityConfig",
1630
+ "type": {
1631
+ "kind": "struct",
1632
+ "fields": [
1633
+ {
1634
+ "name": "window_secs",
1635
+ "type": "u64"
1636
+ },
1637
+ {
1638
+ "name": "max_in_window",
1639
+ "type": "u64"
1640
+ },
1641
+ {
1642
+ "name": "tier0_decay_factor",
1643
+ "type": "u64"
1644
+ }
1645
+ ]
1646
+ }
1647
+ },
1648
+ {
1649
+ "name": "VelocityIncremented",
1650
+ "type": {
1651
+ "kind": "struct",
1652
+ "fields": [
1653
+ {
1654
+ "name": "payer_agent_asset",
1655
+ "type": "pubkey"
1656
+ },
1657
+ {
1658
+ "name": "policy_id",
1659
+ "type": "u32"
1660
+ },
1661
+ {
1662
+ "name": "new_cumulative",
1663
+ "type": "u64"
1664
+ },
1665
+ {
1666
+ "name": "slot",
1667
+ "type": "u64"
1668
+ }
1669
+ ]
1670
+ }
1671
+ },
1672
+ {
1673
+ "name": "VelocityLedger",
1674
+ "type": {
1675
+ "kind": "struct",
1676
+ "fields": [
1677
+ {
1678
+ "name": "payer_agent_asset",
1679
+ "type": "pubkey"
1680
+ },
1681
+ {
1682
+ "name": "policy_id",
1683
+ "type": "u32"
1684
+ },
1685
+ {
1686
+ "name": "bump",
1687
+ "type": "u8"
1688
+ },
1689
+ {
1690
+ "name": "_pad0",
1691
+ "type": {
1692
+ "array": [
1693
+ "u8",
1694
+ 3
1695
+ ]
1696
+ }
1697
+ },
1698
+ {
1699
+ "name": "cumulative_amount",
1700
+ "type": "u64"
1701
+ },
1702
+ {
1703
+ "name": "last_commit_slot",
1704
+ "type": "u64"
1705
+ },
1706
+ {
1707
+ "name": "window_start_slot",
1708
+ "type": "u64"
1709
+ },
1710
+ {
1711
+ "name": "_reserved",
1712
+ "type": {
1713
+ "array": [
1714
+ "u8",
1715
+ 8
1716
+ ]
1717
+ }
1718
+ }
1719
+ ]
1720
+ }
1721
+ }
1722
+ ]
1723
+ }