@glamsystems/glam-sdk 1.1.0-alpha.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/LICENSE +201 -0
  2. package/buffer-layout.d.ts +88 -0
  3. package/index.cjs.d.ts +1 -0
  4. package/index.cjs.js +1 -92594
  5. package/index.esm.d.ts +1 -0
  6. package/index.esm.js +1 -92146
  7. package/package.json +29 -17
  8. package/src/assets.d.ts +39 -0
  9. package/src/client/access.d.ts +57 -0
  10. package/src/client/base.d.ts +234 -0
  11. package/src/client/bridge.d.ts +205 -0
  12. package/src/client/bridgeRegistry.d.ts +32 -0
  13. package/src/client/cctp.d.ts +164 -0
  14. package/src/client/epi.d.ts +228 -0
  15. package/src/client/fees.d.ts +33 -0
  16. package/src/client/invest.d.ts +37 -0
  17. package/src/client/jupiter-lend/borrow.d.ts +92 -0
  18. package/src/client/jupiter-lend/earn.d.ts +64 -0
  19. package/src/client/jupiter-lend/index.d.ts +3 -0
  20. package/src/client/jupiter-lend/shared.d.ts +129 -0
  21. package/src/client/jupiter.d.ts +53 -0
  22. package/src/client/kamino/farm.d.ts +39 -0
  23. package/src/client/kamino/index.d.ts +4 -0
  24. package/src/client/kamino/lending.d.ts +94 -0
  25. package/src/client/kamino/types.d.ts +56 -0
  26. package/src/client/kamino/vaults.d.ts +39 -0
  27. package/src/client/loopscale/borrow.d.ts +118 -0
  28. package/src/client/loopscale/core.d.ts +604 -0
  29. package/src/client/loopscale/index.d.ts +5 -0
  30. package/src/client/loopscale/lend.d.ts +123 -0
  31. package/src/client/loopscale/vault.d.ts +43 -0
  32. package/src/client/marinade.d.ts +42 -0
  33. package/src/client/mint.d.ts +143 -0
  34. package/src/client/orca.d.ts +255 -0
  35. package/src/client/phoenix.d.ts +214 -0
  36. package/src/client/price.d.ts +182 -0
  37. package/src/client/stake-pool.d.ts +39 -0
  38. package/src/client/stake.d.ts +34 -0
  39. package/src/client/state.d.ts +56 -0
  40. package/src/client/timelock.d.ts +31 -0
  41. package/src/client/vault.d.ts +98 -0
  42. package/src/client.d.ts +82 -0
  43. package/src/clientConfig.d.ts +32 -0
  44. package/src/constants.d.ts +111 -0
  45. package/src/deser/base.d.ts +18 -0
  46. package/src/deser/index.d.ts +4 -0
  47. package/src/deser/integrationPolicies.d.ts +195 -0
  48. package/src/deser/kaminoLayouts.d.ts +264 -0
  49. package/src/deser/loopscaleLayouts.d.ts +157 -0
  50. package/src/deser/tokenAclLayouts.d.ts +67 -0
  51. package/src/error.d.ts +29 -0
  52. package/src/glamExports.d.ts +6260 -0
  53. package/src/globalConfig.d.ts +27 -0
  54. package/src/index.d.ts +24 -0
  55. package/src/models/acl.d.ts +43 -0
  56. package/src/models/index.d.ts +8 -0
  57. package/src/models/mint.d.ts +57 -0
  58. package/src/models/state.d.ts +94 -0
  59. package/src/models/types.d.ts +28 -0
  60. package/src/protocols.d.ts +29 -0
  61. package/src/utils/accounts.d.ts +71 -0
  62. package/src/utils/bitmask.d.ts +53 -0
  63. package/src/utils/blockhash.d.ts +11 -0
  64. package/src/utils/common.d.ts +73 -0
  65. package/src/utils/computeBudget.d.ts +15 -0
  66. package/src/utils/evm.d.ts +10 -0
  67. package/src/utils/fraction.d.ts +29 -0
  68. package/src/utils/glamPDAs.d.ts +15 -0
  69. package/src/utils/helius.d.ts +66 -0
  70. package/src/utils/index.d.ts +17 -0
  71. package/src/utils/jupiterApi.d.ts +95 -0
  72. package/src/utils/lookupTables.d.ts +83 -0
  73. package/src/utils/phoenixApi.d.ts +146 -0
  74. package/src/utils/pkmap.d.ts +87 -0
  75. package/src/utils/pkset.d.ts +73 -0
  76. package/src/utils/positionCategorizer.d.ts +38 -0
  77. package/src/utils/rpc.d.ts +18 -0
  78. package/src/utils/timelock.d.ts +52 -0
  79. package/src/utils/transaction.d.ts +13 -0
  80. package/target/idl/ext_bridge-staging.json +2379 -0
  81. package/target/idl/ext_bridge.json +2379 -0
  82. package/target/idl/ext_drift.json +5464 -0
  83. package/target/idl/ext_epi-staging.json +2862 -0
  84. package/target/idl/ext_epi.json +2862 -0
  85. package/target/idl/ext_loopscale-staging.json +4708 -0
  86. package/target/idl/ext_loopscale.json +4708 -0
  87. package/target/idl/ext_marinade-staging.json +1587 -0
  88. package/target/idl/ext_phoenix-staging.json +3525 -0
  89. package/target/idl/ext_phoenix.json +3525 -0
  90. package/target/idl/mock_layerzero_endpoint.json +144 -0
  91. package/target/idl/mock_layerzero_oft.json +155 -0
  92. package/target/idl/mock_wormhole_verify_vaa_shim.json +58 -0
  93. package/target/types/ext_bridge-staging.d.ts +2385 -0
  94. package/target/types/ext_bridge-staging.ts +2385 -0
  95. package/target/types/ext_bridge.d.ts +2385 -0
  96. package/target/types/ext_bridge.ts +2385 -0
  97. package/target/types/ext_cctp-staging.d.ts +1268 -0
  98. package/target/types/ext_cctp.d.ts +1268 -0
  99. package/target/types/ext_drift.d.ts +5470 -0
  100. package/target/types/ext_drift.ts +5470 -0
  101. package/target/types/ext_epi-staging.d.ts +2868 -0
  102. package/target/types/ext_epi-staging.ts +2868 -0
  103. package/target/types/ext_epi.d.ts +2868 -0
  104. package/target/types/ext_epi.ts +2868 -0
  105. package/target/types/ext_jupiter-staging.d.ts +1966 -0
  106. package/target/types/ext_jupiter.d.ts +1966 -0
  107. package/target/types/ext_kamino-staging.d.ts +3433 -0
  108. package/target/types/ext_kamino.d.ts +3433 -0
  109. package/target/types/ext_loopscale-staging.d.ts +4714 -0
  110. package/target/types/ext_loopscale-staging.ts +4714 -0
  111. package/target/types/ext_loopscale.d.ts +4714 -0
  112. package/target/types/ext_loopscale.ts +4714 -0
  113. package/target/types/ext_marinade-staging.d.ts +1593 -0
  114. package/target/types/ext_marinade-staging.ts +1593 -0
  115. package/target/types/ext_marinade.d.ts +1593 -0
  116. package/target/types/ext_orca-staging.d.ts +2829 -0
  117. package/target/types/ext_orca.d.ts +2829 -0
  118. package/target/types/ext_phoenix-staging.d.ts +3531 -0
  119. package/target/types/ext_phoenix-staging.ts +3531 -0
  120. package/target/types/ext_phoenix.d.ts +3531 -0
  121. package/target/types/ext_phoenix.ts +3531 -0
  122. package/target/types/ext_spl-staging.d.ts +1274 -0
  123. package/target/types/ext_spl.d.ts +1274 -0
  124. package/target/types/ext_stake_pool-staging.d.ts +1622 -0
  125. package/target/types/ext_stake_pool.d.ts +1622 -0
  126. package/target/types/glam_config.d.ts +755 -0
  127. package/target/types/glam_mint-staging.d.ts +8802 -0
  128. package/target/types/glam_mint.d.ts +6349 -0
  129. package/target/types/glam_policies.d.ts +477 -0
  130. package/target/types/glam_protocol-staging.d.ts +3362 -0
  131. package/target/types/glam_protocol.d.ts +2783 -0
  132. package/target/types/mock_layerzero_endpoint.d.ts +150 -0
  133. package/target/types/mock_layerzero_endpoint.ts +150 -0
  134. package/target/types/mock_layerzero_oft.d.ts +161 -0
  135. package/target/types/mock_layerzero_oft.ts +161 -0
  136. package/target/types/mock_wormhole_verify_vaa_shim.d.ts +64 -0
  137. package/target/types/mock_wormhole_verify_vaa_shim.ts +64 -0
