@glamsystems/glam-sdk 1.0.6 → 1.0.8

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 (64) hide show
  1. package/index.cjs.js +3154 -986
  2. package/index.esm.js +3141 -983
  3. package/package.json +3 -2
  4. package/src/client/base.d.ts +2 -0
  5. package/src/client/cctp.d.ts +7 -2
  6. package/src/client/drift/protocol-v2.d.ts +8 -4
  7. package/src/client/price.d.ts +54 -9
  8. package/src/client/state.d.ts +2 -0
  9. package/src/clientConfig.d.ts +2 -0
  10. package/src/constants.d.ts +4 -1
  11. package/src/glamExports.d.ts +613 -0
  12. package/src/index.d.ts +1 -0
  13. package/src/models/index.d.ts +2 -2
  14. package/src/models/state.d.ts +2 -0
  15. package/src/react/cluster-provider.d.ts +2 -1
  16. package/src/react/glam.d.ts +4 -3
  17. package/src/utils/bitmask.d.ts +11 -0
  18. package/src/utils/common.d.ts +27 -6
  19. package/src/utils/computeBudget.d.ts +1 -2
  20. package/src/utils/evm.d.ts +4 -0
  21. package/src/utils/index.d.ts +1 -1
  22. package/src/utils/jupiterApi.d.ts +13 -2
  23. package/src/utils/positionCategorizer.d.ts +54 -0
  24. package/src/utils/rpc.d.ts +33 -3
  25. package/target/idl/ext_cctp.json +6 -0
  26. package/target/idl/ext_drift-staging.json +6 -0
  27. package/target/idl/ext_drift.json +6 -0
  28. package/target/idl/ext_kamino-staging.json +6 -0
  29. package/target/idl/ext_kamino.json +6 -0
  30. package/target/idl/ext_marinade.json +6 -0
  31. package/target/idl/ext_spl-staging.json +6 -0
  32. package/target/idl/ext_spl.json +6 -0
  33. package/target/idl/ext_stake_pool-staging.json +6 -0
  34. package/target/idl/ext_stake_pool.json +6 -0
  35. package/target/idl/glam_config.json +7 -27
  36. package/target/idl/glam_mint-staging.json +6 -0
  37. package/target/idl/glam_mint.json +6 -0
  38. package/target/idl/glam_protocol-staging.json +117 -9
  39. package/target/idl/glam_protocol.json +41 -8
  40. package/target/types/ext_cctp.d.ts +6 -0
  41. package/target/types/ext_cctp.ts +6 -0
  42. package/target/types/ext_drift-staging.ts +6 -0
  43. package/target/types/ext_drift.d.ts +6 -0
  44. package/target/types/ext_drift.ts +6 -0
  45. package/target/types/ext_kamino-staging.ts +6 -0
  46. package/target/types/ext_kamino.d.ts +6 -0
  47. package/target/types/ext_kamino.ts +6 -0
  48. package/target/types/ext_marinade.d.ts +6 -0
  49. package/target/types/ext_marinade.ts +6 -0
  50. package/target/types/ext_spl-staging.ts +6 -0
  51. package/target/types/ext_spl.d.ts +6 -0
  52. package/target/types/ext_spl.ts +6 -0
  53. package/target/types/ext_stake_pool-staging.ts +6 -0
  54. package/target/types/ext_stake_pool.d.ts +6 -0
  55. package/target/types/ext_stake_pool.ts +6 -0
  56. package/target/types/glam_config.d.ts +2 -22
  57. package/target/types/glam_config.ts +7 -27
  58. package/target/types/glam_mint-staging.ts +6 -0
  59. package/target/types/glam_mint.d.ts +6 -0
  60. package/target/types/glam_mint.ts +6 -0
  61. package/target/types/glam_protocol-staging.ts +117 -9
  62. package/target/types/glam_protocol.d.ts +41 -8
  63. package/target/types/glam_protocol.ts +41 -8
  64. package/src/utils/priorityfee.d.ts +0 -3
@@ -1,14 +1,35 @@
1
1
  import { BN } from "@coral-xyz/anchor";
2
2
  /**
3
- * Compares two sets for equality
3
+ * Converts a buffer or array of character codes to a string
4
4
  */
5
- export declare const setsAreEqual: (a: Set<any>, b: Set<any>) => boolean;
5
+ export declare function charsToString(chars: number[] | Buffer): string;
6
6
  /**
7
- * Converts a buffer or array of character codes to a string
7
+ * Converts a string to an array of character codes
8
8
  */
