@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 +2 -48
- 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 +9 -1
- package/build/types.js.map +1 -1
- package/package.json +3 -3
- package/src/fetcher.ts +2 -65
- package/src/priceInterfaceAccounts.test.ts +70 -0
- package/src/priceInterfaceAccounts.ts +82 -0
- package/src/types.ts +7 -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;
|
|
@@ -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
|
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":";;;;;AAAA,gEAAuC;AACvC,0DAA4B;AAE5B,8CAAwC;AAExC,qEAAuE;AAEvE,MAAM,aAAa,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAA;AAC5E,MAAM,cAAc,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAA;AAC7E,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAU,CAAA;AAC1C,MAAM,mBAAmB,GAAG,iBAAsB,CAAA;AAElD,SAAS,2BAA2B,CAAC,MAA4B;IAC/D,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,MAAM,GAAG,EAAE,CAAA;IACtD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjE,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEtC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAA;QACnC,MAAM,IAAI,EAAE,CAAA;IACd,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEhC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAChB,MAAM,IAAI,CAAC,CAAA;IACX,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IACtF,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAA;IACxD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,IAAA,mBAAI,EAAC,yDAAyD,EAAE,GAAG,EAAE;IACnE,MAAM,gBAAgB,GAAG,UAA2D,CAAA;IACpF,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAA;IAE9C,gBAAgB,CAAC,MAAM,GAAG;QACxB,IAAI,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;KACxB,CAAA;IAE7B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,qDAA4B,EAAC,2BAA2B,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAE5F,gBAAM,CAAC,SAAS,CACd,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAC9D,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CACtD,CAAA;QACD,gBAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,WAAW;YACvB,iBAAiB,EAAE,mBAAmB;SACvC,CAAC,CAAA;IACJ,CAAC;YAAS,CAAC;QACT,gBAAgB,CAAC,MAAM,GAAG,cAAc,CAAA;IAC1C,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,IAAA,mBAAI,EAAC,yDAAyD,EAAE,GAAG,EAAE;IACnE,MAAM,OAAO,GAAG,IAAA,qDAA4B,EAAC,2BAA2B,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAE7F,gBAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AACzC,CAAC,CAAC,CAAA;AAEF,IAAA,mBAAI,EAAC,+BAA+B,EAAE,GAAG,EAAE;IACzC,MAAM,OAAO,GAAG,2BAA2B,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9D,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAEhE,gBAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,qDAA4B,EAAC,gBAAgB,CAAC,EAAE,uBAAuB,CAAC,CAAA;AAC9F,CAAC,CAAC,CAAA"}
|
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[];
|
|
@@ -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;
|
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.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.
|
|
13
|
-
"@exponent-labs/exponent-vaults-pda": "0.9.
|
|
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 {
|
|
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
|
-
|
|
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 } }
|