@exponent-labs/exponent-vaults-fetcher 0.9.0 → 0.9.2

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.
@@ -1,6 +1,3 @@
1
- /// <reference types="bn.js" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
1
  import { Program, web3 } from "@coral-xyz/anchor";
5
2
  import { ExponentVaults } from "@exponent-labs/exponent-vaults-idl";
6
3
  import { ActionProposal, ExponentPrices, ExponentVault, WithdrawalAccount } from "./types";
@@ -8,369 +5,19 @@ export declare class ExponentVaultsFetcher {
8
5
  readonly program: Program<ExponentVaults>;
9
6
  readonly programId: web3.PublicKey;
10
7
  constructor(connection: web3.Connection, programId?: web3.PublicKey | string);
11
- fetchVault(address: web3.PublicKey): Promise<{
12
- addressLookupTable: web3.PublicKey;
13
- squadsSettings: web3.PublicKey;
14
- squadsVault: web3.PublicKey;
15
- tokenEntries: {
16
- mint: web3.PublicKey;
17
- priceId: ({
18
- multiply?: never;
19
- } & {
20
- simple: {
21
- priceId: import("bn.js");
22
- };
23
- }) | ({
24
- simple?: never;
25
- } & {
26
- multiply: {
27
- priceIds: import("bn.js")[];
28
- };
29
- });
30
- tokenSquadsAccount: web3.PublicKey;
31
- tokenAccountVault: web3.PublicKey;
32
- forceDeallocatePolicyIds: import("bn.js")[];
33
- }[];
34
- underlyingMint: web3.PublicKey;
35
- mintLp: web3.PublicKey;
36
- tokenLpEscrow: web3.PublicKey;
37
- normalWithdrawalCutBp: number;
38
- feeTreasury: web3.PublicKey;
39
- selfAddress: web3.PublicKey;
40
- signerBump: number[];
41
- statusFlags: number;
42
- financials: {
43
- lpBalance: import("bn.js");
44
- aumInBase: import("bn.js");
45
- aumInBaseInPositions: import("bn.js");
46
- lpLockedForWithdrawal: import("bn.js");
47
- pendingManagementFeeLp: import("bn.js");
48
- lastManagementFeeAccruedAt: import("bn.js");
49
- pendingWithdrawalBacklogDueAt: number;
50
- instantWithdrawalWindowEnd: number;
51
- instantWithdrawalWindowCapAum: import("bn.js");
52
- instantWithdrawnAumInWindow: import("bn.js");
53
- reserved1: number[];
54
- totalLpStakedInVotes: import("bn.js");
55
- totalLpPendingWithdrawals: import("bn.js");
56
- };
57
- strategyPositions: (({
58
- orderbook?: never;
59
- tokenAccount?: never;
60
- yieldPosition?: never;
61
- clmmPosition?: never;
62
- loopscaleLoan?: never;
63
- loopscaleStrategy?: never;
64
- } & {
65
- obligation: {
66
- 0: {} & {
67
- kaminoObligation: {
68
- 0: {
69
- obligation: web3.PublicKey;
70
- lendingProgramId: web3.PublicKey;
71
- quotePriceId: ({
72
- multiply?: never;
73
- } & {
74
- simple: {
75
- priceId: import("bn.js");
76
- };
77
- }) | ({
78
- simple?: never;
79
- } & {
80
- multiply: {
81
- priceIds: import("bn.js")[];
82
- };
83
- });
84
- reservePriceMappings: {
85
- reserve: web3.PublicKey;
86
- reservePriceId: unknown;
87
- }[];
88
- remainingAccountsAmount: import("bn.js");
89
- minPriceStatusFlags: number;
90
- };
91
- };
92
- };
93
- };
94
- }) | ({
95
- obligation?: never;
96
- tokenAccount?: never;
97
- yieldPosition?: never;
98
- clmmPosition?: never;
99
- loopscaleLoan?: never;
100
- loopscaleStrategy?: never;
101
- } & {
102
- orderbook: {
103
- 0: {
104
- orderbook: web3.PublicKey;
105
- userEscrowIdx: number;
106
- mint: web3.PublicKey;
107
- offerIdxVec: number[];
108
- priceIdPt: ({
109
- multiply?: never;
110
- } & {
111
- simple: {
112
- priceId: import("bn.js");
113
- };
114
- }) | ({
115
- simple?: never;
116
- } & {
117
- multiply: {
118
- priceIds: import("bn.js")[];
119
- };
120
- });
121
- baseMint: web3.PublicKey;
122
- };
123
- };
124
- }) | ({
125
- obligation?: never;
126
- orderbook?: never;
127
- yieldPosition?: never;
128
- clmmPosition?: never;
129
- loopscaleLoan?: never;
130
- loopscaleStrategy?: never;
131
- } & {
132
- tokenAccount: {
133
- 0: {
134
- tokenMint: web3.PublicKey;
135
- balances: {
136
- tokenAccount: web3.PublicKey;
137
- mint: web3.PublicKey;
138
- priceId: ({
139
- multiply?: never;
140
- } & {
141
- simple: {
142
- priceId: import("bn.js");
143
- };
144
- }) | ({
145
- simple?: never;
146
- } & {
147
- multiply: {
148
- priceIds: import("bn.js")[];
149
- };
150
- });
151
- }[];
152
- };
153
- };
154
- }) | ({
155
- obligation?: never;
156
- orderbook?: never;
157
- tokenAccount?: never;
158
- clmmPosition?: never;
159
- loopscaleLoan?: never;
160
- loopscaleStrategy?: never;
161
- } & {
162
- yieldPosition: {
163
- 0: {
164
- yieldPosition: web3.PublicKey;
165
- vault: web3.PublicKey;
166
- priceIdPt: ({
167
- multiply?: never;
168
- } & {
169
- simple: {
170
- priceId: import("bn.js");
171
- };
172
- }) | ({
173
- simple?: never;
174
- } & {
175
- multiply: {
176
- priceIds: import("bn.js")[];
177
- };
178
- });
179
- };
180
- };
181
- }) | ({
182
- obligation?: never;
183
- orderbook?: never;
184
- tokenAccount?: never;
185
- yieldPosition?: never;
186
- loopscaleLoan?: never;
187
- loopscaleStrategy?: never;
188
- } & {
189
- clmmPosition: {
190
- 0: {
191
- lpPosition: web3.PublicKey;
192
- market: web3.PublicKey;
193
- priceIdPt: ({
194
- multiply?: never;
195
- } & {
196
- simple: {
197
- priceId: import("bn.js");
198
- };
199
- }) | ({
200
- simple?: never;
201
- } & {
202
- multiply: {
203
- priceIds: import("bn.js")[];
204
- };
205
- });
206
- priceIdSy: ({
207
- multiply?: never;
208
- } & {
209
- simple: {
210
- priceId: import("bn.js");
211
- };
212
- }) | ({
213
- simple?: never;
214
- } & {
215
- multiply: {
216
- priceIds: import("bn.js")[];
217
- };
218
- });
219
- };
220
- };
221
- }) | ({
222
- obligation?: never;
223
- orderbook?: never;
224
- tokenAccount?: never;
225
- yieldPosition?: never;
226
- clmmPosition?: never;
227
- loopscaleStrategy?: never;
228
- } & {
229
- loopscaleLoan: {
230
- 0: {
231
- loan: web3.PublicKey;
232
- };
233
- };
234
- }) | ({
235
- obligation?: never;
236
- orderbook?: never;
237
- tokenAccount?: never;
238
- yieldPosition?: never;
239
- clmmPosition?: never;
240
- loopscaleLoan?: never;
241
- } & {
242
- loopscaleStrategy: {
243
- 0: {
244
- strategy: web3.PublicKey;
245
- };
246
- };
247
- }))[];
248
- maxAumSupply: import("bn.js");
249
- seedId: number[];
250
- roles: {
251
- manager: web3.PublicKey[];
252
- curator: web3.PublicKey[];
253
- allocator: web3.PublicKey[];
254
- sentinel: web3.PublicKey[];
255
- };
256
- proposalVoteConfig: {
257
- minVotingPeriodSeconds: number;
258
- maxVotingPeriodSeconds: number;
259
- defaultVotingPeriodSeconds: number;
260
- defaultTimelockSeconds: number;
261
- rejectionThresholdBps: import("bn.js");
262
- nextProposalId: import("bn.js");
263
- votingEnabled: boolean;
264
- liveProposalsCount: number;
265
- maxConcurrentLiveProposals: number;
266
- reserved: number[];
267
- };
268
- reservesConfig: {
269
- reservesShareBp: number;
270
- withdrawalPeriod: ({
271
- weeklySchedule?: never;
272
- } & {
273
- interval: {
274
- lockTimeSeconds: number;
275
- };
276
- }) | ({
277
- interval?: never;
278
- } & {
279
- weeklySchedule: {
280
- daysOfWeek: number;
281
- weekInterval: number;
282
- referenceTimestamp: number;
283
- };
284
- });
285
- fastWithdrawalCutBp: number;
286
- instantWithdrawalWindowLimitBp: number;
287
- managementFeeBps: import("bn.js");
288
- withdrawalCancelCooldownSeconds: number;
289
- padding: number[];
290
- padding1: number[];
291
- padding2: number[];
292
- padding3: number[];
293
- };
294
- }>;
295
- fetchWithdrawalAccount(address: web3.PublicKey): Promise<{
296
- vault: web3.PublicKey;
297
- owner: web3.PublicKey;
298
- lpAmountRequested: import("bn.js");
299
- lpAmountRemaining: import("bn.js");
300
- fills: {
301
- mint: web3.PublicKey;
302
- sourceTokenAccount: web3.PublicKey;
303
- tokenAmount: import("bn.js");
304
- }[];
305
- createdAt: number;
306
- updatedAt: number;
307
- reserved: number[];
308
- }>;
309
- fetchActionProposal(address: web3.PublicKey): Promise<{
310
- vault: web3.PublicKey;
311
- proposalId: import("bn.js");
312
- proposer: web3.PublicKey;
313
- actionData: Buffer;
314
- createdAt: import("bn.js");
315
- votingEndsAt: import("bn.js");
316
- timelockSeconds: number;
317
- executableAt: import("bn.js");
318
- status: ({
319
- approved?: never;
320
- rejected?: never;
321
- executed?: never;
322
- cancelled?: never;
323
- draft?: never;
324
- } & {
325
- active: Record<string, never>;
326
- }) | ({
327
- active?: never;
328
- rejected?: never;
329
- executed?: never;
330
- cancelled?: never;
331
- draft?: never;
332
- } & {
333
- approved: Record<string, never>;
334
- }) | ({
335
- active?: never;
336
- approved?: never;
337
- executed?: never;
338
- cancelled?: never;
339
- draft?: never;
340
- } & {
341
- rejected: Record<string, never>;
342
- }) | ({
343
- active?: never;
344
- approved?: never;
345
- rejected?: never;
346
- cancelled?: never;
347
- draft?: never;
348
- } & {
349
- executed: Record<string, never>;
350
- }) | ({
351
- active?: never;
352
- approved?: never;
353
- rejected?: never;
354
- executed?: never;
355
- draft?: never;
356
- } & {
357
- cancelled: Record<string, never>;
358
- }) | ({
359
- active?: never;
360
- approved?: never;
361
- rejected?: never;
362
- executed?: never;
363
- cancelled?: never;
364
- } & {
365
- draft: Record<string, never>;
366
- });
367
- rejectVotes: import("bn.js");
368
- optOutVotes: import("bn.js");
369
- bump: number;
370
- lpSupplySnapshot: import("bn.js");
371
- rejectionRequiredSnapshot: import("bn.js");
372
- reserved: number[];
373
- }>;
8
+ /**
9
+ * Generated account namespaces can differ across IDL shapes:
10
+ * - classic Anchor JSON IDLs expose PascalCase account clients
11
+ * - camelCase TS IDLs expose camelCase account clients
12
+ *
13
+ * Resolve both so the fetcher stays compatible with either generated form.
14
+ */
15
+ private get vaultAccountClient();
16
+ private get withdrawalAccountClient();
17
+ private get actionProposalAccountClient();
18
+ fetchVault(address: web3.PublicKey): any;
19
+ fetchWithdrawalAccount(address: web3.PublicKey): any;
20
+ fetchActionProposal(address: web3.PublicKey): any;
374
21
  fetchAllVaults(filters?: web3.GetProgramAccountsFilter[]): Promise<{
375
22
  publicKey: web3.PublicKey;
376
23
  account: any;
@@ -379,20 +26,7 @@ export declare class ExponentVaultsFetcher {
379
26
  publicKey: web3.PublicKey;
380
27
  account: any;
381
28
  }[]>;
382
- fetchAllWithdrawalAccounts(filters?: web3.GetProgramAccountsFilter[]): Promise<import("@coral-xyz/anchor").ProgramAccount<{
383
- vault: web3.PublicKey;
384
- owner: web3.PublicKey;
385
- lpAmountRequested: import("bn.js");
386
- lpAmountRemaining: import("bn.js");
387
- fills: {
388
- mint: web3.PublicKey;
389
- sourceTokenAccount: web3.PublicKey;
390
- tokenAmount: import("bn.js");
391
- }[];
392
- createdAt: number;
393
- updatedAt: number;
394
- reserved: number[];
395
- }>[]>;
29
+ fetchAllWithdrawalAccounts(filters?: web3.GetProgramAccountsFilter[]): any;
396
30
  fetchAllActionProposalsForVault(vaultAddress: web3.PublicKey, filters?: web3.GetProgramAccountsFilter[]): Promise<{
397
31
  publicKey: web3.PublicKey;
398
32
  account: any;
@@ -412,23 +46,7 @@ export declare class ExponentVaultsFetcher {
412
46
  publicKey: web3.PublicKey;
413
47
  account: ActionProposal;
414
48
  }[]>;
415
- fetchAllWithdrawalAccountsDeserialized(filters?: web3.GetProgramAccountsFilter[]): Promise<{
416
- publicKey: web3.PublicKey;
417
- account: {
418
- vault: web3.PublicKey;
419
- owner: web3.PublicKey;
420
- lpAmountRequested: bigint;
421
- lpAmountRemaining: bigint;
422
- fills: {
423
- mint: web3.PublicKey;
424
- sourceTokenAccount: web3.PublicKey;
425
- tokenAmount: bigint;
426
- }[];
427
- createdAt: number;
428
- updatedAt: number;
429
- reserved: number[];
430
- };
431
- }[]>;
49
+ fetchAllWithdrawalAccountsDeserialized(filters?: web3.GetProgramAccountsFilter[]): Promise<any>;
432
50
  /**
433
51
  * Fetch the singleton ExponentPrices account.
434
52
  */
package/build/fetcher.js CHANGED
@@ -56,17 +56,33 @@ class ExponentVaultsFetcher {
56
56
  };
57
57
  this.program = new anchor_1.Program(programIdl, provider);
58
58
  }
59
+ /**
60
+ * Generated account namespaces can differ across IDL shapes:
61
+ * - classic Anchor JSON IDLs expose PascalCase account clients
62
+ * - camelCase TS IDLs expose camelCase account clients
63
+ *
64
+ * Resolve both so the fetcher stays compatible with either generated form.
65
+ */
66
+ get vaultAccountClient() {
67
+ return this.program.account.ExponentStrategyVault ?? this.program.account.exponentStrategyVault;
68
+ }
69
+ get withdrawalAccountClient() {
70
+ return this.program.account.WithdrawalAccount ?? this.program.account.withdrawalAccount;
71
+ }
72
+ get actionProposalAccountClient() {
73
+ return this.program.account.ActionProposal ?? this.program.account.actionProposal;
74
+ }
59
75
  fetchVault(address) {
60
- return this.program.account.exponentStrategyVault.fetch(address);
76
+ return this.vaultAccountClient.fetch(address);
61
77
  }
62
78
  fetchWithdrawalAccount(address) {
63
- return this.program.account.withdrawalAccount.fetch(address);
79
+ return this.withdrawalAccountClient.fetch(address);
64
80
  }
65
81
  fetchActionProposal(address) {
66
- return this.program.account.actionProposal.fetch(address);
82
+ return this.actionProposalAccountClient.fetch(address);
67
83
  }
68
84
  async fetchAllVaults(filters) {
69
- const discriminator = this.program.account.exponentStrategyVault.coder.accounts.memcmp("exponentStrategyVault");
85
+ const discriminator = this.vaultAccountClient.coder.accounts.memcmp("ExponentStrategyVault");
70
86
  const baseFilters = discriminator
71
87
  ? [{ memcmp: { offset: discriminator.offset, bytes: discriminator.bytes } }]
72
88
  : [];
@@ -89,7 +105,7 @@ class ExponentVaultsFetcher {
89
105
  if (tokenEntriesLen > 64)
90
106
  continue;
91
107
  try {
92
- const data = this.program.account.exponentStrategyVault.coder.accounts.decode("exponentStrategyVault", account.data);
108
+ const data = this.vaultAccountClient.coder.accounts.decode("ExponentStrategyVault", account.data);
93
109
  decoded.push({ publicKey: pubkey, account: data });
94
110
  }
95
111
  catch {
@@ -99,7 +115,7 @@ class ExponentVaultsFetcher {
99
115
  return decoded;
100
116
  }
101
117
  async fetchAllActionProposals(filters) {
102
- const discriminator = this.program.account.actionProposal.coder.accounts.memcmp("actionProposal");
118
+ const discriminator = this.actionProposalAccountClient.coder.accounts.memcmp("ActionProposal");
103
119
  const baseFilters = discriminator
104
120
  ? [{ memcmp: { offset: discriminator.offset, bytes: discriminator.bytes } }]
105
121
  : [];
@@ -110,7 +126,7 @@ class ExponentVaultsFetcher {
110
126
  const decoded = [];
111
127
  for (const { pubkey, account } of rawAccounts) {
112
128
  try {
113
- const data = this.program.account.actionProposal.coder.accounts.decode("actionProposal", account.data);
129
+ const data = this.actionProposalAccountClient.coder.accounts.decode("ActionProposal", account.data);
114
130
  decoded.push({ publicKey: pubkey, account: data });
115
131
  }
116
132
  catch {
@@ -120,7 +136,7 @@ class ExponentVaultsFetcher {
120
136
  return decoded;
121
137
  }
122
138
  fetchAllWithdrawalAccounts(filters) {
123
- return this.program.account.withdrawalAccount.all(filters);
139
+ return this.withdrawalAccountClient.all(filters);
124
140
  }
125
141
  async fetchAllActionProposalsForVault(vaultAddress, filters) {
126
142
  const vaultFilter = {
@@ -249,7 +265,7 @@ class ExponentVaultsFetcher {
249
265
  const lastUpdatedAt = data.readBigUInt64LE(valueOffset + 104);
250
266
  const lastUpdatedSlot = data.readBigUInt64LE(valueOffset + 112);
251
267
  const priceType = data.readUInt8(valueOffset + 120);
252
- const impliedApyBps = priceType === 3 ? data.readUInt32LE(valueOffset + 121) : null;
268
+ const impliedApyBps = priceType === 3 || priceType === 16 ? data.readUInt32LE(valueOffset + 121) : null;
253
269
  const priceInterfaceAccounts = new anchor_1.web3.PublicKey(data.subarray(valueOffset + 128, valueOffset + 128 + PUBKEY_BYTES));
254
270
  return {
255
271
  active,
@@ -287,8 +303,7 @@ class ExponentVaultsFetcher {
287
303
  ...new Map(activePriceEntries.map((entry) => [entry.priceInterfaceAccounts.toBase58(), entry.priceInterfaceAccounts])).values(),
288
304
  ].filter((pubkey) => !pubkey.equals(ZERO_PUBKEY));
289
305
  if (uniqueInterfaceAccounts.length > 0) {
290
- const infos = await this.program.provider.connection.getMultipleAccountsInfo(uniqueInterfaceAccounts);
291
- const decodedInterfaceAccounts = new Map();
306
+ const infos = await Promise.all(uniqueInterfaceAccounts.map((pubkey) => this.program.provider.connection.getAccountInfo(pubkey)));
292
307
  for (let i = 0; i < uniqueInterfaceAccounts.length; i++) {
293
308
  const key = uniqueInterfaceAccounts[i];
294
309
  const info = infos[i];
@@ -298,13 +313,18 @@ class ExponentVaultsFetcher {
298
313
  if (!info.owner.equals(this.programId)) {
299
314
  throw new Error(`PriceInterfaceAccounts owner mismatch: expected ${this.programId.toBase58()}, got ${info.owner.toBase58()}`);
300
315
  }
301
- decodedInterfaceAccounts.set(key.toBase58(), decodePriceInterfaceAccounts(info.data));
302
- }
303
- for (const entry of activePriceEntries) {
304
- entry.interfaceAccounts = decodedInterfaceAccounts.get(entry.priceInterfaceAccounts.toBase58()) ?? [];
316
+ const decoded = decodePriceInterfaceAccounts(info.data);
317
+ for (const entry of activePriceEntries) {
318
+ if (entry.priceInterfaceAccounts.equals(key)) {
319
+ entry.interfaceAccounts = decoded;
320
+ }
321
+ }
305
322
  }
306
323
  }
307
- return { managers, prices };
324
+ return {
325
+ managers,
326
+ prices,
327
+ };
308
328
  }
309
329
  /**
310
330
  * Get all unique price IDs required by a vault's token account positions.
@@ -332,18 +352,19 @@ class ExponentVaultsFetcher {
332
352
  }
333
353
  exports.ExponentVaultsFetcher = ExponentVaultsFetcher;
334
354
  function decodePriceInterfaceAccounts(data) {
335
- if (data.length < 12) {
336
- throw new Error(`PriceInterfaceAccounts account too small: ${data.length} bytes`);
355
+ const buffer = Buffer.from(data);
356
+ if (buffer.length < 12) {
357
+ throw new Error(`PriceInterfaceAccounts account too small: ${buffer.length} bytes`);
337
358
  }
338
- const len = data.readUInt32LE(8);
359
+ const len = buffer.readUInt32LE(8);
339
360
  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}`);
361
+ if (buffer.length < expectedSize) {
362
+ throw new Error(`PriceInterfaceAccounts account truncated: expected ${expectedSize} bytes, got ${buffer.length}`);
342
363
  }
343
364
  const interfaceAccounts = [];
344
365
  let offset = 12;
345
366
  for (let i = 0; i < len; i++) {
346
- interfaceAccounts.push(new anchor_1.web3.PublicKey(data.subarray(offset, offset + PUBKEY_BYTES)));
367
+ interfaceAccounts.push(new anchor_1.web3.PublicKey(buffer.subarray(offset, offset + PUBKEY_BYTES)));
347
368
  offset += PUBKEY_BYTES;
348
369
  }
349
370
  return interfaceAccounts;
@@ -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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"}
package/build/types.d.ts CHANGED
@@ -28,6 +28,7 @@ export type TokenAccountEntry = {
28
28
  tokenMint: web3.PublicKey;
29
29
  balances: {
30
30
  tokenAccount: web3.PublicKey;
31
+ mint: web3.PublicKey;
31
32
  priceId: PriceId;
32
33
  }[];
33
34
  };
@@ -63,6 +64,16 @@ export type ClmmPositionEntry = {
63
64
  priceIdPt: PriceId;
64
65
  priceIdSy: PriceId;
65
66
  };
67
+ export type LoopscaleLoanEntry = {
68
+ loan: web3.PublicKey;
69
+ };
70
+ export type LoopscaleStrategyEntry = {
71
+ strategy: web3.PublicKey;
72
+ };
73
+ export type KaminoFarmEntry = {
74
+ farmState: web3.PublicKey;
75
+ userState: web3.PublicKey;
76
+ };
66
77
  export type StrategyPosition = {
67
78
  orderbook: {
68
79
  0: OrderbookEntry;
@@ -83,6 +94,18 @@ export type StrategyPosition = {
83
94
  clmmPosition: {
84
95
  0: ClmmPositionEntry;
85
96
  };
97
+ } | {
98
+ loopscaleLoan: {
99
+ 0: LoopscaleLoanEntry;
100
+ };
101
+ } | {
102
+ loopscaleStrategy: {
103
+ 0: LoopscaleStrategyEntry;
104
+ };
105
+ } | {
106
+ kaminoFarm: {
107
+ 0: KaminoFarmEntry;
108
+ };
86
109
  };
87
110
  export type ExponentVault = {
88
111
  addressLookupTable: web3.PublicKey;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AA8JA,oCAAoC;AACpC,iCAAiC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AA+KA,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.0",
3
+ "version": "0.9.2",
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.0",
13
- "@exponent-labs/exponent-vaults-pda": "0.9.0"
12
+ "@exponent-labs/exponent-vaults-idl": "0.9.2",
13
+ "@exponent-labs/exponent-vaults-pda": "0.9.2"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@types/bn.js": "^5.1.0",
package/src/fetcher.ts CHANGED
@@ -64,20 +64,39 @@ export class ExponentVaultsFetcher {
64
64
  this.program = new Program<ExponentVaults>(programIdl, provider)
65
65
  }
66
66
 
67
+ /**
68
+ * Generated account namespaces can differ across IDL shapes:
69
+ * - classic Anchor JSON IDLs expose PascalCase account clients
70
+ * - camelCase TS IDLs expose camelCase account clients
71
+ *
72
+ * Resolve both so the fetcher stays compatible with either generated form.
73
+ */
74
+ private get vaultAccountClient() {
75
+ return (this.program.account as any).ExponentStrategyVault ?? (this.program.account as any).exponentStrategyVault
76
+ }
77
+
78
+ private get withdrawalAccountClient() {
79
+ return (this.program.account as any).WithdrawalAccount ?? (this.program.account as any).withdrawalAccount
80
+ }
81
+
82
+ private get actionProposalAccountClient() {
83
+ return (this.program.account as any).ActionProposal ?? (this.program.account as any).actionProposal
84
+ }
85
+
67
86
  fetchVault(address: web3.PublicKey) {
68
- return this.program.account.exponentStrategyVault.fetch(address)
87
+ return this.vaultAccountClient.fetch(address)
69
88
  }
70
89
 
71
90
  fetchWithdrawalAccount(address: web3.PublicKey) {
72
- return this.program.account.withdrawalAccount.fetch(address)
91
+ return this.withdrawalAccountClient.fetch(address)
73
92
  }
74
93
 
75
94
  fetchActionProposal(address: web3.PublicKey) {
76
- return this.program.account.actionProposal.fetch(address)
95
+ return this.actionProposalAccountClient.fetch(address)
77
96
  }
78
97
 
79
98
  async fetchAllVaults(filters?: web3.GetProgramAccountsFilter[]) {
80
- const discriminator = this.program.account.exponentStrategyVault.coder.accounts.memcmp("exponentStrategyVault")
99
+ const discriminator = this.vaultAccountClient.coder.accounts.memcmp("ExponentStrategyVault")
81
100
  const baseFilters: web3.GetProgramAccountsFilter[] = discriminator
82
101
  ? [{ memcmp: { offset: discriminator.offset, bytes: discriminator.bytes } }]
83
102
  : []
@@ -99,8 +118,8 @@ export class ExponentVaultsFetcher {
99
118
  const tokenEntriesLen = account.data.readUInt32LE(TOKEN_ENTRIES_VEC_OFFSET)
100
119
  if (tokenEntriesLen > 64) continue
101
120
  try {
102
- const data = this.program.account.exponentStrategyVault.coder.accounts.decode(
103
- "exponentStrategyVault",
121
+ const data = this.vaultAccountClient.coder.accounts.decode(
122
+ "ExponentStrategyVault",
104
123
  account.data,
105
124
  )
106
125
  decoded.push({ publicKey: pubkey, account: data })
@@ -112,7 +131,7 @@ export class ExponentVaultsFetcher {
112
131
  }
113
132
 
114
133
  async fetchAllActionProposals(filters?: web3.GetProgramAccountsFilter[]) {
115
- const discriminator = this.program.account.actionProposal.coder.accounts.memcmp("actionProposal")
134
+ const discriminator = this.actionProposalAccountClient.coder.accounts.memcmp("ActionProposal")
116
135
  const baseFilters: web3.GetProgramAccountsFilter[] = discriminator
117
136
  ? [{ memcmp: { offset: discriminator.offset, bytes: discriminator.bytes } }]
118
137
  : []
@@ -125,7 +144,7 @@ export class ExponentVaultsFetcher {
125
144
  const decoded: { publicKey: web3.PublicKey; account: any }[] = []
126
145
  for (const { pubkey, account } of rawAccounts) {
127
146
  try {
128
- const data = this.program.account.actionProposal.coder.accounts.decode("actionProposal", account.data)
147
+ const data = this.actionProposalAccountClient.coder.accounts.decode("ActionProposal", account.data)
129
148
  decoded.push({ publicKey: pubkey, account: data })
130
149
  } catch {
131
150
  // skip accounts that fail to deserialize
@@ -136,7 +155,7 @@ export class ExponentVaultsFetcher {
136
155
  }
137
156
 
138
157
  fetchAllWithdrawalAccounts(filters?: web3.GetProgramAccountsFilter[]) {
139
- return this.program.account.withdrawalAccount.all(filters)
158
+ return this.withdrawalAccountClient.all(filters)
140
159
  }
141
160
 
142
161
  async fetchAllActionProposalsForVault(vaultAddress: web3.PublicKey, filters?: web3.GetProgramAccountsFilter[]) {
@@ -155,7 +174,7 @@ export class ExponentVaultsFetcher {
155
174
  throw new Error(`Vault ${address.toBase58()} is in the ignore list and cannot be fetched`)
156
175
  }
157
176
  const vault = await this.fetchVault(address)
158
- return transformAnchorData(vault) as ExponentVault
177
+ return transformAnchorData(vault) as unknown as ExponentVault
159
178
  }
160
179
 
161
180
  async fetchActionProposalDeserialized(address: web3.PublicKey): Promise<ActionProposal> {
@@ -312,7 +331,7 @@ export class ExponentVaultsFetcher {
312
331
  const lastUpdatedAt = data.readBigUInt64LE(valueOffset + 104)
313
332
  const lastUpdatedSlot = data.readBigUInt64LE(valueOffset + 112)
314
333
  const priceType = data.readUInt8(valueOffset + 120)
315
- const impliedApyBps = priceType === 3 ? data.readUInt32LE(valueOffset + 121) : null
334
+ const impliedApyBps = priceType === 3 || priceType === 16 ? data.readUInt32LE(valueOffset + 121) : null
316
335
  const priceInterfaceAccounts = new web3.PublicKey(
317
336
  data.subarray(valueOffset + 128, valueOffset + 128 + PUBKEY_BYTES),
318
337
  )
@@ -363,8 +382,9 @@ export class ExponentVaultsFetcher {
363
382
  ].filter((pubkey) => !pubkey.equals(ZERO_PUBKEY))
364
383
 
365
384
  if (uniqueInterfaceAccounts.length > 0) {
366
- const infos = await this.program.provider.connection.getMultipleAccountsInfo(uniqueInterfaceAccounts)
367
- const decodedInterfaceAccounts = new Map<string, web3.PublicKey[]>()
385
+ const infos = await Promise.all(
386
+ uniqueInterfaceAccounts.map((pubkey) => this.program.provider.connection.getAccountInfo(pubkey)),
387
+ )
368
388
 
369
389
  for (let i = 0; i < uniqueInterfaceAccounts.length; i++) {
370
390
  const key = uniqueInterfaceAccounts[i]
@@ -377,15 +397,20 @@ export class ExponentVaultsFetcher {
377
397
  `PriceInterfaceAccounts owner mismatch: expected ${this.programId.toBase58()}, got ${info.owner.toBase58()}`,
378
398
  )
379
399
  }
380
- decodedInterfaceAccounts.set(key.toBase58(), decodePriceInterfaceAccounts(info.data))
381
- }
382
400
 
383
- for (const entry of activePriceEntries) {
384
- entry.interfaceAccounts = decodedInterfaceAccounts.get(entry.priceInterfaceAccounts.toBase58()) ?? []
401
+ const decoded = decodePriceInterfaceAccounts(info.data)
402
+ for (const entry of activePriceEntries) {
403
+ if (entry.priceInterfaceAccounts.equals(key)) {
404
+ entry.interfaceAccounts = decoded
405
+ }
406
+ }
385
407
  }
386
408
  }
387
409
 
388
- return { managers, prices }
410
+ return {
411
+ managers,
412
+ prices,
413
+ }
389
414
  }
390
415
 
391
416
  /**
@@ -414,21 +439,22 @@ export class ExponentVaultsFetcher {
414
439
  }
415
440
  }
416
441
 
417
- function decodePriceInterfaceAccounts(data: Buffer): web3.PublicKey[] {
418
- if (data.length < 12) {
419
- throw new Error(`PriceInterfaceAccounts account too small: ${data.length} bytes`)
442
+ function decodePriceInterfaceAccounts(data: Buffer | Uint8Array): web3.PublicKey[] {
443
+ const buffer = Buffer.from(data)
444
+ if (buffer.length < 12) {
445
+ throw new Error(`PriceInterfaceAccounts account too small: ${buffer.length} bytes`)
420
446
  }
421
447
 
422
- const len = data.readUInt32LE(8)
448
+ const len = buffer.readUInt32LE(8)
423
449
  const expectedSize = 8 + 4 + len * PUBKEY_BYTES
424
- if (data.length < expectedSize) {
425
- throw new Error(`PriceInterfaceAccounts account truncated: expected ${expectedSize} bytes, got ${data.length}`)
450
+ if (buffer.length < expectedSize) {
451
+ throw new Error(`PriceInterfaceAccounts account truncated: expected ${expectedSize} bytes, got ${buffer.length}`)
426
452
  }
427
453
 
428
454
  const interfaceAccounts: web3.PublicKey[] = []
429
455
  let offset = 12
430
456
  for (let i = 0; i < len; i++) {
431
- interfaceAccounts.push(new web3.PublicKey(data.subarray(offset, offset + PUBKEY_BYTES)))
457
+ interfaceAccounts.push(new web3.PublicKey(buffer.subarray(offset, offset + PUBKEY_BYTES)))
432
458
  offset += PUBKEY_BYTES
433
459
  }
434
460
 
package/src/types.ts CHANGED
@@ -40,6 +40,7 @@ export type TokenAccountEntry = {
40
40
  tokenMint: web3.PublicKey
41
41
  balances: {
42
42
  tokenAccount: web3.PublicKey
43
+ mint: web3.PublicKey
43
44
  priceId: PriceId
44
45
  }[]
45
46
  }
@@ -80,12 +81,28 @@ export type ClmmPositionEntry = {
80
81
  priceIdSy: PriceId
81
82
  }
82
83
 
84
+ export type LoopscaleLoanEntry = {
85
+ loan: web3.PublicKey
86
+ }
87
+
88
+ export type LoopscaleStrategyEntry = {
89
+ strategy: web3.PublicKey
90
+ }
91
+
92
+ export type KaminoFarmEntry = {
93
+ farmState: web3.PublicKey
94
+ userState: web3.PublicKey
95
+ }
96
+
83
97
  export type StrategyPosition =
84
98
  | { orderbook: { 0: OrderbookEntry } }
85
99
  | { tokenAccount: { 0: TokenAccountEntry } }
86
100
  | { obligation: { 0: unknown } } //TODO define obligation type when it's implemented on the program
87
101
  | { yieldPosition: { 0: YieldPositionEntry } }
88
102
  | { clmmPosition: { 0: ClmmPositionEntry } }
103
+ | { loopscaleLoan: { 0: LoopscaleLoanEntry } }
104
+ | { loopscaleStrategy: { 0: LoopscaleStrategyEntry } }
105
+ | { kaminoFarm: { 0: KaminoFarmEntry } }
89
106
 
90
107
  export type ExponentVault = {
91
108
  addressLookupTable: web3.PublicKey