9
- export declare function charsToName(chars: number[] | Buffer): string;
9
+ export declare function stringToChars(name: string, length?: number): number[];
10
10
  /**
11
- * Converts a string to an array of character codes (max 32 bytes)
11
+ * Safely converts a BN amount to a UI amount (with decimals).
12
+ *
13
+ * @param amount - The amount in base units (BN)
14
+ * @param decimals - The number of decimals (e.g., 9)
15
+ * @returns The UI amount as a number
16
+ *
17
+ * @example
18
+ * // Convert 10010000000 base units with 9 decimals
19
+ * const uiAmount = toUiAmount(new BN(10010000000), 9); // Returns 10.01
20
+ *
21
+ * @throws Error if the BN amount is too large to safely convert to number
12
22
  */
13
- export declare function nameToChars(name: string): number[];
14
23
  export declare function toUiAmount(amount: BN, decimals: number): number;
24
+ /**
25
+ * Safely converts a UI amount (with decimals) to a BN amount.
26
+ *
27
+ * @param amount - The UI amount (e.g., 10.01)
28
+ * @param decimals - The number of decimals (e.g., 9)
29
+ * @returns BN representing the amount in base units
30
+ *
31
+ * @example
32
+ * // Convert 10.01 with 9 decimals
33
+ * const amount = fromUiAmount(10.01, 9); // Returns BN(10010000000)
34
+ */
35
+ export declare function fromUiAmount(amount: number | string, decimals: number): BN;
@@ -8,9 +8,8 @@ export type ComputeBudgetOptions = {
8
8
  /**
9
9
  * Builds compute budget instructions for a transaction
10
10
  *
11
- * @param vTx The versioned transaction to build compute budget for
12
11
  * @param computeUnitLimit The compute unit limit
13
- * @param options Optional priority fee configuration
12
+ * @param options Compute budget options
14
13
  * @returns Array of compute budget instructions
15
14
  */
16
15
  export declare function buildComputeBudgetInstructions(computeUnitLimit: number, options?: ComputeBudgetOptions): Promise<Array<TransactionInstruction>>;
@@ -4,3 +4,7 @@ export declare const hexToBytes: (hex: string) => number[];
4
4
  export declare const evmAddressToPublicKey: (address: string) => PublicKey;
5
5
  export declare const bytesToHex: (bytes: number[] | Uint8Array) => string;
6
6
  export declare const publicKeyToEvmAddress: (publicKey: PublicKey) => string;
7
+ /**
8
+ * Validates if a string is a valid EVM address (40 hex characters)
9
+ */
10
+ export declare const isValidEvmAddress: (addr: string) => boolean;
@@ -7,7 +7,6 @@ export * from "./common";
7
7
  export * from "./glamApi";
8
8
  export * from "./glamPDAs";
9
9
  export * from "./lookupTables";
10
- export * from "./priorityfee";
11
10
  export * from "./rpc";
12
11
  export * from "./timelock";
13
12
  export * from "./transaction";
@@ -16,3 +15,4 @@ export * from "./pkmap";
16
15
  export * from "./pkset";
17
16
  export * from "./fraction";
18
17
  export * from "./jupiterApi";
18
+ export * from "./positionCategorizer";
@@ -36,6 +36,13 @@ export type TokenListItem = {
36
36
  usdPrice: number;
37
37
  slot: number;
38
38
  };
39
+ export declare class JupTokenList {
40
+ readonly tokens: TokenListItem[];
41
+ readonly mintMap: Map<string, TokenListItem>;
42
+ constructor(tokens: TokenListItem[]);
43
+ getByMint(mintAddress: string | PublicKey): TokenListItem | undefined;
44
+ getBySymbol(symbol: string): TokenListItem | undefined;
45
+ }
39
46
  export type JupiterInstruction = {
40
47
  programId: string;
41
48
  accounts: {
@@ -57,19 +64,23 @@ export type SwapInstructions = {
57
64
  export declare const JUPITER_API_DEFAULT = "https://api.jup.ag";
58
65
  export type TokenPrice = {
59
66
  mint: string;
60
- price: number;
67
+ usdPrice: number;
68
+ decimals: number;
69
+ blockId: number;
61
70
  };
62
71
  export declare class JupiterApiClient {
63
72
  swapApiBaseUrl: string;
64
73
  isCustomSwapApi: boolean;
65
74
  apiKey: string | null;
66
75
  private tokenListCache;
76
+ private tokenListCacheTtl;
67
77
  constructor(options?: {
68
78
  apiKey?: string;
69
79
  swapApiBaseUrl?: string;
80
+ cacheTtl?: number;
70
81
  });
71
82
  fetchTokenPrices(mints: string[]): Promise<TokenPrice[]>;
72
- fetchTokensList(forceRefresh?: boolean): Promise<TokenListItem[]>;
83
+ fetchTokensList(forceRefresh?: boolean): Promise<JupTokenList>;
73
84
  fetchProgramLabels(): Promise<{
74
85
  [key: string]: string;
75
86
  }>;
@@ -0,0 +1,54 @@
1
+ import { Commitment, Connection, PublicKey } from "@solana/web3.js";
2
+ /**
3
+ * Categorized external positions by protocol type.
4
+ */
5
+ export interface CategorizedPositions {
6
+ /** Direct drift user PDAs controlled by the vault */
7
+ driftUsers: PublicKey[];
8
+ /** Drift vault depositor accounts */
9
+ driftVaultDepositors: PublicKey[];
10
+ /** Kamino lending obligation accounts */
11
+ kaminoObligations: PublicKey[];
12
+ /** Kamino vault share token accounts */
13
+ kaminoVaultShareAtas: PublicKey[];
14
+ /** Positions that couldn't be categorized */
15
+ unknown: PublicKey[];
16
+ }
17
+ /**
18
+ * Utility class for categorizing external positions by protocol type.
19
+ *
20
+ * External positions in GLAM vaults can be:
21
+ * - Drift user PDAs (direct trading positions)
22
+ * - Drift vault depositor accounts (shares in drift vaults)
23
+ * - Kamino obligation accounts (lending positions)
24
+ * - Kamino vault share ATAs (shares in kamino vaults)
25
+ *
26
+ * This class determines the type of each position to enable proper pricing.
27
+ */
28
+ export declare class PositionCategorizer {
29
+ private readonly connection;
30
+ private readonly vaultPda;
31
+ private readonly possibleDriftUserPdas;
32
+ constructor(connection: Connection, vaultPda: PublicKey);
33
+ /**
34
+ * Derives a drift user PDA for a given authority and subAccountId.
35
+ */
36
+ private getDriftUserPda;
37
+ /**
38
+ * Checks if a pubkey matches any drift user PDA for subAccountIds 0-99.
39
+ * This is a pure computation - no RPC calls needed.
40
+ */
41
+ isDriftUserPda(pubkey: PublicKey): boolean;
42
+ /**
43
+ * Categorizes external positions by protocol type.
44
+ *
45
+ * Algorithm:
46
+ * 1. Identify drift users by matching against pre-computed PDAs (no RPC)
47
+ * 2. Batch fetch remaining positions to determine their type
48
+ * 3. Categorize based on account owner and size
49
+ *
50
+ * @param externalPositions - Array of external position pubkeys from state account
51
+ * @returns Categorized positions by protocol type
52
+ */
53
+ categorizePositions(externalPositions: PublicKey[], commitment: Commitment): Promise<CategorizedPositions>;
54
+ }
@@ -1,3 +1,33 @@
1
- import { Connection, PublicKey } from "@solana/web3.js";
2
- export declare function getProgramAccountsV2(programId: PublicKey, limit?: number, filters?: any[]): Promise<any[]>;
3
- export declare function getProgramAccountsWithRetry(connection: Connection, programId: PublicKey, filters?: any[]): Promise<import("@solana/web3.js").GetProgramAccountsResponse>;
1
+ import { Connection, Finality, GetProgramAccountsConfig, GetProgramAccountsResponse, PublicKey, SignaturesForAddressOptions, VersionedTransaction, VersionedTransactionResponse } from "@solana/web3.js";
2
+ /**
3
+ * Fetches program accounts using Helius getProgramAccountsV2 if available.
4
+ * Otherwise falls back to standard getProgramAccounts with retry logic.
5
+ */
6
+ export declare function getProgramAccounts(connection: Connection, programId: PublicKey, config: GetProgramAccountsConfig & HeliusGetProgramAccountsV2Config): Promise<GetProgramAccountsResponse>;
7
+ export type HeliusGetProgramAccountsV2Config = {
8
+ limit?: number;
9
+ changedSinceSlot?: number;
10
+ };
11
+ /**
12
+ * Standard getProgramAccounts with retry logic for transient errors.
13
+ */
14
+ export declare function getProgramAccountsWithRetry(connection: Connection, programId: PublicKey, config: GetProgramAccountsConfig): Promise<GetProgramAccountsResponse>;
15
+ export interface GetTransactionsOptions {
16
+ commitment?: Finality;
17
+ sinceSlot?: number;
18
+ transactionDetails?: "full" | "signatures";
19
+ }
20
+ /**
21
+ * Fetches transactions for an address using Helius getTransactionsForAddress if available.
22
+ * Otherwise falls back to getSignaturesForAddress + getTransaction.
23
+ */
24
+ export declare function getTransactionsForAddress(connection: Connection, address: PublicKey, options?: SignaturesForAddressOptions & GetTransactionsOptions): Promise<VersionedTransactionResponse[]>;
25
+ export type PriorityLevel = "Recommended" | "Min" | "Low" | "Medium" | "High" | "VeryHigh" | "UnsafeMax" | "Default";
26
+ type GetPriorityFeeEstimateOptions = {
27
+ heliusApiKey?: string;
28
+ tx?: VersionedTransaction;
29
+ accountKeys?: string[];
30
+ priorityLevel?: PriorityLevel;
31
+ };
32
+ export declare function getPriorityFeeEstimate(options: GetPriorityFeeEstimateOptions): Promise<number>;
33
+ export {};
@@ -471,6 +471,12 @@
471
471
  },
472
472
  {
473
473
  "name": "OracleConfigs"
474
+ },
475
+ {
476
+ "name": "ReduceOnly"
477
+ },
478
+ {
479
+ "name": "AnyLst"
474
480
  }
475
481
  ]
476
482
  }
@@ -2799,6 +2799,12 @@
2799
2799
  },
2800
2800
  {
2801
2801
  "name": "OracleConfigs"
2802
+ },
2803
+ {
2804
+ "name": "ReduceOnly"
2805
+ },
2806
+ {
2807
+ "name": "AnyLst"
2802
2808
  }
2803
2809
  ]
