@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": "G1NTew9pcXtYUTuTK4bJTUxKw2LghYmJCCDYxaKQN7oc";
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": "GLAMpaME8wdTEzxtiYEAa5yD8fZbxZiz2hNtV58RZiEz";
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": "GLAMpaME8wdTEzxtiYEAa5yD8fZbxZiz2hNtV58RZiEz";
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": "GLAMpaME8wdTEzxtiYEAa5yD8fZbxZiz2hNtV58RZiEz";
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": "GLAMpaME8wdTEzxtiYEAa5yD8fZbxZiz2hNtV58RZiEz";
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
+ };