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