2804
2810
  }
@@ -2799,6 +2799,12 @@
2799
2799
  },
2800
2800
  {
2801
2801
  "name": "OracleConfigs"
2802
+ },
2803
+ {
2804
+ "name": "ReduceOnly"
2805
+ },
2806
+ {
2807
+ "name": "AnyLst"
2802
2808
  }
2803
2809
  ]
2804
2810
  }
@@ -2218,6 +2218,12 @@
2218
2218
  },
2219
2219
  {
2220
2220
  "name": "OracleConfigs"
2221
+ },
2222
+ {
2223
+ "name": "ReduceOnly"
2224
+ },
2225
+ {
2226
+ "name": "AnyLst"
2221
2227
  }
2222
2228
  ]
2223
2229
  }
@@ -2218,6 +2218,12 @@
2218
2218
  },
2219
2219
  {
2220
2220
  "name": "OracleConfigs"
2221
+ },
2222
+ {
2223
+ "name": "ReduceOnly"
2224
+ },
2225
+ {
2226
+ "name": "AnyLst"
2221
2227
  }
2222
2228
  ]
2223
2229
  }
@@ -791,6 +791,12 @@
791
791
  },
792
792
  {
793
793
  "name": "OracleConfigs"
794
+ },
795
+ {
796
+ "name": "ReduceOnly"
797
+ },
798
+ {
799
+ "name": "AnyLst"
794
800
  }
