@agent-shield/sdk 0.1.6 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -12
- package/dist/accounts.d.ts +5 -3
- package/dist/accounts.d.ts.map +1 -1
- package/dist/accounts.js +23 -4
- package/dist/accounts.js.map +1 -1
- package/dist/client.d.ts +16 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +48 -7
- package/dist/client.js.map +1 -1
- package/dist/composer.d.ts.map +1 -1
- package/dist/composer.js +3 -3
- package/dist/composer.js.map +1 -1
- package/dist/idl-json.d.ts +655 -24
- package/dist/idl-json.d.ts.map +1 -1
- package/dist/idl-json.js +1174 -87
- package/dist/idl-json.js.map +1 -1
- package/dist/idl.d.ts +1283 -196
- package/dist/idl.d.ts.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +604 -61
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +76 -8
- package/dist/instructions.js.map +1 -1
- package/dist/integrations/flash-trade.d.ts.map +1 -1
- package/dist/integrations/flash-trade.js +14 -6
- package/dist/integrations/flash-trade.js.map +1 -1
- package/dist/integrations/jupiter.d.ts.map +1 -1
- package/dist/integrations/jupiter.js +4 -1
- package/dist/integrations/jupiter.js.map +1 -1
- package/dist/oracle.d.ts +31 -0
- package/dist/oracle.d.ts.map +1 -0
- package/dist/oracle.js +57 -0
- package/dist/oracle.js.map +1 -0
- package/dist/rewriter.d.ts +21 -0
- package/dist/rewriter.d.ts.map +1 -0
- package/dist/rewriter.js +33 -0
- package/dist/rewriter.js.map +1 -0
- package/dist/types.d.ts +82 -12
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -1
- package/dist/types.js.map +1 -1
- package/dist/wrap.d.ts +60 -0
- package/dist/wrap.d.ts.map +1 -0
- package/dist/wrap.js +88 -0
- package/dist/wrap.js.map +1 -0
- package/package.json +9 -11
package/dist/idl.d.ts
CHANGED
|
@@ -13,6 +13,349 @@ export type AgentShield = {
|
|
|
13
13
|
"description": "AI Agent Financial Middleware for Solana - Permission controls, spending limits, and audit infrastructure for autonomous agents";
|
|
14
14
|
};
|
|
15
15
|
"instructions": [
|
|
16
|
+
{
|
|
17
|
+
"name": "agentTransfer";
|
|
18
|
+
"docs": [
|
|
19
|
+
"Transfer tokens from the vault to an allowed destination.",
|
|
20
|
+
"Only the agent can call this. Respects destination allowlist,",
|
|
21
|
+
"spending caps, and per-token limits."
|
|
22
|
+
];
|
|
23
|
+
"discriminator": [
|
|
24
|
+
199,
|
|
25
|
+
111,
|
|
26
|
+
151,
|
|
27
|
+
49,
|
|
28
|
+
124,
|
|
29
|
+
13,
|
|
30
|
+
150,
|
|
31
|
+
44
|
|
32
|
+
];
|
|
33
|
+
"accounts": [
|
|
34
|
+
{
|
|
35
|
+
"name": "agent";
|
|
36
|
+
"writable": true;
|
|
37
|
+
"signer": true;
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "vault";
|
|
41
|
+
"writable": true;
|
|
42
|
+
"pda": {
|
|
43
|
+
"seeds": [
|
|
44
|
+
{
|
|
45
|
+
"kind": "const";
|
|
46
|
+
"value": [
|
|
47
|
+
118,
|
|
48
|
+
97,
|
|
49
|
+
117,
|
|
50
|
+
108,
|
|
51
|
+
116
|
|
52
|
+
];
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"kind": "account";
|
|
56
|
+
"path": "vault.owner";
|
|
57
|
+
"account": "agentVault";
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"kind": "account";
|
|
61
|
+
"path": "vault.vault_id";
|
|
62
|
+
"account": "agentVault";
|
|
63
|
+
}
|
|
64
|
+
];
|
|
65
|
+
};
|
|
66
|
+
"relations": [
|
|
67
|
+
"policy",
|
|
68
|
+
"tracker"
|
|
69
|
+
];
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "policy";
|
|
73
|
+
"pda": {
|
|
74
|
+
"seeds": [
|
|
75
|
+
{
|
|
76
|
+
"kind": "const";
|
|
77
|
+
"value": [
|
|
78
|
+
112,
|
|
79
|
+
111,
|
|
80
|
+
108,
|
|
81
|
+
105,
|
|
82
|
+
99,
|
|
83
|
+
121
|
|
84
|
+
];
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"kind": "account";
|
|
88
|
+
"path": "vault";
|
|
89
|
+
}
|
|
90
|
+
];
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "tracker";
|
|
95
|
+
"writable": true;
|
|
96
|
+
"pda": {
|
|
97
|
+
"seeds": [
|
|
98
|
+
{
|
|
99
|
+
"kind": "const";
|
|
100
|
+
"value": [
|
|
101
|
+
116,
|
|
102
|
+
114,
|
|
103
|
+
97,
|
|
104
|
+
99,
|
|
105
|
+
107,
|
|
106
|
+
101,
|
|
107
|
+
114
|
|
108
|
+
];
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"kind": "account";
|
|
112
|
+
"path": "vault";
|
|
113
|
+
}
|
|
114
|
+
];
|
|
115
|
+
};
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "vaultTokenAccount";
|
|
119
|
+
"docs": [
|
|
120
|
+
"Vault's PDA-owned token account (source)"
|
|
121
|
+
];
|
|
122
|
+
"writable": true;
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"name": "destinationTokenAccount";
|
|
126
|
+
"docs": [
|
|
127
|
+
"Destination token account (must be in allowed destinations if configured)"
|
|
128
|
+
];
|
|
129
|
+
"writable": true;
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"name": "feeDestinationTokenAccount";
|
|
133
|
+
"docs": [
|
|
134
|
+
"Developer fee destination token account — must match vault.fee_destination"
|
|
135
|
+
];
|
|
136
|
+
"writable": true;
|
|
137
|
+
"optional": true;
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "protocolTreasuryTokenAccount";
|
|
141
|
+
"docs": [
|
|
142
|
+
"Protocol treasury token account"
|
|
143
|
+
];
|
|
144
|
+
"writable": true;
|
|
145
|
+
"optional": true;
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "tokenProgram";
|
|
149
|
+
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
|
|
150
|
+
}
|
|
151
|
+
];
|
|
152
|
+
"args": [
|
|
153
|
+
{
|
|
154
|
+
"name": "amount";
|
|
155
|
+
"type": "u64";
|
|
156
|
+
}
|
|
157
|
+
];
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"name": "applyPendingPolicy";
|
|
161
|
+
"docs": [
|
|
162
|
+
"Apply a queued policy update after the timelock period has expired.",
|
|
163
|
+
"Closes the PendingPolicyUpdate PDA and returns rent to the owner."
|
|
164
|
+
];
|
|
165
|
+
"discriminator": [
|
|
166
|
+
114,
|
|
167
|
+
212,
|
|
168
|
+
19,
|
|
169
|
+
227,
|
|
170
|
+
89,
|
|
171
|
+
199,
|
|
172
|
+
74,
|
|
173
|
+
62
|
|
174
|
+
];
|
|
175
|
+
"accounts": [
|
|
176
|
+
{
|
|
177
|
+
"name": "owner";
|
|
178
|
+
"writable": true;
|
|
179
|
+
"signer": true;
|
|
180
|
+
"relations": [
|
|
181
|
+
"vault"
|
|
182
|
+
];
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "vault";
|
|
186
|
+
"pda": {
|
|
187
|
+
"seeds": [
|
|
188
|
+
{
|
|
189
|
+
"kind": "const";
|
|
190
|
+
"value": [
|
|
191
|
+
118,
|
|
192
|
+
97,
|
|
193
|
+
117,
|
|
194
|
+
108,
|
|
195
|
+
116
|
|
196
|
+
];
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"kind": "account";
|
|
200
|
+
"path": "owner";
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"kind": "account";
|
|
204
|
+
"path": "vault.vault_id";
|
|
205
|
+
"account": "agentVault";
|
|
206
|
+
}
|
|
207
|
+
];
|
|
208
|
+
};
|
|
209
|
+
"relations": [
|
|
210
|
+
"policy",
|
|
211
|
+
"pendingPolicy"
|
|
212
|
+
];
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"name": "policy";
|
|
216
|
+
"writable": true;
|
|
217
|
+
"pda": {
|
|
218
|
+
"seeds": [
|
|
219
|
+
{
|
|
220
|
+
"kind": "const";
|
|
221
|
+
"value": [
|
|
222
|
+
112,
|
|
223
|
+
111,
|
|
224
|
+
108,
|
|
225
|
+
105,
|
|
226
|
+
99,
|
|
227
|
+
121
|
|
228
|
+
];
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"kind": "account";
|
|
232
|
+
"path": "vault";
|
|
233
|
+
}
|
|
234
|
+
];
|
|
235
|
+
};
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"name": "pendingPolicy";
|
|
239
|
+
"writable": true;
|
|
240
|
+
"pda": {
|
|
241
|
+
"seeds": [
|
|
242
|
+
{
|
|
243
|
+
"kind": "const";
|
|
244
|
+
"value": [
|
|
245
|
+
112,
|
|
246
|
+
101,
|
|
247
|
+
110,
|
|
248
|
+
100,
|
|
249
|
+
105,
|
|
250
|
+
110,
|
|
251
|
+
103,
|
|
252
|
+
95,
|
|
253
|
+
112,
|
|
254
|
+
111,
|
|
255
|
+
108,
|
|
256
|
+
105,
|
|
257
|
+
99,
|
|
258
|
+
121
|
|
259
|
+
];
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"kind": "account";
|
|
263
|
+
"path": "vault";
|
|
264
|
+
}
|
|
265
|
+
];
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
];
|
|
269
|
+
"args": [];
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"name": "cancelPendingPolicy";
|
|
273
|
+
"docs": [
|
|
274
|
+
"Cancel a queued policy update. Closes the PendingPolicyUpdate PDA",
|
|
275
|
+
"and returns rent to the owner."
|
|
276
|
+
];
|
|
277
|
+
"discriminator": [
|
|
278
|
+
153,
|
|
279
|
+
36,
|
|
280
|
+
104,
|
|
281
|
+
200,
|
|
282
|
+
50,
|
|
283
|
+
94,
|
|
284
|
+
207,
|
|
285
|
+
33
|
|
286
|
+
];
|
|
287
|
+
"accounts": [
|
|
288
|
+
{
|
|
289
|
+
"name": "owner";
|
|
290
|
+
"writable": true;
|
|
291
|
+
"signer": true;
|
|
292
|
+
"relations": [
|
|
293
|
+
"vault"
|
|
294
|
+
];
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"name": "vault";
|
|
298
|
+
"pda": {
|
|
299
|
+
"seeds": [
|
|
300
|
+
{
|
|
301
|
+
"kind": "const";
|
|
302
|
+
"value": [
|
|
303
|
+
118,
|
|
304
|
+
97,
|
|
305
|
+
117,
|
|
306
|
+
108,
|
|
307
|
+
116
|
|
308
|
+
];
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"kind": "account";
|
|
312
|
+
"path": "owner";
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"kind": "account";
|
|
316
|
+
"path": "vault.vault_id";
|
|
317
|
+
"account": "agentVault";
|
|
318
|
+
}
|
|
319
|
+
];
|
|
320
|
+
};
|
|
321
|
+
"relations": [
|
|
322
|
+
"pendingPolicy"
|
|
323
|
+
];
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"name": "pendingPolicy";
|
|
327
|
+
"writable": true;
|
|
328
|
+
"pda": {
|
|
329
|
+
"seeds": [
|
|
330
|
+
{
|
|
331
|
+
"kind": "const";
|
|
332
|
+
"value": [
|
|
333
|
+
112,
|
|
334
|
+
101,
|
|
335
|
+
110,
|
|
336
|
+
100,
|
|
337
|
+
105,
|
|
338
|
+
110,
|
|
339
|
+
103,
|
|
340
|
+
95,
|
|
341
|
+
112,
|
|
342
|
+
111,
|
|
343
|
+
108,
|
|
344
|
+
105,
|
|
345
|
+
99,
|
|
346
|
+
121
|
|
347
|
+
];
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"kind": "account";
|
|
351
|
+
"path": "vault";
|
|
352
|
+
}
|
|
353
|
+
];
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
];
|
|
357
|
+
"args": [];
|
|
358
|
+
},
|
|
16
359
|
{
|
|
17
360
|
"name": "closeVault";
|
|
18
361
|
"docs": [
|
|
@@ -59,8 +402,8 @@ export type AgentShield = {
|
|
|
59
402
|
},
|
|
60
403
|
{
|
|
61
404
|
"kind": "account";
|
|
62
|
-
"path": "vault.
|
|
63
|
-
"account": "
|
|
405
|
+
"path": "vault.vault_id";
|
|
406
|
+
"account": "agentVault";
|
|
64
407
|
}
|
|
65
408
|
];
|
|
66
409
|
};
|
|
@@ -168,8 +511,8 @@ export type AgentShield = {
|
|
|
168
511
|
},
|
|
169
512
|
{
|
|
170
513
|
"kind": "account";
|
|
171
|
-
"path": "vault.
|
|
172
|
-
"account": "
|
|
514
|
+
"path": "vault.vault_id";
|
|
515
|
+
"account": "agentVault";
|
|
173
516
|
}
|
|
174
517
|
];
|
|
175
518
|
};
|
|
@@ -387,7 +730,8 @@ export type AgentShield = {
|
|
|
387
730
|
"name": "finalizeSession";
|
|
388
731
|
"docs": [
|
|
389
732
|
"Finalize a session after the DeFi action completes.",
|
|
390
|
-
"
|
|
733
|
+
"Revokes token delegation, collects fees, closes the SessionAuthority PDA,",
|
|
734
|
+
"and records the transaction in the audit log.",
|
|
391
735
|
"Can be called by the agent or permissionlessly (for cleanup of expired sessions)."
|
|
392
736
|
];
|
|
393
737
|
"discriminator": [
|
|
@@ -424,12 +768,12 @@ export type AgentShield = {
|
|
|
424
768
|
{
|
|
425
769
|
"kind": "account";
|
|
426
770
|
"path": "vault.owner";
|
|
427
|
-
"account": "
|
|
771
|
+
"account": "agentVault";
|
|
428
772
|
},
|
|
429
773
|
{
|
|
430
774
|
"kind": "account";
|
|
431
|
-
"path": "vault.
|
|
432
|
-
"account": "
|
|
775
|
+
"path": "vault.vault_id";
|
|
776
|
+
"account": "agentVault";
|
|
433
777
|
}
|
|
434
778
|
];
|
|
435
779
|
};
|
|
@@ -489,7 +833,8 @@ export type AgentShield = {
|
|
|
489
833
|
"name": "session";
|
|
490
834
|
"docs": [
|
|
491
835
|
"Session rent is returned to the session's agent (who paid for it),",
|
|
492
|
-
"not the arbitrary payer, to prevent rent theft."
|
|
836
|
+
"not the arbitrary payer, to prevent rent theft.",
|
|
837
|
+
"Seeds include token_mint for per-token concurrent sessions."
|
|
493
838
|
];
|
|
494
839
|
"writable": true;
|
|
495
840
|
"pda": {
|
|
@@ -513,7 +858,12 @@ export type AgentShield = {
|
|
|
513
858
|
{
|
|
514
859
|
"kind": "account";
|
|
515
860
|
"path": "session.agent";
|
|
516
|
-
"account": "
|
|
861
|
+
"account": "sessionAuthority";
|
|
862
|
+
},
|
|
863
|
+
{
|
|
864
|
+
"kind": "account";
|
|
865
|
+
"path": "session.authorized_token";
|
|
866
|
+
"account": "sessionAuthority";
|
|
517
867
|
}
|
|
518
868
|
];
|
|
519
869
|
};
|
|
@@ -528,68 +878,230 @@ export type AgentShield = {
|
|
|
528
878
|
{
|
|
529
879
|
"name": "vaultTokenAccount";
|
|
530
880
|
"docs": [
|
|
531
|
-
"Vault's PDA token account for the session's token (fee source)"
|
|
881
|
+
"Vault's PDA token account for the session's token (fee source + delegation revocation)"
|
|
532
882
|
];
|
|
533
883
|
"writable": true;
|
|
534
884
|
"optional": true;
|
|
535
885
|
},
|
|
536
886
|
{
|
|
537
|
-
"name": "feeDestinationTokenAccount";
|
|
538
|
-
"docs": [
|
|
539
|
-
"Developer fee destination token account
|
|
540
|
-
];
|
|
541
|
-
"writable": true;
|
|
542
|
-
"optional": true;
|
|
887
|
+
"name": "feeDestinationTokenAccount";
|
|
888
|
+
"docs": [
|
|
889
|
+
"Developer fee destination token account — must match vault.fee_destination"
|
|
890
|
+
];
|
|
891
|
+
"writable": true;
|
|
892
|
+
"optional": true;
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
"name": "protocolTreasuryTokenAccount";
|
|
896
|
+
"docs": [
|
|
897
|
+
"Protocol treasury token account — must be owned by PROTOCOL_TREASURY"
|
|
898
|
+
];
|
|
899
|
+
"writable": true;
|
|
900
|
+
"optional": true;
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
"name": "tokenProgram";
|
|
904
|
+
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
|
|
905
|
+
},
|
|
906
|
+
{
|
|
907
|
+
"name": "systemProgram";
|
|
908
|
+
"address": "11111111111111111111111111111111";
|
|
909
|
+
}
|
|
910
|
+
];
|
|
911
|
+
"args": [
|
|
912
|
+
{
|
|
913
|
+
"name": "success";
|
|
914
|
+
"type": "bool";
|
|
915
|
+
}
|
|
916
|
+
];
|
|
917
|
+
},
|
|
918
|
+
{
|
|
919
|
+
"name": "initializeVault";
|
|
920
|
+
"docs": [
|
|
921
|
+
"Initialize a new agent vault with policy configuration.",
|
|
922
|
+
"Only the owner can call this. Creates vault PDA, policy PDA, and spend tracker PDA."
|
|
923
|
+
];
|
|
924
|
+
"discriminator": [
|
|
925
|
+
48,
|
|
926
|
+
191,
|
|
927
|
+
163,
|
|
928
|
+
44,
|
|
929
|
+
71,
|
|
930
|
+
129,
|
|
931
|
+
63,
|
|
932
|
+
164
|
|
933
|
+
];
|
|
934
|
+
"accounts": [
|
|
935
|
+
{
|
|
936
|
+
"name": "owner";
|
|
937
|
+
"writable": true;
|
|
938
|
+
"signer": true;
|
|
939
|
+
},
|
|
940
|
+
{
|
|
941
|
+
"name": "vault";
|
|
942
|
+
"writable": true;
|
|
943
|
+
"pda": {
|
|
944
|
+
"seeds": [
|
|
945
|
+
{
|
|
946
|
+
"kind": "const";
|
|
947
|
+
"value": [
|
|
948
|
+
118,
|
|
949
|
+
97,
|
|
950
|
+
117,
|
|
951
|
+
108,
|
|
952
|
+
116
|
|
953
|
+
];
|
|
954
|
+
},
|
|
955
|
+
{
|
|
956
|
+
"kind": "account";
|
|
957
|
+
"path": "owner";
|
|
958
|
+
},
|
|
959
|
+
{
|
|
960
|
+
"kind": "arg";
|
|
961
|
+
"path": "vaultId";
|
|
962
|
+
}
|
|
963
|
+
];
|
|
964
|
+
};
|
|
965
|
+
},
|
|
966
|
+
{
|
|
967
|
+
"name": "policy";
|
|
968
|
+
"writable": true;
|
|
969
|
+
"pda": {
|
|
970
|
+
"seeds": [
|
|
971
|
+
{
|
|
972
|
+
"kind": "const";
|
|
973
|
+
"value": [
|
|
974
|
+
112,
|
|
975
|
+
111,
|
|
976
|
+
108,
|
|
977
|
+
105,
|
|
978
|
+
99,
|
|
979
|
+
121
|
|
980
|
+
];
|
|
981
|
+
},
|
|
982
|
+
{
|
|
983
|
+
"kind": "account";
|
|
984
|
+
"path": "vault";
|
|
985
|
+
}
|
|
986
|
+
];
|
|
987
|
+
};
|
|
988
|
+
},
|
|
989
|
+
{
|
|
990
|
+
"name": "tracker";
|
|
991
|
+
"writable": true;
|
|
992
|
+
"pda": {
|
|
993
|
+
"seeds": [
|
|
994
|
+
{
|
|
995
|
+
"kind": "const";
|
|
996
|
+
"value": [
|
|
997
|
+
116,
|
|
998
|
+
114,
|
|
999
|
+
97,
|
|
1000
|
+
99,
|
|
1001
|
+
107,
|
|
1002
|
+
101,
|
|
1003
|
+
114
|
|
1004
|
+
];
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
"kind": "account";
|
|
1008
|
+
"path": "vault";
|
|
1009
|
+
}
|
|
1010
|
+
];
|
|
1011
|
+
};
|
|
1012
|
+
},
|
|
1013
|
+
{
|
|
1014
|
+
"name": "feeDestination";
|
|
1015
|
+
"docs": [
|
|
1016
|
+
"The protocol treasury that receives fees"
|
|
1017
|
+
];
|
|
1018
|
+
},
|
|
1019
|
+
{
|
|
1020
|
+
"name": "systemProgram";
|
|
1021
|
+
"address": "11111111111111111111111111111111";
|
|
1022
|
+
}
|
|
1023
|
+
];
|
|
1024
|
+
"args": [
|
|
1025
|
+
{
|
|
1026
|
+
"name": "vaultId";
|
|
1027
|
+
"type": "u64";
|
|
1028
|
+
},
|
|
1029
|
+
{
|
|
1030
|
+
"name": "dailySpendingCapUsd";
|
|
1031
|
+
"type": "u64";
|
|
1032
|
+
},
|
|
1033
|
+
{
|
|
1034
|
+
"name": "maxTransactionSizeUsd";
|
|
1035
|
+
"type": "u64";
|
|
1036
|
+
},
|
|
1037
|
+
{
|
|
1038
|
+
"name": "allowedTokens";
|
|
1039
|
+
"type": {
|
|
1040
|
+
"vec": {
|
|
1041
|
+
"defined": {
|
|
1042
|
+
"name": "allowedToken";
|
|
1043
|
+
};
|
|
1044
|
+
};
|
|
1045
|
+
};
|
|
1046
|
+
},
|
|
1047
|
+
{
|
|
1048
|
+
"name": "allowedProtocols";
|
|
1049
|
+
"type": {
|
|
1050
|
+
"vec": "pubkey";
|
|
1051
|
+
};
|
|
1052
|
+
},
|
|
1053
|
+
{
|
|
1054
|
+
"name": "maxLeverageBps";
|
|
1055
|
+
"type": "u16";
|
|
543
1056
|
},
|
|
544
1057
|
{
|
|
545
|
-
"name": "
|
|
546
|
-
"
|
|
547
|
-
"Protocol treasury token account \u2014 must be owned by PROTOCOL_TREASURY"
|
|
548
|
-
];
|
|
549
|
-
"writable": true;
|
|
550
|
-
"optional": true;
|
|
1058
|
+
"name": "maxConcurrentPositions";
|
|
1059
|
+
"type": "u8";
|
|
551
1060
|
},
|
|
552
1061
|
{
|
|
553
|
-
"name": "
|
|
554
|
-
"
|
|
1062
|
+
"name": "developerFeeRate";
|
|
1063
|
+
"type": "u16";
|
|
555
1064
|
},
|
|
556
1065
|
{
|
|
557
|
-
"name": "
|
|
558
|
-
"
|
|
559
|
-
}
|
|
560
|
-
];
|
|
561
|
-
"args": [
|
|
1066
|
+
"name": "timelockDuration";
|
|
1067
|
+
"type": "u64";
|
|
1068
|
+
},
|
|
562
1069
|
{
|
|
563
|
-
"name": "
|
|
564
|
-
"type":
|
|
1070
|
+
"name": "allowedDestinations";
|
|
1071
|
+
"type": {
|
|
1072
|
+
"vec": "pubkey";
|
|
1073
|
+
};
|
|
565
1074
|
}
|
|
566
1075
|
];
|
|
567
1076
|
},
|
|
568
1077
|
{
|
|
569
|
-
"name": "
|
|
1078
|
+
"name": "queuePolicyUpdate";
|
|
570
1079
|
"docs": [
|
|
571
|
-
"
|
|
572
|
-
"
|
|
1080
|
+
"Queue a policy update when timelock is active.",
|
|
1081
|
+
"Creates a PendingPolicyUpdate PDA that becomes executable after",
|
|
1082
|
+
"the timelock period expires."
|
|
573
1083
|
];
|
|
574
1084
|
"discriminator": [
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
1085
|
+
149,
|
|
1086
|
+
18,
|
|
1087
|
+
76,
|
|
1088
|
+
197,
|
|
1089
|
+
179,
|
|
1090
|
+
193,
|
|
1091
|
+
91,
|
|
1092
|
+
77
|
|
583
1093
|
];
|
|
584
1094
|
"accounts": [
|
|
585
1095
|
{
|
|
586
1096
|
"name": "owner";
|
|
587
1097
|
"writable": true;
|
|
588
1098
|
"signer": true;
|
|
1099
|
+
"relations": [
|
|
1100
|
+
"vault"
|
|
1101
|
+
];
|
|
589
1102
|
},
|
|
590
1103
|
{
|
|
591
1104
|
"name": "vault";
|
|
592
|
-
"writable": true;
|
|
593
1105
|
"pda": {
|
|
594
1106
|
"seeds": [
|
|
595
1107
|
{
|
|
@@ -607,15 +1119,18 @@ export type AgentShield = {
|
|
|
607
1119
|
"path": "owner";
|
|
608
1120
|
},
|
|
609
1121
|
{
|
|
610
|
-
"kind": "
|
|
611
|
-
"path": "
|
|
1122
|
+
"kind": "account";
|
|
1123
|
+
"path": "vault.vault_id";
|
|
1124
|
+
"account": "agentVault";
|
|
612
1125
|
}
|
|
613
1126
|
];
|
|
614
1127
|
};
|
|
1128
|
+
"relations": [
|
|
1129
|
+
"policy"
|
|
1130
|
+
];
|
|
615
1131
|
},
|
|
616
1132
|
{
|
|
617
1133
|
"name": "policy";
|
|
618
|
-
"writable": true;
|
|
619
1134
|
"pda": {
|
|
620
1135
|
"seeds": [
|
|
621
1136
|
{
|
|
@@ -637,20 +1152,27 @@ export type AgentShield = {
|
|
|
637
1152
|
};
|
|
638
1153
|
},
|
|
639
1154
|
{
|
|
640
|
-
"name": "
|
|
1155
|
+
"name": "pendingPolicy";
|
|
641
1156
|
"writable": true;
|
|
642
1157
|
"pda": {
|
|
643
1158
|
"seeds": [
|
|
644
1159
|
{
|
|
645
1160
|
"kind": "const";
|
|
646
1161
|
"value": [
|
|
647
|
-
|
|
648
|
-
114,
|
|
649
|
-
97,
|
|
650
|
-
99,
|
|
651
|
-
107,
|
|
1162
|
+
112,
|
|
652
1163
|
101,
|
|
653
|
-
|
|
1164
|
+
110,
|
|
1165
|
+
100,
|
|
1166
|
+
105,
|
|
1167
|
+
110,
|
|
1168
|
+
103,
|
|
1169
|
+
95,
|
|
1170
|
+
112,
|
|
1171
|
+
111,
|
|
1172
|
+
108,
|
|
1173
|
+
105,
|
|
1174
|
+
99,
|
|
1175
|
+
121
|
|
654
1176
|
];
|
|
655
1177
|
},
|
|
656
1178
|
{
|
|
@@ -660,12 +1182,6 @@ export type AgentShield = {
|
|
|
660
1182
|
];
|
|
661
1183
|
};
|
|
662
1184
|
},
|
|
663
|
-
{
|
|
664
|
-
"name": "feeDestination";
|
|
665
|
-
"docs": [
|
|
666
|
-
"The protocol treasury that receives fees"
|
|
667
|
-
];
|
|
668
|
-
},
|
|
669
1185
|
{
|
|
670
1186
|
"name": "systemProgram";
|
|
671
1187
|
"address": "11111111111111111111111111111111";
|
|
@@ -673,40 +1189,74 @@ export type AgentShield = {
|
|
|
673
1189
|
];
|
|
674
1190
|
"args": [
|
|
675
1191
|
{
|
|
676
|
-
"name": "
|
|
677
|
-
"type":
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
"name": "dailySpendingCap";
|
|
681
|
-
"type": "u64";
|
|
1192
|
+
"name": "dailySpendingCapUsd";
|
|
1193
|
+
"type": {
|
|
1194
|
+
"option": "u64";
|
|
1195
|
+
};
|
|
682
1196
|
},
|
|
683
1197
|
{
|
|
684
|
-
"name": "
|
|
685
|
-
"type":
|
|
1198
|
+
"name": "maxTransactionAmountUsd";
|
|
1199
|
+
"type": {
|
|
1200
|
+
"option": "u64";
|
|
1201
|
+
};
|
|
686
1202
|
},
|
|
687
1203
|
{
|
|
688
1204
|
"name": "allowedTokens";
|
|
689
1205
|
"type": {
|
|
690
|
-
"
|
|
1206
|
+
"option": {
|
|
1207
|
+
"vec": {
|
|
1208
|
+
"defined": {
|
|
1209
|
+
"name": "allowedToken";
|
|
1210
|
+
};
|
|
1211
|
+
};
|
|
1212
|
+
};
|
|
691
1213
|
};
|
|
692
1214
|
},
|
|
693
1215
|
{
|
|
694
1216
|
"name": "allowedProtocols";
|
|
695
1217
|
"type": {
|
|
696
|
-
"
|
|
1218
|
+
"option": {
|
|
1219
|
+
"vec": "pubkey";
|
|
1220
|
+
};
|
|
697
1221
|
};
|
|
698
1222
|
},
|
|
699
1223
|
{
|
|
700
1224
|
"name": "maxLeverageBps";
|
|
701
|
-
"type":
|
|
1225
|
+
"type": {
|
|
1226
|
+
"option": "u16";
|
|
1227
|
+
};
|
|
1228
|
+
},
|
|
1229
|
+
{
|
|
1230
|
+
"name": "canOpenPositions";
|
|
1231
|
+
"type": {
|
|
1232
|
+
"option": "bool";
|
|
1233
|
+
};
|
|
702
1234
|
},
|
|
703
1235
|
{
|
|
704
1236
|
"name": "maxConcurrentPositions";
|
|
705
|
-
"type":
|
|
1237
|
+
"type": {
|
|
1238
|
+
"option": "u8";
|
|
1239
|
+
};
|
|
706
1240
|
},
|
|
707
1241
|
{
|
|
708
1242
|
"name": "developerFeeRate";
|
|
709
|
-
"type":
|
|
1243
|
+
"type": {
|
|
1244
|
+
"option": "u16";
|
|
1245
|
+
};
|
|
1246
|
+
},
|
|
1247
|
+
{
|
|
1248
|
+
"name": "timelockDuration";
|
|
1249
|
+
"type": {
|
|
1250
|
+
"option": "u64";
|
|
1251
|
+
};
|
|
1252
|
+
},
|
|
1253
|
+
{
|
|
1254
|
+
"name": "allowedDestinations";
|
|
1255
|
+
"type": {
|
|
1256
|
+
"option": {
|
|
1257
|
+
"vec": "pubkey";
|
|
1258
|
+
};
|
|
1259
|
+
};
|
|
710
1260
|
}
|
|
711
1261
|
];
|
|
712
1262
|
},
|
|
@@ -755,8 +1305,8 @@ export type AgentShield = {
|
|
|
755
1305
|
},
|
|
756
1306
|
{
|
|
757
1307
|
"kind": "account";
|
|
758
|
-
"path": "vault.
|
|
759
|
-
"account": "
|
|
1308
|
+
"path": "vault.vault_id";
|
|
1309
|
+
"account": "agentVault";
|
|
760
1310
|
}
|
|
761
1311
|
];
|
|
762
1312
|
};
|
|
@@ -816,8 +1366,8 @@ export type AgentShield = {
|
|
|
816
1366
|
},
|
|
817
1367
|
{
|
|
818
1368
|
"kind": "account";
|
|
819
|
-
"path": "vault.
|
|
820
|
-
"account": "
|
|
1369
|
+
"path": "vault.vault_id";
|
|
1370
|
+
"account": "agentVault";
|
|
821
1371
|
}
|
|
822
1372
|
];
|
|
823
1373
|
};
|
|
@@ -875,8 +1425,8 @@ export type AgentShield = {
|
|
|
875
1425
|
},
|
|
876
1426
|
{
|
|
877
1427
|
"kind": "account";
|
|
878
|
-
"path": "vault.
|
|
879
|
-
"account": "
|
|
1428
|
+
"path": "vault.vault_id";
|
|
1429
|
+
"account": "agentVault";
|
|
880
1430
|
}
|
|
881
1431
|
];
|
|
882
1432
|
};
|
|
@@ -888,7 +1438,8 @@ export type AgentShield = {
|
|
|
888
1438
|
"name": "updatePolicy";
|
|
889
1439
|
"docs": [
|
|
890
1440
|
"Update the policy configuration for a vault.",
|
|
891
|
-
"Only the owner can call this. Cannot be called by the agent."
|
|
1441
|
+
"Only the owner can call this. Cannot be called by the agent.",
|
|
1442
|
+
"Blocked when timelock_duration > 0 — use queue_policy_update instead."
|
|
892
1443
|
];
|
|
893
1444
|
"discriminator": [
|
|
894
1445
|
212,
|
|
@@ -928,8 +1479,8 @@ export type AgentShield = {
|
|
|
928
1479
|
},
|
|
929
1480
|
{
|
|
930
1481
|
"kind": "account";
|
|
931
|
-
"path": "vault.
|
|
932
|
-
"account": "
|
|
1482
|
+
"path": "vault.vault_id";
|
|
1483
|
+
"account": "agentVault";
|
|
933
1484
|
}
|
|
934
1485
|
];
|
|
935
1486
|
};
|
|
@@ -963,13 +1514,13 @@ export type AgentShield = {
|
|
|
963
1514
|
];
|
|
964
1515
|
"args": [
|
|
965
1516
|
{
|
|
966
|
-
"name": "
|
|
1517
|
+
"name": "dailySpendingCapUsd";
|
|
967
1518
|
"type": {
|
|
968
1519
|
"option": "u64";
|
|
969
1520
|
};
|
|
970
1521
|
},
|
|
971
1522
|
{
|
|
972
|
-
"name": "
|
|
1523
|
+
"name": "maxTransactionSizeUsd";
|
|
973
1524
|
"type": {
|
|
974
1525
|
"option": "u64";
|
|
975
1526
|
};
|
|
@@ -978,7 +1529,11 @@ export type AgentShield = {
|
|
|
978
1529
|
"name": "allowedTokens";
|
|
979
1530
|
"type": {
|
|
980
1531
|
"option": {
|
|
981
|
-
"vec":
|
|
1532
|
+
"vec": {
|
|
1533
|
+
"defined": {
|
|
1534
|
+
"name": "allowedToken";
|
|
1535
|
+
};
|
|
1536
|
+
};
|
|
982
1537
|
};
|
|
983
1538
|
};
|
|
984
1539
|
},
|
|
@@ -1013,6 +1568,20 @@ export type AgentShield = {
|
|
|
1013
1568
|
"type": {
|
|
1014
1569
|
"option": "u16";
|
|
1015
1570
|
};
|
|
1571
|
+
},
|
|
1572
|
+
{
|
|
1573
|
+
"name": "timelockDuration";
|
|
1574
|
+
"type": {
|
|
1575
|
+
"option": "u64";
|
|
1576
|
+
};
|
|
1577
|
+
},
|
|
1578
|
+
{
|
|
1579
|
+
"name": "allowedDestinations";
|
|
1580
|
+
"type": {
|
|
1581
|
+
"option": {
|
|
1582
|
+
"vec": "pubkey";
|
|
1583
|
+
};
|
|
1584
|
+
};
|
|
1016
1585
|
}
|
|
1017
1586
|
];
|
|
1018
1587
|
},
|
|
@@ -1020,8 +1589,9 @@ export type AgentShield = {
|
|
|
1020
1589
|
"name": "validateAndAuthorize";
|
|
1021
1590
|
"docs": [
|
|
1022
1591
|
"Core permission check. Called by the agent before a DeFi action.",
|
|
1023
|
-
"Validates the action against all policy constraints.",
|
|
1024
|
-
"If approved, creates a SessionAuthority PDA
|
|
1592
|
+
"Validates the action against all policy constraints (USD caps, per-token caps).",
|
|
1593
|
+
"If approved, creates a SessionAuthority PDA, delegates tokens to agent,",
|
|
1594
|
+
"and updates spend tracking.",
|
|
1025
1595
|
"If denied, reverts the entire transaction (including subsequent DeFi instructions)."
|
|
1026
1596
|
];
|
|
1027
1597
|
"discriminator": [
|
|
@@ -1058,12 +1628,12 @@ export type AgentShield = {
|
|
|
1058
1628
|
{
|
|
1059
1629
|
"kind": "account";
|
|
1060
1630
|
"path": "vault.owner";
|
|
1061
|
-
"account": "
|
|
1631
|
+
"account": "agentVault";
|
|
1062
1632
|
},
|
|
1063
1633
|
{
|
|
1064
1634
|
"kind": "account";
|
|
1065
|
-
"path": "vault.
|
|
1066
|
-
"account": "
|
|
1635
|
+
"path": "vault.vault_id";
|
|
1636
|
+
"account": "agentVault";
|
|
1067
1637
|
}
|
|
1068
1638
|
];
|
|
1069
1639
|
};
|
|
@@ -1121,7 +1691,8 @@ export type AgentShield = {
|
|
|
1121
1691
|
{
|
|
1122
1692
|
"name": "session";
|
|
1123
1693
|
"docs": [
|
|
1124
|
-
"Ephemeral session PDA
|
|
1694
|
+
"Ephemeral session PDA — `init` ensures no double-authorization.",
|
|
1695
|
+
"Seeds include token_mint for per-token concurrent sessions."
|
|
1125
1696
|
];
|
|
1126
1697
|
"writable": true;
|
|
1127
1698
|
"pda": {
|
|
@@ -1145,10 +1716,31 @@ export type AgentShield = {
|
|
|
1145
1716
|
{
|
|
1146
1717
|
"kind": "account";
|
|
1147
1718
|
"path": "agent";
|
|
1719
|
+
},
|
|
1720
|
+
{
|
|
1721
|
+
"kind": "arg";
|
|
1722
|
+
"path": "tokenMint";
|
|
1148
1723
|
}
|
|
1149
1724
|
];
|
|
1150
1725
|
};
|
|
1151
1726
|
},
|
|
1727
|
+
{
|
|
1728
|
+
"name": "vaultTokenAccount";
|
|
1729
|
+
"docs": [
|
|
1730
|
+
"Vault's PDA-owned token account for the spend token (delegation source)"
|
|
1731
|
+
];
|
|
1732
|
+
"writable": true;
|
|
1733
|
+
},
|
|
1734
|
+
{
|
|
1735
|
+
"name": "tokenMintAccount";
|
|
1736
|
+
"docs": [
|
|
1737
|
+
"The token mint being spent"
|
|
1738
|
+
];
|
|
1739
|
+
},
|
|
1740
|
+
{
|
|
1741
|
+
"name": "tokenProgram";
|
|
1742
|
+
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
|
|
1743
|
+
},
|
|
1152
1744
|
{
|
|
1153
1745
|
"name": "systemProgram";
|
|
1154
1746
|
"address": "11111111111111111111111111111111";
|
|
@@ -1159,7 +1751,7 @@ export type AgentShield = {
|
|
|
1159
1751
|
"name": "actionType";
|
|
1160
1752
|
"type": {
|
|
1161
1753
|
"defined": {
|
|
1162
|
-
"name": "
|
|
1754
|
+
"name": "actionType";
|
|
1163
1755
|
};
|
|
1164
1756
|
};
|
|
1165
1757
|
},
|
|
@@ -1228,8 +1820,8 @@ export type AgentShield = {
|
|
|
1228
1820
|
},
|
|
1229
1821
|
{
|
|
1230
1822
|
"kind": "account";
|
|
1231
|
-
"path": "vault.
|
|
1232
|
-
"account": "
|
|
1823
|
+
"path": "vault.vault_id";
|
|
1824
|
+
"account": "agentVault";
|
|
1233
1825
|
}
|
|
1234
1826
|
];
|
|
1235
1827
|
};
|
|
@@ -1438,7 +2030,7 @@ export type AgentShield = {
|
|
|
1438
2030
|
];
|
|
1439
2031
|
"accounts": [
|
|
1440
2032
|
{
|
|
1441
|
-
"name": "
|
|
2033
|
+
"name": "agentVault";
|
|
1442
2034
|
"discriminator": [
|
|
1443
2035
|
232,
|
|
1444
2036
|
220,
|
|
@@ -1451,7 +2043,20 @@ export type AgentShield = {
|
|
|
1451
2043
|
];
|
|
1452
2044
|
},
|
|
1453
2045
|
{
|
|
1454
|
-
"name": "
|
|
2046
|
+
"name": "pendingPolicyUpdate";
|
|
2047
|
+
"discriminator": [
|
|
2048
|
+
77,
|
|
2049
|
+
255,
|
|
2050
|
+
2,
|
|
2051
|
+
51,
|
|
2052
|
+
79,
|
|
2053
|
+
237,
|
|
2054
|
+
183,
|
|
2055
|
+
239
|
|
2056
|
+
];
|
|
2057
|
+
},
|
|
2058
|
+
{
|
|
2059
|
+
"name": "policyConfig";
|
|
1455
2060
|
"discriminator": [
|
|
1456
2061
|
219,
|
|
1457
2062
|
7,
|
|
@@ -1464,7 +2069,7 @@ export type AgentShield = {
|
|
|
1464
2069
|
];
|
|
1465
2070
|
},
|
|
1466
2071
|
{
|
|
1467
|
-
"name": "
|
|
2072
|
+
"name": "sessionAuthority";
|
|
1468
2073
|
"discriminator": [
|
|
1469
2074
|
48,
|
|
1470
2075
|
9,
|
|
@@ -1477,7 +2082,7 @@ export type AgentShield = {
|
|
|
1477
2082
|
];
|
|
1478
2083
|
},
|
|
1479
2084
|
{
|
|
1480
|
-
"name": "
|
|
2085
|
+
"name": "spendTracker";
|
|
1481
2086
|
"discriminator": [
|
|
1482
2087
|
180,
|
|
1483
2088
|
17,
|
|
@@ -1492,7 +2097,7 @@ export type AgentShield = {
|
|
|
1492
2097
|
];
|
|
1493
2098
|
"events": [
|
|
1494
2099
|
{
|
|
1495
|
-
"name": "
|
|
2100
|
+
"name": "actionAuthorized";
|
|
1496
2101
|
"discriminator": [
|
|
1497
2102
|
85,
|
|
1498
2103
|
90,
|
|
@@ -1505,7 +2110,7 @@ export type AgentShield = {
|
|
|
1505
2110
|
];
|
|
1506
2111
|
},
|
|
1507
2112
|
{
|
|
1508
|
-
"name": "
|
|
2113
|
+
"name": "actionDenied";
|
|
1509
2114
|
"discriminator": [
|
|
1510
2115
|
243,
|
|
1511
2116
|
239,
|
|
@@ -1518,7 +2123,7 @@ export type AgentShield = {
|
|
|
1518
2123
|
];
|
|
1519
2124
|
},
|
|
1520
2125
|
{
|
|
1521
|
-
"name": "
|
|
2126
|
+
"name": "agentRegistered";
|
|
1522
2127
|
"discriminator": [
|
|
1523
2128
|
191,
|
|
1524
2129
|
78,
|
|
@@ -1531,7 +2136,7 @@ export type AgentShield = {
|
|
|
1531
2136
|
];
|
|
1532
2137
|
},
|
|
1533
2138
|
{
|
|
1534
|
-
"name": "
|
|
2139
|
+
"name": "agentRevoked";
|
|
1535
2140
|
"discriminator": [
|
|
1536
2141
|
12,
|
|
1537
2142
|
251,
|
|
@@ -1544,7 +2149,33 @@ export type AgentShield = {
|
|
|
1544
2149
|
];
|
|
1545
2150
|
},
|
|
1546
2151
|
{
|
|
1547
|
-
"name": "
|
|
2152
|
+
"name": "agentTransferExecuted";
|
|
2153
|
+
"discriminator": [
|
|
2154
|
+
88,
|
|
2155
|
+
52,
|
|
2156
|
+
117,
|
|
2157
|
+
69,
|
|
2158
|
+
112,
|
|
2159
|
+
152,
|
|
2160
|
+
167,
|
|
2161
|
+
40
|
|
2162
|
+
];
|
|
2163
|
+
},
|
|
2164
|
+
{
|
|
2165
|
+
"name": "delegationRevoked";
|
|
2166
|
+
"discriminator": [
|
|
2167
|
+
59,
|
|
2168
|
+
158,
|
|
2169
|
+
142,
|
|
2170
|
+
49,
|
|
2171
|
+
164,
|
|
2172
|
+
116,
|
|
2173
|
+
220,
|
|
2174
|
+
8
|
|
2175
|
+
];
|
|
2176
|
+
},
|
|
2177
|
+
{
|
|
2178
|
+
"name": "feesCollected";
|
|
1548
2179
|
"discriminator": [
|
|
1549
2180
|
233,
|
|
1550
2181
|
23,
|
|
@@ -1557,7 +2188,7 @@ export type AgentShield = {
|
|
|
1557
2188
|
];
|
|
1558
2189
|
},
|
|
1559
2190
|
{
|
|
1560
|
-
"name": "
|
|
2191
|
+
"name": "fundsDeposited";
|
|
1561
2192
|
"discriminator": [
|
|
1562
2193
|
157,
|
|
1563
2194
|
209,
|
|
@@ -1570,7 +2201,7 @@ export type AgentShield = {
|
|
|
1570
2201
|
];
|
|
1571
2202
|
},
|
|
1572
2203
|
{
|
|
1573
|
-
"name": "
|
|
2204
|
+
"name": "fundsWithdrawn";
|
|
1574
2205
|
"discriminator": [
|
|
1575
2206
|
56,
|
|
1576
2207
|
130,
|
|
@@ -1583,7 +2214,46 @@ export type AgentShield = {
|
|
|
1583
2214
|
];
|
|
1584
2215
|
},
|
|
1585
2216
|
{
|
|
1586
|
-
"name": "
|
|
2217
|
+
"name": "policyChangeApplied";
|
|
2218
|
+
"discriminator": [
|
|
2219
|
+
104,
|
|
2220
|
+
89,
|
|
2221
|
+
5,
|
|
2222
|
+
100,
|
|
2223
|
+
180,
|
|
2224
|
+
202,
|
|
2225
|
+
52,
|
|
2226
|
+
73
|
|
2227
|
+
];
|
|
2228
|
+
},
|
|
2229
|
+
{
|
|
2230
|
+
"name": "policyChangeCancelled";
|
|
2231
|
+
"discriminator": [
|
|
2232
|
+
200,
|
|
2233
|
+
158,
|
|
2234
|
+
226,
|
|
2235
|
+
255,
|
|
2236
|
+
25,
|
|
2237
|
+
211,
|
|
2238
|
+
30,
|
|
2239
|
+
151
|
|
2240
|
+
];
|
|
2241
|
+
},
|
|
2242
|
+
{
|
|
2243
|
+
"name": "policyChangeQueued";
|
|
2244
|
+
"discriminator": [
|
|
2245
|
+
73,
|
|
2246
|
+
231,
|
|
2247
|
+
182,
|
|
2248
|
+
136,
|
|
2249
|
+
141,
|
|
2250
|
+
120,
|
|
2251
|
+
32,
|
|
2252
|
+
79
|
|
2253
|
+
];
|
|
2254
|
+
},
|
|
2255
|
+
{
|
|
2256
|
+
"name": "policyUpdated";
|
|
1587
2257
|
"discriminator": [
|
|
1588
2258
|
225,
|
|
1589
2259
|
112,
|
|
@@ -1596,7 +2266,7 @@ export type AgentShield = {
|
|
|
1596
2266
|
];
|
|
1597
2267
|
},
|
|
1598
2268
|
{
|
|
1599
|
-
"name": "
|
|
2269
|
+
"name": "sessionFinalized";
|
|
1600
2270
|
"discriminator": [
|
|
1601
2271
|
33,
|
|
1602
2272
|
12,
|
|
@@ -1609,7 +2279,7 @@ export type AgentShield = {
|
|
|
1609
2279
|
];
|
|
1610
2280
|
},
|
|
1611
2281
|
{
|
|
1612
|
-
"name": "
|
|
2282
|
+
"name": "vaultClosed";
|
|
1613
2283
|
"discriminator": [
|
|
1614
2284
|
238,
|
|
1615
2285
|
129,
|
|
@@ -1622,7 +2292,7 @@ export type AgentShield = {
|
|
|
1622
2292
|
];
|
|
1623
2293
|
},
|
|
1624
2294
|
{
|
|
1625
|
-
"name": "
|
|
2295
|
+
"name": "vaultCreated";
|
|
1626
2296
|
"discriminator": [
|
|
1627
2297
|
117,
|
|
1628
2298
|
25,
|
|
@@ -1635,7 +2305,7 @@ export type AgentShield = {
|
|
|
1635
2305
|
];
|
|
1636
2306
|
},
|
|
1637
2307
|
{
|
|
1638
|
-
"name": "
|
|
2308
|
+
"name": "vaultReactivated";
|
|
1639
2309
|
"discriminator": [
|
|
1640
2310
|
197,
|
|
1641
2311
|
52,
|
|
@@ -1651,148 +2321,233 @@ export type AgentShield = {
|
|
|
1651
2321
|
"errors": [
|
|
1652
2322
|
{
|
|
1653
2323
|
"code": 6000;
|
|
1654
|
-
"name": "
|
|
2324
|
+
"name": "vaultNotActive";
|
|
1655
2325
|
"msg": "Vault is not active";
|
|
1656
2326
|
},
|
|
1657
2327
|
{
|
|
1658
2328
|
"code": 6001;
|
|
1659
|
-
"name": "
|
|
2329
|
+
"name": "unauthorizedAgent";
|
|
1660
2330
|
"msg": "Unauthorized: signer is not the registered agent";
|
|
1661
2331
|
},
|
|
1662
2332
|
{
|
|
1663
2333
|
"code": 6002;
|
|
1664
|
-
"name": "
|
|
2334
|
+
"name": "unauthorizedOwner";
|
|
1665
2335
|
"msg": "Unauthorized: signer is not the vault owner";
|
|
1666
2336
|
},
|
|
1667
2337
|
{
|
|
1668
2338
|
"code": 6003;
|
|
1669
|
-
"name": "
|
|
2339
|
+
"name": "tokenNotAllowed";
|
|
1670
2340
|
"msg": "Token not in allowed list";
|
|
1671
2341
|
},
|
|
1672
2342
|
{
|
|
1673
2343
|
"code": 6004;
|
|
1674
|
-
"name": "
|
|
2344
|
+
"name": "protocolNotAllowed";
|
|
1675
2345
|
"msg": "Protocol not in allowed list";
|
|
1676
2346
|
},
|
|
1677
2347
|
{
|
|
1678
2348
|
"code": 6005;
|
|
1679
|
-
"name": "
|
|
2349
|
+
"name": "transactionTooLarge";
|
|
1680
2350
|
"msg": "Transaction exceeds maximum single transaction size";
|
|
1681
2351
|
},
|
|
1682
2352
|
{
|
|
1683
2353
|
"code": 6006;
|
|
1684
|
-
"name": "
|
|
2354
|
+
"name": "dailyCapExceeded";
|
|
1685
2355
|
"msg": "Daily spending cap would be exceeded";
|
|
1686
2356
|
},
|
|
1687
2357
|
{
|
|
1688
2358
|
"code": 6007;
|
|
1689
|
-
"name": "
|
|
2359
|
+
"name": "leverageTooHigh";
|
|
1690
2360
|
"msg": "Leverage exceeds maximum allowed";
|
|
1691
2361
|
},
|
|
1692
2362
|
{
|
|
1693
2363
|
"code": 6008;
|
|
1694
|
-
"name": "
|
|
2364
|
+
"name": "tooManyPositions";
|
|
1695
2365
|
"msg": "Maximum concurrent open positions reached";
|
|
1696
2366
|
},
|
|
1697
2367
|
{
|
|
1698
2368
|
"code": 6009;
|
|
1699
|
-
"name": "
|
|
2369
|
+
"name": "positionOpeningDisallowed";
|
|
1700
2370
|
"msg": "Cannot open new positions (policy disallows)";
|
|
1701
2371
|
},
|
|
1702
2372
|
{
|
|
1703
2373
|
"code": 6010;
|
|
1704
|
-
"name": "
|
|
2374
|
+
"name": "sessionExpired";
|
|
1705
2375
|
"msg": "Session has expired";
|
|
1706
2376
|
},
|
|
1707
2377
|
{
|
|
1708
2378
|
"code": 6011;
|
|
1709
|
-
"name": "
|
|
2379
|
+
"name": "sessionNotAuthorized";
|
|
1710
2380
|
"msg": "Session not authorized";
|
|
1711
2381
|
},
|
|
1712
2382
|
{
|
|
1713
2383
|
"code": 6012;
|
|
1714
|
-
"name": "
|
|
2384
|
+
"name": "invalidSession";
|
|
1715
2385
|
"msg": "Invalid session: does not belong to this vault";
|
|
1716
2386
|
},
|
|
1717
2387
|
{
|
|
1718
2388
|
"code": 6013;
|
|
1719
|
-
"name": "
|
|
2389
|
+
"name": "openPositionsExist";
|
|
1720
2390
|
"msg": "Vault has open positions, cannot close";
|
|
1721
2391
|
},
|
|
1722
2392
|
{
|
|
1723
2393
|
"code": 6014;
|
|
1724
|
-
"name": "
|
|
2394
|
+
"name": "tooManyAllowedTokens";
|
|
1725
2395
|
"msg": "Policy configuration invalid: too many allowed tokens";
|
|
1726
2396
|
},
|
|
1727
2397
|
{
|
|
1728
2398
|
"code": 6015;
|
|
1729
|
-
"name": "
|
|
2399
|
+
"name": "tooManyAllowedProtocols";
|
|
1730
2400
|
"msg": "Policy configuration invalid: too many allowed protocols";
|
|
1731
2401
|
},
|
|
1732
2402
|
{
|
|
1733
2403
|
"code": 6016;
|
|
1734
|
-
"name": "
|
|
2404
|
+
"name": "agentAlreadyRegistered";
|
|
1735
2405
|
"msg": "Agent already registered for this vault";
|
|
1736
2406
|
},
|
|
1737
2407
|
{
|
|
1738
2408
|
"code": 6017;
|
|
1739
|
-
"name": "
|
|
2409
|
+
"name": "noAgentRegistered";
|
|
1740
2410
|
"msg": "No agent registered for this vault";
|
|
1741
2411
|
},
|
|
1742
2412
|
{
|
|
1743
2413
|
"code": 6018;
|
|
1744
|
-
"name": "
|
|
2414
|
+
"name": "vaultNotFrozen";
|
|
1745
2415
|
"msg": "Vault is not frozen (expected frozen for reactivation)";
|
|
1746
2416
|
},
|
|
1747
2417
|
{
|
|
1748
2418
|
"code": 6019;
|
|
1749
|
-
"name": "
|
|
2419
|
+
"name": "vaultAlreadyClosed";
|
|
1750
2420
|
"msg": "Vault is already closed";
|
|
1751
2421
|
},
|
|
1752
2422
|
{
|
|
1753
2423
|
"code": 6020;
|
|
1754
|
-
"name": "
|
|
2424
|
+
"name": "insufficientBalance";
|
|
1755
2425
|
"msg": "Insufficient vault balance for withdrawal";
|
|
1756
2426
|
},
|
|
1757
2427
|
{
|
|
1758
2428
|
"code": 6021;
|
|
1759
|
-
"name": "
|
|
2429
|
+
"name": "developerFeeTooHigh";
|
|
1760
2430
|
"msg": "Developer fee rate exceeds maximum (50 / 1,000,000 = 0.5 BPS)";
|
|
1761
2431
|
},
|
|
1762
2432
|
{
|
|
1763
2433
|
"code": 6022;
|
|
1764
|
-
"name": "
|
|
2434
|
+
"name": "invalidFeeDestination";
|
|
1765
2435
|
"msg": "Fee destination account invalid";
|
|
1766
2436
|
},
|
|
1767
2437
|
{
|
|
1768
2438
|
"code": 6023;
|
|
1769
|
-
"name": "
|
|
2439
|
+
"name": "invalidProtocolTreasury";
|
|
1770
2440
|
"msg": "Protocol treasury account does not match expected address";
|
|
1771
2441
|
},
|
|
1772
2442
|
{
|
|
1773
|
-
"code": 6024;
|
|
1774
|
-
"name": "
|
|
1775
|
-
"msg": "Spend entry limit reached (too many active entries in rolling window)";
|
|
2443
|
+
"code": 6024;
|
|
2444
|
+
"name": "tooManySpendEntries";
|
|
2445
|
+
"msg": "Spend entry limit reached (too many active entries in rolling window)";
|
|
2446
|
+
},
|
|
2447
|
+
{
|
|
2448
|
+
"code": 6025;
|
|
2449
|
+
"name": "invalidAgentKey";
|
|
2450
|
+
"msg": "Invalid agent: cannot be the zero address";
|
|
2451
|
+
},
|
|
2452
|
+
{
|
|
2453
|
+
"code": 6026;
|
|
2454
|
+
"name": "agentIsOwner";
|
|
2455
|
+
"msg": "Invalid agent: agent cannot be the vault owner";
|
|
2456
|
+
},
|
|
2457
|
+
{
|
|
2458
|
+
"code": 6027;
|
|
2459
|
+
"name": "overflow";
|
|
2460
|
+
"msg": "Arithmetic overflow";
|
|
2461
|
+
},
|
|
2462
|
+
{
|
|
2463
|
+
"code": 6028;
|
|
2464
|
+
"name": "delegationFailed";
|
|
2465
|
+
"msg": "Token delegation approval failed";
|
|
2466
|
+
},
|
|
2467
|
+
{
|
|
2468
|
+
"code": 6029;
|
|
2469
|
+
"name": "revocationFailed";
|
|
2470
|
+
"msg": "Token delegation revocation failed";
|
|
2471
|
+
},
|
|
2472
|
+
{
|
|
2473
|
+
"code": 6030;
|
|
2474
|
+
"name": "oracleFeedStale";
|
|
2475
|
+
"msg": "Oracle feed value is too stale";
|
|
2476
|
+
},
|
|
2477
|
+
{
|
|
2478
|
+
"code": 6031;
|
|
2479
|
+
"name": "oracleFeedInvalid";
|
|
2480
|
+
"msg": "Cannot parse oracle feed data";
|
|
2481
|
+
},
|
|
2482
|
+
{
|
|
2483
|
+
"code": 6032;
|
|
2484
|
+
"name": "tokenSpendBlocked";
|
|
2485
|
+
"msg": "Unpriced token cannot be spent (receive-only)";
|
|
2486
|
+
},
|
|
2487
|
+
{
|
|
2488
|
+
"code": 6033;
|
|
2489
|
+
"name": "invalidTokenAccount";
|
|
2490
|
+
"msg": "Token account does not belong to vault or has wrong mint";
|
|
2491
|
+
},
|
|
2492
|
+
{
|
|
2493
|
+
"code": 6034;
|
|
2494
|
+
"name": "oracleAccountMissing";
|
|
2495
|
+
"msg": "Oracle-priced token requires feed account in remaining_accounts";
|
|
2496
|
+
},
|
|
2497
|
+
{
|
|
2498
|
+
"code": 6035;
|
|
2499
|
+
"name": "perTokenCapExceeded";
|
|
2500
|
+
"msg": "Per-token daily spending cap would be exceeded";
|
|
2501
|
+
},
|
|
2502
|
+
{
|
|
2503
|
+
"code": 6036;
|
|
2504
|
+
"name": "perTokenTxLimitExceeded";
|
|
2505
|
+
"msg": "Per-token single transaction limit exceeded";
|
|
2506
|
+
},
|
|
2507
|
+
{
|
|
2508
|
+
"code": 6037;
|
|
2509
|
+
"name": "oracleConfidenceTooWide";
|
|
2510
|
+
"msg": "Oracle price confidence interval too wide";
|
|
2511
|
+
},
|
|
2512
|
+
{
|
|
2513
|
+
"code": 6038;
|
|
2514
|
+
"name": "oracleUnsupportedType";
|
|
2515
|
+
"msg": "Oracle account owner is not a recognized oracle program";
|
|
2516
|
+
},
|
|
2517
|
+
{
|
|
2518
|
+
"code": 6039;
|
|
2519
|
+
"name": "oracleNotVerified";
|
|
2520
|
+
"msg": "Pyth price update not fully verified by Wormhole";
|
|
2521
|
+
},
|
|
2522
|
+
{
|
|
2523
|
+
"code": 6040;
|
|
2524
|
+
"name": "timelockNotExpired";
|
|
2525
|
+
"msg": "Timelock period has not expired yet";
|
|
2526
|
+
},
|
|
2527
|
+
{
|
|
2528
|
+
"code": 6041;
|
|
2529
|
+
"name": "timelockActive";
|
|
2530
|
+
"msg": "Vault has timelock active — use queue_policy_update instead";
|
|
1776
2531
|
},
|
|
1777
2532
|
{
|
|
1778
|
-
"code":
|
|
1779
|
-
"name": "
|
|
1780
|
-
"msg": "
|
|
2533
|
+
"code": 6042;
|
|
2534
|
+
"name": "noTimelockConfigured";
|
|
2535
|
+
"msg": "No timelock configured on this vault";
|
|
1781
2536
|
},
|
|
1782
2537
|
{
|
|
1783
|
-
"code":
|
|
1784
|
-
"name": "
|
|
1785
|
-
"msg": "
|
|
2538
|
+
"code": 6043;
|
|
2539
|
+
"name": "destinationNotAllowed";
|
|
2540
|
+
"msg": "Destination not in allowed list";
|
|
1786
2541
|
},
|
|
1787
2542
|
{
|
|
1788
|
-
"code":
|
|
1789
|
-
"name": "
|
|
1790
|
-
"msg": "
|
|
2543
|
+
"code": 6044;
|
|
2544
|
+
"name": "tooManyDestinations";
|
|
2545
|
+
"msg": "Too many destinations (max 10)";
|
|
1791
2546
|
}
|
|
1792
2547
|
];
|
|
1793
2548
|
"types": [
|
|
1794
2549
|
{
|
|
1795
|
-
"name": "
|
|
2550
|
+
"name": "actionAuthorized";
|
|
1796
2551
|
"type": {
|
|
1797
2552
|
"kind": "struct";
|
|
1798
2553
|
"fields": [
|
|
@@ -1808,7 +2563,7 @@ export type AgentShield = {
|
|
|
1808
2563
|
"name": "actionType";
|
|
1809
2564
|
"type": {
|
|
1810
2565
|
"defined": {
|
|
1811
|
-
"name": "
|
|
2566
|
+
"name": "actionType";
|
|
1812
2567
|
};
|
|
1813
2568
|
};
|
|
1814
2569
|
},
|
|
@@ -1820,18 +2575,38 @@ export type AgentShield = {
|
|
|
1820
2575
|
"name": "amount";
|
|
1821
2576
|
"type": "u64";
|
|
1822
2577
|
},
|
|
2578
|
+
{
|
|
2579
|
+
"name": "usdAmount";
|
|
2580
|
+
"type": "u64";
|
|
2581
|
+
},
|
|
1823
2582
|
{
|
|
1824
2583
|
"name": "protocol";
|
|
1825
2584
|
"type": "pubkey";
|
|
1826
2585
|
},
|
|
1827
2586
|
{
|
|
1828
|
-
"name": "
|
|
2587
|
+
"name": "rollingSpendUsdAfter";
|
|
1829
2588
|
"type": "u64";
|
|
1830
2589
|
},
|
|
1831
2590
|
{
|
|
1832
|
-
"name": "
|
|
2591
|
+
"name": "dailyCapUsd";
|
|
1833
2592
|
"type": "u64";
|
|
1834
2593
|
},
|
|
2594
|
+
{
|
|
2595
|
+
"name": "delegated";
|
|
2596
|
+
"type": "bool";
|
|
2597
|
+
},
|
|
2598
|
+
{
|
|
2599
|
+
"name": "oraclePrice";
|
|
2600
|
+
"type": {
|
|
2601
|
+
"option": "i128";
|
|
2602
|
+
};
|
|
2603
|
+
},
|
|
2604
|
+
{
|
|
2605
|
+
"name": "oracleSource";
|
|
2606
|
+
"type": {
|
|
2607
|
+
"option": "u8";
|
|
2608
|
+
};
|
|
2609
|
+
},
|
|
1835
2610
|
{
|
|
1836
2611
|
"name": "timestamp";
|
|
1837
2612
|
"type": "i64";
|
|
@@ -1840,7 +2615,7 @@ export type AgentShield = {
|
|
|
1840
2615
|
};
|
|
1841
2616
|
},
|
|
1842
2617
|
{
|
|
1843
|
-
"name": "
|
|
2618
|
+
"name": "actionDenied";
|
|
1844
2619
|
"type": {
|
|
1845
2620
|
"kind": "struct";
|
|
1846
2621
|
"fields": [
|
|
@@ -1864,7 +2639,7 @@ export type AgentShield = {
|
|
|
1864
2639
|
};
|
|
1865
2640
|
},
|
|
1866
2641
|
{
|
|
1867
|
-
"name": "
|
|
2642
|
+
"name": "actionType";
|
|
1868
2643
|
"docs": [
|
|
1869
2644
|
"Action types that agents can request"
|
|
1870
2645
|
];
|
|
@@ -1872,31 +2647,34 @@ export type AgentShield = {
|
|
|
1872
2647
|
"kind": "enum";
|
|
1873
2648
|
"variants": [
|
|
1874
2649
|
{
|
|
1875
|
-
"name": "
|
|
2650
|
+
"name": "swap";
|
|
2651
|
+
},
|
|
2652
|
+
{
|
|
2653
|
+
"name": "openPosition";
|
|
1876
2654
|
},
|
|
1877
2655
|
{
|
|
1878
|
-
"name": "
|
|
2656
|
+
"name": "closePosition";
|
|
1879
2657
|
},
|
|
1880
2658
|
{
|
|
1881
|
-
"name": "
|
|
2659
|
+
"name": "increasePosition";
|
|
1882
2660
|
},
|
|
1883
2661
|
{
|
|
1884
|
-
"name": "
|
|
2662
|
+
"name": "decreasePosition";
|
|
1885
2663
|
},
|
|
1886
2664
|
{
|
|
1887
|
-
"name": "
|
|
2665
|
+
"name": "deposit";
|
|
1888
2666
|
},
|
|
1889
2667
|
{
|
|
1890
|
-
"name": "
|
|
2668
|
+
"name": "withdraw";
|
|
1891
2669
|
},
|
|
1892
2670
|
{
|
|
1893
|
-
"name": "
|
|
2671
|
+
"name": "transfer";
|
|
1894
2672
|
}
|
|
1895
2673
|
];
|
|
1896
2674
|
};
|
|
1897
2675
|
},
|
|
1898
2676
|
{
|
|
1899
|
-
"name": "
|
|
2677
|
+
"name": "agentRegistered";
|
|
1900
2678
|
"type": {
|
|
1901
2679
|
"kind": "struct";
|
|
1902
2680
|
"fields": [
|
|
@@ -1916,7 +2694,7 @@ export type AgentShield = {
|
|
|
1916
2694
|
};
|
|
1917
2695
|
},
|
|
1918
2696
|
{
|
|
1919
|
-
"name": "
|
|
2697
|
+
"name": "agentRevoked";
|
|
1920
2698
|
"type": {
|
|
1921
2699
|
"kind": "struct";
|
|
1922
2700
|
"fields": [
|
|
@@ -1936,7 +2714,31 @@ export type AgentShield = {
|
|
|
1936
2714
|
};
|
|
1937
2715
|
},
|
|
1938
2716
|
{
|
|
1939
|
-
"name": "
|
|
2717
|
+
"name": "agentTransferExecuted";
|
|
2718
|
+
"type": {
|
|
2719
|
+
"kind": "struct";
|
|
2720
|
+
"fields": [
|
|
2721
|
+
{
|
|
2722
|
+
"name": "vault";
|
|
2723
|
+
"type": "pubkey";
|
|
2724
|
+
},
|
|
2725
|
+
{
|
|
2726
|
+
"name": "destination";
|
|
2727
|
+
"type": "pubkey";
|
|
2728
|
+
},
|
|
2729
|
+
{
|
|
2730
|
+
"name": "amount";
|
|
2731
|
+
"type": "u64";
|
|
2732
|
+
},
|
|
2733
|
+
{
|
|
2734
|
+
"name": "mint";
|
|
2735
|
+
"type": "pubkey";
|
|
2736
|
+
}
|
|
2737
|
+
];
|
|
2738
|
+
};
|
|
2739
|
+
},
|
|
2740
|
+
{
|
|
2741
|
+
"name": "agentVault";
|
|
1940
2742
|
"type": {
|
|
1941
2743
|
"kind": "struct";
|
|
1942
2744
|
"fields": [
|
|
@@ -1957,7 +2759,7 @@ export type AgentShield = {
|
|
|
1957
2759
|
{
|
|
1958
2760
|
"name": "feeDestination";
|
|
1959
2761
|
"docs": [
|
|
1960
|
-
"Developer fee destination
|
|
2762
|
+
"Developer fee destination — the wallet that receives developer fees",
|
|
1961
2763
|
"on every finalized transaction. Set at vault creation, immutable after",
|
|
1962
2764
|
"initialization. Protocol fees go to PROTOCOL_TREASURY separately."
|
|
1963
2765
|
];
|
|
@@ -1977,7 +2779,7 @@ export type AgentShield = {
|
|
|
1977
2779
|
];
|
|
1978
2780
|
"type": {
|
|
1979
2781
|
"defined": {
|
|
1980
|
-
"name": "
|
|
2782
|
+
"name": "vaultStatus";
|
|
1981
2783
|
};
|
|
1982
2784
|
};
|
|
1983
2785
|
},
|
|
@@ -2028,7 +2830,83 @@ export type AgentShield = {
|
|
|
2028
2830
|
};
|
|
2029
2831
|
},
|
|
2030
2832
|
{
|
|
2031
|
-
"name": "
|
|
2833
|
+
"name": "allowedToken";
|
|
2834
|
+
"docs": [
|
|
2835
|
+
"Per-token configuration including oracle feed and per-token caps.",
|
|
2836
|
+
"Replaces the old `Vec<Pubkey>` allowed_tokens with richer metadata.",
|
|
2837
|
+
"",
|
|
2838
|
+
"Oracle feed classification:",
|
|
2839
|
+
"- `Pubkey::default()` = stablecoin (1:1 USD, no oracle needed)",
|
|
2840
|
+
"- `UNPRICED_SENTINEL` ([0xFF; 32]) = unpriced token (receive-only)",
|
|
2841
|
+
"- Any other pubkey = Oracle feed account (Pyth PriceUpdateV2 or Switchboard PullFeed)"
|
|
2842
|
+
];
|
|
2843
|
+
"type": {
|
|
2844
|
+
"kind": "struct";
|
|
2845
|
+
"fields": [
|
|
2846
|
+
{
|
|
2847
|
+
"name": "mint";
|
|
2848
|
+
"docs": [
|
|
2849
|
+
"Token mint address"
|
|
2850
|
+
];
|
|
2851
|
+
"type": "pubkey";
|
|
2852
|
+
},
|
|
2853
|
+
{
|
|
2854
|
+
"name": "oracleFeed";
|
|
2855
|
+
"docs": [
|
|
2856
|
+
"Oracle feed account (Pyth PriceUpdateV2 or Switchboard PullFeed) for USD pricing.",
|
|
2857
|
+
"`Pubkey::default()` = stablecoin (1:1 USD).",
|
|
2858
|
+
"`UNPRICED_SENTINEL` = unpriced (receive-only, cannot be spent)."
|
|
2859
|
+
];
|
|
2860
|
+
"type": "pubkey";
|
|
2861
|
+
},
|
|
2862
|
+
{
|
|
2863
|
+
"name": "decimals";
|
|
2864
|
+
"docs": [
|
|
2865
|
+
"Token decimals (e.g., 6 for USDC, 9 for SOL)"
|
|
2866
|
+
];
|
|
2867
|
+
"type": "u8";
|
|
2868
|
+
},
|
|
2869
|
+
{
|
|
2870
|
+
"name": "dailyCapBase";
|
|
2871
|
+
"docs": [
|
|
2872
|
+
"Per-token daily cap in base units (0 = no per-token limit,",
|
|
2873
|
+
"only the aggregate USD cap applies)"
|
|
2874
|
+
];
|
|
2875
|
+
"type": "u64";
|
|
2876
|
+
},
|
|
2877
|
+
{
|
|
2878
|
+
"name": "maxTxBase";
|
|
2879
|
+
"docs": [
|
|
2880
|
+
"Per-token max single transaction in base units",
|
|
2881
|
+
"(0 = no per-token tx limit, only USD tx limit applies)"
|
|
2882
|
+
];
|
|
2883
|
+
"type": "u64";
|
|
2884
|
+
}
|
|
2885
|
+
];
|
|
2886
|
+
};
|
|
2887
|
+
},
|
|
2888
|
+
{
|
|
2889
|
+
"name": "delegationRevoked";
|
|
2890
|
+
"type": {
|
|
2891
|
+
"kind": "struct";
|
|
2892
|
+
"fields": [
|
|
2893
|
+
{
|
|
2894
|
+
"name": "vault";
|
|
2895
|
+
"type": "pubkey";
|
|
2896
|
+
},
|
|
2897
|
+
{
|
|
2898
|
+
"name": "tokenAccount";
|
|
2899
|
+
"type": "pubkey";
|
|
2900
|
+
},
|
|
2901
|
+
{
|
|
2902
|
+
"name": "timestamp";
|
|
2903
|
+
"type": "i64";
|
|
2904
|
+
}
|
|
2905
|
+
];
|
|
2906
|
+
};
|
|
2907
|
+
},
|
|
2908
|
+
{
|
|
2909
|
+
"name": "feesCollected";
|
|
2032
2910
|
"type": {
|
|
2033
2911
|
"kind": "struct";
|
|
2034
2912
|
"fields": [
|
|
@@ -2080,7 +2958,7 @@ export type AgentShield = {
|
|
|
2080
2958
|
};
|
|
2081
2959
|
},
|
|
2082
2960
|
{
|
|
2083
|
-
"name": "
|
|
2961
|
+
"name": "fundsDeposited";
|
|
2084
2962
|
"type": {
|
|
2085
2963
|
"kind": "struct";
|
|
2086
2964
|
"fields": [
|
|
@@ -2104,7 +2982,7 @@ export type AgentShield = {
|
|
|
2104
2982
|
};
|
|
2105
2983
|
},
|
|
2106
2984
|
{
|
|
2107
|
-
"name": "
|
|
2985
|
+
"name": "fundsWithdrawn";
|
|
2108
2986
|
"type": {
|
|
2109
2987
|
"kind": "struct";
|
|
2110
2988
|
"fields": [
|
|
@@ -2132,7 +3010,164 @@ export type AgentShield = {
|
|
|
2132
3010
|
};
|
|
2133
3011
|
},
|
|
2134
3012
|
{
|
|
2135
|
-
"name": "
|
|
3013
|
+
"name": "pendingPolicyUpdate";
|
|
3014
|
+
"docs": [
|
|
3015
|
+
"Queued policy update that becomes executable after a timelock period.",
|
|
3016
|
+
"Created by `queue_policy_update`, applied by `apply_pending_policy`,",
|
|
3017
|
+
"or cancelled by `cancel_pending_policy`.",
|
|
3018
|
+
"",
|
|
3019
|
+
"PDA seeds: `[b\"pending_policy\", vault.key().as_ref()]`"
|
|
3020
|
+
];
|
|
3021
|
+
"type": {
|
|
3022
|
+
"kind": "struct";
|
|
3023
|
+
"fields": [
|
|
3024
|
+
{
|
|
3025
|
+
"name": "vault";
|
|
3026
|
+
"docs": [
|
|
3027
|
+
"Associated vault pubkey"
|
|
3028
|
+
];
|
|
3029
|
+
"type": "pubkey";
|
|
3030
|
+
},
|
|
3031
|
+
{
|
|
3032
|
+
"name": "queuedAt";
|
|
3033
|
+
"docs": [
|
|
3034
|
+
"Unix timestamp when this update was queued"
|
|
3035
|
+
];
|
|
3036
|
+
"type": "i64";
|
|
3037
|
+
},
|
|
3038
|
+
{
|
|
3039
|
+
"name": "executesAt";
|
|
3040
|
+
"docs": [
|
|
3041
|
+
"Unix timestamp when this update becomes executable"
|
|
3042
|
+
];
|
|
3043
|
+
"type": "i64";
|
|
3044
|
+
},
|
|
3045
|
+
{
|
|
3046
|
+
"name": "dailySpendingCapUsd";
|
|
3047
|
+
"type": {
|
|
3048
|
+
"option": "u64";
|
|
3049
|
+
};
|
|
3050
|
+
},
|
|
3051
|
+
{
|
|
3052
|
+
"name": "maxTransactionAmountUsd";
|
|
3053
|
+
"type": {
|
|
3054
|
+
"option": "u64";
|
|
3055
|
+
};
|
|
3056
|
+
},
|
|
3057
|
+
{
|
|
3058
|
+
"name": "allowedTokens";
|
|
3059
|
+
"type": {
|
|
3060
|
+
"option": {
|
|
3061
|
+
"vec": {
|
|
3062
|
+
"defined": {
|
|
3063
|
+
"name": "allowedToken";
|
|
3064
|
+
};
|
|
3065
|
+
};
|
|
3066
|
+
};
|
|
3067
|
+
};
|
|
3068
|
+
},
|
|
3069
|
+
{
|
|
3070
|
+
"name": "allowedProtocols";
|
|
3071
|
+
"type": {
|
|
3072
|
+
"option": {
|
|
3073
|
+
"vec": "pubkey";
|
|
3074
|
+
};
|
|
3075
|
+
};
|
|
3076
|
+
},
|
|
3077
|
+
{
|
|
3078
|
+
"name": "maxLeverageBps";
|
|
3079
|
+
"type": {
|
|
3080
|
+
"option": "u16";
|
|
3081
|
+
};
|
|
3082
|
+
},
|
|
3083
|
+
{
|
|
3084
|
+
"name": "canOpenPositions";
|
|
3085
|
+
"type": {
|
|
3086
|
+
"option": "bool";
|
|
3087
|
+
};
|
|
3088
|
+
},
|
|
3089
|
+
{
|
|
3090
|
+
"name": "maxConcurrentPositions";
|
|
3091
|
+
"type": {
|
|
3092
|
+
"option": "u8";
|
|
3093
|
+
};
|
|
3094
|
+
},
|
|
3095
|
+
{
|
|
3096
|
+
"name": "developerFeeRate";
|
|
3097
|
+
"type": {
|
|
3098
|
+
"option": "u16";
|
|
3099
|
+
};
|
|
3100
|
+
},
|
|
3101
|
+
{
|
|
3102
|
+
"name": "timelockDuration";
|
|
3103
|
+
"type": {
|
|
3104
|
+
"option": "u64";
|
|
3105
|
+
};
|
|
3106
|
+
},
|
|
3107
|
+
{
|
|
3108
|
+
"name": "allowedDestinations";
|
|
3109
|
+
"type": {
|
|
3110
|
+
"option": {
|
|
3111
|
+
"vec": "pubkey";
|
|
3112
|
+
};
|
|
3113
|
+
};
|
|
3114
|
+
},
|
|
3115
|
+
{
|
|
3116
|
+
"name": "bump";
|
|
3117
|
+
"docs": [
|
|
3118
|
+
"Bump seed for PDA"
|
|
3119
|
+
];
|
|
3120
|
+
"type": "u8";
|
|
3121
|
+
}
|
|
3122
|
+
];
|
|
3123
|
+
};
|
|
3124
|
+
},
|
|
3125
|
+
{
|
|
3126
|
+
"name": "policyChangeApplied";
|
|
3127
|
+
"type": {
|
|
3128
|
+
"kind": "struct";
|
|
3129
|
+
"fields": [
|
|
3130
|
+
{
|
|
3131
|
+
"name": "vault";
|
|
3132
|
+
"type": "pubkey";
|
|
3133
|
+
},
|
|
3134
|
+
{
|
|
3135
|
+
"name": "appliedAt";
|
|
3136
|
+
"type": "i64";
|
|
3137
|
+
}
|
|
3138
|
+
];
|
|
3139
|
+
};
|
|
3140
|
+
},
|
|
3141
|
+
{
|
|
3142
|
+
"name": "policyChangeCancelled";
|
|
3143
|
+
"type": {
|
|
3144
|
+
"kind": "struct";
|
|
3145
|
+
"fields": [
|
|
3146
|
+
{
|
|
3147
|
+
"name": "vault";
|
|
3148
|
+
"type": "pubkey";
|
|
3149
|
+
}
|
|
3150
|
+
];
|
|
3151
|
+
};
|
|
3152
|
+
},
|
|
3153
|
+
{
|
|
3154
|
+
"name": "policyChangeQueued";
|
|
3155
|
+
"type": {
|
|
3156
|
+
"kind": "struct";
|
|
3157
|
+
"fields": [
|
|
3158
|
+
{
|
|
3159
|
+
"name": "vault";
|
|
3160
|
+
"type": "pubkey";
|
|
3161
|
+
},
|
|
3162
|
+
{
|
|
3163
|
+
"name": "executesAt";
|
|
3164
|
+
"type": "i64";
|
|
3165
|
+
}
|
|
3166
|
+
];
|
|
3167
|
+
};
|
|
3168
|
+
},
|
|
3169
|
+
{
|
|
3170
|
+
"name": "policyConfig";
|
|
2136
3171
|
"type": {
|
|
2137
3172
|
"kind": "struct";
|
|
2138
3173
|
"fields": [
|
|
@@ -2144,27 +3179,32 @@ export type AgentShield = {
|
|
|
2144
3179
|
"type": "pubkey";
|
|
2145
3180
|
},
|
|
2146
3181
|
{
|
|
2147
|
-
"name": "
|
|
3182
|
+
"name": "dailySpendingCapUsd";
|
|
2148
3183
|
"docs": [
|
|
2149
|
-
"Maximum spend per rolling 24h period
|
|
3184
|
+
"Maximum aggregate spend per rolling 24h period in USD (6 decimals).",
|
|
3185
|
+
"$500 = 500_000_000. This is the primary spending cap."
|
|
2150
3186
|
];
|
|
2151
3187
|
"type": "u64";
|
|
2152
3188
|
},
|
|
2153
3189
|
{
|
|
2154
|
-
"name": "
|
|
3190
|
+
"name": "maxTransactionSizeUsd";
|
|
2155
3191
|
"docs": [
|
|
2156
|
-
"Maximum single transaction size
|
|
3192
|
+
"Maximum single transaction size in USD (6 decimals)."
|
|
2157
3193
|
];
|
|
2158
3194
|
"type": "u64";
|
|
2159
3195
|
},
|
|
2160
3196
|
{
|
|
2161
3197
|
"name": "allowedTokens";
|
|
2162
3198
|
"docs": [
|
|
2163
|
-
"Allowed token mints
|
|
2164
|
-
"Bounded to MAX_ALLOWED_TOKENS entries"
|
|
3199
|
+
"Allowed token mints with oracle feeds and per-token caps.",
|
|
3200
|
+
"Bounded to MAX_ALLOWED_TOKENS entries."
|
|
2165
3201
|
];
|
|
2166
3202
|
"type": {
|
|
2167
|
-
"vec":
|
|
3203
|
+
"vec": {
|
|
3204
|
+
"defined": {
|
|
3205
|
+
"name": "allowedToken";
|
|
3206
|
+
};
|
|
3207
|
+
};
|
|
2168
3208
|
};
|
|
2169
3209
|
},
|
|
2170
3210
|
{
|
|
@@ -2210,6 +3250,25 @@ export type AgentShield = {
|
|
|
2210
3250
|
];
|
|
2211
3251
|
"type": "u16";
|
|
2212
3252
|
},
|
|
3253
|
+
{
|
|
3254
|
+
"name": "timelockDuration";
|
|
3255
|
+
"docs": [
|
|
3256
|
+
"Timelock duration in seconds for policy changes. 0 = no timelock",
|
|
3257
|
+
"(immediate updates allowed). When > 0, policy changes must go",
|
|
3258
|
+
"through queue_policy_update → apply_pending_policy."
|
|
3259
|
+
];
|
|
3260
|
+
"type": "u64";
|
|
3261
|
+
},
|
|
3262
|
+
{
|
|
3263
|
+
"name": "allowedDestinations";
|
|
3264
|
+
"docs": [
|
|
3265
|
+
"Allowed destination addresses for agent transfers.",
|
|
3266
|
+
"Empty = any destination allowed. Bounded to MAX_ALLOWED_DESTINATIONS."
|
|
3267
|
+
];
|
|
3268
|
+
"type": {
|
|
3269
|
+
"vec": "pubkey";
|
|
3270
|
+
};
|
|
3271
|
+
},
|
|
2213
3272
|
{
|
|
2214
3273
|
"name": "bump";
|
|
2215
3274
|
"docs": [
|
|
@@ -2221,7 +3280,7 @@ export type AgentShield = {
|
|
|
2221
3280
|
};
|
|
2222
3281
|
},
|
|
2223
3282
|
{
|
|
2224
|
-
"name": "
|
|
3283
|
+
"name": "policyUpdated";
|
|
2225
3284
|
"type": {
|
|
2226
3285
|
"kind": "struct";
|
|
2227
3286
|
"fields": [
|
|
@@ -2230,11 +3289,11 @@ export type AgentShield = {
|
|
|
2230
3289
|
"type": "pubkey";
|
|
2231
3290
|
},
|
|
2232
3291
|
{
|
|
2233
|
-
"name": "
|
|
3292
|
+
"name": "dailyCapUsd";
|
|
2234
3293
|
"type": "u64";
|
|
2235
3294
|
},
|
|
2236
3295
|
{
|
|
2237
|
-
"name": "
|
|
3296
|
+
"name": "maxTransactionSizeUsd";
|
|
2238
3297
|
"type": "u64";
|
|
2239
3298
|
},
|
|
2240
3299
|
{
|
|
@@ -2261,7 +3320,7 @@ export type AgentShield = {
|
|
|
2261
3320
|
};
|
|
2262
3321
|
},
|
|
2263
3322
|
{
|
|
2264
|
-
"name": "
|
|
3323
|
+
"name": "sessionAuthority";
|
|
2265
3324
|
"type": {
|
|
2266
3325
|
"kind": "struct";
|
|
2267
3326
|
"fields": [
|
|
@@ -2308,7 +3367,7 @@ export type AgentShield = {
|
|
|
2308
3367
|
];
|
|
2309
3368
|
"type": {
|
|
2310
3369
|
"defined": {
|
|
2311
|
-
"name": "
|
|
3370
|
+
"name": "actionType";
|
|
2312
3371
|
};
|
|
2313
3372
|
};
|
|
2314
3373
|
},
|
|
@@ -2319,6 +3378,21 @@ export type AgentShield = {
|
|
|
2319
3378
|
];
|
|
2320
3379
|
"type": "u64";
|
|
2321
3380
|
},
|
|
3381
|
+
{
|
|
3382
|
+
"name": "delegated";
|
|
3383
|
+
"docs": [
|
|
3384
|
+
"Whether token delegation was set up (approve CPI)"
|
|
3385
|
+
];
|
|
3386
|
+
"type": "bool";
|
|
3387
|
+
},
|
|
3388
|
+
{
|
|
3389
|
+
"name": "delegationTokenAccount";
|
|
3390
|
+
"docs": [
|
|
3391
|
+
"The vault's token account that was delegated to the agent",
|
|
3392
|
+
"(only meaningful when delegated == true)"
|
|
3393
|
+
];
|
|
3394
|
+
"type": "pubkey";
|
|
3395
|
+
},
|
|
2322
3396
|
{
|
|
2323
3397
|
"name": "bump";
|
|
2324
3398
|
"docs": [
|
|
@@ -2330,7 +3404,7 @@ export type AgentShield = {
|
|
|
2330
3404
|
};
|
|
2331
3405
|
},
|
|
2332
3406
|
{
|
|
2333
|
-
"name": "
|
|
3407
|
+
"name": "sessionFinalized";
|
|
2334
3408
|
"type": {
|
|
2335
3409
|
"kind": "struct";
|
|
2336
3410
|
"fields": [
|
|
@@ -2354,16 +3428,29 @@ export type AgentShield = {
|
|
|
2354
3428
|
};
|
|
2355
3429
|
},
|
|
2356
3430
|
{
|
|
2357
|
-
"name": "
|
|
3431
|
+
"name": "spendEntry";
|
|
2358
3432
|
"type": {
|
|
2359
3433
|
"kind": "struct";
|
|
2360
3434
|
"fields": [
|
|
2361
3435
|
{
|
|
2362
3436
|
"name": "tokenMint";
|
|
3437
|
+
"docs": [
|
|
3438
|
+
"Token mint for audit trail"
|
|
3439
|
+
];
|
|
2363
3440
|
"type": "pubkey";
|
|
2364
3441
|
},
|
|
2365
3442
|
{
|
|
2366
|
-
"name": "
|
|
3443
|
+
"name": "usdAmount";
|
|
3444
|
+
"docs": [
|
|
3445
|
+
"USD value of this spend (6 decimals, e.g., $500 = 500_000_000)"
|
|
3446
|
+
];
|
|
3447
|
+
"type": "u64";
|
|
3448
|
+
},
|
|
3449
|
+
{
|
|
3450
|
+
"name": "baseAmount";
|
|
3451
|
+
"docs": [
|
|
3452
|
+
"Original amount in token base units (for per-token cap checks)"
|
|
3453
|
+
];
|
|
2367
3454
|
"type": "u64";
|
|
2368
3455
|
},
|
|
2369
3456
|
{
|
|
@@ -2374,7 +3461,7 @@ export type AgentShield = {
|
|
|
2374
3461
|
};
|
|
2375
3462
|
},
|
|
2376
3463
|
{
|
|
2377
|
-
"name": "
|
|
3464
|
+
"name": "spendTracker";
|
|
2378
3465
|
"type": {
|
|
2379
3466
|
"kind": "struct";
|
|
2380
3467
|
"fields": [
|
|
@@ -2388,13 +3475,13 @@ export type AgentShield = {
|
|
|
2388
3475
|
{
|
|
2389
3476
|
"name": "rollingSpends";
|
|
2390
3477
|
"docs": [
|
|
2391
|
-
"Rolling spend entries: (token_mint,
|
|
3478
|
+
"Rolling spend entries: (token_mint, usd_amount, base_amount, timestamp)",
|
|
2392
3479
|
"Entries older than ROLLING_WINDOW_SECONDS are pruned on each access"
|
|
2393
3480
|
];
|
|
2394
3481
|
"type": {
|
|
2395
3482
|
"vec": {
|
|
2396
3483
|
"defined": {
|
|
2397
|
-
"name": "
|
|
3484
|
+
"name": "spendEntry";
|
|
2398
3485
|
};
|
|
2399
3486
|
};
|
|
2400
3487
|
};
|
|
@@ -2408,7 +3495,7 @@ export type AgentShield = {
|
|
|
2408
3495
|
"type": {
|
|
2409
3496
|
"vec": {
|
|
2410
3497
|
"defined": {
|
|
2411
|
-
"name": "
|
|
3498
|
+
"name": "transactionRecord";
|
|
2412
3499
|
};
|
|
2413
3500
|
};
|
|
2414
3501
|
};
|
|
@@ -2424,7 +3511,7 @@ export type AgentShield = {
|
|
|
2424
3511
|
};
|
|
2425
3512
|
},
|
|
2426
3513
|
{
|
|
2427
|
-
"name": "
|
|
3514
|
+
"name": "transactionRecord";
|
|
2428
3515
|
"type": {
|
|
2429
3516
|
"kind": "struct";
|
|
2430
3517
|
"fields": [
|
|
@@ -2436,7 +3523,7 @@ export type AgentShield = {
|
|
|
2436
3523
|
"name": "actionType";
|
|
2437
3524
|
"type": {
|
|
2438
3525
|
"defined": {
|
|
2439
|
-
"name": "
|
|
3526
|
+
"name": "actionType";
|
|
2440
3527
|
};
|
|
2441
3528
|
};
|
|
2442
3529
|
},
|
|
@@ -2464,7 +3551,7 @@ export type AgentShield = {
|
|
|
2464
3551
|
};
|
|
2465
3552
|
},
|
|
2466
3553
|
{
|
|
2467
|
-
"name": "
|
|
3554
|
+
"name": "vaultClosed";
|
|
2468
3555
|
"type": {
|
|
2469
3556
|
"kind": "struct";
|
|
2470
3557
|
"fields": [
|
|
@@ -2484,7 +3571,7 @@ export type AgentShield = {
|
|
|
2484
3571
|
};
|
|
2485
3572
|
},
|
|
2486
3573
|
{
|
|
2487
|
-
"name": "
|
|
3574
|
+
"name": "vaultCreated";
|
|
2488
3575
|
"type": {
|
|
2489
3576
|
"kind": "struct";
|
|
2490
3577
|
"fields": [
|
|
@@ -2508,7 +3595,7 @@ export type AgentShield = {
|
|
|
2508
3595
|
};
|
|
2509
3596
|
},
|
|
2510
3597
|
{
|
|
2511
|
-
"name": "
|
|
3598
|
+
"name": "vaultReactivated";
|
|
2512
3599
|
"type": {
|
|
2513
3600
|
"kind": "struct";
|
|
2514
3601
|
"fields": [
|
|
@@ -2530,7 +3617,7 @@ export type AgentShield = {
|
|
|
2530
3617
|
};
|
|
2531
3618
|
},
|
|
2532
3619
|
{
|
|
2533
|
-
"name": "
|
|
3620
|
+
"name": "vaultStatus";
|
|
2534
3621
|
"docs": [
|
|
2535
3622
|
"Vault status enum"
|
|
2536
3623
|
];
|
|
@@ -2538,13 +3625,13 @@ export type AgentShield = {
|
|
|
2538
3625
|
"kind": "enum";
|
|
2539
3626
|
"variants": [
|
|
2540
3627
|
{
|
|
2541
|
-
"name": "
|
|
3628
|
+
"name": "active";
|
|
2542
3629
|
},
|
|
2543
3630
|
{
|
|
2544
|
-
"name": "
|
|
3631
|
+
"name": "frozen";
|
|
2545
3632
|
},
|
|
2546
3633
|
{
|
|
2547
|
-
"name": "
|
|
3634
|
+
"name": "closed";
|
|
2548
3635
|
}
|
|
2549
3636
|
];
|
|
2550
3637
|
};
|