@glamsystems/glam-sdk 1.0.12 → 1.0.13-test

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 (110) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1 -1
  3. package/index.cjs.js +1 -57320
  4. package/index.esm.js +1 -57081
  5. package/package.json +26 -15
  6. package/src/assets.d.ts +10 -17
  7. package/src/client/access.d.ts +13 -0
  8. package/src/client/base.d.ts +30 -7
  9. package/src/client/bridge.d.ts +183 -0
  10. package/src/client/bridgeRegistry.d.ts +32 -0
  11. package/src/client/epi.d.ts +78 -0
  12. package/src/client/fees.d.ts +4 -0
  13. package/src/client/invest.d.ts +1 -1
  14. package/src/client/jupiter.d.ts +27 -20
  15. package/src/client/loopscale.d.ts +84 -0
  16. package/src/client/mint.d.ts +54 -1
  17. package/src/client/price.d.ts +26 -39
  18. package/src/client.d.ts +9 -5
  19. package/src/constants.d.ts +11 -7
  20. package/src/deser/index.d.ts +1 -1
  21. package/src/deser/integrationPolicies.d.ts +30 -20
  22. package/src/deser/tokenAclLayouts.d.ts +67 -0
  23. package/src/error.d.ts +2 -1
  24. package/src/glamExports.d.ts +1351 -1546
  25. package/src/globalConfig.d.ts +27 -0
  26. package/src/index.d.ts +5 -1
  27. package/src/models/state.d.ts +2 -0
  28. package/src/utils/accounts.d.ts +9 -1
  29. package/src/utils/bitmask.d.ts +3 -0
  30. package/src/utils/common.d.ts +2 -0
  31. package/src/utils/glamPDAs.d.ts +6 -0
  32. package/src/utils/index.d.ts +0 -1
  33. package/src/utils/pkmap.d.ts +23 -18
  34. package/src/utils/positionCategorizer.d.ts +3 -21
  35. package/target/idl/ext_bridge-staging.json +2379 -0
  36. package/target/idl/ext_bridge.json +2379 -0
  37. package/target/idl/ext_cctp.json +1 -1
  38. package/target/idl/ext_drift.json +1613 -142
  39. package/target/idl/ext_epi-staging.json +2169 -0
  40. package/target/idl/ext_epi.json +2169 -0
  41. package/target/idl/ext_kamino-staging.json +1 -1
  42. package/target/idl/ext_kamino.json +109 -1
  43. package/target/idl/{ext_drift-staging.json → ext_loopscale-staging.json} +986 -1438
  44. package/target/idl/ext_loopscale.json +3541 -0
  45. package/target/idl/ext_marinade-staging.json +1587 -0
  46. package/target/idl/ext_spl-staging.json +1 -1
  47. package/target/idl/ext_spl.json +1 -1
  48. package/target/idl/glam_config.json +78 -9
  49. package/target/idl/glam_mint-staging.json +3002 -1244
  50. package/target/idl/glam_mint.json +239 -8
  51. package/target/idl/glam_policies.json +2 -7
  52. package/target/idl/glam_protocol-staging.json +187 -266
  53. package/target/idl/glam_protocol.json +217 -114
  54. package/target/idl/mock_layerzero_endpoint.json +144 -0
  55. package/target/idl/mock_layerzero_oft.json +155 -0
  56. package/target/types/ext_bridge-staging.d.ts +2385 -0
  57. package/target/types/ext_bridge-staging.ts +2385 -0
  58. package/target/types/ext_bridge.d.ts +2385 -0
  59. package/target/types/ext_bridge.ts +2385 -0
  60. package/target/types/ext_cctp.d.ts +1 -1
  61. package/target/types/ext_cctp.ts +1 -1
  62. package/target/types/ext_drift.d.ts +1609 -138
  63. package/target/types/ext_drift.ts +1613 -142
  64. package/target/types/ext_epi-staging.d.ts +2175 -0
  65. package/target/types/ext_epi-staging.ts +2175 -0
  66. package/target/types/ext_epi.d.ts +2175 -0
  67. package/target/types/ext_epi.ts +2175 -0
  68. package/target/types/ext_kamino-staging.d.ts +3433 -0
  69. package/target/types/ext_kamino-staging.ts +1 -1
  70. package/target/types/ext_kamino.d.ts +109 -1
  71. package/target/types/ext_kamino.ts +109 -1
  72. package/target/types/ext_loopscale-staging.d.ts +3547 -0
  73. package/target/types/{ext_drift-staging.ts → ext_loopscale-staging.ts} +988 -1440
  74. package/target/types/ext_loopscale.d.ts +3547 -0
  75. package/target/types/ext_loopscale.ts +3547 -0
  76. package/target/types/ext_marinade-staging.d.ts +1593 -0
  77. package/target/types/ext_marinade-staging.ts +1593 -0
  78. package/target/types/{ext_offchain.d.ts → ext_spl-staging.d.ts} +219 -19
  79. package/target/types/ext_spl-staging.ts +1 -1
  80. package/target/types/ext_spl.d.ts +1 -1
  81. package/target/types/ext_spl.ts +1 -1
  82. package/target/types/ext_stake_pool-staging.d.ts +1622 -0
  83. package/target/types/glam_config.d.ts +78 -9
  84. package/target/types/glam_config.ts +78 -9
  85. package/target/types/glam_mint-staging.d.ts +7856 -0
  86. package/target/types/glam_mint-staging.ts +3002 -1244
  87. package/target/types/glam_mint.d.ts +239 -8
  88. package/target/types/glam_mint.ts +239 -8
  89. package/target/types/glam_policies.d.ts +477 -0
  90. package/target/types/glam_policies.ts +2 -7
  91. package/target/types/glam_protocol-staging.d.ts +3292 -0
  92. package/target/types/glam_protocol-staging.ts +187 -266
  93. package/target/types/glam_protocol.d.ts +217 -114
  94. package/target/types/glam_protocol.ts +217 -114
  95. package/target/types/mock_layerzero_endpoint.d.ts +150 -0
  96. package/target/types/mock_layerzero_endpoint.ts +150 -0
  97. package/target/types/mock_layerzero_oft.d.ts +161 -0
  98. package/target/types/mock_layerzero_oft.ts +161 -0
  99. package/src/client/drift/index.d.ts +0 -2
  100. package/src/client/drift/protocol-v2.d.ts +0 -93
  101. package/src/client/drift/vaults.d.ts +0 -60
  102. package/src/deser/driftLayouts.d.ts +0 -217
  103. package/src/react/cluster-provider.d.ts +0 -22
  104. package/src/react/glam.d.ts +0 -51
  105. package/src/react/index.d.ts +0 -5
  106. package/src/react/query-keys.d.ts +0 -40
  107. package/src/react/useVaultBalanceSubscription.d.ts +0 -17
  108. package/src/utils/drift/index.d.ts +0 -2
  109. package/src/utils/drift/orderParams.d.ts +0 -28
  110. package/src/utils/drift/types.d.ts +0 -522