795
801
  ]
796
802
  }
@@ -463,6 +463,12 @@
463
463
  },
464
464
  {
465
465
  "name": "OracleConfigs"
466
+ },
467
+ {
468
+ "name": "ReduceOnly"
469
+ },
470
+ {
471
+ "name": "AnyLst"
466
472
  }
467
473
  ]
468
474
  }
@@ -463,6 +463,12 @@
463
463
  },
464
464
  {
465
465
  "name": "OracleConfigs"
466
+ },
467
+ {
468
+ "name": "ReduceOnly"
469
+ },
470
+ {
471
+ "name": "AnyLst"
466
472
  }
467
473
  ]
468
474
  }
@@ -790,6 +790,12 @@
790
790
  },
791
791
  {
792
792
  "name": "OracleConfigs"
793
+ },
794
+ {
795
+ "name": "ReduceOnly"
796
+ },
797
+ {
798
+ "name": "AnyLst"
793
799
  }
794
800
  ]
795
801
  }
@@ -790,6 +790,12 @@
790
790
  },
791
791
  {
792
792
  "name": "OracleConfigs"
793
+ },
794
+ {
795
+ "name": "ReduceOnly"
796
+ },
797
+ {
798
+ "name": "AnyLst"
793
799
  }
794
800
  ]
