@exponent-labs/exponent-vaults-fetcher 0.9.19 → 0.9.21
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 +5 -20
- package/build/fetcher.js.map +1 -1
- package/build/priceInterfaceAccounts.d.ts +10 -0
- package/build/priceInterfaceAccounts.js +59 -0
- package/build/priceInterfaceAccounts.js.map +1 -0
- package/build/priceInterfaceAccounts.test.d.ts +1 -0
- package/build/priceInterfaceAccounts.test.js +60 -0
- package/build/priceInterfaceAccounts.test.js.map +1 -0
- package/build/types.d.ts +22 -1
- package/build/types.js.map +1 -1
- package/package.json +3 -3
- package/src/fetcher.ts +4 -23
- package/src/priceInterfaceAccounts.test.ts +70 -0
- package/src/priceInterfaceAccounts.ts +82 -0
- package/src/types.ts +19 -1
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;
|
|
@@ -304,6 +305,7 @@ class ExponentVaultsFetcher {
|
|
|
304
305
|
impliedApy: impliedApyBps === null ? null : impliedApyBps / 1_000_000,
|
|
305
306
|
priceInterfaceAccounts,
|
|
306
307
|
interfaceAccounts: [],
|
|
308
|
+
scopeConfig: null,
|
|
307
309
|
},
|
|
308
310
|
};
|
|
309
311
|
};
|
|
@@ -346,10 +348,11 @@ class ExponentVaultsFetcher {
|
|
|
346
348
|
if (!info.owner.equals(this.programId)) {
|
|
347
349
|
throw new Error(`PriceInterfaceAccounts owner mismatch: expected ${this.programId.toBase58()}, got ${info.owner.toBase58()}`);
|
|
348
350
|
}
|
|
349
|
-
const decoded = decodePriceInterfaceAccounts(info.data);
|
|
351
|
+
const decoded = (0, priceInterfaceAccounts_1.decodePriceInterfaceAccounts)(info.data);
|
|
350
352
|
for (const entry of activePriceEntries) {
|
|
351
353
|
if (entry.priceInterfaceAccounts.equals(key)) {
|
|
352
|
-
entry.interfaceAccounts = decoded;
|
|
354
|
+
entry.interfaceAccounts = decoded.interfaceAccounts;
|
|
355
|
+
entry.scopeConfig = decoded.scopeConfig;
|
|
353
356
|
}
|
|
354
357
|
}
|
|
355
358
|
}
|
|
@@ -381,22 +384,4 @@ class ExponentVaultsFetcher {
|
|
|
381
384
|
}
|
|
382
385
|
}
|
|
383
386
|
exports.ExponentVaultsFetcher = ExponentVaultsFetcher;
|
|
384
|
-
function decodePriceInterfaceAccounts(data) {
|
|
385
|
-
const buffer = Buffer.from(data);
|
|
386
|
-
if (buffer.length < 12) {
|
|
387
|
-
throw new Error(`PriceInterfaceAccounts account too small: ${buffer.length} bytes`);
|
|
388
|
-
}
|
|
389
|
-
const len = buffer.readUInt32LE(8);
|
|
390
|
-
const expectedSize = 8 + 4 + len * PUBKEY_BYTES;
|
|
391
|
-
if (buffer.length < expectedSize) {
|
|
392
|
-
throw new Error(`PriceInterfaceAccounts account truncated: expected ${expectedSize} bytes, got ${buffer.length}`);
|
|
393
|
-
}
|
|
394
|
-
const interfaceAccounts = [];
|
|
395
|
-
let offset = 12;
|
|
396
|
-
for (let i = 0; i < len; i++) {
|
|
397
|
-
interfaceAccounts.push(new anchor_1.web3.PublicKey(buffer.subarray(offset, offset + PUBKEY_BYTES)));
|
|
398
|
-
offset += PUBKEY_BYTES;
|
|
399
|
-
}
|
|
400
|
-
return interfaceAccounts;
|
|
401
|
-
}
|
|
402
387
|
//# sourceMappingURL=fetcher.js.map
|
package/build/fetcher.js.map
CHANGED
|
@@ -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
|
-
|
|
57
|
+
maxSlippageBp: number;
|
|
58
58
|
navAumChangeThresholdBps: number;
|
|
59
59
|
padding: number[];
|
|
60
60
|
padding1: number[];
|
|
@@ -78,6 +78,7 @@ export type TokenAccountEntry = {
|
|
|
78
78
|
tokenMint: web3.PublicKey;
|
|
79
79
|
balances: {
|
|
80
80
|
tokenAccount: web3.PublicKey;
|
|
81
|
+
mint: web3.PublicKey;
|
|
81
82
|
priceId: PriceId;
|
|
82
83
|
lastObservedAmount: bigint;
|
|
83
84
|
}[];
|
|
@@ -122,6 +123,10 @@ export type LoopscaleLoanEntry = {
|
|
|
122
123
|
export type LoopscaleStrategyEntry = {
|
|
123
124
|
strategy: web3.PublicKey;
|
|
124
125
|
};
|
|
126
|
+
export type LoopscaleVaultStakeEntry = {
|
|
127
|
+
vaultStake: web3.PublicKey;
|
|
128
|
+
endTime: bigint;
|
|
129
|
+
};
|
|
125
130
|
export type KaminoFarmEntry = {
|
|
126
131
|
farmState: web3.PublicKey;
|
|
127
132
|
userState: web3.PublicKey;
|
|
@@ -129,6 +134,9 @@ export type KaminoFarmEntry = {
|
|
|
129
134
|
export type JupiterBorrowEntry = {
|
|
130
135
|
position: web3.PublicKey;
|
|
131
136
|
};
|
|
137
|
+
export type OrcaWhirlpoolPositionEntry = {
|
|
138
|
+
position: web3.PublicKey;
|
|
139
|
+
};
|
|
132
140
|
export type StrategyPosition = {
|
|
133
141
|
orderbook: {
|
|
134
142
|
0: OrderbookEntry;
|
|
@@ -157,6 +165,10 @@ export type StrategyPosition = {
|
|
|
157
165
|
loopscaleStrategy: {
|
|
158
166
|
0: LoopscaleStrategyEntry;
|
|
159
167
|
};
|
|
168
|
+
} | {
|
|
169
|
+
loopscaleVaultStake: {
|
|
170
|
+
0: LoopscaleVaultStakeEntry;
|
|
171
|
+
};
|
|
160
172
|
} | {
|
|
161
173
|
kaminoFarm: {
|
|
162
174
|
0: KaminoFarmEntry;
|
|
@@ -165,6 +177,10 @@ export type StrategyPosition = {
|
|
|
165
177
|
jupiterBorrow: {
|
|
166
178
|
0: JupiterBorrowEntry;
|
|
167
179
|
};
|
|
180
|
+
} | {
|
|
181
|
+
orcaWhirlpoolPosition: {
|
|
182
|
+
0: OrcaWhirlpoolPositionEntry;
|
|
183
|
+
};
|
|
168
184
|
};
|
|
169
185
|
export type ExponentVault = {
|
|
170
186
|
navAumCircuitBreakerState: Uint8Array;
|
|
@@ -223,6 +239,11 @@ export type ExponentPrice = {
|
|
|
223
239
|
impliedApy: number | null;
|
|
224
240
|
priceInterfaceAccounts: web3.PublicKey;
|
|
225
241
|
interfaceAccounts: web3.PublicKey[];
|
|
242
|
+
scopeConfig?: ScopePriceConfig | null;
|
|
243
|
+
};
|
|
244
|
+
export type ScopePriceConfig = {
|
|
245
|
+
priceChain: [number, number, number, number];
|
|
246
|
+
maximumAgeSeconds: bigint;
|
|
226
247
|
};
|
|
227
248
|
export type ExponentPrices = {
|
|
228
249
|
/** Authorized price managers */
|
package/build/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;
|
|
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.
|
|
3
|
+
"version": "0.9.21",
|
|
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.
|
|
13
|
-
"@exponent-labs/exponent-vaults-pda": "0.9.
|
|
12
|
+
"@exponent-labs/exponent-vaults-idl": "0.9.21",
|
|
13
|
+
"@exponent-labs/exponent-vaults-pda": "0.9.21"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"@types/bn.js": "^5.1.0",
|
package/src/fetcher.ts
CHANGED
|
@@ -5,6 +5,7 @@ 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 { decodePriceInterfaceAccounts } from "./priceInterfaceAccounts"
|
|
8
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])
|
|
@@ -382,6 +383,7 @@ export class ExponentVaultsFetcher {
|
|
|
382
383
|
impliedApy: impliedApyBps === null ? null : impliedApyBps / 1_000_000,
|
|
383
384
|
priceInterfaceAccounts,
|
|
384
385
|
interfaceAccounts: [],
|
|
386
|
+
scopeConfig: null,
|
|
385
387
|
},
|
|
386
388
|
}
|
|
387
389
|
}
|
|
@@ -444,7 +446,8 @@ export class ExponentVaultsFetcher {
|
|
|
444
446
|
const decoded = decodePriceInterfaceAccounts(info.data)
|
|
445
447
|
for (const entry of activePriceEntries) {
|
|
446
448
|
if (entry.priceInterfaceAccounts.equals(key)) {
|
|
447
|
-
entry.interfaceAccounts = decoded
|
|
449
|
+
entry.interfaceAccounts = decoded.interfaceAccounts
|
|
450
|
+
entry.scopeConfig = decoded.scopeConfig
|
|
448
451
|
}
|
|
449
452
|
}
|
|
450
453
|
}
|
|
@@ -478,25 +481,3 @@ export class ExponentVaultsFetcher {
|
|
|
478
481
|
return priceIds
|
|
479
482
|
}
|
|
480
483
|
}
|
|
481
|
-
|
|
482
|
-
function decodePriceInterfaceAccounts(data: Buffer | Uint8Array): web3.PublicKey[] {
|
|
483
|
-
const buffer = Buffer.from(data)
|
|
484
|
-
if (buffer.length < 12) {
|
|
485
|
-
throw new Error(`PriceInterfaceAccounts account too small: ${buffer.length} bytes`)
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
const len = buffer.readUInt32LE(8)
|
|
489
|
-
const expectedSize = 8 + 4 + len * PUBKEY_BYTES
|
|
490
|
-
if (buffer.length < expectedSize) {
|
|
491
|
-
throw new Error(`PriceInterfaceAccounts account truncated: expected ${expectedSize} bytes, got ${buffer.length}`)
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
const interfaceAccounts: web3.PublicKey[] = []
|
|
495
|
-
let offset = 12
|
|
496
|
-
for (let i = 0; i < len; i++) {
|
|
497
|
-
interfaceAccounts.push(new web3.PublicKey(buffer.subarray(offset, offset + PUBKEY_BYTES)))
|
|
498
|
-
offset += PUBKEY_BYTES
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
return interfaceAccounts
|
|
502
|
-
}
|
|
@@ -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
|
-
|
|
57
|
+
maxSlippageBp: number
|
|
58
58
|
navAumChangeThresholdBps: number
|
|
59
59
|
padding: number[]
|
|
60
60
|
padding1: number[]
|
|
@@ -82,6 +82,7 @@ export type TokenAccountEntry = {
|
|
|
82
82
|
tokenMint: web3.PublicKey
|
|
83
83
|
balances: {
|
|
84
84
|
tokenAccount: web3.PublicKey
|
|
85
|
+
mint: web3.PublicKey
|
|
85
86
|
priceId: PriceId
|
|
86
87
|
lastObservedAmount: bigint
|
|
87
88
|
}[]
|
|
@@ -133,6 +134,11 @@ export type LoopscaleStrategyEntry = {
|
|
|
133
134
|
strategy: web3.PublicKey
|
|
134
135
|
}
|
|
135
136
|
|
|
137
|
+
export type LoopscaleVaultStakeEntry = {
|
|
138
|
+
vaultStake: web3.PublicKey
|
|
139
|
+
endTime: bigint
|
|
140
|
+
}
|
|
141
|
+
|
|
136
142
|
export type KaminoFarmEntry = {
|
|
137
143
|
farmState: web3.PublicKey
|
|
138
144
|
userState: web3.PublicKey
|
|
@@ -142,6 +148,10 @@ export type JupiterBorrowEntry = {
|
|
|
142
148
|
position: web3.PublicKey
|
|
143
149
|
}
|
|
144
150
|
|
|
151
|
+
export type OrcaWhirlpoolPositionEntry = {
|
|
152
|
+
position: web3.PublicKey
|
|
153
|
+
}
|
|
154
|
+
|
|
145
155
|
export type StrategyPosition =
|
|
146
156
|
| { orderbook: { 0: OrderbookEntry } }
|
|
147
157
|
| { tokenAccount: { 0: TokenAccountEntry } }
|
|
@@ -150,8 +160,10 @@ export type StrategyPosition =
|
|
|
150
160
|
| { clmmPosition: { 0: ClmmPositionEntry } }
|
|
151
161
|
| { loopscaleLoan: { 0: LoopscaleLoanEntry } }
|
|
152
162
|
| { loopscaleStrategy: { 0: LoopscaleStrategyEntry } }
|
|
163
|
+
| { loopscaleVaultStake: { 0: LoopscaleVaultStakeEntry } }
|
|
153
164
|
| { kaminoFarm: { 0: KaminoFarmEntry } }
|
|
154
165
|
| { jupiterBorrow: { 0: JupiterBorrowEntry } }
|
|
166
|
+
| { orcaWhirlpoolPosition: { 0: OrcaWhirlpoolPositionEntry } }
|
|
155
167
|
|
|
156
168
|
export type ExponentVault = {
|
|
157
169
|
navAumCircuitBreakerState: Uint8Array
|
|
@@ -212,6 +224,12 @@ export type ExponentPrice = {
|
|
|
212
224
|
impliedApy: number | null
|
|
213
225
|
priceInterfaceAccounts: web3.PublicKey
|
|
214
226
|
interfaceAccounts: web3.PublicKey[]
|
|
227
|
+
scopeConfig?: ScopePriceConfig | null
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export type ScopePriceConfig = {
|
|
231
|
+
priceChain: [number, number, number, number]
|
|
232
|
+
maximumAgeSeconds: bigint
|
|
215
233
|
}
|
|
216
234
|
|
|
217
235
|
export type ExponentPrices = {
|