@@ -0,0 +1,2175 @@
1
+ /**
2
+ * Program IDL in camelCase format in order to be used in JS/TS.
3
+ *
4
+ * Note that this is only a type helper and is not the actual IDL. The original
5
+ * IDL can be found at `target/idl/ext_epi.json`.
6
+ */
7
+ export type ExtEpi = {
8
+ "address": "gstge5RzNEGQwpwBPKTJbP9yczoFEzzm5upSSsie9fX";
9
+ "metadata": {
10
+ "name": "extEpi";
11
+ "version": "1.0.0";
12
+ "spec": "0.1.0";
13
+ "description": "External Position Integration for GLAM Protocol";
14
+ };
15
+ "instructions": [
16
+ {
17
+ "name": "refreshPricedProtocol";
18
+ "docs": [
19
+ "Republish the aggregate EPI priced protocol from already validated",
20
+ "observations at the current slot."
21
+ ];
22
+ "discriminator": [
23
+ 229,
24
+ 89,
25
+ 39,
26
+ 46,
27
+ 5,
28
+ 217,
29
+ 10,
30
+ 192
31
+ ];
32
+ "accounts": [
33
+ {
34
+ "name": "glamState";
35
+ "writable": true;
36
+ },
37
+ {
38
+ "name": "glamSigner";
39
+ "signer": true;
40
+ },
41
+ {
42
+ "name": "observationState";
43
+ "pda": {
44
+ "seeds": [
45
+ {
46
+ "kind": "const";
47
+ "value": [
48
+ 111,
49
+ 98,
50
+ 115,
51
+ 101,
52
+ 114,
53
+ 118,
54
+ 97,
55
+ 116,
56
+ 105,
57
+ 111,
58
+ 110,
59
+ 45,
60
+ 115,
61
+ 116,
62
+ 97,
63
+ 116,
64
+ 101
65
+ ];
66
+ },
67
+ {
68
+ "kind": "account";
69
+ "path": "glamState";
70
+ }
71
+ ];
72
+ };
73
+ },
74
+ {
75
+ "name": "integrationAuthority";
76
+ "pda": {
77
+ "seeds": [
78
+ {
79
+ "kind": "const";
80
+ "value": [
81
+ 105,
82
+ 110,
83
+ 116,
84
+ 101,
85
+ 103,
86
+ 114,
87
+ 97,
88
+ 116,
89
+ 105,
90
+ 111,
91
+ 110,
92
+ 45,
93
+ 97,
94
+ 117,
95
+ 116,
96
+ 104,
97
+ 111,
98
+ 114,
99
+ 105,
100
+ 116,
101
+ 121
102
+ ];
103
+ }
104
+ ];
105
+ };
106
+ },
107
+ {
108
+ "name": "glamProtocolProgram";
109
+ "address": "gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz";
110
+ }
111
+ ];
112
+ "args": [];
113
+ },
114
+ {
115
+ "name": "removeExternalPosition";
116
+ "docs": [
117
+ "Remove an external position from the registry.",
118
+ "Closes the observation state PDA and refunds rent to the signer."
119
+ ];
120
+ "discriminator": [
121
+ 97,
122
+ 146,
123
+ 246,
124
+ 241,
125
+ 130,
126
+ 26,
127
+ 108,
128
+ 97
129
+ ];
130
+ "accounts": [
131
+ {
132
+ "name": "glamState";
133
+ "writable": true;
134
+ },
135
+ {
136
+ "name": "glamSigner";
137
+ "writable": true;
138
+ "signer": true;
139
+ },
140
+ {
141
+ "name": "glamVault";
142
+ "writable": true;
143
+ "pda": {
144
+ "seeds": [
145
+ {
146
+ "kind": "const";
147
+ "value": [
148
+ 118,
149
+ 97,
150
+ 117,
151
+ 108,
152
+ 116
153
+ ];
154
+ },
155
+ {
156
+ "kind": "account";
157
+ "path": "glamState";
158
+ }
159
+ ];
160
+ "program": {
161
+ "kind": "account";
162
+ "path": "glamProtocolProgram";
163
+ };
164
+ };
165
+ },
166
+ {
167
+ "name": "observationState";
168
+ "writable": true;
169
+ "pda": {
170
+ "seeds": [
171
+ {
172
+ "kind": "const";
173
+ "value": [
174
+ 111,
175
+ 98,
176
+ 115,
177
+ 101,
178
+ 114,
179
+ 118,
180
+ 97,
181
+ 116,
182
+ 105,
183
+ 111,
184
+ 110,
185
+ 45,
186
+ 115,
187
+ 116,
188
+ 97,
189
+ 116,
190
+ 101
191
+ ];
192
+ },
193
+ {
194
+ "kind": "account";
195
+ "path": "glamState";
196
+ }
197
+ ];
198
+ };
199
+ },
200
+ {
201
+ "name": "integrationAuthority";
202
+ "pda": {
203
+ "seeds": [
204
+ {
205
+ "kind": "const";
206
+ "value": [
207
+ 105,
208
+ 110,
209
+ 116,
210
+ 101,
211
+ 103,
212
+ 114,
213
+ 97,
214
+ 116,
215
+ 105,
216
+ 111,
217
+ 110,
218
+ 45,
219
+ 97,
220
+ 117,
221
+ 116,
222
+ 104,
223
+ 111,
224
+ 114,
225
+ 105,
226
+ 116,
227
+ 121
228
+ ];
229
+ }
230
+ ];
231
+ };
232
+ },
233
+ {
234
+ "name": "glamProtocolProgram";
235
+ "address": "gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz";
236
+ },
237
+ {
238
+ "name": "systemProgram";
239
+ "address": "11111111111111111111111111111111";
240
+ }
241
+ ];
242
+ "args": [
243
+ {
244
+ "name": "positionId";
245
+ "type": {
246
+ "array": [
247
+ "u8",
248
+ 32
249
+ ];
250
+ };
251
+ }
252
+ ];
253
+ },
254
+ {
255
+ "name": "submitExternalObservation";
256
+ "docs": [
257
+ "Submit an observation for a configured external position.",
258
+ "Writes to pending slot; replaces any existing pending observation."
259
+ ];
260
+ "discriminator": [
261
+ 100,
262
+ 228,
263
+ 147,
264
+ 149,
265
+ 22,
266
+ 28,
267
+ 158,
268
+ 163
269
+ ];
270
+ "accounts": [
271
+ {
272
+ "name": "glamState";
273
+ },
274
+ {
275
+ "name": "glamSigner";
276
+ "signer": true;
277
+ },
278
+ {
279
+ "name": "observationState";
280
+ "writable": true;
281
+ "pda": {
282
+ "seeds": [
283
+ {
284
+ "kind": "const";
285
+ "value": [
286
+ 111,
287
+ 98,
288
+ 115,
289
+ 101,
290
+ 114,
291
+ 118,
292
+ 97,
293
+ 116,
294
+ 105,
295
+ 111,
296
+ 110,
297
+ 45,
298
+ 115,
299
+ 116,
300
+ 97,
301
+ 116,
302
+ 101
303
+ ];
304
+ },
305
+ {
306
+ "kind": "account";
307
+ "path": "glamState";
308
+ }
309
+ ];
310
+ };
311
+ }
312
+ ];
313
+ "args": [
314
+ {
315
+ "name": "input";
316
+ "type": {
317
+ "defined": {
318
+ "name": "positionObservationInput";
319
+ };
320
+ };
321
+ }
322
+ ];
323
+ },
324
+ {
325
+ "name": "upsertExternalPosition";
326
+ "docs": [
327
+ "Create or update an external position configuration.",
328
+ "Creates the observation state PDA on first call for a position."
329
+ ];
330
+ "discriminator": [
331
+ 199,
332
+ 33,
333
+ 239,
334
+ 150,
335
+ 200,
336
+ 123,
337
+ 43,
338
+ 70
339
+ ];
340
+ "accounts": [
341
+ {
342
+ "name": "glamState";
343
+ "writable": true;
344
+ },
345
+ {
346
+ "name": "glamSigner";
347
+ "writable": true;
348
+ "signer": true;
349
+ },
350
+ {
351
+ "name": "glamVault";
352
+ "writable": true;
353
+ "pda": {
354
+ "seeds": [
355
+ {
356
+ "kind": "const";
357
+ "value": [
358
+ 118,
359
+ 97,
360
+ 117,
361
+ 108,
362
+ 116
363
+ ];
364
+ },
365
+ {
366
+ "kind": "account";
367
+ "path": "glamState";
368
+ }
369
+ ];
370
+ "program": {
371
+ "kind": "account";
372
+ "path": "glamProtocolProgram";
373
+ };
374
+ };
375
+ },
376
+ {
377
+ "name": "observationState";
378
+ "writable": true;
379
+ "pda": {
380
+ "seeds": [
381
+ {
382
+ "kind": "const";
383
+ "value": [
384
+ 111,
385
+ 98,
386
+ 115,
387
+ 101,
388
+ 114,
389
+ 118,
390
+ 97,
391
+ 116,
392
+ 105,
393
+ 111,
394
+ 110,
395
+ 45,
396
+ 115,
397
+ 116,
398
+ 97,
399
+ 116,
400
+ 101
401
+ ];
402
+ },
403
+ {
404
+ "kind": "account";
405
+ "path": "glamState";
406
+ }
407
+ ];
408
+ };
409
+ },
410
+ {
411
+ "name": "integrationAuthority";
412
+ "pda": {
413
+ "seeds": [
414
+ {
415
+ "kind": "const";
416
+ "value": [
417
+ 105,
418
+ 110,
419
+ 116,
420
+ 101,
421
+ 103,
422
+ 114,
423
+ 97,
424
+ 116,
425
+ 105,
426
+ 111,
427
+ 110,
428
+ 45,
429
+ 97,
430
+ 117,
431
+ 116,
432
+ 104,
433
+ 111,
434
+ 114,
435
+ 105,
436
+ 116,
437
+ 121
438
+ ];
439
+ }
440
+ ];
441
+ };
442
+ },
443
+ {
444
+ "name": "glamProtocolProgram";
445
+ "address": "gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz";
446
+ },
447
+ {
448
+ "name": "systemProgram";
449
+ "address": "11111111111111111111111111111111";
450
+ }
451
+ ];
452
+ "args": [
453
+ {
454
+ "name": "config";
455
+ "type": {
456
+ "defined": {
457
+ "name": "externalPositionConfig";
458
+ };
459
+ };
460
+ }
461
+ ];
462
+ },
463
+ {
464
+ "name": "validateExternalObservation";
465
+ "docs": [
466
+ "Validate a pending observation, promote to active, and publish",
467
+ "the full aggregate priced protocol for ext_epi.",
468
+ "",
469
+ "All position observations are stored in the single observation state PDA,",
470
+ "so no remaining_accounts are needed."
471
+ ];
472
+ "discriminator": [
473
+ 88,
474
+ 144,
475
+ 219,
476
+ 126,
477
+ 79,
478
+ 29,
479
+ 43,
480
+ 188
481
+ ];
482
+ "accounts": [
483
+ {
484
+ "name": "glamState";
485
+ "writable": true;
486
+ },
487
+ {
488
+ "name": "glamSigner";
489
+ "signer": true;
490
+ },
491
+ {
492
+ "name": "observationState";
493
+ "writable": true;
494
+ "pda": {
495
+ "seeds": [
496
+ {
497
+ "kind": "const";
498
+ "value": [
499
+ 111,
500
+ 98,
501
+ 115,
502
+ 101,
503
+ 114,
504
+ 118,
505
+ 97,
506
+ 116,
507
+ 105,
508
+ 111,
509
+ 110,
510
+ 45,
511
+ 115,
512
+ 116,
513
+ 97,
514
+ 116,
515
+ 101
516
+ ];
517
+ },
518
+ {
519
+ "kind": "account";
520
+ "path": "glamState";
521
+ }
522
+ ];
523
+ };
524
+ },
525
+ {
526
+ "name": "integrationAuthority";
527
+ "pda": {
528
+ "seeds": [
529
+ {
530
+ "kind": "const";
531
+ "value": [
532
+ 105,
533
+ 110,
534
+ 116,
535
+ 101,
536
+ 103,
537
+ 114,
538
+ 97,
539
+ 116,
540
+ 105,
541
+ 111,
542
+ 110,
543
+ 45,
544
+ 97,
545
+ 117,
546
+ 116,
547
+ 104,
548
+ 111,
549
+ 114,
550
+ 105,
551
+ 116,
552
+ 121
553
+ ];
554
+ }
555
+ ];
556
+ };
557
+ },
558
+ {
559
+ "name": "glamProtocolProgram";
560
+ "address": "gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz";
561
+ }
562
+ ];
563
+ "args": [
564
+ {
565
+ "name": "positionId";
566
+ "type": {
567
+ "array": [
568
+ "u8",
569
+ 32
570
+ ];
571
+ };
572
+ },
573
+ {
574
+ "name": "normalizedBaseAssetAmount";
575
+ "type": {
576
+ "option": "i128";
577
+ };
578
+ }
579
+ ];
580
+ }
581
+ ];
582
+ "accounts": [
583
+ {
584
+ "name": "observationState";
585
+ "discriminator": [
586
+ 122,
587
+ 174,
588
+ 197,
589
+ 53,
590
+ 129,
591
+ 9,
592
+ 165,
593
+ 132
594
+ ];
595
+ },
596
+ {
597
+ "name": "stateAccount";
598
+ "discriminator": [
599
+ 142,
600
+ 247,
601
+ 54,
602
+ 95,
603
+ 85,
604
+ 133,
605
+ 249,
606
+ 103
607
+ ];
608
+ }
609
+ ];
610
+ "types": [
611
+ {
612
+ "name": "accountType";
613
+ "type": {
614
+ "kind": "enum";
615
+ "variants": [
616
+ {
617
+ "name": "vault";
618
+ },
619
+ {
620
+ "name": "tokenizedVault";
621
+ },
622
+ {
623
+ "name": "mint";
624
+ },
625
+ {
626
+ "name": "singleAssetVault";
627
+ }
628
+ ];
629
+ };
630
+ },
631
+ {
632
+ "name": "accruedFees";
633
+ "type": {
634
+ "kind": "struct";
635
+ "fields": [
636
+ {
637
+ "name": "vaultSubscriptionFee";
638
+ "type": "u128";
639
+ },
640
+ {
641
+ "name": "vaultRedemptionFee";
642
+ "type": "u128";
643
+ },
644
+ {
645
+ "name": "managerSubscriptionFee";
646
+ "type": "u128";
647
+ },
648
+ {
649
+ "name": "managerRedemptionFee";
650
+ "type": "u128";
651
+ },
652
+ {
653
+ "name": "managementFee";
654
+ "type": "u128";
655
+ },
656
+ {
657
+ "name": "performanceFee";
658
+ "type": "u128";
659
+ },
660
+ {
661
+ "name": "protocolBaseFee";
662
+ "type": "u128";
663
+ },
664
+ {
665
+ "name": "protocolFlowFee";
666
+ "type": "u128";
667
+ }
668
+ ];
669
+ };
670
+ },
671
+ {
672
+ "name": "createdModel";
673
+ "type": {
674
+ "kind": "struct";
675
+ "fields": [
676
+ {
677
+ "name": "key";
678
+ "type": {
679
+ "array": [
680
+ "u8",
681
+ 8
682
+ ];
683
+ };
684
+ },
685
+ {
686
+ "name": "createdBy";
687
+ "type": "pubkey";
688
+ },
689
+ {
690
+ "name": "createdAt";
691
+ "type": "i64";
692
+ }
693
+ ];
694
+ };
695
+ },
696
+ {
697
+ "name": "delegateAcl";
698
+ "type": {
699
+ "kind": "struct";
700
+ "fields": [
701
+ {
702
+ "name": "pubkey";
703
+ "type": "pubkey";
704
+ },
705
+ {
706
+ "name": "integrationPermissions";
707
+ "type": {
708
+ "vec": {
709
+ "defined": {
710
+ "name": "integrationPermissions";
711
+ };
712
+ };
713
+ };
714
+ },
715
+ {
716
+ "name": "expiresAt";
717
+ "type": "i64";
718
+ }
719
+ ];
720
+ };
721
+ },
722
+ {
723
+ "name": "denomination";
724
+ "docs": [
725
+ "Denomination of an observation amount.",
726
+ "Never reorder existing variants — append only."
727
+ ];
728
+ "repr": {
729
+ "kind": "rust";
730
+ };
731
+ "type": {
732
+ "kind": "enum";
733
+ "variants": [
734
+ {
735
+ "name": "usd";
736
+ },
737
+ {
738
+ "name": "mint";
739
+ }
740
+ ];
741
+ };
742
+ },
743
+ {
744
+ "name": "denominationSpec";
745
+ "docs": [
746
+ "Full denomination spec: the discriminant plus an optional mint pubkey."
747
+ ];
748
+ "type": {
749
+ "kind": "struct";
750
+ "fields": [
751
+ {
752
+ "name": "denom";
753
+ "type": {
754
+ "defined": {
755
+ "name": "denomination";
756
+ };
757
+ };
758
+ },
759
+ {
760
+ "name": "mint";
761
+ "docs": [
762
+ "Only meaningful when `denom == Denomination::Mint`.",
763
+ "Set to `Pubkey::default()` for `Usd`."
764
+ ];
765
+ "type": "pubkey";
766
+ }
767
+ ];
768
+ };
769
+ },
770
+ {
771
+ "name": "engineField";
772
+ "type": {
773
+ "kind": "struct";
774
+ "fields": [
775
+ {
776
+ "name": "name";
777
+ "type": {
778
+ "defined": {
779
+ "name": "engineFieldName";
780
+ };
781
+ };
782
+ },
783
+ {
784
+ "name": "value";
785
+ "type": {
786
+ "defined": {
787
+ "name": "engineFieldValue";
788
+ };
789
+ };
790
+ }
791
+ ];
792
+ };
793
+ },
794
+ {
795
+ "name": "engineFieldName";
796
+ "type": {
797
+ "kind": "enum";
798
+ "variants": [
799
+ {
800
+ "name": "owner";
801
+ },
802
+ {
803
+ "name": "portfolioManagerName";
804
+ },
805
+ {
806
+ "name": "name";
807
+ },
808
+ {
809
+ "name": "uri";
810
+ },
811
+ {
812
+ "name": "assets";
813
+ },
814
+ {
815
+ "name": "delegateAcls";
816
+ },
817
+ {
818
+ "name": "integrationAcls";
819
+ },
820
+ {
821
+ "name": "timelockDuration";
822
+ },
823
+ {
824
+ "name": "borrowable";
825
+ },
826
+ {
827
+ "name": "defaultAccountStateFrozen";
828
+ },
829
+ {
830
+ "name": "permanentDelegate";
831
+ },
832
+ {
833
+ "name": "notifyAndSettle";
834
+ },
835
+ {
836
+ "name": "feeStructure";
837
+ },
838
+ {
839
+ "name": "feeParams";
840
+ },
841
+ {
842
+ "name": "claimableFees";
843
+ },
844
+ {
845
+ "name": "claimedFees";
846
+ },
847
+ {
848
+ "name": "oracleConfigs";
849
+ }
850
+ ];
851
+ };
852
+ },
853
+ {
854
+ "name": "engineFieldValue";
855
+ "type": {
856
+ "kind": "enum";
857
+ "variants": [
858
+ {
859
+ "name": "boolean";
860
+ "fields": [
861
+ {
862
+ "name": "val";
863
+ "type": "bool";
864
+ }
865
+ ];
866
+ },
867
+ {
868
+ "name": "u8";
869
+ "fields": [
870
+ {
871
+ "name": "val";
872
+ "type": "u8";
873
+ }
874
+ ];
875
+ },
876
+ {
877
+ "name": "u32";
878
+ "fields": [
879
+ {
880
+ "name": "val";
881
+ "type": "u32";
882
+ }
883
+ ];
884
+ },
885
+ {
886
+ "name": "u64";
887
+ "fields": [
888
+ {
889
+ "name": "val";
890
+ "type": "u64";
891
+ }
892
+ ];
893
+ },
894
+ {
895
+ "name": "string";
896
+ "fields": [
897
+ {
898
+ "name": "val";
899
+ "type": "string";
900
+ }
901
+ ];
902
+ },
903
+ {
904
+ "name": "pubkey";
905
+ "fields": [
906
+ {
907
+ "name": "val";
908
+ "type": "pubkey";
909
+ }
910
+ ];
911
+ },
912
+ {
913
+ "name": "vecPubkey";
914
+ "fields": [
915
+ {
916
+ "name": "val";
917
+ "type": {
918
+ "vec": "pubkey";
919
+ };
920
+ }
921
+ ];
922
+ },
923
+ {
924
+ "name": "vecU8";
925
+ "fields": [
926
+ {
927
+ "name": "val";
928
+ "type": "bytes";
929
+ }
930
+ ];
931
+ },
932
+ {
933
+ "name": "vecU32";
934
+ "fields": [
935
+ {
936
+ "name": "val";
937
+ "type": {
938
+ "vec": "u32";
939
+ };
940
+ }
941
+ ];
942
+ },
943
+ {
944
+ "name": "vecDelegateAcl";
945
+ "fields": [
946
+ {
947
+ "name": "val";
948
+ "type": {
949
+ "vec": {
950
+ "defined": {
951
+ "name": "delegateAcl";
952
+ };
953
+ };
954
+ };
955
+ }
956
+ ];
957
+ },
958
+ {
959
+ "name": "vecIntegrationAcl";
960
+ "fields": [
961
+ {
962
+ "name": "val";
963
+ "type": {
964
+ "vec": {
965
+ "defined": {
966
+ "name": "integrationAcl";
967
+ };
968
+ };
969
+ };
970
+ }
971
+ ];
972
+ },
973
+ {
974
+ "name": "feeStructure";
975
+ "fields": [
976
+ {
977
+ "name": "val";
978
+ "type": {
979
+ "defined": {
980
+ "name": "feeStructure";
981
+ };
982
+ };
983
+ }
984
+ ];
985
+ },
986
+ {
987
+ "name": "feeParams";
988
+ "fields": [
989
+ {
990
+ "name": "val";
991
+ "type": {
992
+ "defined": {
993
+ "name": "feeParams";
994
+ };
995
+ };
996
+ }
997
+ ];
998
+ },
999
+ {
1000
+ "name": "accruedFees";
1001
+ "fields": [
1002
+ {
1003
+ "name": "val";
1004
+ "type": {
1005
+ "defined": {
1006
+ "name": "accruedFees";
1007
+ };
1008
+ };
1009
+ }
1010
+ ];
1011
+ },
1012
+ {
1013
+ "name": "notifyAndSettle";
1014
+ "fields": [
1015
+ {
1016
+ "name": "val";
1017
+ "type": {
1018
+ "defined": {
1019
+ "name": "notifyAndSettle";
1020
+ };
1021
+ };
1022
+ }
1023
+ ];
1024
+ },
1025
+ {
1026
+ "name": "oracleConfigs";
1027
+ "fields": [
1028
+ {
1029
+ "name": "val";
1030
+ "type": {
1031
+ "defined": {
1032
+ "name": "oracleConfigs";
1033
+ };
1034
+ };
1035
+ }
1036
+ ];
1037
+ }
1038
+ ];
1039
+ };
1040
+ },
1041
+ {
1042
+ "name": "entryExitFees";
1043
+ "type": {
1044
+ "kind": "struct";
1045
+ "fields": [
1046
+ {
1047
+ "name": "subscriptionFeeBps";
1048
+ "type": "u16";
1049
+ },
1050
+ {
1051
+ "name": "redemptionFeeBps";
1052
+ "type": "u16";
1053
+ }
1054
+ ];
1055
+ };
1056
+ },
1057
+ {
1058
+ "name": "externalPositionConfig";
1059
+ "docs": [
1060
+ "Per-position configuration entry in the registry."
1061
+ ];
1062
+ "type": {
1063
+ "kind": "struct";
1064
+ "fields": [
1065
+ {
1066
+ "name": "positionId";
1067
+ "docs": [
1068
+ "Unique identifier for this position within the vault.",
1069
+ "",
1070
+ "Under the cleaner pricing model, this 32-byte id is also the canonical",
1071
+ "coverage key published into `glam_state.external_positions` and",
1072
+ "`PricedProtocol.positions`. For bridge-managed inflight transfers, this",
1073
+ "should be the transfer-record pubkey bytes."
1074
+ ];
1075
+ "type": {
1076
+ "array": [
1077
+ "u8",
1078
+ 32
1079
+ ];
1080
+ };
1081
+ },
1082
+ {
1083
+ "name": "positionType";
1084
+ "docs": [
1085
+ "Type of position (Valued or Tokenized)."
1086
+ ];
1087
+ "type": {
1088
+ "defined": {
1089
+ "name": "externalPositionType";
1090
+ };
1091
+ };
1092
+ },
1093
+ {
1094
+ "name": "sourceType";
1095
+ "docs": [
1096
+ "Source type (Trusted or Native)."
1097
+ ];
1098
+ "type": {
1099
+ "defined": {
1100
+ "name": "externalSourceType";
1101
+ };
1102
+ };
1103
+ },
1104
+ {
1105
+ "name": "denomination";
1106
+ "docs": [
1107
+ "Denomination rules for Trusted positions.",
1108
+ "For Native positions this is ignored (denomination derived from custody)."
1109
+ ];
1110
+ "type": {
1111
+ "defined": {
1112
+ "name": "denominationSpec";
1113
+ };
1114
+ };
1115
+ },
1116
+ {
1117
+ "name": "nativeCustodyAccount";
1118
+ "docs": [
1119
+ "Custody account for Native positions. `Pubkey::default()` for Trusted."
1120
+ ];
1121
+ "type": "pubkey";
1122
+ },
1123
+ {
1124
+ "name": "nativeCustodyKind";
1125
+ "docs": [
1126
+ "Custody kind for Native positions."
1127
+ ];
1128
+ "type": {
1129
+ "defined": {
1130
+ "name": "nativeCustodyKind";
1131
+ };
1132
+ };
1133
+ },
1134
+ {
1135
+ "name": "enabled";
1136
+ "docs": [
1137
+ "Whether this position is enabled for observations."
1138
+ ];
1139
+ "type": "bool";
1140
+ },
1141
+ {
1142
+ "name": "freshnessOverrideSecs";
1143
+ "docs": [
1144
+ "Freshness override in seconds. 0 means use vault default."
1145
+ ];
1146
+ "type": "u32";
1147
+ },
1148
+ {
1149
+ "name": "submitAllowlist";
1150
+ "docs": [
1151
+ "Per-position submit allowlist. Empty vec = use role-based access only."
1152
+ ];
1153
+ "type": {
1154
+ "vec": "pubkey";
1155
+ };
1156
+ },
1157
+ {
1158
+ "name": "validateAllowlist";
1159
+ "docs": [
1160
+ "Per-position validate allowlist. Empty vec = use role-based access only."
1161
+ ];
1162
+ "type": {
1163
+ "vec": "pubkey";
1164
+ };
1165
+ },
1166
+ {
1167
+ "name": "configureAllowlist";
1168
+ "docs": [
1169
+ "Per-position configure allowlist. Empty vec = use role-based access only.",
1170
+ "This is intentionally more permissive than the protocol-wide asset",
1171
+ "allowlist semantics where an empty allowlist means deny all."
1172
+ ];
1173
+ "type": {
1174
+ "vec": "pubkey";
1175
+ };
1176
+ }
1177
+ ];
1178
+ };
1179
+ },
1180
+ {
1181
+ "name": "externalPositionType";
1182
+ "docs": [
1183
+ "Type of external position.",
1184
+ "Never reorder existing variants — append only."
1185
+ ];
1186
+ "repr": {
1187
+ "kind": "rust";
1188
+ };
1189
+ "type": {
1190
+ "kind": "enum";
1191
+ "variants": [
1192
+ {
1193
+ "name": "valued";
1194
+ },
1195
+ {
1196
+ "name": "tokenized";
1197
+ }
1198
+ ];
1199
+ };
1200
+ },
1201
+ {
1202
+ "name": "externalSourceType";
1203
+ "docs": [
1204
+ "Source of observation data.",
1205
+ "Never reorder existing variants — append only."
1206
+ ];
1207
+ "repr": {
1208
+ "kind": "rust";
1209
+ };
1210
+ "type": {
1211
+ "kind": "enum";
1212
+ "variants": [
1213
+ {
1214
+ "name": "trusted";
1215
+ },
1216
+ {
1217
+ "name": "native";
1218
+ }
1219
+ ];
1220
+ };
1221
+ },
1222
+ {
1223
+ "name": "feeParams";
1224
+ "type": {
1225
+ "kind": "struct";
1226
+ "fields": [
1227
+ {
1228
+ "name": "yearInSeconds";
1229
+ "type": "u32";
1230
+ },
1231
+ {
1232
+ "name": "paHighWaterMark";
1233
+ "type": "i128";
1234
+ },
1235
+ {
1236
+ "name": "paLastNav";
1237
+ "type": "i128";
1238
+ },
1239
+ {
1240
+ "name": "lastAum";
1241
+ "type": "i128";
1242
+ },
1243
+ {
1244
+ "name": "lastPerformanceFeeCrystallized";
1245
+ "type": "i64";
1246
+ },
1247
+ {
1248
+ "name": "lastManagementFeeCrystallized";
1249
+ "type": "i64";
1250
+ },
1251
+ {
1252
+ "name": "lastProtocolFeeCrystallized";
1253
+ "type": "i64";
1254
+ }
1255
+ ];
1256
+ };
1257
+ },
1258
+ {
1259
+ "name": "feeStructure";
1260
+ "type": {
1261
+ "kind": "struct";
1262
+ "fields": [
1263
+ {
1264
+ "name": "vault";
1265
+ "type": {
1266
+ "defined": {
1267
+ "name": "entryExitFees";
1268
+ };
1269
+ };
1270
+ },
1271
+ {
1272
+ "name": "manager";
1273
+ "type": {
1274
+ "defined": {
1275
+ "name": "entryExitFees";
1276
+ };
1277
+ };
1278
+ },
1279
+ {
1280
+ "name": "management";
1281
+ "type": {
1282
+ "defined": {
1283
+ "name": "managementFee";
1284
+ };
1285
+ };
1286
+ },
1287
+ {
1288
+ "name": "performance";
1289
+ "type": {
1290
+ "defined": {
1291
+ "name": "performanceFee";
1292
+ };
1293
+ };
1294
+ },
1295
+ {
1296
+ "name": "protocol";
1297
+ "type": {
1298
+ "defined": {
1299
+ "name": "protocolFees";
1300
+ };
1301
+ };
1302
+ }
1303
+ ];
1304
+ };
1305
+ },
1306
+ {
1307
+ "name": "hurdleType";
1308
+ "type": {
1309
+ "kind": "enum";
1310
+ "variants": [
1311
+ {
1312
+ "name": "hard";
1313
+ },
1314
+ {
1315
+ "name": "soft";
1316
+ }
1317
+ ];
1318
+ };
1319
+ },
1320
+ {
1321
+ "name": "integrationAcl";
1322
+ "docs": [
1323
+ "An integration program can have multiple protocols supported.",
1324
+ "Enabled protocols are stored in a bitmask, and each protocol can have its own policy."
1325
+ ];
1326
+ "type": {
1327
+ "kind": "struct";
1328
+ "fields": [
1329
+ {
1330
+ "name": "integrationProgram";
1331
+ "type": "pubkey";
1332
+ },
1333
+ {
1334
+ "name": "protocolsBitmask";
1335
+ "type": "u16";
1336
+ },
1337
+ {
1338
+ "name": "protocolPolicies";
1339
+ "type": {
1340
+ "vec": {
1341
+ "defined": {
1342
+ "name": "protocolPolicy";
1343
+ };
1344
+ };
1345
+ };
1346
+ }
1347
+ ];
1348
+ };
1349
+ },
1350
+ {
1351
+ "name": "integrationPermissions";
1352
+ "docs": [
1353
+ "Stores delegate permissions for an integration program."
1354
+ ];
1355
+ "type": {
1356
+ "kind": "struct";
1357
+ "fields": [
1358
+ {
1359
+ "name": "integrationProgram";
1360
+ "type": "pubkey";
1361
+ },
1362
+ {
1363
+ "name": "protocolPermissions";
1364
+ "type": {
1365
+ "vec": {
1366
+ "defined": {
1367
+ "name": "protocolPermissions";
1368
+ };
1369
+ };
1370
+ };
1371
+ }
1372
+ ];
1373
+ };
1374
+ },
1375
+ {
1376
+ "name": "managementFee";
1377
+ "type": {
1378
+ "kind": "struct";
1379
+ "fields": [
1380
+ {
1381
+ "name": "feeBps";
1382
+ "type": "u16";
1383
+ }
1384
+ ];
1385
+ };
1386
+ },
1387
+ {
1388
+ "name": "nativeCustodyKind";
1389
+ "docs": [
1390
+ "Custody kind for Native source positions.",
1391
+ "Never reorder existing variants — append only."
1392
+ ];
1393
+ "repr": {
1394
+ "kind": "rust";
1395
+ };
1396
+ "type": {
1397
+ "kind": "enum";
1398
+ "variants": [
1399
+ {
1400
+ "name": "splToken";
1401
+ },
1402
+ {
1403
+ "name": "nativeSol";
1404
+ }
1405
+ ];
1406
+ };
1407
+ },
1408
+ {
1409
+ "name": "noticePeriodType";
1410
+ "type": {
1411
+ "kind": "enum";
1412
+ "variants": [
1413
+ {
1414
+ "name": "hard";
1415
+ },
1416
+ {
1417
+ "name": "soft";
1418
+ }
1419
+ ];
1420
+ };
1421
+ },
1422
+ {
1423
+ "name": "notifyAndSettle";
1424
+ "type": {
1425
+ "kind": "struct";
1426
+ "fields": [
1427
+ {
1428
+ "name": "model";
1429
+ "type": {
1430
+ "defined": {
1431
+ "name": "valuationModel";
1432
+ };
1433
+ };
1434
+ },
1435
+ {
1436
+ "name": "permissionlessFulfillment";
1437
+ "type": "bool";
1438
+ },
1439
+ {
1440
+ "name": "subscribeNoticePeriodType";
1441
+ "type": {
1442
+ "defined": {
1443
+ "name": "noticePeriodType";
1444
+ };
1445
+ };
1446
+ },
1447
+ {
1448
+ "name": "subscribeNoticePeriod";
1449
+ "type": "u64";
1450
+ },
1451
+ {
1452
+ "name": "subscribeSettlementPeriod";
1453
+ "type": "u64";
1454
+ },
1455
+ {
1456
+ "name": "subscribeCancellationWindow";
1457
+ "type": "u64";
1458
+ },
1459
+ {
1460
+ "name": "redeemNoticePeriodType";
1461
+ "type": {
1462
+ "defined": {
1463
+ "name": "noticePeriodType";
1464
+ };
1465
+ };
1466
+ },
1467
+ {
1468
+ "name": "redeemNoticePeriod";
1469
+ "type": "u64";
1470
+ },
1471
+ {
1472
+ "name": "redeemSettlementPeriod";
1473
+ "type": "u64";
1474
+ },
1475
+ {
1476
+ "name": "redeemCancellationWindow";
1477
+ "type": "u64";
1478
+ },
1479
+ {
1480
+ "name": "timeUnit";
1481
+ "type": {
1482
+ "defined": {
1483
+ "name": "timeUnit";
1484
+ };
1485
+ };
1486
+ },
1487
+ {
1488
+ "name": "padding";
1489
+ "type": {
1490
+ "array": [
1491
+ "u8",
1492
+ 3
1493
+ ];
1494
+ };
1495
+ }
1496
+ ];
1497
+ };
1498
+ },
1499
+ {
1500
+ "name": "observation";
1501
+ "docs": [
1502
+ "A single observation snapshot."
1503
+ ];
1504
+ "serialization": "bytemuckunsafe";
1505
+ "repr": {
1506
+ "kind": "c";
1507
+ };
1508
+ "type": {
1509
+ "kind": "struct";
1510
+ "fields": [
1511
+ {
1512
+ "name": "amount";
1513
+ "docs": [
1514
+ "Signed amount in the observation's denomination."
1515
+ ];
1516
+ "type": {
1517
+ "defined": {
1518
+ "name": "storedI128";
1519
+ };
1520
+ };
1521
+ },
1522
+ {
1523
+ "name": "denomination";
1524
+ "docs": [
1525
+ "Denomination of the amount."
1526
+ ];
1527
+ "type": {
1528
+ "defined": {
1529
+ "name": "denominationSpec";
1530
+ };
1531
+ };
1532
+ },
1533
+ {
1534
+ "name": "padDenom";
1535
+ "docs": [
1536
+ "Alignment padding after denomination (to 8-byte boundary for i64)."
1537
+ ];
1538
+ "type": {
1539
+ "array": [
1540
+ "u8",
1541
+ 7
1542
+ ];
1543
+ };
1544
+ },
1545
+ {
1546
+ "name": "observationTimestamp";
1547
+ "docs": [
1548
+ "Unix timestamp of the observation."
1549
+ ];
1550
+ "type": "i64";
1551
+ },
1552
+ {
1553
+ "name": "externalShares";
1554
+ "docs": [
1555
+ "External share count (for Tokenized positions)."
1556
+ ];
1557
+ "type": "u64";
1558
+ },
1559
+ {
1560
+ "name": "submittedBy";
1561
+ "docs": [
1562
+ "Signer who submitted this observation."
1563
+ ];
1564
+ "type": "pubkey";
1565
+ },
1566
+ {
1567
+ "name": "submittedAtSlot";
1568
+ "docs": [
1569
+ "Slot at which this observation was submitted."
1570
+ ];
1571
+ "type": "u64";
1572
+ }
1573
+ ];
1574
+ };
1575
+ },
1576
+ {
1577
+ "name": "observationState";
1578
+ "docs": [
1579
+ "Single PDA per vault that tracks all external position observations.",
1580
+ "Seeds: [SEED_OBSERVATION_STATE, glam_state.key()]"
1581
+ ];
1582
+ "serialization": "bytemuckunsafe";
1583
+ "repr": {
1584
+ "kind": "c";
1585
+ };
1586
+ "type": {
1587
+ "kind": "struct";
1588
+ "fields": [
1589
+ {
1590
+ "name": "glamState";
1591
+ "docs": [
1592
+ "The glam_state this observation state belongs to."
1593
+ ];
1594
+ "type": "pubkey";
1595
+ },
1596
+ {
1597
+ "name": "bump";
1598
+ "docs": [
1599
+ "PDA bump."
1600
+ ];
1601
+ "type": "u8";
1602
+ },
1603
+ {
1604
+ "name": "positionsLen";
1605
+ "docs": [
1606
+ "Number of active positions stored in `positions`."
1607
+ ];
1608
+ "type": "u8";
1609
+ },
1610
+ {
1611
+ "name": "reserved";
1612
+ "type": {
1613
+ "array": [
1614
+ "u8",
1615
+ 6
1616
+ ];
1617
+ };
1618
+ },
1619
+ {
1620
+ "name": "positions";
1621
+ "docs": [
1622
+ "Per-position observation entries."
1623
+ ];
1624
+ "type": {
1625
+ "array": [
1626
+ {
1627
+ "defined": {
1628
+ "name": "positionObservation";
1629
+ };
1630
+ },
1631
+ 16
1632
+ ];
1633
+ };
1634
+ }
1635
+ ];
1636
+ };
1637
+ },
1638
+ {
1639
+ "name": "oracleConfigs";
1640
+ "docs": [
1641
+ "Vault-specific oracle configs. If available, these configs are preferred over the global config."
1642
+ ];
1643
+ "type": {
1644
+ "kind": "struct";
1645
+ "fields": [
1646
+ {
1647
+ "name": "maxAgesSeconds";
1648
+ "type": {
1649
+ "vec": {
1650
+ "array": [
1651
+ "u16",
1652
+ 2
1653
+ ];
1654
+ };
1655
+ };
1656
+ },
1657
+ {
1658
+ "name": "padding";
1659
+ "type": {
1660
+ "array": [
1661
+ "u8",
1662
+ 12
1663
+ ];
1664
+ };
1665
+ }
1666
+ ];
1667
+ };
1668
+ },
1669
+ {
1670
+ "name": "performanceFee";
1671
+ "type": {
1672
+ "kind": "struct";
1673
+ "fields": [
1674
+ {
1675
+ "name": "feeBps";
1676
+ "type": "u16";
1677
+ },
1678
+ {
1679
+ "name": "hurdleRateBps";
1680
+ "type": "u16";
1681
+ },
1682
+ {
1683
+ "name": "hurdleType";
1684
+ "type": {
1685
+ "defined": {
1686
+ "name": "hurdleType";
1687
+ };
1688
+ };
1689
+ }
1690
+ ];
1691
+ };
1692
+ },
1693
+ {
1694
+ "name": "positionObservation";
1695
+ "docs": [
1696
+ "Observation data for a single position, stored inline in `ObservationState`."
1697
+ ];
1698
+ "serialization": "bytemuckunsafe";
1699
+ "repr": {
1700
+ "kind": "c";
1701
+ };
1702
+ "type": {
1703
+ "kind": "struct";
1704
+ "fields": [
1705
+ {
1706
+ "name": "positionId";
1707
+ "docs": [
1708
+ "The position_id this entry tracks."
1709
+ ];
1710
+ "type": {
1711
+ "array": [
1712
+ "u8",
1713
+ 32
1714
+ ];
1715
+ };
1716
+ },
1717
+ {
1718
+ "name": "hasPending";
1719
+ "docs": [
1720
+ "Whether a pending observation exists."
1721
+ ];
1722
+ "type": "bool";
1723
+ },
1724
+ {
1725
+ "name": "padPending";
1726
+ "docs": [
1727
+ "Alignment padding after has_pending (to 8-byte boundary for Observation)."
1728
+ ];
1729
+ "type": {
1730
+ "array": [
1731
+ "u8",
1732
+ 7
1733
+ ];
1734
+ };
1735
+ },
1736
+ {
1737
+ "name": "pendingObservation";
1738
+ "docs": [
1739
+ "The pending observation (only valid when `has_pending == true`)."
1740
+ ];
1741
+ "type": {
1742
+ "defined": {
1743
+ "name": "observation";
1744
+ };
1745
+ };
1746
+ },
1747
+ {
1748
+ "name": "hasValidated";
1749
+ "docs": [
1750
+ "Whether a validated observation exists."
1751
+ ];
1752
+ "type": "bool";
1753
+ },
1754
+ {
1755
+ "name": "padValidated";
1756
+ "docs": [
1757
+ "Alignment padding after has_validated (to 8-byte boundary for Observation)."
1758
+ ];
1759
+ "type": {
1760
+ "array": [
1761
+ "u8",
1762
+ 7
1763
+ ];
1764
+ };
1765
+ },
1766
+ {
1767
+ "name": "lastValidatedObservation";
1768
+ "docs": [
1769
+ "The last validated observation (only valid when `has_validated == true`)."
1770
+ ];
1771
+ "type": {
1772
+ "defined": {
1773
+ "name": "observation";
1774
+ };
1775
+ };
1776
+ },
1777
+ {
1778
+ "name": "validatedBy";
1779
+ "docs": [
1780
+ "Signer who last validated."
1781
+ ];
1782
+ "type": "pubkey";
1783
+ },
1784
+ {
1785
+ "name": "validatedAtSlot";
1786
+ "docs": [
1787
+ "Slot at which last validation occurred."
1788
+ ];
1789
+ "type": "u64";
1790
+ },
1791
+ {
1792
+ "name": "validatedBaseAssetAmount";
1793
+ "docs": [
1794
+ "Base-asset-normalized amount from the last validated observation.",
1795
+ "This is the value that contributes to the aggregate priced protocol."
1796
+ ];
1797
+ "type": {
1798
+ "defined": {
1799
+ "name": "storedI128";
1800
+ };
1801
+ };
1802
+ }
1803
+ ];
1804
+ };
1805
+ },
1806
+ {
1807
+ "name": "positionObservationInput";
1808
+ "docs": [
1809
+ "Observation data submitted by a caller."
1810
+ ];
1811
+ "type": {
1812
+ "kind": "struct";
1813
+ "fields": [
1814
+ {
1815
+ "name": "positionId";
1816
+ "docs": [
1817
+ "The position being observed, identified by position_id.",
1818
+ "The same 32-byte id is used as the canonical AUM coverage key."
1819
+ ];
1820
+ "type": {
1821
+ "array": [
1822
+ "u8",
1823
+ 32
1824
+ ];
1825
+ };
1826
+ },
1827
+ {
1828
+ "name": "amount";
1829
+ "docs": [
1830
+ "Signed amount in the position's denomination.",
1831
+ "Positive = asset, negative = liability."
1832
+ ];
1833
+ "type": "i128";
1834
+ },
1835
+ {
1836
+ "name": "denomination";
1837
+ "docs": [
1838
+ "Denomination of the amount."
1839
+ ];
1840
+ "type": {
1841
+ "defined": {
1842
+ "name": "denominationSpec";
1843
+ };
1844
+ };
1845
+ },
1846
+ {
1847
+ "name": "observationTimestamp";
1848
+ "docs": [
1849
+ "Unix timestamp of the observation."
1850
+ ];
1851
+ "type": "i64";
1852
+ },
1853
+ {
1854
+ "name": "externalShares";
1855
+ "docs": [
1856
+ "External share count (required > 0 for Tokenized positions, 0 for Valued)."
1857
+ ];
1858
+ "type": "u64";
1859
+ },
1860
+ {
1861
+ "name": "reserved";
1862
+ "docs": [
1863
+ "Reserved for future use."
1864
+ ];
1865
+ "type": {
1866
+ "array": [
1867
+ "u8",
1868
+ 128
1869
+ ];
1870
+ };
1871
+ }
1872
+ ];
1873
+ };
1874
+ },
1875
+ {
1876
+ "name": "pricedProtocol";
1877
+ "type": {
1878
+ "kind": "struct";
1879
+ "fields": [
1880
+ {
1881
+ "name": "rent";
1882
+ "type": "u64";
1883
+ },
1884
+ {
1885
+ "name": "amount";
1886
+ "type": "i128";
1887
+ },
1888
+ {
1889
+ "name": "decimals";
1890
+ "type": "u8";
1891
+ },
1892
+ {
1893
+ "name": "lastUpdatedSlot";
1894
+ "type": "u64";
1895
+ },
1896
+ {
1897
+ "name": "integrationProgram";
1898
+ "type": "pubkey";
1899
+ },
1900
+ {
1901
+ "name": "protocolBitflag";
1902
+ "type": "u16";
1903
+ },
1904
+ {
1905
+ "name": "positions";
1906
+ "type": {
1907
+ "vec": "pubkey";
1908
+ };
1909
+ }
1910
+ ];
1911
+ };
1912
+ },
1913
+ {
1914
+ "name": "protocolFees";
1915
+ "type": {
1916
+ "kind": "struct";
1917
+ "fields": [
1918
+ {
1919
+ "name": "baseFeeBps";
1920
+ "type": "u16";
1921
+ },
1922
+ {
1923
+ "name": "flowFeeBps";
1924
+ "type": "u16";
1925
+ }
1926
+ ];
1927
+ };
1928
+ },
1929
+ {
1930
+ "name": "protocolPermissions";
1931
+ "docs": [
1932
+ "Represents a delegate's permissions for a specific protocol"
1933
+ ];
1934
+ "type": {
1935
+ "kind": "struct";
1936
+ "fields": [
1937
+ {
1938
+ "name": "protocolBitflag";
1939
+ "type": "u16";
1940
+ },
1941
+ {
1942
+ "name": "permissionsBitmask";
1943
+ "type": "u64";
1944
+ }
1945
+ ];
1946
+ };
1947
+ },
1948
+ {
1949
+ "name": "protocolPolicy";
1950
+ "docs": [
1951
+ "Stores policy data for an integrated protocol.",
1952
+ "Integration programs serialize/deserialize this data."
1953
+ ];
1954
+ "type": {
1955
+ "kind": "struct";
1956
+ "fields": [
1957
+ {
1958
+ "name": "protocolBitflag";
1959
+ "type": "u16";
1960
+ },
1961
+ {
1962
+ "name": "data";
1963
+ "type": "bytes";
1964
+ }
1965
+ ];
1966
+ };
1967
+ },
1968
+ {
1969
+ "name": "stateAccount";
1970
+ "type": {
1971
+ "kind": "struct";
1972
+ "fields": [
1973
+ {
1974
+ "name": "accountType";
1975
+ "type": {
1976
+ "defined": {
1977
+ "name": "accountType";
1978
+ };
1979
+ };
1980
+ },
1981
+ {
1982
+ "name": "enabled";
1983
+ "type": "bool";
1984
+ },
1985
+ {
1986
+ "name": "vault";
1987
+ "type": "pubkey";
1988
+ },
1989
+ {
1990
+ "name": "owner";
1991
+ "type": "pubkey";
1992
+ },
1993
+ {
1994
+ "name": "portfolioManagerName";
1995
+ "type": {
1996
+ "array": [
1997
+ "u8",
1998
+ 32
1999
+ ];
2000
+ };
2001
+ },
2002
+ {
2003
+ "name": "created";
2004
+ "type": {
2005
+ "defined": {
2006
+ "name": "createdModel";
2007
+ };
2008
+ };
2009
+ },
2010
+ {
2011
+ "name": "baseAssetMint";
2012
+ "type": "pubkey";
2013
+ },
2014
+ {
2015
+ "name": "baseAssetDecimals";
2016
+ "type": "u8";
2017
+ },
2018
+ {
2019
+ "name": "baseAssetTokenProgram";
2020
+ "type": "u8";
2021
+ },
2022
+ {
2023
+ "name": "name";
2024
+ "type": {
2025
+ "array": [
2026
+ "u8",
2027
+ 32
2028
+ ];
2029
+ };
2030
+ },
2031
+ {
2032
+ "name": "timelockDuration";
2033
+ "type": "u32";
2034
+ },
2035
+ {
2036
+ "name": "timelockExpiresAt";
2037
+ "type": "u64";
2038
+ },
2039
+ {
2040
+ "name": "mint";
2041
+ "type": "pubkey";
2042
+ },
2043
+ {
2044
+ "name": "assets";
2045
+ "type": {
2046
+ "vec": "pubkey";
2047
+ };
2048
+ },
2049
+ {
2050
+ "name": "integrationAcls";
2051
+ "type": {
2052
+ "vec": {
2053
+ "defined": {
2054
+ "name": "integrationAcl";
2055
+ };
2056
+ };
2057
+ };
2058
+ },
2059
+ {
2060
+ "name": "delegateAcls";
2061
+ "type": {
2062
+ "vec": {
2063
+ "defined": {
2064
+ "name": "delegateAcl";
2065
+ };
2066
+ };
2067
+ };
2068
+ },
2069
+ {
2070
+ "name": "externalPositions";
2071
+ "type": {
2072
+ "vec": "pubkey";
2073
+ };
2074
+ },
2075
+ {
2076
+ "name": "pricedProtocols";
2077
+ "type": {
2078
+ "vec": {
2079
+ "defined": {
2080
+ "name": "pricedProtocol";
2081
+ };
2082
+ };
2083
+ };
2084
+ },
2085
+ {
2086
+ "name": "params";
2087
+ "type": {
2088
+ "vec": {
2089
+ "vec": {
2090
+ "defined": {
2091
+ "name": "engineField";
2092
+ };
2093
+ };
2094
+ };
2095
+ };
2096
+ }
2097
+ ];
2098
+ };
2099
+ },
2100
+ {
2101
+ "name": "storedI128";
2102
+ "docs": [
2103
+ "Byte-backed i128 storage that keeps the containing zero-copy account 8-byte aligned."
2104
+ ];
2105
+ "serialization": "bytemuck";
2106
+ "repr": {
2107
+ "kind": "c";
2108
+ };
2109
+ "type": {
2110
+ "kind": "struct";
2111
+ "fields": [
2112
+ {
2113
+ "name": "bytes";
2114
+ "type": {
2115
+ "array": [
2116
+ "u8",
2117
+ 16
2118
+ ];
2119
+ };
2120
+ }
2121
+ ];
2122
+ };
2123
+ },
2124
+ {
2125
+ "name": "timeUnit";
2126
+ "type": {
2127
+ "kind": "enum";
2128
+ "variants": [
2129
+ {
2130
+ "name": "second";
2131
+ },
2132
+ {
2133
+ "name": "slot";
2134
+ }
2135
+ ];
2136
+ };
2137
+ },
2138
+ {
2139
+ "name": "valuationModel";
2140
+ "type": {
2141
+ "kind": "enum";
2142
+ "variants": [
2143
+ {
2144
+ "name": "continuous";
2145
+ },
2146
+ {
2147
+ "name": "periodic";
2148
+ }
2149
+ ];
2150
+ };
2151
+ }
2152
+ ];
2153
+ "constants": [
2154
+ {
2155
+ "name": "protoEpi";
2156
+ "type": "u16";
2157
+ "value": "1";
2158
+ },
2159
+ {
2160
+ "name": "protoEpiPermConfigure";
2161
+ "type": "u64";
2162
+ "value": "1";
2163
+ },
2164
+ {
2165
+ "name": "protoEpiPermSubmitObservation";
2166
+ "type": "u64";
2167
+ "value": "2";
2168
+ },
2169
+ {
2170
+ "name": "protoEpiPermValidateObservation";
2171
+ "type": "u64";
2172
+ "value": "4";
2173
+ }
2174
+ ];
2175
+ };