@exponent-labs/exponent-vaults-fetcher 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/constants.d.ts +9 -0
- package/build/constants.js +29 -0
- package/build/constants.js.map +1 -0
- package/build/fetcher.d.ts +441 -0
- package/build/fetcher.js +351 -0
- package/build/fetcher.js.map +1 -0
- package/build/index.d.ts +4 -0
- package/build/index.js +23 -0
- package/build/index.js.map +1 -0
- package/build/typeUtils.d.ts +19 -0
- package/build/typeUtils.js +54 -0
- package/build/typeUtils.js.map +1 -0
- package/build/types.d.ts +148 -0
- package/build/types.js +5 -0
- package/build/types.js.map +1 -0
- package/package.json +19 -0
- package/src/constants.ts +33 -0
- package/src/fetcher.ts +436 -0
- package/src/index.ts +4 -0
- package/src/typeUtils.ts +108 -0
- package/src/types.ts +160 -0
- package/tsconfig.json +22 -0
package/build/fetcher.js
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExponentVaultsFetcher = void 0;
|
|
4
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
5
|
+
const exponent_vaults_idl_1 = require("@exponent-labs/exponent-vaults-idl");
|
|
6
|
+
const exponent_vaults_pda_1 = require("@exponent-labs/exponent-vaults-pda");
|
|
7
|
+
const constants_1 = require("./constants");
|
|
8
|
+
const typeUtils_1 = require("./typeUtils");
|
|
9
|
+
const EXPONENT_PRICES_META_DISCRIMINATOR = Buffer.from([188, 97, 196, 52, 192, 41, 211, 196]);
|
|
10
|
+
const MAX_PRICES = 32;
|
|
11
|
+
const MAX_PRICE_MANAGERS = 8;
|
|
12
|
+
const PRICE_NODE_REGISTERS = 4;
|
|
13
|
+
const PRICE_USAGE_AMOUNT_REGISTER = 1;
|
|
14
|
+
const PUBKEY_BYTES = 32;
|
|
15
|
+
const U32_BYTES = 4;
|
|
16
|
+
const U64_BYTES = 8;
|
|
17
|
+
const ZERO_PUBKEY = new anchor_1.web3.PublicKey(new Uint8Array(PUBKEY_BYTES));
|
|
18
|
+
const EXPONENT_PRICE_SIZE = 224;
|
|
19
|
+
const PRICE_NODE_SIZE = EXPONENT_PRICE_SIZE;
|
|
20
|
+
const NODE_REGISTERS_SIZE = PRICE_NODE_REGISTERS * U32_BYTES;
|
|
21
|
+
const PRICE_NODE_WRAPPED_SIZE = NODE_REGISTERS_SIZE + PRICE_NODE_SIZE;
|
|
22
|
+
const EXPONENT_PRICES_MIN_SIZE = 8 + // discriminator
|
|
23
|
+
4 + // price_managers_len
|
|
24
|
+
4 + // padding
|
|
25
|
+
MAX_PRICE_MANAGERS * PUBKEY_BYTES + // price_managers
|
|
26
|
+
8 + // allocator.size
|
|
27
|
+
4 + // allocator.bump_index
|
|
28
|
+
4 + // allocator.free_list_head
|
|
29
|
+
MAX_PRICES * PRICE_NODE_WRAPPED_SIZE + // allocator nodes
|
|
30
|
+
128; // prices_options
|
|
31
|
+
class MockWallet {
|
|
32
|
+
payer;
|
|
33
|
+
constructor(payer) {
|
|
34
|
+
this.payer = payer;
|
|
35
|
+
this.payer = payer;
|
|
36
|
+
}
|
|
37
|
+
async signTransaction(tx) {
|
|
38
|
+
return tx;
|
|
39
|
+
}
|
|
40
|
+
async signAllTransactions(txs) {
|
|
41
|
+
return txs;
|
|
42
|
+
}
|
|
43
|
+
get publicKey() {
|
|
44
|
+
return this.payer.publicKey;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
class ExponentVaultsFetcher {
|
|
48
|
+
program;
|
|
49
|
+
programId;
|
|
50
|
+
constructor(connection, programId = exponent_vaults_idl_1.PROGRAM_ID) {
|
|
51
|
+
this.programId = new anchor_1.web3.PublicKey(programId);
|
|
52
|
+
const provider = new anchor_1.AnchorProvider(connection, new MockWallet(anchor_1.web3.Keypair.generate()));
|
|
53
|
+
const programIdl = {
|
|
54
|
+
...exponent_vaults_idl_1.IDL,
|
|
55
|
+
address: this.programId.toBase58(),
|
|
56
|
+
};
|
|
57
|
+
this.program = new anchor_1.Program(programIdl, provider);
|
|
58
|
+
}
|
|
59
|
+
fetchVault(address) {
|
|
60
|
+
return this.program.account.exponentStrategyVault.fetch(address);
|
|
61
|
+
}
|
|
62
|
+
fetchWithdrawalAccount(address) {
|
|
63
|
+
return this.program.account.withdrawalAccount.fetch(address);
|
|
64
|
+
}
|
|
65
|
+
fetchActionProposal(address) {
|
|
66
|
+
return this.program.account.actionProposal.fetch(address);
|
|
67
|
+
}
|
|
68
|
+
async fetchAllVaults(filters) {
|
|
69
|
+
const discriminator = this.program.account.exponentStrategyVault.coder.accounts.memcmp("exponentStrategyVault");
|
|
70
|
+
const baseFilters = discriminator
|
|
71
|
+
? [{ memcmp: { offset: discriminator.offset, bytes: discriminator.bytes } }]
|
|
72
|
+
: [];
|
|
73
|
+
const allFilters = filters ? [...baseFilters, ...filters] : baseFilters;
|
|
74
|
+
const rawAccounts = await this.program.provider.connection.getProgramAccounts(this.programId, {
|
|
75
|
+
filters: allFilters,
|
|
76
|
+
});
|
|
77
|
+
const decoded = [];
|
|
78
|
+
for (const { pubkey, account } of rawAccounts) {
|
|
79
|
+
if (constants_1.IGNORED_VAULTS.has(pubkey.toBase58()))
|
|
80
|
+
continue;
|
|
81
|
+
// Guard against old/mismatched vault layouts: Borsh may read garbage vec lengths
|
|
82
|
+
// from misaligned data, causing uncatchable OOM via massive array allocation.
|
|
83
|
+
// The first vec (token_entries) is at byte offset 104 (8 discriminator + 3×32 pubkeys).
|
|
84
|
+
// If its u32 length is unreasonably large, the layout is wrong — skip to prevent OOM.
|
|
85
|
+
const TOKEN_ENTRIES_VEC_OFFSET = 104;
|
|
86
|
+
if (account.data.length < TOKEN_ENTRIES_VEC_OFFSET + 4)
|
|
87
|
+
continue;
|
|
88
|
+
const tokenEntriesLen = account.data.readUInt32LE(TOKEN_ENTRIES_VEC_OFFSET);
|
|
89
|
+
if (tokenEntriesLen > 64)
|
|
90
|
+
continue;
|
|
91
|
+
try {
|
|
92
|
+
const data = this.program.account.exponentStrategyVault.coder.accounts.decode("exponentStrategyVault", account.data);
|
|
93
|
+
decoded.push({ publicKey: pubkey, account: data });
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// skip accounts that fail to deserialize
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return decoded;
|
|
100
|
+
}
|
|
101
|
+
async fetchAllActionProposals(filters) {
|
|
102
|
+
const discriminator = this.program.account.actionProposal.coder.accounts.memcmp("actionProposal");
|
|
103
|
+
const baseFilters = discriminator
|
|
104
|
+
? [{ memcmp: { offset: discriminator.offset, bytes: discriminator.bytes } }]
|
|
105
|
+
: [];
|
|
106
|
+
const allFilters = filters ? [...baseFilters, ...filters] : baseFilters;
|
|
107
|
+
const rawAccounts = await this.program.provider.connection.getProgramAccounts(this.programId, {
|
|
108
|
+
filters: allFilters,
|
|
109
|
+
});
|
|
110
|
+
const decoded = [];
|
|
111
|
+
for (const { pubkey, account } of rawAccounts) {
|
|
112
|
+
try {
|
|
113
|
+
const data = this.program.account.actionProposal.coder.accounts.decode("actionProposal", account.data);
|
|
114
|
+
decoded.push({ publicKey: pubkey, account: data });
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// skip accounts that fail to deserialize
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return decoded;
|
|
121
|
+
}
|
|
122
|
+
fetchAllWithdrawalAccounts(filters) {
|
|
123
|
+
return this.program.account.withdrawalAccount.all(filters);
|
|
124
|
+
}
|
|
125
|
+
async fetchAllActionProposalsForVault(vaultAddress, filters) {
|
|
126
|
+
const vaultFilter = {
|
|
127
|
+
memcmp: {
|
|
128
|
+
offset: 8, // discriminator
|
|
129
|
+
bytes: vaultAddress.toBase58(),
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
return this.fetchAllActionProposals(filters ? [vaultFilter, ...filters] : [vaultFilter]);
|
|
133
|
+
}
|
|
134
|
+
async fetchVaultDeserialized(address) {
|
|
135
|
+
if (constants_1.IGNORED_VAULTS.has(address.toBase58())) {
|
|
136
|
+
throw new Error(`Vault ${address.toBase58()} is in the ignore list and cannot be fetched`);
|
|
137
|
+
}
|
|
138
|
+
const vault = await this.fetchVault(address);
|
|
139
|
+
return (0, typeUtils_1.transformAnchorData)(vault);
|
|
140
|
+
}
|
|
141
|
+
async fetchActionProposalDeserialized(address) {
|
|
142
|
+
const proposal = await this.fetchActionProposal(address);
|
|
143
|
+
return (0, typeUtils_1.transformAnchorData)(proposal);
|
|
144
|
+
}
|
|
145
|
+
async fetchWithdrawalAccountDeserialized(address) {
|
|
146
|
+
const withdrawal = await this.fetchWithdrawalAccount(address);
|
|
147
|
+
return (0, typeUtils_1.transformAnchorData)(withdrawal);
|
|
148
|
+
}
|
|
149
|
+
async fetchAllVaultsDeserialized(filters) {
|
|
150
|
+
const accounts = await this.fetchAllVaults(filters);
|
|
151
|
+
return accounts.map(({ publicKey, account }) => ({
|
|
152
|
+
publicKey,
|
|
153
|
+
account: (0, typeUtils_1.transformAnchorData)(account),
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
async fetchAllActionProposalsDeserialized(filters) {
|
|
157
|
+
const accounts = await this.fetchAllActionProposals(filters);
|
|
158
|
+
return accounts.map(({ publicKey, account }) => ({
|
|
159
|
+
publicKey,
|
|
160
|
+
account: (0, typeUtils_1.transformAnchorData)(account),
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
async fetchAllActionProposalsForVaultDeserialized(vaultAddress, filters) {
|
|
164
|
+
const accounts = await this.fetchAllActionProposalsForVault(vaultAddress, filters);
|
|
165
|
+
return accounts.map(({ publicKey, account }) => ({
|
|
166
|
+
publicKey,
|
|
167
|
+
account: (0, typeUtils_1.transformAnchorData)(account),
|
|
168
|
+
}));
|
|
169
|
+
}
|
|
170
|
+
async fetchAllWithdrawalAccountsDeserialized(filters) {
|
|
171
|
+
const accounts = await this.fetchAllWithdrawalAccounts(filters);
|
|
172
|
+
return accounts.map(({ publicKey, account }) => ({
|
|
173
|
+
publicKey,
|
|
174
|
+
account: (0, typeUtils_1.transformAnchorData)(account),
|
|
175
|
+
}));
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Fetch the singleton ExponentPrices account.
|
|
179
|
+
*/
|
|
180
|
+
async fetchExponentPrices() {
|
|
181
|
+
const address = new exponent_vaults_pda_1.ExponentVaultsPDA(this.programId).exponentPrices()[0];
|
|
182
|
+
const accountInfo = await this.program.provider.connection.getAccountInfo(address);
|
|
183
|
+
if (!accountInfo) {
|
|
184
|
+
throw new Error(`ExponentPrices account not found: ${address.toBase58()}`);
|
|
185
|
+
}
|
|
186
|
+
if (!accountInfo.owner.equals(this.programId)) {
|
|
187
|
+
throw new Error(`ExponentPrices owner mismatch: expected ${this.programId.toBase58()}, got ${accountInfo.owner.toBase58()}`);
|
|
188
|
+
}
|
|
189
|
+
const data = accountInfo.data;
|
|
190
|
+
if (data.length < EXPONENT_PRICES_MIN_SIZE) {
|
|
191
|
+
throw new Error(`ExponentPrices account too small: got ${data.length} bytes, expected at least ${EXPONENT_PRICES_MIN_SIZE}`);
|
|
192
|
+
}
|
|
193
|
+
const discriminator = data.subarray(0, 8);
|
|
194
|
+
if (!discriminator.equals(EXPONENT_PRICES_META_DISCRIMINATOR)) {
|
|
195
|
+
throw new Error("Invalid ExponentPrices discriminator");
|
|
196
|
+
}
|
|
197
|
+
let offset = 8;
|
|
198
|
+
const readU32 = () => {
|
|
199
|
+
const value = data.readUInt32LE(offset);
|
|
200
|
+
offset += U32_BYTES;
|
|
201
|
+
return value;
|
|
202
|
+
};
|
|
203
|
+
const readU64 = () => {
|
|
204
|
+
const value = data.readBigUInt64LE(offset);
|
|
205
|
+
offset += U64_BYTES;
|
|
206
|
+
return value;
|
|
207
|
+
};
|
|
208
|
+
const managersLen = readU32();
|
|
209
|
+
offset += U32_BYTES; // _padding0
|
|
210
|
+
if (managersLen > MAX_PRICE_MANAGERS) {
|
|
211
|
+
throw new Error(`Invalid ExponentPrices managers length: ${managersLen}`);
|
|
212
|
+
}
|
|
213
|
+
const managers = [];
|
|
214
|
+
for (let i = 0; i < managersLen; i++) {
|
|
215
|
+
const managerOffset = offset + i * PUBKEY_BYTES;
|
|
216
|
+
managers.push(new anchor_1.web3.PublicKey(data.subarray(managerOffset, managerOffset + PUBKEY_BYTES)));
|
|
217
|
+
}
|
|
218
|
+
offset += MAX_PRICE_MANAGERS * PUBKEY_BYTES; // price_managers
|
|
219
|
+
const allocatorSize = Number(readU64());
|
|
220
|
+
const bumpIndex = readU32();
|
|
221
|
+
const freeListHead = readU32();
|
|
222
|
+
if (allocatorSize > MAX_PRICES) {
|
|
223
|
+
throw new Error(`Invalid ExponentPrices allocator size: ${allocatorSize}`);
|
|
224
|
+
}
|
|
225
|
+
if (bumpIndex > MAX_PRICES + 1) {
|
|
226
|
+
throw new Error(`Invalid ExponentPrices bump index: ${bumpIndex}`);
|
|
227
|
+
}
|
|
228
|
+
if (freeListHead > MAX_PRICES + 1) {
|
|
229
|
+
throw new Error(`Invalid ExponentPrices free list head: ${freeListHead}`);
|
|
230
|
+
}
|
|
231
|
+
const nodesOffset = offset;
|
|
232
|
+
const readNodeAt = (index) => {
|
|
233
|
+
if (index < 1 || index > MAX_PRICES) {
|
|
234
|
+
throw new Error(`Invalid ExponentPrices node index: ${index}`);
|
|
235
|
+
}
|
|
236
|
+
const nodeOffset = nodesOffset + (index - 1) * PRICE_NODE_WRAPPED_SIZE;
|
|
237
|
+
const usageAmount = data.readUInt32LE(nodeOffset + PRICE_USAGE_AMOUNT_REGISTER * U32_BYTES);
|
|
238
|
+
const valueOffset = nodeOffset + NODE_REGISTERS_SIZE;
|
|
239
|
+
const priceMintBytes = data.subarray(valueOffset, valueOffset + PUBKEY_BYTES);
|
|
240
|
+
const priceMint = new anchor_1.web3.PublicKey(priceMintBytes);
|
|
241
|
+
const active = priceMintBytes.some((b) => b !== 0);
|
|
242
|
+
const underlyingMint = new anchor_1.web3.PublicKey(data.subarray(valueOffset + PUBKEY_BYTES, valueOffset + PUBKEY_BYTES * 2));
|
|
243
|
+
const priceOffset = valueOffset + PUBKEY_BYTES * 2;
|
|
244
|
+
const n0 = data.readBigUInt64LE(priceOffset);
|
|
245
|
+
const n1 = data.readBigUInt64LE(priceOffset + 8);
|
|
246
|
+
const n2 = data.readBigUInt64LE(priceOffset + 16);
|
|
247
|
+
const n3 = data.readBigUInt64LE(priceOffset + 24);
|
|
248
|
+
const positionsAmount = data.readBigUInt64LE(valueOffset + 96);
|
|
249
|
+
const lastUpdatedAt = data.readBigUInt64LE(valueOffset + 104);
|
|
250
|
+
const lastUpdatedSlot = data.readBigUInt64LE(valueOffset + 112);
|
|
251
|
+
const priceType = data.readUInt8(valueOffset + 120);
|
|
252
|
+
const impliedApyBps = priceType === 3 ? data.readUInt32LE(valueOffset + 121) : null;
|
|
253
|
+
const priceInterfaceAccounts = new anchor_1.web3.PublicKey(data.subarray(valueOffset + 128, valueOffset + 128 + PUBKEY_BYTES));
|
|
254
|
+
return {
|
|
255
|
+
active,
|
|
256
|
+
usageAmount,
|
|
257
|
+
price: {
|
|
258
|
+
priceId: BigInt(index),
|
|
259
|
+
priceMint,
|
|
260
|
+
underlyingMint,
|
|
261
|
+
price: [[n0, n1, n2, n3]],
|
|
262
|
+
positionsAmount,
|
|
263
|
+
lastUpdatedAt,
|
|
264
|
+
lastUpdatedSlot,
|
|
265
|
+
priceType,
|
|
266
|
+
impliedApyBps,
|
|
267
|
+
impliedApy: impliedApyBps === null ? null : impliedApyBps / 1_000_000,
|
|
268
|
+
priceInterfaceAccounts,
|
|
269
|
+
interfaceAccounts: [],
|
|
270
|
+
},
|
|
271
|
+
};
|
|
272
|
+
};
|
|
273
|
+
const prices = Array.from({ length: MAX_PRICES + 1 }, () => null);
|
|
274
|
+
let activePrices = 0;
|
|
275
|
+
for (let nodeIndex = 1; nodeIndex <= MAX_PRICES; nodeIndex++) {
|
|
276
|
+
const parsed = readNodeAt(nodeIndex);
|
|
277
|
+
if (parsed.active) {
|
|
278
|
+
prices[nodeIndex] = parsed.price;
|
|
279
|
+
activePrices += 1;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
if (activePrices !== allocatorSize) {
|
|
283
|
+
throw new Error(`Corrupted ExponentPrices allocator: parsed ${activePrices} active entries, allocator has ${allocatorSize}`);
|
|
284
|
+
}
|
|
285
|
+
const activePriceEntries = prices.filter((entry) => entry !== null);
|
|
286
|
+
const uniqueInterfaceAccounts = [
|
|
287
|
+
...new Map(activePriceEntries.map((entry) => [entry.priceInterfaceAccounts.toBase58(), entry.priceInterfaceAccounts])).values(),
|
|
288
|
+
].filter((pubkey) => !pubkey.equals(ZERO_PUBKEY));
|
|
289
|
+
if (uniqueInterfaceAccounts.length > 0) {
|
|
290
|
+
const infos = await this.program.provider.connection.getMultipleAccountsInfo(uniqueInterfaceAccounts);
|
|
291
|
+
const decodedInterfaceAccounts = new Map();
|
|
292
|
+
for (let i = 0; i < uniqueInterfaceAccounts.length; i++) {
|
|
293
|
+
const key = uniqueInterfaceAccounts[i];
|
|
294
|
+
const info = infos[i];
|
|
295
|
+
if (!info) {
|
|
296
|
+
throw new Error(`PriceInterfaceAccounts account not found: ${key.toBase58()}`);
|
|
297
|
+
}
|
|
298
|
+
if (!info.owner.equals(this.programId)) {
|
|
299
|
+
throw new Error(`PriceInterfaceAccounts owner mismatch: expected ${this.programId.toBase58()}, got ${info.owner.toBase58()}`);
|
|
300
|
+
}
|
|
301
|
+
decodedInterfaceAccounts.set(key.toBase58(), decodePriceInterfaceAccounts(info.data));
|
|
302
|
+
}
|
|
303
|
+
for (const entry of activePriceEntries) {
|
|
304
|
+
entry.interfaceAccounts = decodedInterfaceAccounts.get(entry.priceInterfaceAccounts.toBase58()) ?? [];
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return { managers, prices };
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Get all unique price IDs required by a vault's token account positions.
|
|
311
|
+
* Returns a set of price IDs that should exist in an ExponentPrices account.
|
|
312
|
+
*/
|
|
313
|
+
getRequiredPriceIds(vault) {
|
|
314
|
+
const priceIds = new Set();
|
|
315
|
+
for (const position of vault.strategyPositions) {
|
|
316
|
+
if ("tokenAccount" in position) {
|
|
317
|
+
const entry = position.tokenAccount[0];
|
|
318
|
+
for (const balance of entry.balances) {
|
|
319
|
+
if ("simple" in balance.priceId) {
|
|
320
|
+
priceIds.add(balance.priceId.simple.priceId);
|
|
321
|
+
}
|
|
322
|
+
else if ("multiply" in balance.priceId) {
|
|
323
|
+
for (const id of balance.priceId.multiply.priceIds) {
|
|
324
|
+
priceIds.add(id);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return priceIds;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
exports.ExponentVaultsFetcher = ExponentVaultsFetcher;
|
|
334
|
+
function decodePriceInterfaceAccounts(data) {
|
|
335
|
+
if (data.length < 12) {
|
|
336
|
+
throw new Error(`PriceInterfaceAccounts account too small: ${data.length} bytes`);
|
|
337
|
+
}
|
|
338
|
+
const len = data.readUInt32LE(8);
|
|
339
|
+
const expectedSize = 8 + 4 + len * PUBKEY_BYTES;
|
|
340
|
+
if (data.length < expectedSize) {
|
|
341
|
+
throw new Error(`PriceInterfaceAccounts account truncated: expected ${expectedSize} bytes, got ${data.length}`);
|
|
342
|
+
}
|
|
343
|
+
const interfaceAccounts = [];
|
|
344
|
+
let offset = 12;
|
|
345
|
+
for (let i = 0; i < len; i++) {
|
|
346
|
+
interfaceAccounts.push(new anchor_1.web3.PublicKey(data.subarray(offset, offset + PUBKEY_BYTES)));
|
|
347
|
+
offset += PUBKEY_BYTES;
|
|
348
|
+
}
|
|
349
|
+
return interfaceAccounts;
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=fetcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
ADDED
package/build/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ExponentVaultsFetcher = void 0;
|
|
18
|
+
var fetcher_1 = require("./fetcher");
|
|
19
|
+
Object.defineProperty(exports, "ExponentVaultsFetcher", { enumerable: true, get: function () { return fetcher_1.ExponentVaultsFetcher; } });
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
|
+
__exportStar(require("./constants"), exports);
|
|
22
|
+
__exportStar(require("./typeUtils"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAAiD;AAAxC,gHAAA,qBAAqB,OAAA;AAC9B,0CAAuB;AACvB,8CAA2B;AAC3B,8CAA2B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="bn.js" />
|
|
2
|
+
import { BN, web3 } from "@coral-xyz/anchor";
|
|
3
|
+
type AnchorEnumKey<T> = T extends Record<string, any> ? {
|
|
4
|
+
[K in keyof T]: T[K] extends Record<string, never> ? K : never;
|
|
5
|
+
}[keyof T] : never;
|
|
6
|
+
type IsAnchorEnum<T> = T extends Record<string, any> ? {
|
|
7
|
+
[K in keyof T]: T[K] extends Record<string, never> ? true : false;
|
|
8
|
+
}[keyof T] extends true ? true : false : false;
|
|
9
|
+
type IsPublicKey<T> = T extends {
|
|
10
|
+
toBase58: any;
|
|
11
|
+
equals: any;
|
|
12
|
+
toBuffer: any;
|
|
13
|
+
} ? true : false;
|
|
14
|
+
type Transform<T> = IsPublicKey<T> extends true ? web3.PublicKey : T extends BN ? bigint : T extends Array<infer U> ? Array<Transform<U>> : T extends Map<infer K, infer V> ? Map<Transform<K>, Transform<V>> : T extends Set<infer U> ? Set<Transform<U>> : T extends Uint8Array ? Uint8Array : T extends Date ? Date : T extends object ? IsAnchorEnum<T> extends true ? AnchorEnumKey<T> : {
|
|
15
|
+
[K in keyof T]: Transform<T[K]>;
|
|
16
|
+
} : T;
|
|
17
|
+
export type TransformedAnchorType<T> = Transform<T>;
|
|
18
|
+
export declare function transformAnchorData<T>(data: T): TransformedAnchorType<T>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformAnchorData = void 0;
|
|
4
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
5
|
+
// Helper function to convert at runtime
|
|
6
|
+
function transformAnchorData(data) {
|
|
7
|
+
// Preserve PublicKey instances
|
|
8
|
+
if (data instanceof anchor_1.web3.PublicKey) {
|
|
9
|
+
return data;
|
|
10
|
+
}
|
|
11
|
+
if (data instanceof anchor_1.BN) {
|
|
12
|
+
return BigInt(data.toString());
|
|
13
|
+
}
|
|
14
|
+
if (data instanceof Date) {
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
if (data instanceof Uint8Array) {
|
|
18
|
+
return data;
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(data)) {
|
|
21
|
+
return data.map(transformAnchorData);
|
|
22
|
+
}
|
|
23
|
+
if (data instanceof Map) {
|
|
24
|
+
const result = new Map();
|
|
25
|
+
data.forEach((value, key) => {
|
|
26
|
+
result.set(transformAnchorData(key), transformAnchorData(value));
|
|
27
|
+
});
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
if (data instanceof Set) {
|
|
31
|
+
return new Set([...data].map(transformAnchorData));
|
|
32
|
+
}
|
|
33
|
+
if (data && typeof data === "object") {
|
|
34
|
+
// Check if it's an Anchor enum
|
|
35
|
+
const keys = Object.keys(data);
|
|
36
|
+
if (keys.length === 1) {
|
|
37
|
+
const value = data[keys[0]];
|
|
38
|
+
if (value && typeof value === "object" && Object.keys(value).length === 0) {
|
|
39
|
+
return keys[0];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Regular object - recursively transform
|
|
43
|
+
const result = {};
|
|
44
|
+
for (const key in data) {
|
|
45
|
+
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
|
46
|
+
result[key] = transformAnchorData(data[key]);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
return data;
|
|
52
|
+
}
|
|
53
|
+
exports.transformAnchorData = transformAnchorData;
|
|
54
|
+
//# sourceMappingURL=typeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeUtils.js","sourceRoot":"","sources":["../src/typeUtils.ts"],"names":[],"mappings":";;;AAAA,8CAA4C;AAmD5C,wCAAwC;AACxC,SAAgB,mBAAmB,CAAI,IAAO;IAC5C,+BAA+B;IAC/B,IAAI,IAAI,YAAY,aAAI,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,IAAW,CAAA;IACpB,CAAC;IAED,IAAI,IAAI,YAAY,WAAE,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAQ,CAAA;IACvC,CAAC;IAED,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QACzB,OAAO,IAAW,CAAA;IACpB,CAAC;IAED,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;QAC/B,OAAO,IAAW,CAAA;IACpB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAQ,CAAA;IAC7C,CAAC;IAED,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC1B,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;QACF,OAAO,MAAa,CAAA;IACtB,CAAC;IAED,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;QACxB,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAQ,CAAA;IAC3D,CAAC;IAED,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,+BAA+B;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAsB,CAAC,CAAA;YAChD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1E,OAAO,IAAI,CAAC,CAAC,CAAQ,CAAA;YACvB,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,MAAM,MAAM,GAAQ,EAAE,CAAA;QACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,IAAW,CAAA;AACpB,CAAC;AAvDD,kDAuDC"}
|
package/build/types.d.ts
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { IdlTypes, web3 } from "@coral-xyz/anchor";
|
|
2
|
+
import { ExponentVaults } from "@exponent-labs/exponent-vaults-idl";
|
|
3
|
+
import { TransformedAnchorType } from "./typeUtils";
|
|
4
|
+
export type ExponentVaultsTypes = IdlTypes<ExponentVaults>;
|
|
5
|
+
type AnchorExponentVaultAccount = ExponentVaultsTypes["exponentStrategyVault"];
|
|
6
|
+
export type ExponentVaultRaw = TransformedAnchorType<AnchorExponentVaultAccount>;
|
|
7
|
+
type AnchorActionProposalAccount = ExponentVaultsTypes["actionProposal"];
|
|
8
|
+
export type ActionProposalRaw = TransformedAnchorType<AnchorActionProposalAccount>;
|
|
9
|
+
type AnchorVaultFinancials = ExponentVaultsTypes["vaultFinancials"];
|
|
10
|
+
export type VaultFinancials = TransformedAnchorType<AnchorVaultFinancials>;
|
|
11
|
+
export type VaultRoles = ExponentVaultRaw["roles"];
|
|
12
|
+
export type ProposalVoteConfig = ExponentVaultRaw["proposalVoteConfig"];
|
|
13
|
+
export type ReservesConfig = ExponentVaultRaw["reservesConfig"];
|
|
14
|
+
export type ProposalStatus = ActionProposalRaw["status"];
|
|
15
|
+
export type AnchorPriceId = ExponentVaultsTypes["priceId"];
|
|
16
|
+
export type PriceId = {
|
|
17
|
+
simple: {
|
|
18
|
+
priceId: bigint;
|
|
19
|
+
underlyingMint: web3.PublicKey;
|
|
20
|
+
};
|
|
21
|
+
} | {
|
|
22
|
+
multiply: {
|
|
23
|
+
priceIds: bigint[];
|
|
24
|
+
underlyingMint: web3.PublicKey;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export type TokenAccountEntry = {
|
|
28
|
+
tokenMint: web3.PublicKey;
|
|
29
|
+
balances: {
|
|
30
|
+
tokenAccount: web3.PublicKey;
|
|
31
|
+
priceId: PriceId;
|
|
32
|
+
}[];
|
|
33
|
+
};
|
|
34
|
+
export type OrderbookEntry = {
|
|
35
|
+
orderbook: web3.PublicKey;
|
|
36
|
+
userEscrowIdx: number;
|
|
37
|
+
mint: web3.PublicKey;
|
|
38
|
+
offerIdxVec: number[];
|
|
39
|
+
priceIdPt: PriceId;
|
|
40
|
+
baseMint: web3.PublicKey;
|
|
41
|
+
totalLiquidity: bigint;
|
|
42
|
+
orderbookFlag: number;
|
|
43
|
+
};
|
|
44
|
+
export type TokenEntryInterfaceType = "generic" | "kamino" | "marginfi" | "jitoRestaking" | "perena";
|
|
45
|
+
export type TokenEntry = {
|
|
46
|
+
mint: web3.PublicKey;
|
|
47
|
+
tokenSquadsAccount: web3.PublicKey;
|
|
48
|
+
tokenAccountVault: web3.PublicKey;
|
|
49
|
+
currentLiquidity: bigint;
|
|
50
|
+
mintFlag: number;
|
|
51
|
+
interfaceType: TokenEntryInterfaceType;
|
|
52
|
+
forceDeallocatePolicyIds: bigint[];
|
|
53
|
+
priceId: PriceId;
|
|
54
|
+
};
|
|
55
|
+
export type YieldPositionEntry = {
|
|
56
|
+
yieldPosition: web3.PublicKey;
|
|
57
|
+
vault: web3.PublicKey;
|
|
58
|
+
priceIdPt: PriceId;
|
|
59
|
+
};
|
|
60
|
+
export type ClmmPositionEntry = {
|
|
61
|
+
lpPosition: web3.PublicKey;
|
|
62
|
+
market: web3.PublicKey;
|
|
63
|
+
priceIdPt: PriceId;
|
|
64
|
+
priceIdSy: PriceId;
|
|
65
|
+
};
|
|
66
|
+
export type StrategyPosition = {
|
|
67
|
+
orderbook: {
|
|
68
|
+
0: OrderbookEntry;
|
|
69
|
+
};
|
|
70
|
+
} | {
|
|
71
|
+
tokenAccount: {
|
|
72
|
+
0: TokenAccountEntry;
|
|
73
|
+
};
|
|
74
|
+
} | {
|
|
75
|
+
obligation: {
|
|
76
|
+
0: unknown;
|
|
77
|
+
};
|
|
78
|
+
} | {
|
|
79
|
+
yieldPosition: {
|
|
80
|
+
0: YieldPositionEntry;
|
|
81
|
+
};
|
|
82
|
+
} | {
|
|
83
|
+
clmmPosition: {
|
|
84
|
+
0: ClmmPositionEntry;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
export type ExponentVault = {
|
|
88
|
+
addressLookupTable: web3.PublicKey;
|
|
89
|
+
squadsSettings: web3.PublicKey;
|
|
90
|
+
squadsVault: web3.PublicKey;
|
|
91
|
+
tokenEntries: TokenEntry[];
|
|
92
|
+
underlyingMint: web3.PublicKey;
|
|
93
|
+
mintLp: web3.PublicKey;
|
|
94
|
+
tokenLpEscrow: web3.PublicKey;
|
|
95
|
+
normalWithdrawalCutBp: number;
|
|
96
|
+
selfAddress: web3.PublicKey;
|
|
97
|
+
signerBump: number[];
|
|
98
|
+
statusFlags: number;
|
|
99
|
+
financials: VaultFinancials;
|
|
100
|
+
strategyPositions: StrategyPosition[];
|
|
101
|
+
maxAumSupply: bigint;
|
|
102
|
+
seedId: number[];
|
|
103
|
+
feeTreasury: web3.PublicKey;
|
|
104
|
+
roles: VaultRoles;
|
|
105
|
+
proposalVoteConfig: ProposalVoteConfig;
|
|
106
|
+
reservesConfig: ReservesConfig;
|
|
107
|
+
};
|
|
108
|
+
export type ActionProposal = {
|
|
109
|
+
vault: web3.PublicKey;
|
|
110
|
+
proposalId: bigint;
|
|
111
|
+
proposer: web3.PublicKey;
|
|
112
|
+
actionData: Uint8Array;
|
|
113
|
+
createdAt: bigint;
|
|
114
|
+
votingEndsAt: bigint;
|
|
115
|
+
timelockSeconds: number;
|
|
116
|
+
executableAt: bigint;
|
|
117
|
+
status: ProposalStatus;
|
|
118
|
+
rejectVotes: bigint;
|
|
119
|
+
optOutVotes: bigint;
|
|
120
|
+
bump: number;
|
|
121
|
+
reserved: number[];
|
|
122
|
+
};
|
|
123
|
+
export type ExponentPrice = {
|
|
124
|
+
priceId: bigint;
|
|
125
|
+
priceMint: web3.PublicKey;
|
|
126
|
+
underlyingMint: web3.PublicKey;
|
|
127
|
+
price: Array<Array<bigint | number | string>>;
|
|
128
|
+
positionsAmount: bigint;
|
|
129
|
+
lastUpdatedAt: bigint;
|
|
130
|
+
lastUpdatedSlot: bigint;
|
|
131
|
+
priceType: number;
|
|
132
|
+
impliedApyBps: number | null;
|
|
133
|
+
impliedApy: number | null;
|
|
134
|
+
priceInterfaceAccounts: web3.PublicKey;
|
|
135
|
+
interfaceAccounts: web3.PublicKey[];
|
|
136
|
+
};
|
|
137
|
+
export type ExponentPrices = {
|
|
138
|
+
/** Authorized price managers */
|
|
139
|
+
managers: web3.PublicKey[];
|
|
140
|
+
/**
|
|
141
|
+
* Price storage indexed by on-chain priceId (node index in allocator).
|
|
142
|
+
* Index 0 is unused; valid price ids start from 1.
|
|
143
|
+
*/
|
|
144
|
+
prices: Array<ExponentPrice | null>;
|
|
145
|
+
};
|
|
146
|
+
type AnchorWithdrawalAccount = ExponentVaultsTypes["withdrawalAccount"];
|
|
147
|
+
export type WithdrawalAccount = TransformedAnchorType<AnchorWithdrawalAccount>;
|
|
148
|
+
export {};
|
package/build/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AA8JA,oCAAoC;AACpC,iCAAiC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@exponent-labs/exponent-vaults-fetcher",
|
|
3
|
+
"version": "0.9.0",
|
|
4
|
+
"main": "build/index.js",
|
|
5
|
+
"types": "build/index.d.ts",
|
|
6
|
+
"license": "AGPL-3.0",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc --build"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@coral-xyz/anchor": "0.30.1",
|
|
12
|
+
"@exponent-labs/exponent-vaults-idl": "0.9.0",
|
|
13
|
+
"@exponent-labs/exponent-vaults-pda": "0.9.0"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@types/bn.js": "^5.1.0",
|
|
17
|
+
"typescript": "5.4.5"
|
|
18
|
+
}
|
|
19
|
+
}
|