@@ -0,0 +1,2862 @@
1
+ {
2
+ "address": "G1NTew9pcXtYUTuTK4bJTUxKw2LghYmJCCDYxaKQN7oc",
3
+ "metadata": {
4
+ "name": "ext_epi",
5
+ "version": "1.0.0",
6
+ "spec": "0.1.0",
7
+ "description": "External Position Integration for GLAM Protocol"
8
+ },
9
+ "instructions": [
10
+ {
11
+ "name": "refresh_priced_protocol",
12
+ "docs": [
13
+ "Republish the aggregate EPI priced protocol from already validated",
14
+ "observations at the current slot."
15
+ ],
16
+ "discriminator": [
17
+ 229,
18
+ 89,
19
+ 39,
20
+ 46,
21
+ 5,
22
+ 217,
23
+ 10,
24
+ 192
25
+ ],
26
+ "accounts": [
27
+ {
28
+ "name": "glam_state",
29
+ "writable": true
30
+ },
31
+ {
32
+ "name": "glam_signer",
33
+ "signer": true
34
+ },
35
+ {
36
+ "name": "observation_state",
37
+ "pda": {
38
+ "seeds": [
39
+ {
40
+ "kind": "const",
41
+ "value": [
42
+ 111,
43
+ 98,
44
+ 115,
45
+ 101,
46
+ 114,
47
+ 118,
48
+ 97,
49
+ 116,
50
+ 105,
51
+ 111,
52
+ 110,
53
+ 45,
54
+ 115,
55
+ 116,
56
+ 97,
57
+ 116,
58
+ 101
59
+ ]
60
+ },
61
+ {
62
+ "kind": "account",
63
+ "path": "glam_state"
64
+ }
65
+ ]
66
+ }
67
+ },
68
+ {
69
+ "name": "integration_authority",
70
+ "pda": {
71
+ "seeds": [
72
+ {
73
+ "kind": "const",
74
+ "value": [
75
+ 105,
76
+ 110,
77
+ 116,
78
+ 101,
79
+ 103,
80
+ 114,
81
+ 97,
82
+ 116,
83
+ 105,
84
+ 111,
85
+ 110,
86
+ 45,
87
+ 97,
88
+ 117,
89
+ 116,
90
+ 104,
91
+ 111,
92
+ 114,
93
+ 105,
94
+ 116,
95
+ 121
96
+ ]
97
+ }
98
+ ]
99
+ }
100
+ },
101
+ {
102
+ "name": "glam_protocol_program",
103
+ "address": "GLAMpaME8wdTEzxtiYEAa5yD8fZbxZiz2hNtV58RZiEz"
104
+ }
105
+ ],
106
+ "args": []
107
+ },
108
+ {
109
+ "name": "remove_external_position",
110
+ "docs": [
111
+ "Remove an external position from the registry.",
112
+ "Closes the observation state PDA and refunds rent to the signer."
113
+ ],
114
+ "discriminator": [
115
+ 97,
116
+ 146,
117
+ 246,
118
+ 241,
119
+ 130,
120
+ 26,
121
+ 108,
122
+ 97
123
+ ],
124
+ "accounts": [
125
+ {
126
+ "name": "glam_state",
127
+ "writable": true
128
+ },
129
+ {
130
+ "name": "glam_signer",
131
+ "writable": true,
132
+ "signer": true
133
+ },
134
+ {
135
+ "name": "glam_vault",
136
+ "writable": true,
137
+ "pda": {
138
+ "seeds": [
139
+ {
140
+ "kind": "const",
141
+ "value": [
142
+ 118,
143
+ 97,
144
+ 117,
145
+ 108,
146
+ 116
147
+ ]
148
+ },
149
+ {
150
+ "kind": "account",
151
+ "path": "glam_state"
152
+ }
153
+ ],
154
+ "program": {
155
+ "kind": "account",
156
+ "path": "glam_protocol_program"
157
+ }
158
+ }
159
+ },
160
+ {
161
+ "name": "observation_state",
162
+ "writable": true,
163
+ "pda": {
164
+ "seeds": [
165
+ {
166
+ "kind": "const",
167
+ "value": [
168
+ 111,
169
+ 98,
170
+ 115,
171
+ 101,
172
+ 114,
173
+ 118,
174
+ 97,
175
+ 116,
176
+ 105,
177
+ 111,
178
+ 110,
179
+ 45,
180
+ 115,
181
+ 116,
182
+ 97,
183
+ 116,
184
+ 101
185
+ ]
186
+ },
187
+ {
188
+ "kind": "account",
189
+ "path": "glam_state"
190
+ }
191
+ ]
192
+ }
193
+ },
194
+ {
195
+ "name": "integration_authority",
196
+ "pda": {
197
+ "seeds": [
198
+ {
199
+ "kind": "const",
200
+ "value": [
201
+ 105,
202
+ 110,
203
+ 116,
204
+ 101,
205
+ 103,
206
+ 114,
207
+ 97,
208
+ 116,
209
+ 105,
210
+ 111,
211
+ 110,
212
+ 45,
213
+ 97,
214
+ 117,
215
+ 116,
216
+ 104,
217
+ 111,
218
+ 114,
219
+ 105,
220
+ 116,
221
+ 121
222
+ ]
223
+ }
224
+ ]
225
+ }
226
+ },
227
+ {
228
+ "name": "glam_protocol_program",
229
+ "address": "GLAMpaME8wdTEzxtiYEAa5yD8fZbxZiz2hNtV58RZiEz"
230
+ },
231
+ {
232
+ "name": "system_program",
233
+ "address": "11111111111111111111111111111111"
234
+ }
235
+ ],
236
+ "args": [
237
+ {
238
+ "name": "position_id",
239
+ "type": {
240
+ "array": [
241
+ "u8",
242
+ 32
243
+ ]
244
+ }
245
+ }
246
+ ]
247
+ },
248
+ {
249
+ "name": "submit_external_observation",
250
+ "docs": [
251
+ "Submit an observation for a configured external position.",
252
+ "Writes to pending slot; replaces any existing pending observation."
253
+ ],
254
+ "discriminator": [
255
+ 100,
256
+ 228,
257
+ 147,
258
+ 149,
259
+ 22,
260
+ 28,
261
+ 158,
262
+ 163
263
+ ],
264
+ "accounts": [
265
+ {
266
+ "name": "glam_state"
267
+ },
268
+ {
269
+ "name": "glam_signer",
270
+ "signer": true
271
+ },
272
+ {
273
+ "name": "observation_state",
274
+ "writable": true,
275
+ "pda": {
276
+ "seeds": [
277
+ {
278
+ "kind": "const",
279
+ "value": [
280
+ 111,
281
+ 98,
282
+ 115,
283
+ 101,
284
+ 114,
285
+ 118,
286
+ 97,
287
+ 116,
288
+ 105,
289
+ 111,
290
+ 110,
291
+ 45,
292
+ 115,
293
+ 116,
294
+ 97,
295
+ 116,
296
+ 101
297
+ ]
298
+ },
299
+ {
300
+ "kind": "account",
301
+ "path": "glam_state"
302
+ }
303
+ ]
304
+ }
305
+ }
306
+ ],
307
+ "args": [
308
+ {
309
+ "name": "input",
310
+ "type": {
311
+ "defined": {
312
+ "name": "PositionObservationInput"
313
+ }
314
+ }
315
+ }
316
+ ]
317
+ },
318
+ {
319
+ "name": "submit_external_observation_wormhole",
320
+ "docs": [
321
+ "Submit a Wormhole Guardian-verified external observation.",
322
+ "The caller only relays a VAA body whose signatures have already been",
323
+ "posted to the Wormhole Verification Shim."
324
+ ],
325
+ "discriminator": [
326
+ 124,
327
+ 238,
328
+ 191,
329
+ 242,
330
+ 222,
331
+ 175,
332
+ 91,
333
+ 148
334
+ ],
335
+ "accounts": [
336
+ {
337
+ "name": "glam_state"
338
+ },
339
+ {
340
+ "name": "glam_signer",
341
+ "writable": true,
342
+ "signer": true
343
+ },
344
+ {
345
+ "name": "observation_state",
346
+ "writable": true,
347
+ "pda": {
348
+ "seeds": [
349
+ {
350
+ "kind": "const",
351
+ "value": [
352
+ 111,
353
+ 98,
354
+ 115,
355
+ 101,
356
+ 114,
357
+ 118,
358
+ 97,
359
+ 116,
360
+ 105,
361
+ 111,
362
+ 110,
363
+ 45,
364
+ 115,
365
+ 116,
366
+ 97,
367
+ 116,
368
+ 101
369
+ ]
370
+ },
371
+ {
372
+ "kind": "account",
373
+ "path": "glam_state"
374
+ }
375
+ ]
376
+ }
377
+ },
378
+ {
379
+ "name": "wormhole_config",
380
+ "writable": true,
381
+ "pda": {
382
+ "seeds": [
383
+ {
384
+ "kind": "const",
385
+ "value": [
386
+ 119,
387
+ 111,
388
+ 114,
389
+ 109,
390
+ 104,
391
+ 111,
392
+ 108,
393
+ 101,
394
+ 45,
395
+ 111,
396
+ 98,
397
+ 115,
398
+ 101,
399
+ 114,
400
+ 118,
401
+ 97,
402
+ 116,
403
+ 105,
404
+ 111,
405
+ 110,
406
+ 45,
407
+ 99,
408
+ 111,
409
+ 110,
410
+ 102,
411
+ 105,
412
+ 103
413
+ ]
414
+ },
415
+ {
416
+ "kind": "account",
417
+ "path": "glam_state"
418
+ },
419
+ {
420
+ "kind": "arg",
421
+ "path": "position_id"
422
+ }
423
+ ]
424
+ }
425
+ },
426
+ {
427
+ "name": "guardian_set"
428
+ },
429
+ {
430
+ "name": "guardian_signatures"
431
+ },
432
+ {
433
+ "name": "wormhole_verify_vaa_shim",
434
+ "address": "EFaNWErqAtVWufdNb7yofSHHfWFos843DFpu4JBw24at"
435
+ }
436
+ ],
437
+ "args": [
438
+ {
439
+ "name": "position_id",
440
+ "type": {
441
+ "array": [
442
+ "u8",
443
+ 32
444
+ ]
445
+ }
446
+ },
447
+ {
448
+ "name": "guardian_set_bump",
449
+ "type": "u8"
450
+ },
451
+ {
452
+ "name": "vaa_body",
453
+ "type": "bytes"
454
+ }
455
+ ]
456
+ },
457
+ {
458
+ "name": "upsert_external_position",
459
+ "docs": [
460
+ "Create or update an external position configuration.",
461
+ "Creates the observation state PDA on first call for a position."
462
+ ],
463
+ "discriminator": [
464
+ 199,
465
+ 33,
466
+ 239,
467
+ 150,
468
+ 200,
469
+ 123,
470
+ 43,
471
+ 70
472
+ ],
473
+ "accounts": [
474
+ {
475
+ "name": "glam_state",
476
+ "writable": true
477
+ },
478
+ {
479
+ "name": "glam_signer",
480
+ "writable": true,
481
+ "signer": true
482
+ },
483
+ {
484
+ "name": "glam_vault",
485
+ "writable": true,
486
+ "pda": {
487
+ "seeds": [
488
+ {
489
+ "kind": "const",
490
+ "value": [
491
+ 118,
492
+ 97,
493
+ 117,
494
+ 108,
495
+ 116
496
+ ]
497
+ },
498
+ {
499
+ "kind": "account",
500
+ "path": "glam_state"
501
+ }
502
+ ],
503
+ "program": {
504
+ "kind": "account",
505
+ "path": "glam_protocol_program"
506
+ }
507
+ }
508
+ },
509
+ {
510
+ "name": "observation_state",
511
+ "writable": true,
512
+ "pda": {
513
+ "seeds": [
514
+ {
515
+ "kind": "const",
516
+ "value": [
517
+ 111,
518
+ 98,
519
+ 115,
520
+ 101,
521
+ 114,
522
+ 118,
523
+ 97,
524
+ 116,
525
+ 105,
526
+ 111,
527
+ 110,
528
+ 45,
529
+ 115,
530
+ 116,
531
+ 97,
532
+ 116,
533
+ 101
534
+ ]
535
+ },
536
+ {
537
+ "kind": "account",
538
+ "path": "glam_state"
539
+ }
540
+ ]
541
+ }
542
+ },
543
+ {
544
+ "name": "integration_authority",
545
+ "pda": {
546
+ "seeds": [
547
+ {
548
+ "kind": "const",
549
+ "value": [
550
+ 105,
551
+ 110,
552
+ 116,
553
+ 101,
554
+ 103,
555
+ 114,
556
+ 97,
557
+ 116,
558
+ 105,
559
+ 111,
560
+ 110,
561
+ 45,
562
+ 97,
563
+ 117,
564
+ 116,
565
+ 104,
566
+ 111,
567
+ 114,
568
+ 105,
569
+ 116,
570
+ 121
571
+ ]
572
+ }
573
+ ]
574
+ }
575
+ },
576
+ {
577
+ "name": "glam_protocol_program",
578
+ "address": "GLAMpaME8wdTEzxtiYEAa5yD8fZbxZiz2hNtV58RZiEz"
579
+ },
580
+ {
581
+ "name": "system_program",
582
+ "address": "11111111111111111111111111111111"
583
+ }
584
+ ],
585
+ "args": [
586
+ {
587
+ "name": "config",
588
+ "type": {
589
+ "defined": {
590
+ "name": "ExternalPositionConfig"
591
+ }
592
+ }
593
+ }
594
+ ]
595
+ },
596
+ {
597
+ "name": "upsert_external_position_wormhole_config",
598
+ "docs": [
599
+ "Create or update Wormhole verification config for a Wormhole-sourced",
600
+ "external position."
601
+ ],
602
+ "discriminator": [
603
+ 173,
604
+ 64,
605
+ 201,
606
+ 39,
607
+ 54,
608
+ 49,
609
+ 192,
610
+ 89
611
+ ],
612
+ "accounts": [
613
+ {
614
+ "name": "glam_state"
615
+ },
616
+ {
617
+ "name": "glam_signer",
618
+ "writable": true,
619
+ "signer": true
620
+ },
621
+ {
622
+ "name": "wormhole_config",
623
+ "writable": true,
624
+ "pda": {
625
+ "seeds": [
626
+ {
627
+ "kind": "const",
628
+ "value": [
629
+ 119,
630
+ 111,
631
+ 114,
632
+ 109,
633
+ 104,
634
+ 111,
635
+ 108,
636
+ 101,
637
+ 45,
638
+ 111,
639
+ 98,
640
+ 115,
641
+ 101,
642
+ 114,
643
+ 118,
644
+ 97,
645
+ 116,
646
+ 105,
647
+ 111,
648
+ 110,
649
+ 45,
650
+ 99,
651
+ 111,
652
+ 110,
653
+ 102,
654
+ 105,
655
+ 103
656
+ ]
657
+ },
658
+ {
659
+ "kind": "account",
660
+ "path": "glam_state"
661
+ },
662
+ {
663
+ "kind": "arg",
664
+ "path": "input.position_id"
665
+ }
666
+ ]
667
+ }
668
+ },
669
+ {
670
+ "name": "system_program",
671
+ "address": "11111111111111111111111111111111"
672
+ }
673
+ ],
674
+ "args": [
675
+ {
676
+ "name": "input",
677
+ "type": {
678
+ "defined": {
679
+ "name": "WormholeObservationConfigInput"
680
+ }
681
+ }
682
+ }
683
+ ]
684
+ },
685
+ {
686
+ "name": "upsert_external_position_wormhole_hyperliquid_config",
687
+ "docs": [
688
+ "Create or update Hyperliquid-specific payload config for a",
689
+ "Wormhole-sourced external position."
690
+ ],
691
+ "discriminator": [
692
+ 42,
693
+ 13,
694
+ 175,
695
+ 7,
696
+ 34,
697
+ 137,
698
+ 176,
699
+ 108
700
+ ],
701
+ "accounts": [
702
+ {
703
+ "name": "glam_state"
704
+ },
705
+ {
706
+ "name": "glam_signer",
707
+ "writable": true,
708
+ "signer": true
709
+ },
710
+ {
711
+ "name": "wormhole_config",
712
+ "pda": {
713
+ "seeds": [
714
+ {
715
+ "kind": "const",
716
+ "value": [
717
+ 119,
718
+ 111,
719
+ 114,
720
+ 109,
721
+ 104,
722
+ 111,
723
+ 108,
724
+ 101,
725
+ 45,
726
+ 111,
727
+ 98,
728
+ 115,
729
+ 101,
730
+ 114,
731
+ 118,
732
+ 97,
733
+ 116,
734
+ 105,
735
+ 111,
736
+ 110,
737
+ 45,
738
+ 99,
739
+ 111,
740
+ 110,
741
+ 102,
742
+ 105,
743
+ 103
744
+ ]
745
+ },
746
+ {
747
+ "kind": "account",
748
+ "path": "glam_state"
749
+ },
750
+ {
751
+ "kind": "arg",
752
+ "path": "input.position_id"
753
+ }
754
+ ]
755
+ }
756
+ },
757
+ {
758
+ "name": "hyperliquid_config",
759
+ "writable": true,
760
+ "pda": {
761
+ "seeds": [
762
+ {
763
+ "kind": "const",
764
+ "value": [
765
+ 119,
766
+ 111,
767
+ 114,
768
+ 109,
769
+ 104,
770
+ 111,
771
+ 108,
772
+ 101,
773
+ 45,
774
+ 104,
775
+ 108,
776
+ 45,
777
+ 111,
778
+ 98,
779
+ 115,
780
+ 101,
781
+ 114,
782
+ 118,
783
+ 97,
784
+ 116,
785
+ 105,
786
+ 111,
787
+ 110,
788
+ 45,
789
+ 99,
790
+ 111,
791
+ 110,
792
+ 102,
793
+ 105,
794
+ 103
795
+ ]
796
+ },
797
+ {
798
+ "kind": "account",
799
+ "path": "glam_state"
800
+ },
801
+ {
802
+ "kind": "arg",
803
+ "path": "input.position_id"
804
+ }
805
+ ]
806
+ }
807
+ },
808
+ {
809
+ "name": "system_program",
810
+ "address": "11111111111111111111111111111111"
811
+ }
812
+ ],
813
+ "args": [
814
+ {
815
+ "name": "input",
816
+ "type": {
817
+ "defined": {
818
+ "name": "WormholeHyperliquidObservationConfigInput"
819
+ }
820
+ }
821
+ }
822
+ ]
823
+ },
824
+ {
825
+ "name": "validate_external_observation",
826
+ "docs": [
827
+ "Validate a pending observation, promote to active, and publish",
828
+ "the full aggregate priced protocol for ext_epi.",
829
+ "",
830
+ "Remaining accounts:",
831
+ "- `remaining_accounts[0]` is required when the pending observation",
832
+ "denomination is a non-base mint; it must be the observed mint oracle",
833
+ "account used for price normalization."
834
+ ],
835
+ "discriminator": [
836
+ 88,
837
+ 144,
838
+ 219,
839
+ 126,
840
+ 79,
841
+ 29,
842
+ 43,
843
+ 188
844
+ ],
845
+ "accounts": [
846
+ {
847
+ "name": "glam_state",
848
+ "writable": true
849
+ },
850
+ {
851
+ "name": "glam_signer",
852
+ "signer": true
853
+ },
854
+ {
855
+ "name": "observation_state",
856
+ "writable": true,
857
+ "pda": {
858
+ "seeds": [
859
+ {
860
+ "kind": "const",
861
+ "value": [
862
+ 111,
863
+ 98,
864
+ 115,
865
+ 101,
866
+ 114,
867
+ 118,
868
+ 97,
869
+ 116,
870
+ 105,
871
+ 111,
872
+ 110,
873
+ 45,
874
+ 115,
875
+ 116,
876
+ 97,
877
+ 116,
878
+ 101
879
+ ]
880
+ },
881
+ {
882
+ "kind": "account",
883
+ "path": "glam_state"
884
+ }
885
+ ]
886
+ }
887
+ },
888
+ {
889
+ "name": "integration_authority",
890
+ "pda": {
891
+ "seeds": [
892
+ {
893
+ "kind": "const",
894
+ "value": [
895
+ 105,
896
+ 110,
897
+ 116,
898
+ 101,
899
+ 103,
900
+ 114,
901
+ 97,
902
+ 116,
903
+ 105,
904
+ 111,
905
+ 110,
906
+ 45,
907
+ 97,
908
+ 117,
909
+ 116,
910
+ 104,
911
+ 111,
912
+ 114,
913
+ 105,
914
+ 116,
915
+ 121
916
+ ]
917
+ }
918
+ ]
919
+ }
920
+ },
921
+ {
922
+ "name": "glam_config",
923
+ "docs": [
924
+ "and its discriminator is checked by AssetMetasRef before use."
925
+ ],
926
+ "optional": true,
927
+ "pda": {
928
+ "seeds": [
929
+ {
930
+ "kind": "const",
931
+ "value": [
932
+ 103,
933
+ 108,
934
+ 111,
935
+ 98,
936
+ 97,
937
+ 108,
938
+ 45,
939
+ 99,
940
+ 111,
941
+ 110,
942
+ 102,
943
+ 105,
944
+ 103
945
+ ]
946
+ }
947
+ ],
948
+ "program": {
949
+ "kind": "const",
950
+ "value": [
951
+ 10,
952
+ 11,
953
+ 0,
954
+ 83,
955
+ 72,
956
+ 16,
957
+ 46,
958
+ 144,
959
+ 46,
960
+ 42,
961
+ 79,
962
+ 22,
963
+ 157,
964
+ 123,
965
+ 21,
966
+ 242,
967
+ 192,
968
+ 146,
969
+ 1,
970
+ 78,
971
+ 88,
972
+ 59,
973
+ 102,
974
+ 9,
975
+ 190,
976
+ 226,
977
+ 92,
978
+ 189,
979
+ 187,
980
+ 232,
981
+ 83,
982
+ 220
983
+ ]
984
+ }
985
+ }
986
+ },
987
+ {
988
+ "name": "sol_usd_oracle",
989
+ "docs": [
990
+ "against GLAM global oracle metadata before price use."
991
+ ],
992
+ "optional": true
993
+ },
994
+ {
995
+ "name": "base_asset_oracle",
996
+ "docs": [
997
+ "GLAM global oracle metadata before price use."
998
+ ],
999
+ "optional": true
1000
+ },
1001
+ {
1002
+ "name": "glam_protocol_program",
1003
+ "address": "GLAMpaME8wdTEzxtiYEAa5yD8fZbxZiz2hNtV58RZiEz"
1004
+ }
1005
+ ],
1006
+ "args": [
1007
+ {
1008
+ "name": "position_id",
1009
+ "type": {
1010
+ "array": [
1011
+ "u8",
1012
+ 32
1013
+ ]
1014
+ }
1015
+ }
1016
+ ]
1017
+ }
1018
+ ],
1019
+ "accounts": [
1020
+ {
1021
+ "name": "ObservationState",
1022
+ "discriminator": [
1023
+ 122,
1024
+ 174,
1025
+ 197,
1026
+ 53,
1027
+ 129,
1028
+ 9,
1029
+ 165,
1030
+ 132
1031
+ ]
1032
+ },
1033
+ {
1034
+ "name": "StateAccount",
1035
+ "discriminator": [
1036
+ 142,
1037
+ 247,
1038
+ 54,
1039
+ 95,
1040
+ 85,
1041
+ 133,
1042
+ 249,
1043
+ 103
1044
+ ]
1045
+ },
1046
+ {
1047
+ "name": "WormholeHyperliquidObservationConfig",
1048
+ "discriminator": [
1049
+ 34,
1050
+ 225,
1051
+ 134,
1052
+ 14,
1053
+ 86,
1054
+ 66,
1055
+ 4,
1056
+ 53
1057
+ ]
1058
+ },
1059
+ {
1060
+ "name": "WormholeObservationConfig",
1061
+ "discriminator": [
1062
+ 64,
1063
+ 123,
1064
+ 229,
1065
+ 21,
1066
+ 82,
1067
+ 252,
1068
+ 177,
1069
+ 166
1070
+ ]
1071
+ }
1072
+ ],
1073
+ "types": [
1074
+ {
1075
+ "name": "AccountType",
1076
+ "type": {
1077
+ "kind": "enum",
1078
+ "variants": [
1079
+ {
1080
+ "name": "Vault"
1081
+ },
1082
+ {
1083
+ "name": "TokenizedVault"
1084
+ },
1085
+ {
1086
+ "name": "Mint"
1087
+ },
1088
+ {
1089
+ "name": "SingleAssetVault"
1090
+ }
1091
+ ]
1092
+ }
1093
+ },
1094
+ {
1095
+ "name": "AccruedFees",
1096
+ "type": {
1097
+ "kind": "struct",
1098
+ "fields": [
1099
+ {
1100
+ "name": "vault_subscription_fee",
1101
+ "type": "u128"
1102
+ },
1103
+ {
1104
+ "name": "vault_redemption_fee",
1105
+ "type": "u128"
1106
+ },
1107
+ {
1108
+ "name": "manager_subscription_fee",
1109
+ "type": "u128"
1110
+ },
1111
+ {
1112
+ "name": "manager_redemption_fee",
1113
+ "type": "u128"
1114
+ },
1115
+ {
1116
+ "name": "management_fee",
1117
+ "type": "u128"
1118
+ },
1119
+ {
1120
+ "name": "performance_fee",
1121
+ "type": "u128"
1122
+ },
1123
+ {
1124
+ "name": "protocol_base_fee",
1125
+ "type": "u128"
1126
+ },
1127
+ {
1128
+ "name": "protocol_flow_fee",
1129
+ "type": "u128"
1130
+ }
1131
+ ]
1132
+ }
1133
+ },
1134
+ {
1135
+ "name": "CreatedModel",
1136
+ "type": {
1137
+ "kind": "struct",
1138
+ "fields": [
1139
+ {
1140
+ "name": "key",
1141
+ "type": {
1142
+ "array": [
1143
+ "u8",
1144
+ 8
1145
+ ]
1146
+ }
1147
+ },
1148
+ {
1149
+ "name": "created_by",
1150
+ "type": "pubkey"
1151
+ },
1152
+ {
1153
+ "name": "created_at",
1154
+ "type": "i64"
1155
+ }
1156
+ ]
1157
+ }
1158
+ },
1159
+ {
1160
+ "name": "DelegateAcl",
1161
+ "type": {
1162
+ "kind": "struct",
1163
+ "fields": [
1164
+ {
1165
+ "name": "pubkey",
1166
+ "type": "pubkey"
1167
+ },
1168
+ {
1169
+ "name": "integration_permissions",
1170
+ "type": {
1171
+ "vec": {
1172
+ "defined": {
1173
+ "name": "IntegrationPermissions"
1174
+ }
1175
+ }
1176
+ }
1177
+ },
1178
+ {
1179
+ "name": "expires_at",
1180
+ "type": "i64"
1181
+ }
1182
+ ]
1183
+ }
1184
+ },
1185
+ {
1186
+ "name": "Denomination",
1187
+ "docs": [
1188
+ "Denomination of an observation amount.",
1189
+ "Never reorder existing variants — append only."
1190
+ ],
1191
+ "repr": {
1192
+ "kind": "rust"
1193
+ },
1194
+ "type": {
1195
+ "kind": "enum",
1196
+ "variants": [
1197
+ {
1198
+ "name": "Usd"
1199
+ },
1200
+ {
1201
+ "name": "Mint"
1202
+ }
1203
+ ]
1204
+ }
1205
+ },
1206
+ {
1207
+ "name": "DenominationSpec",
1208
+ "docs": [
1209
+ "Full denomination spec: the discriminant plus an optional mint pubkey."
1210
+ ],
1211
+ "type": {
1212
+ "kind": "struct",
1213
+ "fields": [
1214
+ {
1215
+ "name": "denom",
1216
+ "type": {
1217
+ "defined": {
1218
+ "name": "Denomination"
1219
+ }
1220
+ }
1221
+ },
1222
+ {
1223
+ "name": "mint",
1224
+ "docs": [
1225
+ "Only meaningful when `denom == Denomination::Mint`.",
1226
+ "Set to `Pubkey::default()` for `Usd`."
1227
+ ],
1228
+ "type": "pubkey"
1229
+ }
1230
+ ]
1231
+ }
1232
+ },
1233
+ {
1234
+ "name": "EngineField",
1235
+ "type": {
1236
+ "kind": "struct",
1237
+ "fields": [
1238
+ {
1239
+ "name": "name",
1240
+ "type": {
1241
+ "defined": {
1242
+ "name": "EngineFieldName"
1243
+ }
1244
+ }
1245
+ },
1246
+ {
1247
+ "name": "value",
1248
+ "type": {
1249
+ "defined": {
1250
+ "name": "EngineFieldValue"
1251
+ }
1252
+ }
1253
+ }
1254
+ ]
1255
+ }
1256
+ },
1257
+ {
1258
+ "name": "EngineFieldName",
1259
+ "type": {
1260
+ "kind": "enum",
1261
+ "variants": [
1262
+ {
1263
+ "name": "Owner"
1264
+ },
1265
+ {
1266
+ "name": "PortfolioManagerName"
1267
+ },
1268
+ {
1269
+ "name": "Name"
1270
+ },
1271
+ {
1272
+ "name": "Uri"
1273
+ },
1274
+ {
1275
+ "name": "Assets"
1276
+ },
1277
+ {
1278
+ "name": "DelegateAcls"
1279
+ },
1280
+ {
1281
+ "name": "IntegrationAcls"
1282
+ },
1283
+ {
1284
+ "name": "TimelockDuration"
1285
+ },
1286
+ {
1287
+ "name": "Borrowable"
1288
+ },
1289
+ {
1290
+ "name": "DefaultAccountStateFrozen"
1291
+ },
1292
+ {
1293
+ "name": "PermanentDelegate"
1294
+ },
1295
+ {
1296
+ "name": "NotifyAndSettle"
1297
+ },
1298
+ {
1299
+ "name": "FeeStructure"
1300
+ },
1301
+ {
1302
+ "name": "FeeParams"
1303
+ },
1304
+ {
1305
+ "name": "ClaimableFees"
1306
+ },
1307
+ {
1308
+ "name": "ClaimedFees"
1309
+ },
1310
+ {
1311
+ "name": "OracleConfigs"
1312
+ }
1313
+ ]
1314
+ }
1315
+ },
1316
+ {
1317
+ "name": "EngineFieldValue",
1318
+ "type": {
1319
+ "kind": "enum",
1320
+ "variants": [
1321
+ {
1322
+ "name": "Boolean",
1323
+ "fields": [
1324
+ {
1325
+ "name": "val",
1326
+ "type": "bool"
1327
+ }
1328
+ ]
1329
+ },
1330
+ {
1331
+ "name": "U8",
1332
+ "fields": [
1333
+ {
1334
+ "name": "val",
1335
+ "type": "u8"
1336
+ }
1337
+ ]
1338
+ },
1339
+ {
1340
+ "name": "U32",
1341
+ "fields": [
1342
+ {
1343
+ "name": "val",
1344
+ "type": "u32"
1345
+ }
1346
+ ]
1347
+ },
1348
+ {
1349
+ "name": "U64",
1350
+ "fields": [
1351
+ {
1352
+ "name": "val",
1353
+ "type": "u64"
1354
+ }
1355
+ ]
1356
+ },
1357
+ {
1358
+ "name": "String",
1359
+ "fields": [
1360
+ {
1361
+ "name": "val",
1362
+ "type": "string"
1363
+ }
1364
+ ]
1365
+ },
1366
+ {
1367
+ "name": "Pubkey",
1368
+ "fields": [
1369
+ {
1370
+ "name": "val",
1371
+ "type": "pubkey"
1372
+ }
1373
+ ]
1374
+ },
1375
+ {
1376
+ "name": "VecPubkey",
1377
+ "fields": [
1378
+ {
1379
+ "name": "val",
1380
+ "type": {
1381
+ "vec": "pubkey"
1382
+ }
1383
+ }
1384
+ ]
1385
+ },
1386
+ {
1387
+ "name": "VecU8",
1388
+ "fields": [
1389
+ {
1390
+ "name": "val",
1391
+ "type": "bytes"
1392
+ }
1393
+ ]
1394
+ },
1395
+ {
1396
+ "name": "VecU32",
1397
+ "fields": [
1398
+ {
1399
+ "name": "val",
1400
+ "type": {
1401
+ "vec": "u32"
1402
+ }
1403
+ }
1404
+ ]
1405
+ },
1406
+ {
1407
+ "name": "VecDelegateAcl",
1408
+ "fields": [
1409
+ {
1410
+ "name": "val",
1411
+ "type": {
1412
+ "vec": {
1413
+ "defined": {
1414
+ "name": "DelegateAcl"
1415
+ }
1416
+ }
1417
+ }
1418
+ }
1419
+ ]
1420
+ },
1421
+ {
1422
+ "name": "VecIntegrationAcl",
1423
+ "fields": [
1424
+ {
1425
+ "name": "val",
1426
+ "type": {
1427
+ "vec": {
1428
+ "defined": {
1429
+ "name": "IntegrationAcl"
1430
+ }
1431
+ }
1432
+ }
1433
+ }
1434
+ ]
1435
+ },
1436
+ {
1437
+ "name": "FeeStructure",
1438
+ "fields": [
1439
+ {
1440
+ "name": "val",
1441
+ "type": {
1442
+ "defined": {
1443
+ "name": "FeeStructure"
1444
+ }
1445
+ }
1446
+ }
1447
+ ]
1448
+ },
1449
+ {
1450
+ "name": "FeeParams",
1451
+ "fields": [
1452
+ {
1453
+ "name": "val",
1454
+ "type": {
1455
+ "defined": {
1456
+ "name": "FeeParams"
1457
+ }
1458
+ }
1459
+ }
1460
+ ]
1461
+ },
1462
+ {
1463
+ "name": "AccruedFees",
1464
+ "fields": [
1465
+ {
1466
+ "name": "val",
1467
+ "type": {
1468
+ "defined": {
1469
+ "name": "AccruedFees"
1470
+ }
1471
+ }
1472
+ }
1473
+ ]
1474
+ },
1475
+ {
1476
+ "name": "NotifyAndSettle",
1477
+ "fields": [
1478
+ {
1479
+ "name": "val",
1480
+ "type": {
1481
+ "defined": {
1482
+ "name": "NotifyAndSettle"
1483
+ }
1484
+ }
1485
+ }
1486
+ ]
1487
+ },
1488
+ {
1489
+ "name": "OracleConfigs",
1490
+ "fields": [
1491
+ {
1492
+ "name": "val",
1493
+ "type": {
1494
+ "defined": {
1495
+ "name": "OracleConfigs"
1496
+ }
1497
+ }
1498
+ }
1499
+ ]
1500
+ }
1501
+ ]
1502
+ }
1503
+ },
1504
+ {
1505
+ "name": "EntryExitFees",
1506
+ "type": {
1507
+ "kind": "struct",
1508
+ "fields": [
1509
+ {
1510
+ "name": "subscription_fee_bps",
1511
+ "type": "u16"
1512
+ },
1513
+ {
1514
+ "name": "redemption_fee_bps",
1515
+ "type": "u16"
1516
+ }
1517
+ ]
1518
+ }
1519
+ },
1520
+ {
1521
+ "name": "ExternalPositionConfig",
1522
+ "docs": [
1523
+ "Per-position configuration entry in the registry."
1524
+ ],
1525
+ "type": {
1526
+ "kind": "struct",
1527
+ "fields": [
1528
+ {
1529
+ "name": "position_id",
1530
+ "docs": [
1531
+ "Unique identifier for this position within the vault.",
1532
+ "",
1533
+ "Under the cleaner pricing model, this 32-byte id is also the canonical",
1534
+ "coverage key published into `glam_state.external_positions` and",
1535
+ "`PricedProtocol.positions`. For bridge-managed inflight transfers, this",
1536
+ "should be the transfer-record pubkey bytes."
1537
+ ],
1538
+ "type": {
1539
+ "array": [
1540
+ "u8",
1541
+ 32
1542
+ ]
1543
+ }
1544
+ },
1545
+ {
1546
+ "name": "position_type",
1547
+ "docs": [
1548
+ "Type of position (Valued or Tokenized)."
1549
+ ],
1550
+ "type": {
1551
+ "defined": {
1552
+ "name": "ExternalPositionType"
1553
+ }
1554
+ }
1555
+ },
1556
+ {
1557
+ "name": "source_type",
1558
+ "docs": [
1559
+ "Source type (Trusted or Native)."
1560
+ ],
1561
+ "type": {
1562
+ "defined": {
1563
+ "name": "ExternalSourceType"
1564
+ }
1565
+ }
1566
+ },
1567
+ {
1568
+ "name": "denomination",
1569
+ "docs": [
1570
+ "Denomination rules for Trusted positions.",
1571
+ "For Native positions this is ignored (denomination derived from custody)."
1572
+ ],
1573
+ "type": {
1574
+ "defined": {
1575
+ "name": "DenominationSpec"
1576
+ }
1577
+ }
1578
+ },
1579
+ {
1580
+ "name": "native_custody_account",
1581
+ "docs": [
1582
+ "Custody account for Native positions. `Pubkey::default()` for Trusted."
1583
+ ],
1584
+ "type": "pubkey"
1585
+ },
1586
+ {
1587
+ "name": "native_custody_kind",
1588
+ "docs": [
1589
+ "Custody kind for Native positions."
1590
+ ],
1591
+ "type": {
1592
+ "defined": {
1593
+ "name": "NativeCustodyKind"
1594
+ }
1595
+ }
1596
+ },
1597
+ {
1598
+ "name": "enabled",
1599
+ "docs": [
1600
+ "Whether this position is enabled for observations."
1601
+ ],
1602
+ "type": "bool"
1603
+ },
1604
+ {
1605
+ "name": "freshness_override_secs",
1606
+ "docs": [
1607
+ "Freshness override in seconds. 0 means use vault default."
1608
+ ],
1609
+ "type": "u32"
1610
+ },
1611
+ {
1612
+ "name": "submit_allowlist",
1613
+ "docs": [
1614
+ "Per-position submit allowlist. Empty vec = use role-based access only."
1615
+ ],
1616
+ "type": {
1617
+ "vec": "pubkey"
1618
+ }
1619
+ },
1620
+ {
1621
+ "name": "validate_allowlist",
1622
+ "docs": [
1623
+ "Per-position validate allowlist. Empty vec = use role-based access only."
1624
+ ],
1625
+ "type": {
1626
+ "vec": "pubkey"
1627
+ }
1628
+ },
1629
+ {
1630
+ "name": "configure_allowlist",
1631
+ "docs": [
1632
+ "Per-position configure allowlist. Empty vec = use role-based access only.",
1633
+ "This is intentionally more permissive than the protocol-wide asset",
1634
+ "allowlist semantics where an empty allowlist means deny all."
1635
+ ],
1636
+ "type": {
1637
+ "vec": "pubkey"
1638
+ }
1639
+ }
1640
+ ]
1641
+ }
1642
+ },
1643
+ {
1644
+ "name": "ExternalPositionType",
1645
+ "docs": [
1646
+ "Type of external position.",
1647
+ "Never reorder existing variants — append only."
1648
+ ],
1649
+ "repr": {
1650
+ "kind": "rust"
1651
+ },
1652
+ "type": {
1653
+ "kind": "enum",
1654
+ "variants": [
1655
+ {
1656
+ "name": "Valued"
1657
+ },
1658
+ {
1659
+ "name": "Tokenized"
1660
+ }
1661
+ ]
1662
+ }
1663
+ },
1664
+ {
1665
+ "name": "ExternalSourceType",
1666
+ "docs": [
1667
+ "Source of observation data.",
1668
+ "Never reorder existing variants — append only."
1669
+ ],
1670
+ "repr": {
1671
+ "kind": "rust"
1672
+ },
1673
+ "type": {
1674
+ "kind": "enum",
1675
+ "variants": [
1676
+ {
1677
+ "name": "Trusted"
1678
+ },
1679
+ {
1680
+ "name": "Native"
1681
+ },
1682
+ {
1683
+ "name": "Wormhole"
1684
+ }
1685
+ ]
1686
+ }
1687
+ },
1688
+ {
1689
+ "name": "FeeParams",
1690
+ "type": {
1691
+ "kind": "struct",
1692
+ "fields": [
1693
+ {
1694
+ "name": "year_in_seconds",
1695
+ "type": "u32"
1696
+ },
1697
+ {
1698
+ "name": "pa_high_water_mark",
1699
+ "type": "i128"
1700
+ },
1701
+ {
1702
+ "name": "pa_last_nav",
1703
+ "type": "i128"
1704
+ },
1705
+ {
1706
+ "name": "last_aum",
1707
+ "type": "i128"
1708
+ },
1709
+ {
1710
+ "name": "last_performance_fee_crystallized",
1711
+ "type": "i64"
1712
+ },
1713
+ {
1714
+ "name": "last_management_fee_crystallized",
1715
+ "type": "i64"
1716
+ },
1717
+ {
1718
+ "name": "last_protocol_fee_crystallized",
1719
+ "type": "i64"
1720
+ }
1721
+ ]
1722
+ }
1723
+ },
1724
+ {
1725
+ "name": "FeeStructure",
1726
+ "type": {
1727
+ "kind": "struct",
1728
+ "fields": [
1729
+ {
1730
+ "name": "vault",
1731
+ "type": {
1732
+ "defined": {
1733
+ "name": "EntryExitFees"
1734
+ }
1735
+ }
1736
+ },
1737
+ {
1738
+ "name": "manager",
1739
+ "type": {
1740
+ "defined": {
1741
+ "name": "EntryExitFees"
1742
+ }
1743
+ }
1744
+ },
1745
+ {
1746
+ "name": "management",
1747
+ "type": {
1748
+ "defined": {
1749
+ "name": "ManagementFee"
1750
+ }
1751
+ }
1752
+ },
1753
+ {
1754
+ "name": "performance",
1755
+ "type": {
1756
+ "defined": {
1757
+ "name": "PerformanceFee"
1758
+ }
1759
+ }
1760
+ },
1761
+ {
1762
+ "name": "protocol",
1763
+ "type": {
1764
+ "defined": {
1765
+ "name": "ProtocolFees"
1766
+ }
1767
+ }
1768
+ }
1769
+ ]
1770
+ }
1771
+ },
1772
+ {
1773
+ "name": "HurdleType",
1774
+ "type": {
1775
+ "kind": "enum",
1776
+ "variants": [
1777
+ {
1778
+ "name": "Hard"
1779
+ },
1780
+ {
1781
+ "name": "Soft"
1782
+ }
1783
+ ]
1784
+ }
1785
+ },
1786
+ {
1787
+ "name": "IntegrationAcl",
1788
+ "docs": [
1789
+ "An integration program can have multiple protocols supported.",
1790
+ "Enabled protocols are stored in a bitmask, and each protocol can have its own policy."
1791
+ ],
1792
+ "type": {
1793
+ "kind": "struct",
1794
+ "fields": [
1795
+ {
1796
+ "name": "integration_program",
1797
+ "type": "pubkey"
1798
+ },
1799
+ {
1800
+ "name": "protocols_bitmask",
1801
+ "type": "u16"
1802
+ },
1803
+ {
1804
+ "name": "protocol_policies",
1805
+ "type": {
1806
+ "vec": {
1807
+ "defined": {
1808
+ "name": "ProtocolPolicy"
1809
+ }
1810
+ }
1811
+ }
1812
+ }
1813
+ ]
1814
+ }
1815
+ },
1816
+ {
1817
+ "name": "IntegrationPermissions",
1818
+ "docs": [
1819
+ "Stores delegate permissions for an integration program."
1820
+ ],
1821
+ "type": {
1822
+ "kind": "struct",
1823
+ "fields": [
1824
+ {
1825
+ "name": "integration_program",
1826
+ "type": "pubkey"
1827
+ },
1828
+ {
1829
+ "name": "protocol_permissions",
1830
+ "type": {
1831
+ "vec": {
1832
+ "defined": {
1833
+ "name": "ProtocolPermissions"
1834
+ }
1835
+ }
1836
+ }
1837
+ }
1838
+ ]
1839
+ }
1840
+ },
1841
+ {
1842
+ "name": "ManagementFee",
1843
+ "type": {
1844
+ "kind": "struct",
1845
+ "fields": [
1846
+ {
1847
+ "name": "fee_bps",
1848
+ "type": "u16"
1849
+ }
1850
+ ]
1851
+ }
1852
+ },
1853
+ {
1854
+ "name": "NativeCustodyKind",
1855
+ "docs": [
1856
+ "Custody kind for Native source positions.",
1857
+ "Never reorder existing variants — append only."
1858
+ ],
1859
+ "repr": {
1860
+ "kind": "rust"
1861
+ },
1862
+ "type": {
1863
+ "kind": "enum",
1864
+ "variants": [
1865
+ {
1866
+ "name": "SplToken"
1867
+ },
1868
+ {
1869
+ "name": "NativeSol"
1870
+ }
1871
+ ]
1872
+ }
1873
+ },
1874
+ {
1875
+ "name": "NoticePeriodType",
1876
+ "type": {
1877
+ "kind": "enum",
1878
+ "variants": [
1879
+ {
1880
+ "name": "Hard"
1881
+ },
1882
+ {
1883
+ "name": "Soft"
1884
+ }
1885
+ ]
1886
+ }
1887
+ },
1888
+ {
1889
+ "name": "NotifyAndSettle",
1890
+ "type": {
1891
+ "kind": "struct",
1892
+ "fields": [
1893
+ {
1894
+ "name": "model",
1895
+ "type": {
1896
+ "defined": {
1897
+ "name": "ValuationModel"
1898
+ }
1899
+ }
1900
+ },
1901
+ {
1902
+ "name": "permissionless_fulfillment",
1903
+ "type": "bool"
1904
+ },
1905
+ {
1906
+ "name": "subscribe_notice_period_type",
1907
+ "type": {
1908
+ "defined": {
1909
+ "name": "NoticePeriodType"
1910
+ }
1911
+ }
1912
+ },
1913
+ {
1914
+ "name": "subscribe_notice_period",
1915
+ "type": "u64"
1916
+ },
1917
+ {
1918
+ "name": "subscribe_settlement_period",
1919
+ "type": "u64"
1920
+ },
1921
+ {
1922
+ "name": "subscribe_cancellation_window",
1923
+ "type": "u64"
1924
+ },
1925
+ {
1926
+ "name": "redeem_notice_period_type",
1927
+ "type": {
1928
+ "defined": {
1929
+ "name": "NoticePeriodType"
1930
+ }
1931
+ }
1932
+ },
1933
+ {
1934
+ "name": "redeem_notice_period",
1935
+ "type": "u64"
1936
+ },
1937
+ {
1938
+ "name": "redeem_settlement_period",
1939
+ "type": "u64"
1940
+ },
1941
+ {
1942
+ "name": "redeem_cancellation_window",
1943
+ "type": "u64"
1944
+ },
1945
+ {
1946
+ "name": "time_unit",
1947
+ "type": {
1948
+ "defined": {
1949
+ "name": "TimeUnit"
1950
+ }
1951
+ }
1952
+ },
1953
+ {
1954
+ "name": "_padding",
1955
+ "type": {
1956
+ "array": [
1957
+ "u8",
1958
+ 3
1959
+ ]
1960
+ }
1961
+ }
1962
+ ]
1963
+ }
1964
+ },
1965
+ {
1966
+ "name": "Observation",
1967
+ "docs": [
1968
+ "A single observation snapshot."
1969
+ ],
1970
+ "serialization": "bytemuckunsafe",
1971
+ "repr": {
1972
+ "kind": "c"
1973
+ },
1974
+ "type": {
1975
+ "kind": "struct",
1976
+ "fields": [
1977
+ {
1978
+ "name": "amount",
1979
+ "docs": [
1980
+ "Signed amount in the observation's denomination."
1981
+ ],
1982
+ "type": {
1983
+ "defined": {
1984
+ "name": "StoredI128"
1985
+ }
1986
+ }
1987
+ },
1988
+ {
1989
+ "name": "denomination",
1990
+ "docs": [
1991
+ "Denomination of the amount."
1992
+ ],
1993
+ "type": {
1994
+ "defined": {
1995
+ "name": "DenominationSpec"
1996
+ }
1997
+ }
1998
+ },
1999
+ {
2000
+ "name": "_pad_denom",
2001
+ "docs": [
2002
+ "Alignment padding after denomination (to 8-byte boundary for i64)."
2003
+ ],
2004
+ "type": {
2005
+ "array": [
2006
+ "u8",
2007
+ 7
2008
+ ]
2009
+ }
2010
+ },
2011
+ {
2012
+ "name": "observation_timestamp",
2013
+ "docs": [
2014
+ "Unix timestamp of the observation."
2015
+ ],
2016
+ "type": "i64"
2017
+ },
2018
+ {
2019
+ "name": "external_shares",
2020
+ "docs": [
2021
+ "External share count (for Tokenized positions)."
2022
+ ],
2023
+ "type": "u64"
2024
+ },
2025
+ {
2026
+ "name": "submitted_by",
2027
+ "docs": [
2028
+ "Signer who submitted this observation."
2029
+ ],
2030
+ "type": "pubkey"
2031
+ },
2032
+ {
2033
+ "name": "submitted_at_slot",
2034
+ "docs": [
2035
+ "Slot at which this observation was submitted."
2036
+ ],
2037
+ "type": "u64"
2038
+ }
2039
+ ]
2040
+ }
2041
+ },
2042
+ {
2043
+ "name": "ObservationState",
2044
+ "docs": [
2045
+ "Single PDA per vault that tracks all external position observations.",
2046
+ "Seeds: [SEED_OBSERVATION_STATE, glam_state.key()]"
2047
+ ],
2048
+ "serialization": "bytemuckunsafe",
2049
+ "repr": {
2050
+ "kind": "c"
2051
+ },
2052
+ "type": {
2053
+ "kind": "struct",
2054
+ "fields": [
2055
+ {
2056
+ "name": "glam_state",
2057
+ "docs": [
2058
+ "The glam_state this observation state belongs to."
2059
+ ],
2060
+ "type": "pubkey"
2061
+ },
2062
+ {
2063
+ "name": "bump",
2064
+ "docs": [
2065
+ "PDA bump."
2066
+ ],
2067
+ "type": "u8"
2068
+ },
2069
+ {
2070
+ "name": "positions_len",
2071
+ "docs": [
2072
+ "Number of active positions stored in `positions`."
2073
+ ],
2074
+ "type": "u8"
2075
+ },
2076
+ {
2077
+ "name": "reserved",
2078
+ "type": {
2079
+ "array": [
2080
+ "u8",
2081
+ 6
2082
+ ]
2083
+ }
2084
+ },
2085
+ {
2086
+ "name": "positions",
2087
+ "docs": [
2088
+ "Per-position observation entries."
2089
+ ],
2090
+ "type": {
2091
+ "array": [
2092
+ {
2093
+ "defined": {
2094
+ "name": "PositionObservation"
2095
+ }
2096
+ },
2097
+ 16
2098
+ ]
2099
+ }
2100
+ }
2101
+ ]
2102
+ }
2103
+ },
2104
+ {
2105
+ "name": "OracleConfigs",
2106
+ "docs": [
2107
+ "Vault-specific oracle configs. If available, these configs are preferred over the global config."
2108
+ ],
2109
+ "type": {
2110
+ "kind": "struct",
2111
+ "fields": [
2112
+ {
2113
+ "name": "max_ages_seconds",
2114
+ "type": {
2115
+ "vec": {
2116
+ "array": [
2117
+ "u16",
2118
+ 2
2119
+ ]
2120
+ }
2121
+ }
2122
+ },
2123
+ {
2124
+ "name": "padding",
2125
+ "type": {
2126
+ "array": [
2127
+ "u8",
2128
+ 12
2129
+ ]
2130
+ }
2131
+ }
2132
+ ]
2133
+ }
2134
+ },
2135
+ {
2136
+ "name": "PerformanceFee",
2137
+ "type": {
2138
+ "kind": "struct",
2139
+ "fields": [
2140
+ {
2141
+ "name": "fee_bps",
2142
+ "type": "u16"
2143
+ },
2144
+ {
2145
+ "name": "hurdle_rate_bps",
2146
+ "type": "u16"
2147
+ },
2148
+ {
2149
+ "name": "hurdle_type",
2150
+ "type": {
2151
+ "defined": {
2152
+ "name": "HurdleType"
2153
+ }
2154
+ }
2155
+ }
2156
+ ]
2157
+ }
2158
+ },
2159
+ {
2160
+ "name": "PositionObservation",
2161
+ "docs": [
2162
+ "Observation data for a single position, stored inline in `ObservationState`."
2163
+ ],
2164
+ "serialization": "bytemuckunsafe",
2165
+ "repr": {
2166
+ "kind": "c"
2167
+ },
2168
+ "type": {
2169
+ "kind": "struct",
2170
+ "fields": [
2171
+ {
2172
+ "name": "position_id",
2173
+ "docs": [
2174
+ "The position_id this entry tracks."
2175
+ ],
2176
+ "type": {
2177
+ "array": [
2178
+ "u8",
2179
+ 32
2180
+ ]
2181
+ }
2182
+ },
2183
+ {
2184
+ "name": "has_pending",
2185
+ "docs": [
2186
+ "Whether a pending observation exists."
2187
+ ],
2188
+ "type": "bool"
2189
+ },
2190
+ {
2191
+ "name": "_pad_pending",
2192
+ "docs": [
2193
+ "Alignment padding after has_pending (to 8-byte boundary for Observation)."
2194
+ ],
2195
+ "type": {
2196
+ "array": [
2197
+ "u8",
2198
+ 7
2199
+ ]
2200
+ }
2201
+ },
2202
+ {
2203
+ "name": "pending_observation",
2204
+ "docs": [
2205
+ "The pending observation (only valid when `has_pending == true`)."
2206
+ ],
2207
+ "type": {
2208
+ "defined": {
2209
+ "name": "Observation"
2210
+ }
2211
+ }
2212
+ },
2213
+ {
2214
+ "name": "has_validated",
2215
+ "docs": [
2216
+ "Whether a validated observation exists."
2217
+ ],
2218
+ "type": "bool"
2219
+ },
2220
+ {
2221
+ "name": "_pad_validated",
2222
+ "docs": [
2223
+ "Alignment padding after has_validated (to 8-byte boundary for Observation)."
2224
+ ],
2225
+ "type": {
2226
+ "array": [
2227
+ "u8",
2228
+ 7
2229
+ ]
2230
+ }
2231
+ },
2232
+ {
2233
+ "name": "last_validated_observation",
2234
+ "docs": [
2235
+ "The last validated observation (only valid when `has_validated == true`)."
2236
+ ],
2237
+ "type": {
2238
+ "defined": {
2239
+ "name": "Observation"
2240
+ }
2241
+ }
2242
+ },
2243
+ {
2244
+ "name": "validated_by",
2245
+ "docs": [
2246
+ "Signer who last validated."
2247
+ ],
2248
+ "type": "pubkey"
2249
+ },
2250
+ {
2251
+ "name": "validated_at_slot",
2252
+ "docs": [
2253
+ "Slot at which last validation occurred."
2254
+ ],
2255
+ "type": "u64"
2256
+ },
2257
+ {
2258
+ "name": "validated_base_asset_amount",
2259
+ "docs": [
2260
+ "Base-asset-normalized amount from the last validated observation.",
2261
+ "This is the value that contributes to the aggregate priced protocol."
2262
+ ],
2263
+ "type": {
2264
+ "defined": {
2265
+ "name": "StoredI128"
2266
+ }
2267
+ }
2268
+ }
2269
+ ]
2270
+ }
2271
+ },
2272
+ {
2273
+ "name": "PositionObservationInput",
2274
+ "docs": [
2275
+ "Observation data submitted by a caller."
2276
+ ],
2277
+ "type": {
2278
+ "kind": "struct",
2279
+ "fields": [
2280
+ {
2281
+ "name": "position_id",
2282
+ "docs": [
2283
+ "The position being observed, identified by position_id.",
2284
+ "The same 32-byte id is used as the canonical AUM coverage key."
2285
+ ],
2286
+ "type": {
2287
+ "array": [
2288
+ "u8",
2289
+ 32
2290
+ ]
2291
+ }
2292
+ },
2293
+ {
2294
+ "name": "amount",
2295
+ "docs": [
2296
+ "Signed amount in the position's denomination.",
2297
+ "Positive = asset, negative = liability."
2298
+ ],
2299
+ "type": "i128"
2300
+ },
2301
+ {
2302
+ "name": "denomination",
2303
+ "docs": [
2304
+ "Denomination of the amount."
2305
+ ],
2306
+ "type": {
2307
+ "defined": {
2308
+ "name": "DenominationSpec"
2309
+ }
2310
+ }
2311
+ },
2312
+ {
2313
+ "name": "observation_timestamp",
2314
+ "docs": [
2315
+ "Unix timestamp of the observation."
2316
+ ],
2317
+ "type": "i64"
2318
+ },
2319
+ {
2320
+ "name": "external_shares",
2321
+ "docs": [
2322
+ "External share count (required > 0 for Tokenized positions, 0 for Valued)."
2323
+ ],
2324
+ "type": "u64"
2325
+ },
2326
+ {
2327
+ "name": "reserved",
2328
+ "docs": [
2329
+ "Reserved for future use."
2330
+ ],
2331
+ "type": {
2332
+ "array": [
2333
+ "u8",
2334
+ 128
2335
+ ]
2336
+ }
2337
+ }
2338
+ ]
2339
+ }
2340
+ },
2341
+ {
2342
+ "name": "PricedProtocol",
2343
+ "type": {
2344
+ "kind": "struct",
2345
+ "fields": [
2346
+ {
2347
+ "name": "rent",
2348
+ "type": "u64"
2349
+ },
2350
+ {
2351
+ "name": "amount",
2352
+ "type": "i128"
2353
+ },
2354
+ {
2355
+ "name": "decimals",
2356
+ "type": "u8"
2357
+ },
2358
+ {
2359
+ "name": "last_updated_slot",
2360
+ "type": "u64"
2361
+ },
2362
+ {
2363
+ "name": "integration_program",
2364
+ "type": "pubkey"
2365
+ },
2366
+ {
2367
+ "name": "protocol_bitflag",
2368
+ "type": "u16"
2369
+ },
2370
+ {
2371
+ "name": "positions",
2372
+ "type": {
2373
+ "vec": "pubkey"
2374
+ }
2375
+ }
2376
+ ]
2377
+ }
2378
+ },
2379
+ {
2380
+ "name": "ProtocolFees",
2381
+ "type": {
2382
+ "kind": "struct",
2383
+ "fields": [
2384
+ {
2385
+ "name": "base_fee_bps",
2386
+ "type": "u16"
2387
+ },
2388
+ {
2389
+ "name": "flow_fee_bps",
2390
+ "type": "u16"
2391
+ }
2392
+ ]
2393
+ }
2394
+ },
2395
+ {
2396
+ "name": "ProtocolPermissions",
2397
+ "docs": [
2398
+ "Represents a delegate's permissions for a specific protocol"
2399
+ ],
2400
+ "type": {
2401
+ "kind": "struct",
2402
+ "fields": [
2403
+ {
2404
+ "name": "protocol_bitflag",
2405
+ "type": "u16"
2406
+ },
2407
+ {
2408
+ "name": "permissions_bitmask",
2409
+ "type": "u64"
2410
+ }
2411
+ ]
2412
+ }
2413
+ },
2414
+ {
2415
+ "name": "ProtocolPolicy",
2416
+ "docs": [
2417
+ "Stores policy data for an integrated protocol.",
2418
+ "Integration programs serialize/deserialize this data."
2419
+ ],
2420
+ "type": {
2421
+ "kind": "struct",
2422
+ "fields": [
2423
+ {
2424
+ "name": "protocol_bitflag",
2425
+ "type": "u16"
2426
+ },
2427
+ {
2428
+ "name": "data",
2429
+ "type": "bytes"
2430
+ }
2431
+ ]
2432
+ }
2433
+ },
2434
+ {
2435
+ "name": "StateAccount",
2436
+ "type": {
2437
+ "kind": "struct",
2438
+ "fields": [
2439
+ {
2440
+ "name": "account_type",
2441
+ "type": {
2442
+ "defined": {
2443
+ "name": "AccountType"
2444
+ }
2445
+ }
2446
+ },
2447
+ {
2448
+ "name": "enabled",
2449
+ "type": "bool"
2450
+ },
2451
+ {
2452
+ "name": "vault",
2453
+ "type": "pubkey"
2454
+ },
2455
+ {
2456
+ "name": "owner",
2457
+ "type": "pubkey"
2458
+ },
2459
+ {
2460
+ "name": "portfolio_manager_name",
2461
+ "type": {
2462
+ "array": [
2463
+ "u8",
2464
+ 32
2465
+ ]
2466
+ }
2467
+ },
2468
+ {
2469
+ "name": "created",
2470
+ "type": {
2471
+ "defined": {
2472
+ "name": "CreatedModel"
2473
+ }
2474
+ }
2475
+ },
2476
+ {
2477
+ "name": "base_asset_mint",
2478
+ "type": "pubkey"
2479
+ },
2480
+ {
2481
+ "name": "base_asset_decimals",
2482
+ "type": "u8"
2483
+ },
2484
+ {
2485
+ "name": "base_asset_token_program",
2486
+ "type": "u8"
2487
+ },
2488
+ {
2489
+ "name": "name",
2490
+ "type": {
2491
+ "array": [
2492
+ "u8",
2493
+ 32
2494
+ ]
2495
+ }
2496
+ },
2497
+ {
2498
+ "name": "timelock_duration",
2499
+ "type": "u32"
2500
+ },
2501
+ {
2502
+ "name": "timelock_expires_at",
2503
+ "type": "u64"
2504
+ },
2505
+ {
2506
+ "name": "mint",
2507
+ "type": "pubkey"
2508
+ },
2509
+ {
2510
+ "name": "assets",
2511
+ "type": {
2512
+ "vec": "pubkey"
2513
+ }
2514
+ },
2515
+ {
2516
+ "name": "integration_acls",
2517
+ "type": {
2518
+ "vec": {
2519
+ "defined": {
2520
+ "name": "IntegrationAcl"
2521
+ }
2522
+ }
2523
+ }
2524
+ },
2525
+ {
2526
+ "name": "delegate_acls",
2527
+ "type": {
2528
+ "vec": {
2529
+ "defined": {
2530
+ "name": "DelegateAcl"
2531
+ }
2532
+ }
2533
+ }
2534
+ },
2535
+ {
2536
+ "name": "external_positions",
2537
+ "type": {
2538
+ "vec": "pubkey"
2539
+ }
2540
+ },
2541
+ {
2542
+ "name": "priced_protocols",
2543
+ "type": {
2544
+ "vec": {
2545
+ "defined": {
2546
+ "name": "PricedProtocol"
2547
+ }
2548
+ }
2549
+ }
2550
+ },
2551
+ {
2552
+ "name": "params",
2553
+ "type": {
2554
+ "vec": {
2555
+ "vec": {
2556
+ "defined": {
2557
+ "name": "EngineField"
2558
+ }
2559
+ }
2560
+ }
2561
+ }
2562
+ }
2563
+ ]
2564
+ }
2565
+ },
2566
+ {
2567
+ "name": "StoredI128",
2568
+ "docs": [
2569
+ "Byte-backed i128 storage that keeps the containing zero-copy account 8-byte aligned."
2570
+ ],
2571
+ "serialization": "bytemuck",
2572
+ "repr": {
2573
+ "kind": "c"
2574
+ },
2575
+ "type": {
2576
+ "kind": "struct",
2577
+ "fields": [
2578
+ {
2579
+ "name": "bytes",
2580
+ "type": {
2581
+ "array": [
2582
+ "u8",
2583
+ 16
2584
+ ]
2585
+ }
2586
+ }
2587
+ ]
2588
+ }
2589
+ },
2590
+ {
2591
+ "name": "TimeUnit",
2592
+ "type": {
2593
+ "kind": "enum",
2594
+ "variants": [
2595
+ {
2596
+ "name": "Second"
2597
+ },
2598
+ {
2599
+ "name": "Slot"
2600
+ }
2601
+ ]
2602
+ }
2603
+ },
2604
+ {
2605
+ "name": "ValuationModel",
2606
+ "type": {
2607
+ "kind": "enum",
2608
+ "variants": [
2609
+ {
2610
+ "name": "Continuous"
2611
+ },
2612
+ {
2613
+ "name": "Periodic"
2614
+ }
2615
+ ]
2616
+ }
2617
+ },
2618
+ {
2619
+ "name": "WormholeHyperliquidObservationConfig",
2620
+ "type": {
2621
+ "kind": "struct",
2622
+ "fields": [
2623
+ {
2624
+ "name": "glam_state",
2625
+ "type": "pubkey"
2626
+ },
2627
+ {
2628
+ "name": "position_id",
2629
+ "type": {
2630
+ "array": [
2631
+ "u8",
2632
+ 32
2633
+ ]
2634
+ }
2635
+ },
2636
+ {
2637
+ "name": "hyperliquid_account",
2638
+ "type": {
2639
+ "array": [
2640
+ "u8",
2641
+ 20
2642
+ ]
2643
+ }
2644
+ },
2645
+ {
2646
+ "name": "account_margin_summary_precompile",
2647
+ "type": {
2648
+ "array": [
2649
+ "u8",
2650
+ 20
2651
+ ]
2652
+ }
2653
+ },
2654
+ {
2655
+ "name": "spot_balance_precompile",
2656
+ "type": {
2657
+ "array": [
2658
+ "u8",
2659
+ 20
2660
+ ]
2661
+ }
2662
+ },
2663
+ {
2664
+ "name": "perp_dex_index",
2665
+ "type": "u32"
2666
+ },
2667
+ {
2668
+ "name": "usdc_spot_token",
2669
+ "type": "u64"
2670
+ },
2671
+ {
2672
+ "name": "bump",
2673
+ "type": "u8"
2674
+ }
2675
+ ]
2676
+ }
2677
+ },
2678
+ {
2679
+ "name": "WormholeHyperliquidObservationConfigInput",
2680
+ "type": {
2681
+ "kind": "struct",
2682
+ "fields": [
2683
+ {
2684
+ "name": "position_id",
2685
+ "type": {
2686
+ "array": [
2687
+ "u8",
2688
+ 32
2689
+ ]
2690
+ }
2691
+ },
2692
+ {
2693
+ "name": "hyperliquid_account",
2694
+ "type": {
2695
+ "array": [
2696
+ "u8",
2697
+ 20
2698
+ ]
2699
+ }
2700
+ },
2701
+ {
2702
+ "name": "account_margin_summary_precompile",
2703
+ "type": {
2704
+ "array": [
2705
+ "u8",
2706
+ 20
2707
+ ]
2708
+ }
2709
+ },
2710
+ {
2711
+ "name": "spot_balance_precompile",
2712
+ "type": {
2713
+ "array": [
2714
+ "u8",
2715
+ 20
2716
+ ]
2717
+ }
2718
+ },
2719
+ {
2720
+ "name": "perp_dex_index",
2721
+ "type": "u32"
2722
+ },
2723
+ {
2724
+ "name": "usdc_spot_token",
2725
+ "type": "u64"
2726
+ }
2727
+ ]
2728
+ }
2729
+ },
2730
+ {
2731
+ "name": "WormholeObservationConfig",
2732
+ "type": {
2733
+ "kind": "struct",
2734
+ "fields": [
2735
+ {
2736
+ "name": "glam_state",
2737
+ "type": "pubkey"
2738
+ },
2739
+ {
2740
+ "name": "position_id",
2741
+ "type": {
2742
+ "array": [
2743
+ "u8",
2744
+ 32
2745
+ ]
2746
+ }
2747
+ },
2748
+ {
2749
+ "name": "emitter_chain",
2750
+ "type": "u16"
2751
+ },
2752
+ {
2753
+ "name": "emitter_address",
2754
+ "type": {
2755
+ "array": [
2756
+ "u8",
2757
+ 32
2758
+ ]
2759
+ }
2760
+ },
2761
+ {
2762
+ "name": "payload_version",
2763
+ "type": "u8"
2764
+ },
2765
+ {
2766
+ "name": "payload_type",
2767
+ "type": "u8"
2768
+ },
2769
+ {
2770
+ "name": "max_age_seconds",
2771
+ "type": "u32"
2772
+ },
2773
+ {
2774
+ "name": "has_last_sequence",
2775
+ "type": "bool"
2776
+ },
2777
+ {
2778
+ "name": "last_sequence",
2779
+ "type": "u64"
2780
+ },
2781
+ {
2782
+ "name": "last_vaa_hash",
2783
+ "type": {
2784
+ "array": [
2785
+ "u8",
2786
+ 32
2787
+ ]
2788
+ }
2789
+ },
2790
+ {
2791
+ "name": "bump",
2792
+ "type": "u8"
2793
+ }
2794
+ ]
2795
+ }
2796
+ },
2797
+ {
2798
+ "name": "WormholeObservationConfigInput",
2799
+ "type": {
2800
+ "kind": "struct",
2801
+ "fields": [
2802
+ {
2803
+ "name": "position_id",
2804
+ "type": {
2805
+ "array": [
2806
+ "u8",
2807
+ 32
2808
+ ]
2809
+ }
2810
+ },
2811
+ {
2812
+ "name": "emitter_chain",
2813
+ "type": "u16"
2814
+ },
2815
+ {
2816
+ "name": "emitter_address",
2817
+ "type": {
2818
+ "array": [
2819
+ "u8",
2820
+ 32
2821
+ ]
2822
+ }
2823
+ },
2824
+ {
2825
+ "name": "payload_version",
2826
+ "type": "u8"
2827
+ },
2828
+ {
2829
+ "name": "payload_type",
2830
+ "type": "u8"
2831
+ },
2832
+ {
2833
+ "name": "max_age_seconds",
2834
+ "type": "u32"
2835
+ }
2836
+ ]
2837
+ }
2838
+ }
2839
+ ],
2840
+ "constants": [
2841
+ {
2842
+ "name": "PROTO_EPI",
2843
+ "type": "u16",
2844
+ "value": "1"
2845
+ },
2846
+ {
2847
+ "name": "PROTO_EPI_PERM_CONFIGURE",
2848
+ "type": "u64",
2849
+ "value": "1"
2850
+ },
2851
+ {
2852
+ "name": "PROTO_EPI_PERM_SUBMIT_OBSERVATION",
2853
+ "type": "u64",
2854
+ "value": "2"
2855
+ },
2856
+ {
2857
+ "name": "PROTO_EPI_PERM_VALIDATE_OBSERVATION",
2858
+ "type": "u64",
2859
+ "value": "4"
2860
+ }
2861
+ ]
2862
+ }