@exponent-labs/exponent-vaults-fetcher 0.9.20 → 0.9.22

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.
package/build/fetcher.js CHANGED
@@ -6,6 +6,7 @@ const exponent_vaults_idl_1 = require("@exponent-labs/exponent-vaults-idl");
6
6
  const exponent_vaults_pda_1 = require("@exponent-labs/exponent-vaults-pda");
7
7
  const constants_1 = require("./constants");
8
8
  const typeUtils_1 = require("./typeUtils");
9
+ const priceInterfaceAccounts_1 = require("./priceInterfaceAccounts");
9
10
  const EXPONENT_PRICES_META_DISCRIMINATOR = Buffer.from([188, 97, 196, 52, 192, 41, 211, 196]);
10
11
  const MAX_PRICES = 1024;
11
12
  const MAX_PRICE_MANAGERS = 8;
@@ -347,7 +348,7 @@ class ExponentVaultsFetcher {
347
348
  if (!info.owner.equals(this.programId)) {
348
349
  throw new Error(`PriceInterfaceAccounts owner mismatch: expected ${this.programId.toBase58()}, got ${info.owner.toBase58()}`);
349
350
  }
350
- const decoded = decodePriceInterfaceAccounts(info.data);
351
+ const decoded = (0, priceInterfaceAccounts_1.decodePriceInterfaceAccounts)(info.data);
351
352
  for (const entry of activePriceEntries) {
352
353
  if (entry.priceInterfaceAccounts.equals(key)) {
353
354
  entry.interfaceAccounts = decoded.interfaceAccounts;
@@ -383,51 +384,4 @@ class ExponentVaultsFetcher {
383
384
  }
384
385
  }
385
386
  exports.ExponentVaultsFetcher = ExponentVaultsFetcher;
386
- function decodePriceInterfaceAccounts(data) {
387
- const buffer = Buffer.from(data);
388
- if (buffer.length < 12) {
389
- throw new Error(`PriceInterfaceAccounts account too small: ${buffer.length} bytes`);
390
- }
391
- const len = buffer.readUInt32LE(8);
392
- const expectedSize = 8 + 4 + len * PUBKEY_BYTES;
393
- if (buffer.length < expectedSize) {
394
- throw new Error(`PriceInterfaceAccounts account truncated: expected ${expectedSize} bytes, got ${buffer.length}`);
395
- }
396
- const interfaceAccounts = [];
397
- let offset = 12;
398
- for (let i = 0; i < len; i++) {
399
- interfaceAccounts.push(new anchor_1.web3.PublicKey(buffer.subarray(offset, offset + PUBKEY_BYTES)));
400
- offset += PUBKEY_BYTES;
401
- }
402
- if (buffer.length === expectedSize) {
403
- return { interfaceAccounts, scopeConfig: null };
404
- }
405
- const stateTag = buffer.readUInt8(offset);
406
- offset += 1;
407
- if (stateTag === 0 || stateTag === 1) {
408
- return { interfaceAccounts, scopeConfig: null };
409
- }
410
- if (stateTag !== 2) {
411
- throw new Error(`Unknown PriceInterfaceAccounts state tag: ${stateTag}`);
412
- }
413
- const scopeConfigSize = 4 * 2 + U64_BYTES;
414
- if (buffer.length < offset + scopeConfigSize) {
415
- throw new Error(`PriceInterfaceAccounts Scope state truncated: expected ${offset + scopeConfigSize} bytes, got ${buffer.length}`);
416
- }
417
- const priceChain = [
418
- buffer.readUInt16LE(offset),
419
- buffer.readUInt16LE(offset + 2),
420
- buffer.readUInt16LE(offset + 4),
421
- buffer.readUInt16LE(offset + 6),
422
- ];
423
- offset += 8;
424
- const maximumAgeSeconds = buffer.readBigUInt64LE(offset);
425
- return {
426
- interfaceAccounts,
427
- scopeConfig: {
428
- priceChain,
429
- maximumAgeSeconds,
430
- },
431
- };
432
- }
433
387
  //# sourceMappingURL=fetcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { web3 } from "@coral-xyz/anchor";
2
+ import { type ScopePriceConfig } from "./types";
3
+ export type DecodedPriceInterfaceAccounts = {
4
+ interfaceAccounts: web3.PublicKey[];
5
+ scopeConfig: ScopePriceConfig | null;
6
+ };
7
+ /**
8
+ * Decodes the variable-length account list and optional price-source state used by Exponent prices.
9
+ */
10
+ export declare function decodePriceInterfaceAccounts(data: Buffer | Uint8Array): DecodedPriceInterfaceAccounts;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodePriceInterfaceAccounts = decodePriceInterfaceAccounts;
4
+ const anchor_1 = require("@coral-xyz/anchor");
5
+ const DISCRIMINATOR_BYTES = 8;
6
+ const VECTOR_LENGTH_BYTES = 4;
7
+ const PUBKEY_BYTES = 32;
8
+ const SCOPE_PRICE_CHAIN_LENGTH = 4;
9
+ const U16_BYTES = 2;
10
+ const U64_BYTES = 8;
11
+ const readU16Le = (data, offset) => new DataView(data.buffer, data.byteOffset + offset, U16_BYTES).getUint16(0, true);
12
+ const readU32Le = (data, offset) => new DataView(data.buffer, data.byteOffset + offset, VECTOR_LENGTH_BYTES).getUint32(0, true);
13
+ const readU64Le = (data, offset) => new DataView(data.buffer, data.byteOffset + offset, U64_BYTES).getBigUint64(0, true);
14
+ /**
15
+ * Decodes the variable-length account list and optional price-source state used by Exponent prices.
16
+ */
17
+ function decodePriceInterfaceAccounts(data) {
18
+ const baseHeaderSize = DISCRIMINATOR_BYTES + VECTOR_LENGTH_BYTES;
19
+ if (data.length < baseHeaderSize) {
20
+ throw new Error(`PriceInterfaceAccounts account too small: ${data.length} bytes`);
21
+ }
22
+ const len = readU32Le(data, DISCRIMINATOR_BYTES);
23
+ const expectedSize = baseHeaderSize + len * PUBKEY_BYTES;
24
+ if (data.length < expectedSize) {
25
+ throw new Error(`PriceInterfaceAccounts account truncated: expected ${expectedSize} bytes, got ${data.length}`);
26
+ }
27
+ const interfaceAccounts = [];
28
+ let offset = baseHeaderSize;
29
+ for (let index = 0; index < len; index += 1) {
30
+ interfaceAccounts.push(new anchor_1.web3.PublicKey(data.subarray(offset, offset + PUBKEY_BYTES)));
31
+ offset += PUBKEY_BYTES;
32
+ }
33
+ if (data.length === expectedSize) {
34
+ return { interfaceAccounts, scopeConfig: null };
35
+ }
36
+ const stateTag = data[offset];
37
+ offset += 1;
38
+ if (stateTag === 0 || stateTag === 1) {
39
+ return { interfaceAccounts, scopeConfig: null };
40
+ }
41
+ if (stateTag !== 2) {
42
+ throw new Error(`Unknown PriceInterfaceAccounts state tag: ${stateTag}`);
43
+ }
44
+ const priceChainBytes = SCOPE_PRICE_CHAIN_LENGTH * U16_BYTES;
45
+ const scopeConfigSize = priceChainBytes + U64_BYTES;
46
+ if (data.length < offset + scopeConfigSize) {
47
+ throw new Error(`PriceInterfaceAccounts Scope state truncated: expected ${offset + scopeConfigSize} bytes, got ${data.length}`);
48
+ }
49
+ const priceChain = Array.from({ length: SCOPE_PRICE_CHAIN_LENGTH }, (_, index) => readU16Le(data, offset + index * U16_BYTES));
50
+ offset += priceChainBytes;
51
+ return {
52
+ interfaceAccounts,
53
+ scopeConfig: {
54
+ priceChain,
55
+ maximumAgeSeconds: readU64Le(data, offset),
56
+ },
57
+ };
58
+ }
59
+ //# sourceMappingURL=priceInterfaceAccounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceInterfaceAccounts.js","sourceRoot":"","sources":["../src/priceInterfaceAccounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
+ const node_test_1 = __importDefault(require("node:test"));
8
+ const anchor_1 = require("@coral-xyz/anchor");
9
+ const priceInterfaceAccounts_1 = require("./priceInterfaceAccounts");
10
+ const FIRST_ACCOUNT = new anchor_1.web3.PublicKey("11111111111111111111111111111112");
11
+ const SECOND_ACCOUNT = new anchor_1.web3.PublicKey("11111111111111111111111111111113");
12
+ const PRICE_CHAIN = [3, 5, 8, 13];
13
+ const MAXIMUM_AGE_SECONDS = 9007199254740993n;
14
+ function createPriceInterfacePayload(params) {
15
+ const interfaceAccounts = [FIRST_ACCOUNT, SECOND_ACCOUNT];
16
+ const baseSize = 8 + 4 + interfaceAccounts.length * 32;
17
+ const data = new Uint8Array(baseSize + (params.isScope ? 17 : 0));
18
+ const view = new DataView(data.buffer);
19
+ view.setUint32(8, interfaceAccounts.length, true);
20
+ let offset = 12;
21
+ for (const account of interfaceAccounts) {
22
+ data.set(account.toBytes(), offset);
23
+ offset += 32;
24
+ }
25
+ if (!params.isScope)
26
+ return data;
27
+ data[offset] = 2;
28
+ offset += 1;
29
+ PRICE_CHAIN.forEach((value, index) => view.setUint16(offset + index * 2, value, true));
30
+ view.setBigUint64(offset + 8, MAXIMUM_AGE_SECONDS, true);
31
+ return data;
32
+ }
33
+ (0, node_test_1.default)("decodes Scope state without Node Buffer integer methods", () => {
34
+ const globalWithBuffer = globalThis;
35
+ const originalBuffer = globalWithBuffer.Buffer;
36
+ globalWithBuffer.Buffer = {
37
+ from: (value) => Uint8Array.from(value),
38
+ };
39
+ try {
40
+ const decoded = (0, priceInterfaceAccounts_1.decodePriceInterfaceAccounts)(createPriceInterfacePayload({ isScope: true }));
41
+ strict_1.default.deepEqual(decoded.interfaceAccounts.map((account) => account.toBase58()), [FIRST_ACCOUNT.toBase58(), SECOND_ACCOUNT.toBase58()]);
42
+ strict_1.default.deepEqual(decoded.scopeConfig, {
43
+ priceChain: PRICE_CHAIN,
44
+ maximumAgeSeconds: MAXIMUM_AGE_SECONDS,
45
+ });
46
+ }
47
+ finally {
48
+ globalWithBuffer.Buffer = originalBuffer;
49
+ }
50
+ });
51
+ (0, node_test_1.default)("returns null Scope config when no trailing state exists", () => {
52
+ const decoded = (0, priceInterfaceAccounts_1.decodePriceInterfaceAccounts)(createPriceInterfacePayload({ isScope: false }));
53
+ strict_1.default.equal(decoded.scopeConfig, null);
54
+ });
55
+ (0, node_test_1.default)("rejects truncated Scope state", () => {
56
+ const payload = createPriceInterfacePayload({ isScope: true });
57
+ const truncatedPayload = payload.subarray(0, payload.length - 1);
58
+ strict_1.default.throws(() => (0, priceInterfaceAccounts_1.decodePriceInterfaceAccounts)(truncatedPayload), /Scope state truncated/);
59
+ });
60
+ //# sourceMappingURL=priceInterfaceAccounts.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceInterfaceAccounts.test.js","sourceRoot":"","sources":["../src/priceInterfaceAccounts.test.ts"],"names":[],"mappings":"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"}
package/build/types.d.ts CHANGED
@@ -54,7 +54,7 @@ export type ReservesConfig = {
54
54
  instantWithdrawalWindowLimitBp: number;
55
55
  managementFeeBps: bigint;
56
56
  withdrawalCancelCooldownSeconds: number;
57
- maxSwapSlippageBp: number;
57
+ maxSlippageBp: number;
58
58
  navAumChangeThresholdBps: number;
59
59
  padding: number[];
60
60
  padding1: number[];
@@ -123,6 +123,10 @@ export type LoopscaleLoanEntry = {
123
123
  export type LoopscaleStrategyEntry = {
124
124
  strategy: web3.PublicKey;
125
125
  };
126
+ export type LoopscaleVaultStakeEntry = {
127
+ vaultStake: web3.PublicKey;
128
+ endTime: bigint;
129
+ };
126
130
  export type KaminoFarmEntry = {
127
131
  farmState: web3.PublicKey;
128
132
  userState: web3.PublicKey;
@@ -161,6 +165,10 @@ export type StrategyPosition = {
161
165
  loopscaleStrategy: {
162
166
  0: LoopscaleStrategyEntry;
163
167
  };
168
+ } | {
169
+ loopscaleVaultStake: {
170
+ 0: LoopscaleVaultStakeEntry;
171
+ };
164
172
  } | {
165
173
  kaminoFarm: {
166
174
  0: KaminoFarmEntry;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AAoQA,oCAAoC;AACpC,iCAAiC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AA0QA,oCAAoC;AACpC,iCAAiC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exponent-labs/exponent-vaults-fetcher",
3
- "version": "0.9.20",
3
+ "version": "0.9.22",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "license": "AGPL-3.0",
@@ -9,8 +9,8 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "@coral-xyz/anchor": "0.30.1",
12
- "@exponent-labs/exponent-vaults-idl": "0.9.20",
13
- "@exponent-labs/exponent-vaults-pda": "0.9.20"
12
+ "@exponent-labs/exponent-vaults-idl": "0.9.22",
13
+ "@exponent-labs/exponent-vaults-pda": "0.9.22"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@types/bn.js": "^5.1.0",
package/src/fetcher.ts CHANGED
@@ -5,7 +5,8 @@ import { ExponentVaultsPDA } from "@exponent-labs/exponent-vaults-pda"
5
5
 
6
6
  import { IGNORED_VAULTS } from "./constants"
7
7
  import { transformAnchorData } from "./typeUtils"
8
- import { ActionProposal, ExponentPrices, ExponentVault, type ScopePriceConfig, WithdrawalAccount } from "./types"
8
+ import { decodePriceInterfaceAccounts } from "./priceInterfaceAccounts"
9
+ import { ActionProposal, ExponentPrices, ExponentVault, WithdrawalAccount } from "./types"
9
10
 
10
11
  const EXPONENT_PRICES_META_DISCRIMINATOR = Buffer.from([188, 97, 196, 52, 192, 41, 211, 196])
11
12
  const MAX_PRICES = 1024
@@ -480,67 +481,3 @@ export class ExponentVaultsFetcher {
480
481
  return priceIds
481
482
  }
482
483
  }
483
-
484
- type DecodedPriceInterfaceAccounts = {
485
- interfaceAccounts: web3.PublicKey[]
486
- scopeConfig: ScopePriceConfig | null
487
- }
488
-
489
- function decodePriceInterfaceAccounts(data: Buffer | Uint8Array): DecodedPriceInterfaceAccounts {
490
- const buffer = Buffer.from(data)
491
- if (buffer.length < 12) {
492
- throw new Error(`PriceInterfaceAccounts account too small: ${buffer.length} bytes`)
493
- }
494
-
495
- const len = buffer.readUInt32LE(8)
496
- const expectedSize = 8 + 4 + len * PUBKEY_BYTES
497
- if (buffer.length < expectedSize) {
498
- throw new Error(`PriceInterfaceAccounts account truncated: expected ${expectedSize} bytes, got ${buffer.length}`)
499
- }
500
-
501
- const interfaceAccounts: web3.PublicKey[] = []
502
- let offset = 12
503
- for (let i = 0; i < len; i++) {
504
- interfaceAccounts.push(new web3.PublicKey(buffer.subarray(offset, offset + PUBKEY_BYTES)))
505
- offset += PUBKEY_BYTES
506
- }
507
-
508
- if (buffer.length === expectedSize) {
509
- return { interfaceAccounts, scopeConfig: null }
510
- }
511
-
512
- const stateTag = buffer.readUInt8(offset)
513
- offset += 1
514
-
515
- if (stateTag === 0 || stateTag === 1) {
516
- return { interfaceAccounts, scopeConfig: null }
517
- }
518
-
519
- if (stateTag !== 2) {
520
- throw new Error(`Unknown PriceInterfaceAccounts state tag: ${stateTag}`)
521
- }
522
-
523
- const scopeConfigSize = 4 * 2 + U64_BYTES
524
- if (buffer.length < offset + scopeConfigSize) {
525
- throw new Error(
526
- `PriceInterfaceAccounts Scope state truncated: expected ${offset + scopeConfigSize} bytes, got ${buffer.length}`,
527
- )
528
- }
529
-
530
- const priceChain = [
531
- buffer.readUInt16LE(offset),
532
- buffer.readUInt16LE(offset + 2),
533
- buffer.readUInt16LE(offset + 4),
534
- buffer.readUInt16LE(offset + 6),
535
- ] as [number, number, number, number]
536
- offset += 8
537
- const maximumAgeSeconds = buffer.readBigUInt64LE(offset)
538
-
539
- return {
540
- interfaceAccounts,
541
- scopeConfig: {
542
- priceChain,
543
- maximumAgeSeconds,
544
- },
545
- }
546
- }
@@ -0,0 +1,70 @@
1
+ import assert from "node:assert/strict"
2
+ import test from "node:test"
3
+
4
+ import { web3 } from "@coral-xyz/anchor"
5
+
6
+ import { decodePriceInterfaceAccounts } from "./priceInterfaceAccounts"
7
+
8
+ const FIRST_ACCOUNT = new web3.PublicKey("11111111111111111111111111111112")
9
+ const SECOND_ACCOUNT = new web3.PublicKey("11111111111111111111111111111113")
10
+ const PRICE_CHAIN = [3, 5, 8, 13] as const
11
+ const MAXIMUM_AGE_SECONDS = 9_007_199_254_740_993n
12
+
13
+ function createPriceInterfacePayload(params: { isScope: boolean }): Uint8Array {
14
+ const interfaceAccounts = [FIRST_ACCOUNT, SECOND_ACCOUNT]
15
+ const baseSize = 8 + 4 + interfaceAccounts.length * 32
16
+ const data = new Uint8Array(baseSize + (params.isScope ? 17 : 0))
17
+ const view = new DataView(data.buffer)
18
+
19
+ view.setUint32(8, interfaceAccounts.length, true)
20
+ let offset = 12
21
+ for (const account of interfaceAccounts) {
22
+ data.set(account.toBytes(), offset)
23
+ offset += 32
24
+ }
25
+
26
+ if (!params.isScope) return data
27
+
28
+ data[offset] = 2
29
+ offset += 1
30
+ PRICE_CHAIN.forEach((value, index) => view.setUint16(offset + index * 2, value, true))
31
+ view.setBigUint64(offset + 8, MAXIMUM_AGE_SECONDS, true)
32
+ return data
33
+ }
34
+
35
+ test("decodes Scope state without Node Buffer integer methods", () => {
36
+ const globalWithBuffer = globalThis as typeof globalThis & { Buffer: typeof Buffer }
37
+ const originalBuffer = globalWithBuffer.Buffer
38
+
39
+ globalWithBuffer.Buffer = {
40
+ from: (value: Uint8Array) => Uint8Array.from(value),
41
+ } as unknown as typeof Buffer
42
+
43
+ try {
44
+ const decoded = decodePriceInterfaceAccounts(createPriceInterfacePayload({ isScope: true }))
45
+
46
+ assert.deepEqual(
47
+ decoded.interfaceAccounts.map((account) => account.toBase58()),
48
+ [FIRST_ACCOUNT.toBase58(), SECOND_ACCOUNT.toBase58()],
49
+ )
50
+ assert.deepEqual(decoded.scopeConfig, {
51
+ priceChain: PRICE_CHAIN,
52
+ maximumAgeSeconds: MAXIMUM_AGE_SECONDS,
53
+ })
54
+ } finally {
55
+ globalWithBuffer.Buffer = originalBuffer
56
+ }
57
+ })
58
+
59
+ test("returns null Scope config when no trailing state exists", () => {
60
+ const decoded = decodePriceInterfaceAccounts(createPriceInterfacePayload({ isScope: false }))
61
+
62
+ assert.equal(decoded.scopeConfig, null)
63
+ })
64
+
65
+ test("rejects truncated Scope state", () => {
66
+ const payload = createPriceInterfacePayload({ isScope: true })
67
+ const truncatedPayload = payload.subarray(0, payload.length - 1)
68
+
69
+ assert.throws(() => decodePriceInterfaceAccounts(truncatedPayload), /Scope state truncated/)
70
+ })
@@ -0,0 +1,82 @@
1
+ import { web3 } from "@coral-xyz/anchor"
2
+
3
+ import { type ScopePriceConfig } from "./types"
4
+
5
+ const DISCRIMINATOR_BYTES = 8
6
+ const VECTOR_LENGTH_BYTES = 4
7
+ const PUBKEY_BYTES = 32
8
+ const SCOPE_PRICE_CHAIN_LENGTH = 4
9
+ const U16_BYTES = 2
10
+ const U64_BYTES = 8
11
+
12
+ export type DecodedPriceInterfaceAccounts = {
13
+ interfaceAccounts: web3.PublicKey[]
14
+ scopeConfig: ScopePriceConfig | null
15
+ }
16
+
17
+ const readU16Le = (data: Uint8Array, offset: number): number =>
18
+ new DataView(data.buffer, data.byteOffset + offset, U16_BYTES).getUint16(0, true)
19
+
20
+ const readU32Le = (data: Uint8Array, offset: number): number =>
21
+ new DataView(data.buffer, data.byteOffset + offset, VECTOR_LENGTH_BYTES).getUint32(0, true)
22
+
23
+ const readU64Le = (data: Uint8Array, offset: number): bigint =>
24
+ new DataView(data.buffer, data.byteOffset + offset, U64_BYTES).getBigUint64(0, true)
25
+
26
+ /**
27
+ * Decodes the variable-length account list and optional price-source state used by Exponent prices.
28
+ */
29
+ export function decodePriceInterfaceAccounts(data: Buffer | Uint8Array): DecodedPriceInterfaceAccounts {
30
+ const baseHeaderSize = DISCRIMINATOR_BYTES + VECTOR_LENGTH_BYTES
31
+ if (data.length < baseHeaderSize) {
32
+ throw new Error(`PriceInterfaceAccounts account too small: ${data.length} bytes`)
33
+ }
34
+
35
+ const len = readU32Le(data, DISCRIMINATOR_BYTES)
36
+ const expectedSize = baseHeaderSize + len * PUBKEY_BYTES
37
+ if (data.length < expectedSize) {
38
+ throw new Error(`PriceInterfaceAccounts account truncated: expected ${expectedSize} bytes, got ${data.length}`)
39
+ }
40
+
41
+ const interfaceAccounts: web3.PublicKey[] = []
42
+ let offset = baseHeaderSize
43
+ for (let index = 0; index < len; index += 1) {
44
+ interfaceAccounts.push(new web3.PublicKey(data.subarray(offset, offset + PUBKEY_BYTES)))
45
+ offset += PUBKEY_BYTES
46
+ }
47
+
48
+ if (data.length === expectedSize) {
49
+ return { interfaceAccounts, scopeConfig: null }
50
+ }
51
+
52
+ const stateTag = data[offset]
53
+ offset += 1
54
+ if (stateTag === 0 || stateTag === 1) {
55
+ return { interfaceAccounts, scopeConfig: null }
56
+ }
57
+
58
+ if (stateTag !== 2) {
59
+ throw new Error(`Unknown PriceInterfaceAccounts state tag: ${stateTag}`)
60
+ }
61
+
62
+ const priceChainBytes = SCOPE_PRICE_CHAIN_LENGTH * U16_BYTES
63
+ const scopeConfigSize = priceChainBytes + U64_BYTES
64
+ if (data.length < offset + scopeConfigSize) {
65
+ throw new Error(
66
+ `PriceInterfaceAccounts Scope state truncated: expected ${offset + scopeConfigSize} bytes, got ${data.length}`,
67
+ )
68
+ }
69
+
70
+ const priceChain = Array.from({ length: SCOPE_PRICE_CHAIN_LENGTH }, (_, index) =>
71
+ readU16Le(data, offset + index * U16_BYTES),
72
+ ) as ScopePriceConfig["priceChain"]
73
+ offset += priceChainBytes
74
+
75
+ return {
76
+ interfaceAccounts,
77
+ scopeConfig: {
78
+ priceChain,
79
+ maximumAgeSeconds: readU64Le(data, offset),
80
+ },
81
+ }
82
+ }
package/src/types.ts CHANGED
@@ -54,7 +54,7 @@ export type ReservesConfig = {
54
54
  instantWithdrawalWindowLimitBp: number
55
55
  managementFeeBps: bigint
56
56
  withdrawalCancelCooldownSeconds: number
57
- maxSwapSlippageBp: number
57
+ maxSlippageBp: number
58
58
  navAumChangeThresholdBps: number
59
59
  padding: number[]
60
60
  padding1: number[]
@@ -134,6 +134,11 @@ export type LoopscaleStrategyEntry = {
134
134
  strategy: web3.PublicKey
135
135
  }
136
136
 
137
+ export type LoopscaleVaultStakeEntry = {
138
+ vaultStake: web3.PublicKey
139
+ endTime: bigint
140
+ }
141
+
137
142
  export type KaminoFarmEntry = {
138
143
  farmState: web3.PublicKey
139
144
  userState: web3.PublicKey
@@ -155,6 +160,7 @@ export type StrategyPosition =
155
160
  | { clmmPosition: { 0: ClmmPositionEntry } }
156
161
  | { loopscaleLoan: { 0: LoopscaleLoanEntry } }
157
162
  | { loopscaleStrategy: { 0: LoopscaleStrategyEntry } }
163
+ | { loopscaleVaultStake: { 0: LoopscaleVaultStakeEntry } }
158
164
  | { kaminoFarm: { 0: KaminoFarmEntry } }
159
165
  | { jupiterBorrow: { 0: JupiterBorrowEntry } }
160
166
  | { orcaWhirlpoolPosition: { 0: OrcaWhirlpoolPositionEntry } }