795
801
  }
@@ -78,10 +78,7 @@
78
78
  {
79
79
  "name": "admin",
80
80
  "writable": true,
81
- "signer": true,
82
- "relations": [
83
- "global_config"
84
- ]
81
+ "signer": true
85
82
  },
86
83
  {
87
84
  "name": "system_program",
@@ -213,10 +210,7 @@
213
210
  {
214
211
  "name": "admin",
215
212
  "writable": true,
216
- "signer": true,
217
- "relations": [
218
- "global_config"
219
- ]
213
+ "signer": true
220
214
  },
221
215
  {
222
216
  "name": "system_program",
@@ -271,10 +265,7 @@
271
265
  },
272
266
  {
273
267
  "name": "fee_authority",
274
- "signer": true,
275
- "relations": [
276
- "global_config"
277
- ]
268
+ "signer": true
278
269
  }
279
270
  ],
280
271
  "args": [
@@ -329,10 +320,7 @@
329
320
  },
330
321
  {
331
322
  "name": "fee_authority",
332
- "signer": true,
333
- "relations": [
334
- "global_config"
335
- ]
323
+ "signer": true
336
324
  }
337
325
  ],
338
326
  "args": [
@@ -384,10 +372,7 @@
384
372
  {
385
373
  "name": "admin",
386
374
  "writable": true,
387
- "signer": true,
388
- "relations": [
389
- "global_config"
390
- ]
375
+ "signer": true
391
376
  },
392
377
  {
393
378
  "name": "system_program",
@@ -434,21 +419,16 @@
434
419
  },
435
420
  {
436
421
  "code": 6002,
437
- "name": "AssetMetaAlreadyExists",
438
- "msg": "Asset meta already exists"
439
- },
440
- {
441
- "code": 6003,
442
422
  "name": "InvalidParameters",
443
423
  "msg": "Invalid parameters"
444
424
  },
445
425
  {
446
- "code": 6004,
426
+ "code": 6003,
447
427
  "name": "InvalidOracleSource",
448
428
  "msg": "Invalid oracle source"
449
429
  },
450
430
  {
451
- "code": 6005,
431
+ "code": 6004,
452
432
  "name": "InvalidGlobalConfig",
453
433
  "msg": "Invalid global config"
454
434
  }
@@ -4881,6 +4881,12 @@
4881
4881
  },
4882
4882
  {
4883
4883
  "name": "OracleConfigs"
4884
+ },
4885
+ {
4886
+ "name": "ReduceOnly"
4887
+ },
4888
+ {
4889
+ "name": "AnyLst"
4884
4890
  }
4885
4891
  ]
4886
4892
  }
@@ -4881,6 +4881,12 @@
4881
4881
  },
4882
4882
  {
4883
4883
  "name": "OracleConfigs"
4884
+ },
4885
+ {
4886
+ "name": "ReduceOnly"
4887
+ },
4888
+ {
4889
+ "name": "AnyLst"
4884
4890
  }
4885
4891
  ]
4886
4892
  }
@@ -2,7 +2,7 @@
2
2
  "address": "gstgptmbgJVi5f8ZmSRVZjZkDQwqKa3xWuUtD5WmJHz",
3
3
  "metadata": {
4
4
  "name": "glam_protocol",
5
- "version": "1.0.1",
5
+ "version": "1.0.2",
6
6
  "spec": "0.1.0",
7
7
  "description": "Glam Protocol"
8
8
  },
@@ -435,6 +435,81 @@
435
435
  {
436
436
  "name": "output_stake_pool",
437
437
  "optional": true
438
+ },
439
+ {
440
+ "name": "glam_config",
441
+ "optional": true,
442
+ "pda": {
443
+ "seeds": [
444
+ {
445
+ "kind": "const",
446
+ "value": [
447
+ 103,
448
+ 108,
449
+ 111,
450
+ 98,
451
+ 97,
452
+ 108,
453
+ 45,
454
+ 99,
455
+ 111,
456
+ 110,
457
+ 102,
458
+ 105,
459
+ 103
460
+ ]
461
+ }
462
+ ],
463
+ "program": {
464
+ "kind": "const",
465
+ "value": [
466
+ 10,
467
+ 11,
468
+ 0,
469
+ 83,
470
+ 72,
471
+ 16,
472
+ 46,
473
+ 144,
474
+ 46,
475
+ 42,
476
+ 79,
477
+ 22,
478
+ 157,
479
+ 123,
480
+ 21,
481
+ 242,
482
+ 192,
483
+ 146,
484
+ 1,
485
+ 78,
486
+ 88,
487
+ 59,
488
+ 102,
489
+ 9,
490
+ 190,
491
+ 226,
492
+ 92,
493
+ 189,
494
+ 187,
495
+ 232,
496
+ 83,
497
+ 220
498
+ ]
499
+ }
500
+ }
501
+ },
502
+ {
503
+ "name": "sol_usd_oracle",
504
+ "optional": true
505
+ },
506
+ {
507
+ "name": "input_token_oracle",
508
+ "optional": true
509
+ },
510
+ {
511
+ "name": "output_token_oracle",
512
+ "optional": true
438
513
  }
439
514
  ],
440
515
  "args": [
@@ -1525,8 +1600,8 @@
1525
1600
  },
1526
1601
  {
1527
1602
  "code": 48010,
1528
- "name": "UnexpectedProgramOwner",
1529
- "msg": "Account is owned by an unexpected program"
1603
+ "name": "InvalidAccountOwner",
1604
+ "msg": "Account owner does not match expected program"
1530
1605
  },
1531
1606
  {
1532
1607
  "code": 48011,
@@ -1555,8 +1630,8 @@
1555
1630
  },
1556
1631
  {
1557
1632
  "code": 49004,
1558
- "name": "InvalidAssetsLen",
1559
- "msg": "Too many assets: max 100"
1633
+ "name": "InvalidIndex",
1634
+ "msg": "Invalid index"
1560
1635
  },
1561
1636
  {
1562
1637
  "code": 49005,
@@ -1730,8 +1805,13 @@
1730
1805
  },
1731
1806
  {
1732
1807
  "code": 51113,
1733
- "name": "UnexpectedDiscriminator",
1734
- "msg": "Invalid account: discriminator mismatch"
1808
+ "name": "InvalidDiscriminator",
1809
+ "msg": "Account discriminator does not match expected value"
1810
+ },
1811
+ {
1812
+ "code": 51114,
1813
+ "name": "InvalidAccountData",
1814
+ "msg": "Invalid account data"
1735
1815
  },
1736
1816
  {
1737
1817
  "code": 52000,
@@ -1994,6 +2074,12 @@
1994
2074
  },
1995
2075
  {
1996
2076
  "name": "OracleConfigs"
2077
+ },
2078
+ {
2079
+ "name": "ReduceOnly"
2080
+ },
2081
+ {
2082
+ "name": "AnyLst"
1997
2083
  }
1998
2084
  ]
1999
2085
  }
@@ -2865,6 +2951,18 @@
2865
2951
  }
2866
2952
  }
2867
2953
  },
2954
+ {
2955
+ "name": "reduce_only",
2956
+ "type": {
2957
+ "option": "bool"
2958
+ }
2959
+ },
2960
+ {
2961
+ "name": "any_lst",
2962
+ "type": {
2963
+ "option": "bool"
2964
+ }
2965
+ },
2868
2966
  {
2869
2967
  "name": "timelock_duration",
2870
2968
  "type": {
@@ -2953,15 +3051,20 @@
2953
3051
  "value": "4"
2954
3052
  },
2955
3053
  {
2956
- "name": "PROTO_JUPITER_SWAP_PERM_SWAP_ANY",
3054
+ "name": "PROTO_JUPITER_SWAP_PERM_SWAP_FROM_ANY",
2957
3055
  "type": "u64",
2958
- "value": "1"
3056
+ "value": "8"
2959
3057
  },
2960
3058
  {
2961
3059
  "name": "PROTO_JUPITER_SWAP_PERM_SWAP_LST",
2962
3060
  "type": "u64",
2963
3061
  "value": "2"
2964
3062
  },
3063
+ {
3064
+ "name": "PROTO_JUPITER_SWAP_PERM_SWAP_TO_ANY",
3065
+ "type": "u64",
3066
+ "value": "1"
3067
+ },
2965
3068
  {
2966
3069
  "name": "PROTO_STAKE",
2967
3070
  "type": "u16",
@@ -2982,6 +3085,11 @@
2982
3085
  "type": "u16",
2983
3086
  "value": "1"
2984
3087
  },
3088
+ {
3089
+ "name": "PROTO_SYSTEM_PERM_EMERGENCY_UPDATE",
3090
+ "type": "u64",
3091
+ "value": "4"
3092
+ },
2985
3093
  {
2986
3094
  "name": "PROTO_SYSTEM_PERM_TRANSFER",
2987
3095
  "type": "u64",