@exponent-labs/exponent-fetcher 0.1.2 → 0.1.5

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,13 +1,13 @@
1
- /// <reference types="bn.js" />
2
1
  import { BN, Program, Wallet, web3 } from "@coral-xyz/anchor";
2
+ import Decimal from "decimal.js";
3
3
  import { ExponentCore } from "@exponent-labs/exponent-idl";
4
+ import { AnchorizedPNum, AnchorizedPNumJson, CpiAccountIndexes, GenericSyMetaAccount, InterfaceType, JitoRestakingSyMetaAccount, MarginfiSyMeta, PerenaSyMetaAccount, SyEmissionRaw, VaultEmission, VaultEmissionJson } from "@exponent-labs/exponent-types";
5
+ import { GenericStandard } from "@exponent-labs/generic-sy-idl";
6
+ import { JitoRestakingStandard } from "@exponent-labs/jito-restaking-sy-idl";
7
+ import { Obligation } from "@exponent-labs/kamino-reserve-deserializer";
4
8
  import { KaminoLendStandard } from "@exponent-labs/kamino-sy-idl";
5
9
  import { MarginfiStandard } from "@exponent-labs/marginfi-sy-idl";
6
- import { JitoRestakingStandard } from "@exponent-labs/jito-restaking-sy-idl";
7
- import { AnchorizedPNum, AnchorizedPNumJson, MarginfiSyMeta, VaultEmission, VaultEmissionJson, CpiAccountIndexes, JitoRestakingSyMetaAccount, InterfaceType, SyEmissionRaw, GenericSyMetaAccount, PerenaSyMetaAccount } from "@exponent-labs/exponent-types";
8
- import Decimal from "decimal.js";
9
10
  import { PerenaStandard } from "@exponent-labs/perena-sy-idl";
10
- import { GenericStandard } from "@exponent-labs/generic-sy-idl";
11
11
  export declare function serializeAnchorizedPNumFromJson(pnum: AnchorizedPNum): AnchorizedPNumJson;
12
12
  export declare function deserializeAnchorizedPNumFromJson(serialized: AnchorizedPNumJson): AnchorizedPNum;
13
13
  export declare class MyWallet implements Wallet {
@@ -60,6 +60,7 @@ export declare function fetchKaminoReserve(address: web3.PublicKey, connection:
60
60
  baseMint: web3.PublicKey;
61
61
  assetShareValue: Decimal;
62
62
  }>;
63
+ export declare function fetchAllKaminoObligationsByKaminoReserve(reserve: web3.PublicKey, connection: web3.Connection): Promise<Obligation[]>;
63
64
  export declare function serializeEmission(emission: VaultEmission): VaultEmissionJson;
64
65
  export declare function deserializeEmission(emission: VaultEmissionJson): VaultEmission;
65
66
  export interface MarketTwo {
@@ -95,6 +96,7 @@ export interface MarketTwo {
95
96
  }[];
96
97
  };
97
98
  liquidityNetBalanceLimits: LiquidityNetBalanceLimits;
99
+ seedId: number[];
98
100
  }
99
101
  export interface Vault {
100
102
  syProgram: web3.PublicKey;
@@ -223,6 +225,28 @@ export declare function fetchJitoRestaking(connection: web3.Connection, accounts
223
225
  exchangeRateUnderlying: number;
224
226
  exchangeRate: string;
225
227
  }>;
228
+ /**
229
+ * Fetch the pre-simulated index for Jupiter Perps pool to mirror on-chain logic in utils.rs (InterfaceType::JupiterPerps)
230
+ * Uses fields: pool.pool_apr.{realized_fee_usd, fee_apr_bps, last_updated}, pool.aum_usd,
231
+ * and tracks last_* values to compute the next index increment similar to the program.
232
+ */
233
+ export declare function fetchJupiterPerpsIndex({ connection, pool, lastFeeUsdResetUnixTimestamp, lastRealizedFeeUsd, lastAumUsd, currentIndex, lastRealizedFeeUsdUpdateUnixTimestamp, }: {
234
+ connection: web3.Connection;
235
+ pool: web3.PublicKey;
236
+ lastFeeUsdResetUnixTimestamp: number;
237
+ lastRealizedFeeUsd: BN;
238
+ lastAumUsd: BN;
239
+ currentIndex: AnchorizedPNum;
240
+ lastRealizedFeeUsdUpdateUnixTimestamp: number;
241
+ }): Promise<{
242
+ index: number;
243
+ newState: {
244
+ lastAumUsd: BN;
245
+ lastRealizedFeeUsd: BN;
246
+ lastFeeUsdResetUnixTimestamp: number;
247
+ lastRealizedFeeUsdUpdateUnixTimestamp: number;
248
+ };
249
+ }>;
226
250
  export declare function fetchPyth(connection: web3.Connection): Promise<string>;
227
251
  export declare function fetchGenericSyMetaIndex({ connection, genericSyMeta, }: {
228
252
  connection: web3.Connection;
@@ -238,6 +262,28 @@ export declare function fetchFragmetricIndex({ connection, fragmetricFund, }: {
238
262
  receiptTokenMint: web3.PublicKey;
239
263
  wrappedTokenMint: web3.PublicKey;
240
264
  }>;
265
+ export declare function fetchJupiterLendIndex({ connection, jupiterLendAccount, }: {
266
+ connection: web3.Connection;
267
+ jupiterLendAccount: web3.PublicKey;
268
+ }): Promise<{
269
+ index: number;
270
+ baseTokenMint: any;
271
+ tokenReservesLiquidity: any;
272
+ lendingSupplyPosition: any;
273
+ rewardsRateModel: any;
274
+ rateModel: web3.PublicKey;
275
+ }>;
276
+ export declare function fetchKaminoVaultIndex({ connection, kaminoVaultAccount, }: {
277
+ connection: web3.Connection;
278
+ kaminoVaultAccount: web3.PublicKey;
279
+ }): Promise<{
280
+ index: number;
281
+ tokenVault: any;
282
+ tokenMint: any;
283
+ baseVaultAuthority: any;
284
+ sharesMint: any;
285
+ reserves: any;
286
+ }>;
241
287
  export declare function fetchFragmetricSupportedTokenIndex({ connection, fragmetricFund, index, }: {
242
288
  connection: web3.Connection;
243
289
  fragmetricFund: web3.PublicKey;
@@ -262,4 +308,27 @@ export declare function fetchMeteoraIndex({ connection, accounts, onChainTime, }
262
308
  poolVaultBLpTokenAmount: number;
263
309
  lpSupply: number;
264
310
  }>;
311
+ export declare function fetchAdrenaIndex({ connection, accounts, previousTotalFees, currentIndex, }: {
312
+ connection: web3.Connection;
313
+ accounts: AccountsInterface;
314
+ previousTotalFees: BN;
315
+ currentIndex: AnchorizedPNum;
316
+ }): Promise<{
317
+ index: number;
318
+ }>;
319
+ export declare function fetchSanctumIndex({ connection, accounts, }: {
320
+ connection: web3.Connection;
321
+ accounts: AccountsInterface;
322
+ }): Promise<number>;
323
+ export declare function fetchSolsticeRedemptionRate({ connection, yieldPool, vestingSchedule, }: {
324
+ connection: web3.Connection;
325
+ yieldPool: web3.PublicKey;
326
+ vestingSchedule: web3.PublicKey;
327
+ }): Promise<{
328
+ redemptionRate: number;
329
+ totalAssets: string;
330
+ sharesSupply: string;
331
+ vestingAmount: string;
332
+ totalVestedAssets: string;
333
+ }>;
265
334
  export {};
@@ -3,38 +3,64 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.fetchMeteoraIndex = exports.fetchFragmetricSupportedTokenIndex = exports.fetchFragmetricIndex = exports.fetchGenericSyMetaIndex = exports.fetchPyth = exports.fetchJitoRestaking = exports.fetchPerenaStablePoolData = exports.fetchSplStakePoolIndex = exports.deserializeEmission = exports.serializeEmission = exports.fetchKaminoReserve = exports.ExponentFetcher = exports.MyWallet = exports.deserializeAnchorizedPNumFromJson = exports.serializeAnchorizedPNumFromJson = void 0;
6
+ exports.ExponentFetcher = exports.MyWallet = void 0;
7
+ exports.serializeAnchorizedPNumFromJson = serializeAnchorizedPNumFromJson;
8
+ exports.deserializeAnchorizedPNumFromJson = deserializeAnchorizedPNumFromJson;
9
+ exports.fetchKaminoReserve = fetchKaminoReserve;
10
+ exports.fetchAllKaminoObligationsByKaminoReserve = fetchAllKaminoObligationsByKaminoReserve;
11
+ exports.serializeEmission = serializeEmission;
12
+ exports.deserializeEmission = deserializeEmission;
13
+ exports.fetchSplStakePoolIndex = fetchSplStakePoolIndex;
14
+ exports.fetchPerenaStablePoolData = fetchPerenaStablePoolData;
15
+ exports.fetchJitoRestaking = fetchJitoRestaking;
16
+ exports.fetchJupiterPerpsIndex = fetchJupiterPerpsIndex;
17
+ exports.fetchPyth = fetchPyth;
18
+ exports.fetchGenericSyMetaIndex = fetchGenericSyMetaIndex;
19
+ exports.fetchFragmetricIndex = fetchFragmetricIndex;
20
+ exports.fetchJupiterLendIndex = fetchJupiterLendIndex;
21
+ exports.fetchKaminoVaultIndex = fetchKaminoVaultIndex;
22
+ exports.fetchFragmetricSupportedTokenIndex = fetchFragmetricSupportedTokenIndex;
23
+ exports.fetchMeteoraIndex = fetchMeteoraIndex;
24
+ exports.fetchAdrenaIndex = fetchAdrenaIndex;
25
+ exports.fetchSanctumIndex = fetchSanctumIndex;
26
+ exports.fetchSolsticeRedemptionRate = fetchSolsticeRedemptionRate;
7
27
  const anchor_1 = require("@coral-xyz/anchor");
28
+ const anchor_2 = require("@coral-xyz/anchor");
29
+ const spl_stake_pool_1 = require("@solana/spl-stake-pool");
30
+ const spl_token_1 = require("@solana/spl-token");
31
+ const spl_token_2 = require("@solana/spl-token");
32
+ const decimal_js_1 = __importDefault(require("decimal.js"));
8
33
  const exponent_idl_1 = require("@exponent-labs/exponent-idl");
34
+ const exponent_types_1 = require("@exponent-labs/exponent-types");
35
+ const fragmetric_idl_1 = require("@exponent-labs/fragmetric-idl");
36
+ const jupiter_lend_idl_1 = require("@exponent-labs/jupiter-lend-idl");
37
+ const kamino_vault_idl_1 = require("@exponent-labs/kamino-vault-idl");
38
+ const generic_sy_idl_1 = require("@exponent-labs/generic-sy-idl");
39
+ const jito_restaking_sy_idl_1 = require("@exponent-labs/jito-restaking-sy-idl");
40
+ const jito_restaking_sy_idl_2 = require("@exponent-labs/jito-restaking-sy-idl");
41
+ const kamino_reserve_deserializer_1 = require("@exponent-labs/kamino-reserve-deserializer");
42
+ const kamino_reserve_deserializer_2 = require("@exponent-labs/kamino-reserve-deserializer");
9
43
  const kamino_sy_idl_1 = require("@exponent-labs/kamino-sy-idl");
44
+ const kamino_sy_idl_2 = require("@exponent-labs/kamino-sy-idl");
10
45
  const marginfi_sy_idl_1 = require("@exponent-labs/marginfi-sy-idl");
46
+ const meteora_idl_1 = require("@exponent-labs/meteora-idl");
11
47
  const perena_sy_idl_1 = require("@exponent-labs/perena-sy-idl");
12
- const jito_restaking_sy_idl_1 = require("@exponent-labs/jito-restaking-sy-idl");
13
- const kamino_sy_idl_2 = require("@exponent-labs/kamino-sy-idl");
14
- const precise_number_1 = require("@exponent-labs/precise-number");
15
- const kamino_reserve_deserializer_1 = require("@exponent-labs/kamino-reserve-deserializer");
16
- const jito_restaking_sy_idl_2 = require("@exponent-labs/jito-restaking-sy-idl");
17
48
  const perena_sy_idl_2 = require("@exponent-labs/perena-sy-idl");
18
- const spl_stake_pool_1 = require("@solana/spl-stake-pool");
19
- const fragmetric_idl_1 = require("@exponent-labs/fragmetric-idl");
20
- const meteora_idl_1 = require("@exponent-labs/meteora-idl");
21
- const spl_token_1 = require("@solana/spl-token");
22
- const anchor_2 = require("@coral-xyz/anchor");
23
- const exponent_types_1 = require("@exponent-labs/exponent-types");
24
- const decimal_js_1 = __importDefault(require("decimal.js"));
25
- const spl_token_2 = require("@solana/spl-token");
26
- const generic_sy_idl_1 = require("@exponent-labs/generic-sy-idl");
49
+ const precise_number_1 = require("@exponent-labs/precise-number");
50
+ const sanctum_idl_1 = require("@exponent-labs/sanctum-idl");
51
+ const adrena_idl_1 = require("@exponent-labs/adrena-idl");
52
+ const solstice_idl_1 = require("@exponent-labs/solstice-idl");
27
53
  const meteora_1 = require("./utils/meteora");
54
+ // Decode Jupiter Perps pool accounts via helper using Anchor 0.29.0
55
+ const jupiter_perps_idl_1 = require("@exponent-labs/jupiter-perps-idl");
28
56
  function serializeAnchorizedPNumFromJson(pnum) {
29
57
  const serializedArray = pnum[0].map((bn) => bn.toString());
30
58
  return { 0: serializedArray };
31
59
  }
32
- exports.serializeAnchorizedPNumFromJson = serializeAnchorizedPNumFromJson;
33
60
  function deserializeAnchorizedPNumFromJson(serialized) {
34
61
  const bnArray = serialized[0].map((str) => new anchor_1.BN(str));
35
62
  return { 0: bnArray };
36
63
  }
37
- exports.deserializeAnchorizedPNumFromJson = deserializeAnchorizedPNumFromJson;
38
64
  class MyWallet {
39
65
  payer;
40
66
  constructor(payer) {
@@ -190,7 +216,6 @@ class ExponentFetcher {
190
216
  }
191
217
  async fetchLpPosition(address) {
192
218
  const x = await this.program.account.lpPosition.fetch(address);
193
- console.log("FARMs SHOULD BE HERE", x.farms);
194
219
  return deserializeLpPosition(x);
195
220
  }
196
221
  async fetchYtPosition(address) {
@@ -245,6 +270,7 @@ function deserializeMarketTwo(m) {
245
270
  })),
246
271
  },
247
272
  liquidityNetBalanceLimits: m.liquidityNetBalanceLimits,
273
+ seedId: m.seedId,
248
274
  };
249
275
  }
250
276
  function deserializeVault(x) {
@@ -338,29 +364,56 @@ async function fetchKaminoReserve(address, connection) {
338
364
  assetShareValue: reserve.getCollateralExchangeRate(),
339
365
  };
340
366
  }
341
- exports.fetchKaminoReserve = fetchKaminoReserve;
367
+ const DEPOSITS_LIMIT = 8;
368
+ async function fetchAllKaminoObligationsByKaminoReserve(reserve, connection) {
369
+ const finalObligations = [];
370
+ const programId = new anchor_1.web3.PublicKey(kamino_reserve_deserializer_2.PROGRAM_ID);
371
+ for (let i = 0; i < DEPOSITS_LIMIT; i++) {
372
+ const [slot, obligations] = await Promise.all([
373
+ connection.getSlot(),
374
+ connection.getProgramAccounts(programId, {
375
+ filters: [
376
+ {
377
+ dataSize: kamino_reserve_deserializer_1.Obligation.layout.span + 8,
378
+ },
379
+ {
380
+ memcmp: {
381
+ offset: 96 + 136 * i,
382
+ bytes: reserve.toBase58(),
383
+ },
384
+ },
385
+ ],
386
+ }),
387
+ ]);
388
+ for (const obligation of obligations) {
389
+ const data = kamino_reserve_deserializer_1.Obligation.decode(obligation.account.data);
390
+ finalObligations.push(data);
391
+ }
392
+ }
393
+ return finalObligations;
394
+ }
342
395
  function serializeEmission(emission) {
343
396
  return {
344
397
  tokenAccount: emission.tokenAccount.toString(),
345
398
  initialIndex: serializeAnchorizedPNumFromJson(emission.initialIndex),
346
399
  lastSeenIndex: serializeAnchorizedPNumFromJson(emission.lastSeenIndex),
347
400
  treasuryTokenAccount: emission.treasuryTokenAccount.toString(),
401
+ finalIndex: serializeAnchorizedPNumFromJson(emission.finalIndex),
348
402
  feeBps: emission.feeBps,
349
403
  treasuryEmission: emission.treasuryEmission.toString(),
350
404
  };
351
405
  }
352
- exports.serializeEmission = serializeEmission;
353
406
  function deserializeEmission(emission) {
354
407
  return {
355
408
  tokenAccount: new anchor_1.web3.PublicKey(emission.tokenAccount),
356
409
  initialIndex: deserializeAnchorizedPNumFromJson(emission.initialIndex),
357
410
  lastSeenIndex: deserializeAnchorizedPNumFromJson(emission.lastSeenIndex),
358
411
  treasuryTokenAccount: new anchor_1.web3.PublicKey(emission.treasuryTokenAccount),
412
+ finalIndex: deserializeAnchorizedPNumFromJson(emission.finalIndex),
359
413
  feeBps: emission.feeBps,
360
414
  treasuryEmission: new anchor_1.BN(emission.treasuryEmission),
361
415
  };
362
416
  }
363
- exports.deserializeEmission = deserializeEmission;
364
417
  function deserializeAnchorizedPNum(x) {
365
418
  return parseFloat(precise_number_1.PreciseNumber.fromRaw(x[0]).valueString);
366
419
  }
@@ -397,7 +450,6 @@ async function fetchSplStakePoolIndex({ connection, stakePool, }) {
397
450
  const stakePoolAccount = await (0, spl_stake_pool_1.getStakePoolAccount)(connection, stakePool);
398
451
  return Number(stakePoolAccount.account.data.totalLamports) / Number(stakePoolAccount.account.data.poolTokenSupply);
399
452
  }
400
- exports.fetchSplStakePoolIndex = fetchSplStakePoolIndex;
401
453
  async function fetchPerenaStablePoolData({ connection, perenaStablePool, }) {
402
454
  const [lpMint, _] = anchor_1.web3.PublicKey.findProgramAddressSync([perenaStablePool.toBuffer(), Buffer.from("liquidity")], new anchor_1.web3.PublicKey("NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P"));
403
455
  const [accountInfo, lpMintInfo] = await connection.getMultipleAccountsInfo([perenaStablePool, lpMint]);
@@ -410,7 +462,6 @@ async function fetchPerenaStablePoolData({ connection, perenaStablePool, }) {
410
462
  const exchangeRate = new decimal_js_1.default(invT.toString()).div(new decimal_js_1.default(lpMintDeserialized.supply.toString())).toString();
411
463
  return { lpSupply: lpMintDeserialized.supply, invT, exchangeRate, lpMint };
412
464
  }
413
- exports.fetchPerenaStablePoolData = fetchPerenaStablePoolData;
414
465
  /**
415
466
  * Fetch the exchange rate of a JitoRestaking vault
416
467
  * @param connection
@@ -431,11 +482,50 @@ async function fetchJitoRestaking(connection, accounts, interfaceType, vaultAddr
431
482
  exchangeRate: exr.toString(),
432
483
  };
433
484
  }
434
- exports.fetchJitoRestaking = fetchJitoRestaking;
485
+ /**
486
+ * Fetch the pre-simulated index for Jupiter Perps pool to mirror on-chain logic in utils.rs (InterfaceType::JupiterPerps)
487
+ * Uses fields: pool.pool_apr.{realized_fee_usd, fee_apr_bps, last_updated}, pool.aum_usd,
488
+ * and tracks last_* values to compute the next index increment similar to the program.
489
+ */
490
+ async function fetchJupiterPerpsIndex({ connection, pool, lastFeeUsdResetUnixTimestamp, lastRealizedFeeUsd, lastAumUsd, currentIndex, lastRealizedFeeUsdUpdateUnixTimestamp, }) {
491
+ // Decode pool account using helper that leverages Anchor 0.29.0
492
+ const accountInfo = await connection.getAccountInfo(pool);
493
+ const account = (0, jupiter_perps_idl_1.decodePoolAccount)(accountInfo?.data);
494
+ const SECONDS_PER_YEAR = 365 * 24 * 60 * 60;
495
+ let newFeesBn;
496
+ if (lastRealizedFeeUsdUpdateUnixTimestamp === 0) {
497
+ newFeesBn = new anchor_1.BN(account.poolApr.realizedFeeUsd.toString());
498
+ }
499
+ else if (Number(account.poolApr.lastUpdated) > lastFeeUsdResetUnixTimestamp) {
500
+ const timeBetweenResets = Number(account.poolApr.lastUpdated) - lastFeeUsdResetUnixTimestamp;
501
+ const feeAprBps = new anchor_1.BN(account.poolApr.feeAprBps);
502
+ const estTotalFees = lastAumUsd.gt(new anchor_1.BN(0)) && timeBetweenResets > 0
503
+ ? feeAprBps.mul(lastAumUsd).mul(new anchor_1.BN(timeBetweenResets)).div(new anchor_1.BN(SECONDS_PER_YEAR)).div(new anchor_1.BN(10_000))
504
+ : new anchor_1.BN(0);
505
+ const missingFees = estTotalFees.sub(lastRealizedFeeUsd);
506
+ const feesSinceReset = new anchor_1.BN(account.poolApr.realizedFeeUsd.toString());
507
+ newFeesBn = missingFees.add(feesSinceReset);
508
+ }
509
+ else {
510
+ newFeesBn = new anchor_1.BN(account.poolApr.realizedFeeUsd.toString()).sub(lastRealizedFeeUsd);
511
+ }
512
+ const aumUsd = new anchor_1.BN(account.aumUsd.toString());
513
+ const indexIncrease = new decimal_js_1.default(newFeesBn.toString()).div(new decimal_js_1.default(aumUsd.toString())).toNumber();
514
+ const currentIndexNum = parseFloat(precise_number_1.PreciseNumber.fromRaw(currentIndex[0]).valueString);
515
+ const nextIndex = currentIndexNum + indexIncrease;
516
+ return {
517
+ index: nextIndex,
518
+ newState: {
519
+ lastAumUsd: aumUsd,
520
+ lastRealizedFeeUsd: new anchor_1.BN(account.poolApr.realizedFeeUsd.toString()),
521
+ lastFeeUsdResetUnixTimestamp: Number(account.poolApr.lastUpdated),
522
+ lastRealizedFeeUsdUpdateUnixTimestamp: Math.floor(Date.now() / 1000),
523
+ },
524
+ };
525
+ }
435
526
  async function fetchPyth(connection) {
436
527
  return "";
437
528
  }
438
- exports.fetchPyth = fetchPyth;
439
529
  async function fetchGenericSyMetaIndex({ connection, genericSyMeta, }) {
440
530
  const [accountInfo] = await connection.getMultipleAccountsInfo([genericSyMeta]);
441
531
  const d = accountInfo.data;
@@ -460,7 +550,6 @@ async function fetchGenericSyMetaIndex({ connection, genericSyMeta, }) {
460
550
  const index = parseFloat(precise_number_1.PreciseNumber.fromRaw(indexRaw[0]).valueString);
461
551
  return { index };
462
552
  }
463
- exports.fetchGenericSyMetaIndex = fetchGenericSyMetaIndex;
464
553
  async function fetchFragmetricIndex({ connection, fragmetricFund, }) {
465
554
  const account = await connection.getAccountInfo(fragmetricFund);
466
555
  const coder = new anchor_2.BorshCoder(fragmetric_idl_1.IDL);
@@ -470,7 +559,43 @@ async function fetchFragmetricIndex({ connection, fragmetricFund, }) {
470
559
  const wrappedTokenMint = new anchor_1.web3.PublicKey(data.wrapped_token.mint);
471
560
  return { index, receiptTokenMint, wrappedTokenMint };
472
561
  }
473
- exports.fetchFragmetricIndex = fetchFragmetricIndex;
562
+ async function fetchJupiterLendIndex({ connection, jupiterLendAccount, }) {
563
+ const account = await connection.getAccountInfo(jupiterLendAccount);
564
+ const coder = new anchor_2.BorshCoder(jupiter_lend_idl_1.IDL);
565
+ const data = coder.accounts.decode("Lending", account.data);
566
+ const index = Number(data.token_exchange_price) / Number(10 ** 12);
567
+ const tokenReservesLiquidity = data.token_reserves_liquidity;
568
+ const lendingSupplyPosition = data.supply_position_on_liquidity;
569
+ const rewardsRateModel = data.rewards_rate_model;
570
+ const rateModel = jupiterLendAccount.equals(new anchor_1.web3.PublicKey("BeAqbxfrcXmzEYT2Ra62oW2MqkuFDHaCtps47Mzg6Zj3"))
571
+ ? new anchor_1.web3.PublicKey("Acvyi9HBGmqh3Exe1N4PjBVyY8fokq2AdC6fSLqV6KSo")
572
+ : new anchor_1.web3.PublicKey("6iHHKAK9Mqjn57CVmWe4szAPyTH8s8pniXSj6vWaKW5r");
573
+ console.log("token reserves liquidity in fetch jupiter lend index", tokenReservesLiquidity.toBase58());
574
+ return { index, baseTokenMint: data.mint, tokenReservesLiquidity, lendingSupplyPosition, rewardsRateModel, rateModel };
575
+ }
576
+ async function fetchKaminoVaultIndex({ connection, kaminoVaultAccount, }) {
577
+ const account = await connection.getAccountInfo(kaminoVaultAccount);
578
+ const coder = new anchor_2.BorshCoder(kamino_vault_idl_1.IDL);
579
+ const data = coder.accounts.decode("VaultState", account.data);
580
+ const activeReserves = data.vault_allocation_strategy
581
+ .map((r) => r.reserve)
582
+ .filter((reserve) => reserve.toBase58() !== anchor_1.web3.PublicKey.default.toBase58());
583
+ console.log("activeReserves", activeReserves);
584
+ const activeReservesData = await connection.getMultipleAccountsInfo(activeReserves);
585
+ const reserves = activeReserves.map((r, i) => {
586
+ console.log("r.data", activeReservesData[i].data);
587
+ return {
588
+ reserveAddress: r,
589
+ reserve: kamino_reserve_deserializer_1.Reserve.decode(activeReservesData[i].data).lendingMarket,
590
+ };
591
+ });
592
+ console.log("reserves", reserves);
593
+ const tokenVault = data.token_vault;
594
+ const tokenMint = data.token_mint;
595
+ const baseVaultAuthority = data.base_vault_authority;
596
+ const sharesMint = data.shares_mint;
597
+ return { index: 1, tokenVault, tokenMint, baseVaultAuthority, sharesMint, reserves };
598
+ }
474
599
  async function fetchFragmetricSupportedTokenIndex({ connection, fragmetricFund, index, }) {
475
600
  const account = await connection.getAccountInfo(fragmetricFund);
476
601
  const coder = new anchor_2.BorshCoder(fragmetric_idl_1.IDL);
@@ -481,7 +606,6 @@ async function fetchFragmetricSupportedTokenIndex({ connection, fragmetricFund,
481
606
  const wrappedTokenMint = new anchor_1.web3.PublicKey(data.wrapped_token.mint);
482
607
  return { index: syIndex, receiptTokenMint, wrappedTokenMint };
483
608
  }
484
- exports.fetchFragmetricSupportedTokenIndex = fetchFragmetricSupportedTokenIndex;
485
609
  async function fetchMeteoraIndex({ connection, accounts, onChainTime, }) {
486
610
  try {
487
611
  const VIRTUAL_PRICE_PRECISION = new anchor_1.BN(100_000_000);
@@ -517,5 +641,101 @@ async function fetchMeteoraIndex({ connection, accounts, onChainTime, }) {
517
641
  throw error;
518
642
  }
519
643
  }
520
- exports.fetchMeteoraIndex = fetchMeteoraIndex;
644
+ async function fetchAdrenaIndex({ connection, accounts, previousTotalFees, currentIndex, }) {
645
+ try {
646
+ const zero = new anchor_1.BN(0);
647
+ // Fetch all account data in a single RPC call
648
+ const accountInfos = await connection.getMultipleAccountsInfo([
649
+ accounts.pool,
650
+ accounts.custody1,
651
+ accounts.custody2,
652
+ accounts.custody3,
653
+ accounts.custody4,
654
+ ]);
655
+ if (!accountInfos[0] || !accountInfos[1] || !accountInfos[2] || !accountInfos[3] || !accountInfos[4]) {
656
+ throw new Error("One or more Adrena accounts not found");
657
+ }
658
+ // Decode accounts using adrena-idl package functions
659
+ const { poolAccount, custodyAccounts } = (0, adrena_idl_1.decodePoolAndCustodyAccounts)(accountInfos);
660
+ // @ts-ignore
661
+ const currentTotalFees = (0, adrena_idl_1.calculateTotalFeesFromCustodies)(custodyAccounts);
662
+ let yieldIncrement;
663
+ let aumValue = poolAccount.aumUsd.low;
664
+ if (aumValue.eq(zero)) {
665
+ yieldIncrement = 0;
666
+ }
667
+ let feeDifference = currentTotalFees.gte(previousTotalFees) ? currentTotalFees.sub(previousTotalFees) : zero;
668
+ yieldIncrement = feeDifference.toNumber() / aumValue.toNumber();
669
+ let currentIndexNumber = parseFloat(precise_number_1.PreciseNumber.fromRaw(currentIndex[0]).valueString);
670
+ return { index: currentIndexNumber + yieldIncrement };
671
+ }
672
+ catch (error) {
673
+ throw error;
674
+ }
675
+ }
676
+ async function fetchSanctumIndex({ connection, accounts, }) {
677
+ try {
678
+ const poolState = await (0, sanctum_idl_1.decodePoolStateAccount)(connection, accounts.poolState);
679
+ const lpMint = await (0, spl_token_1.getMint)(connection, accounts.lpMint);
680
+ const zeroBn = new anchor_1.BN(0);
681
+ const precision = new anchor_1.BN(10 ** lpMint.decimals);
682
+ const lpTokenSupplyBn = new anchor_1.BN(lpMint.supply.toString());
683
+ const poolTotalSolValueBn = new anchor_1.BN(poolState.totalSolValue.toString());
684
+ if (lpTokenSupplyBn.eq(zeroBn) || poolTotalSolValueBn.eq(zeroBn)) {
685
+ return 1;
686
+ }
687
+ const exchangeRateBn = lpTokenSupplyBn.mul(precision).div(poolTotalSolValueBn);
688
+ const exchangeRate = new decimal_js_1.default(exchangeRateBn.toString()).div(precision.toString()).toNumber();
689
+ return 1 / exchangeRate; // We return inverse exchange rate
690
+ }
691
+ catch (error) {
692
+ throw error;
693
+ }
694
+ }
695
+ async function fetchSolsticeRedemptionRate({ connection, yieldPool, vestingSchedule, }) {
696
+ try {
697
+ // Fetch both accounts in a single RPC call for efficiency
698
+ const accountInfos = await connection.getMultipleAccountsInfo([yieldPool, vestingSchedule]);
699
+ if (!accountInfos[0] || !accountInfos[1]) {
700
+ throw new Error("One or more Solstice accounts not found");
701
+ }
702
+ // Decode accounts using solstice-idl package function
703
+ const { yieldPoolAccount, vestingScheduleAccount } = (0, solstice_idl_1.decodeYieldPoolAndVestingScheduleAccounts)(accountInfos);
704
+ // Extract fields for calculation (convert BN to bigint)
705
+ const poolTotalAssets = BigInt(yieldPoolAccount.total_assets.toString());
706
+ const poolSharesSupply = BigInt(yieldPoolAccount.shares_supply.toString());
707
+ const vestingAmount = BigInt(vestingScheduleAccount.vesting_amount.toString());
708
+ // Calculate total vested assets (mimicking the Rust logic)
709
+ let totalVestedAssets;
710
+ if (vestingAmount === 0n) {
711
+ totalVestedAssets = poolTotalAssets; // If no vesting amount, all assets are considered vested
712
+ }
713
+ else {
714
+ const vestingStart = BigInt(vestingScheduleAccount.start_time.toString());
715
+ const vestingEnd = BigInt(vestingScheduleAccount.end_time.toString());
716
+ const currentTime = BigInt(Math.floor(Date.now() / 1000)); // Current Unix timestamp
717
+ // Calculate unvested amount
718
+ let unvestedAmount;
719
+ if (currentTime > vestingEnd) {
720
+ unvestedAmount = 0n; // If current time passed the vesting end, no unvested amount
721
+ }
722
+ else {
723
+ unvestedAmount = (vestingAmount * (vestingEnd - currentTime)) / (vestingEnd - vestingStart);
724
+ }
725
+ totalVestedAssets = poolTotalAssets - unvestedAmount;
726
+ }
727
+ // Calculate redemption rate: (total_vested_assets + 1) / (pool_shares_supply + 1)
728
+ const redemptionRate = Number(totalVestedAssets + 1n) / Number(poolSharesSupply + 1n);
729
+ return {
730
+ redemptionRate,
731
+ totalAssets: poolTotalAssets.toString(),
732
+ sharesSupply: poolSharesSupply.toString(),
733
+ vestingAmount: vestingAmount.toString(),
734
+ totalVestedAssets: totalVestedAssets.toString(),
735
+ };
736
+ }
737
+ catch (error) {
738
+ throw error;
739
+ }
740
+ }
521
741
  //# sourceMappingURL=exponentFetcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exponentFetcher.js","sourceRoot":"","sources":["../src/exponentFetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exponentFetcher.js","sourceRoot":"","sources":["../src/exponentFetcher.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from "./exponentFetcher";
2
+ export { fetchJupiterPerpsIndex } from "./exponentFetcher";
package/build/index.js CHANGED
@@ -14,6 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.fetchJupiterPerpsIndex = void 0;
17
18
  // TODO - rename to "sol"
18
19
  __exportStar(require("./exponentFetcher"), exports);
20
+ var exponentFetcher_1 = require("./exponentFetcher");
21
+ Object.defineProperty(exports, "fetchJupiterPerpsIndex", { enumerable: true, get: function () { return exponentFetcher_1.fetchJupiterPerpsIndex; } });
19
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yBAAyB;AACzB,oDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yBAAyB;AACzB,oDAAiC;AACjC,qDAA0D;AAAjD,yHAAA,sBAAsB,OAAA"}
@@ -1,4 +1,3 @@
1
- /// <reference types="bn.js" />
2
1
  import { CurveType, VaultState } from "@exponent-labs/meteora-idl";
3
2
  import { BN } from "@coral-xyz/anchor";
4
3
  /**
@@ -3,7 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.computeD = exports.computeStableSwapInvariant = exports.getAmountByShare = exports.calculateUnlockedAmount = void 0;
6
+ exports.computeStableSwapInvariant = void 0;
7
+ exports.calculateUnlockedAmount = calculateUnlockedAmount;
8
+ exports.getAmountByShare = getAmountByShare;
9
+ exports.computeD = computeD;
7
10
  const anchor_1 = require("@coral-xyz/anchor");
8
11
  const bn_sqrt_1 = __importDefault(require("bn-sqrt"));
9
12
  /**
@@ -27,7 +30,6 @@ function calculateUnlockedAmount(onChainTime, vaultState) {
27
30
  .div(lockedProfitDegradationDenominator);
28
31
  return vaultTotalAmount.sub(lockedProfit);
29
32
  }
30
- exports.calculateUnlockedAmount = calculateUnlockedAmount;
31
33
  /**
32
34
  * Calculates the amount of tokens corresponding to a share of the vault.
33
35
  *
@@ -42,7 +44,6 @@ function getAmountByShare(share, totalSupply, vaultState, onChainTime) {
42
44
  const withdrawableAmount = calculateUnlockedAmount(onChainTime, vaultState);
43
45
  return totalSupply.isZero() ? new anchor_1.BN(0) : share.mul(withdrawableAmount).div(totalSupply);
44
46
  }
45
- exports.getAmountByShare = getAmountByShare;
46
47
  /**
47
48
  * Computes the StableSwap invariant (D) based on the Curve Finance formula.
48
49
  *
@@ -116,5 +117,4 @@ function computeD(curve, tokenAmountA, tokenAmountB) {
116
117
  // Default case - should never reach here if CurveType is properly defined
117
118
  throw new Error("Invalid curve type");
118
119
  }
119
- exports.computeD = computeD;
120
120
  //# sourceMappingURL=meteora.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"meteora.js","sourceRoot":"","sources":["../../src/utils/meteora.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meteora.js","sourceRoot":"","sources":["../../src/utils/meteora.ts"],"names":[],"mappings":";;;;;;AAYA,0DAmBC;AAYD,4CAIC;AA4DD,4BAuBC;AAjID,8CAAsC;AACtC,sDAA0B;AAE1B;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CAAC,WAAmB,EAAE,UAAsB;IACjF,MAAM,EACJ,mBAAmB,EAAE,EAAE,UAAU,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,EACrF,WAAW,EAAE,gBAAgB,GAC9B,GAAG,UAAU,CAAA;IACd,MAAM,kCAAkC,GAAG,IAAI,WAAE,CAAC,iBAAiB,CAAC,CAAA;IAEpE,MAAM,QAAQ,GAAG,IAAI,WAAE,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAEpD,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IAC7D,IAAI,eAAe,CAAC,EAAE,CAAC,kCAAkC,CAAC,EAAE,CAAC;QAC3D,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,MAAM,YAAY,GAAG,uBAAuB;SACzC,GAAG,CAAC,kCAAkC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;SAC5D,GAAG,CAAC,kCAAkC,CAAC,CAAA;IAE1C,OAAO,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,gBAAgB,CAAC,KAAS,EAAE,WAAe,EAAE,UAAsB,EAAE,WAAmB;IACtG,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAE3E,OAAO,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,WAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAC1F,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACI,MAAM,0BAA0B,GAAG,CAAC,SAAa,EAAE,OAAW,EAAE,OAAW,EAAM,EAAE;IACxF,MAAM,OAAO,GAAG,IAAI,WAAE,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,IAAI,GAAG,IAAI,WAAE,CAAC,CAAC,CAAC,CAAA;IACtB,MAAM,GAAG,GAAG,IAAI,WAAE,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,SAAS,GAAG,EAAE,CAAA;IAEpB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA,CAAC,QAAQ;IAC3C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA,CAAC,oBAAoB;IACnD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK,GAAG,IAAI,CAAA;IAChB,IAAI,CAAC,GAAG,CAAC,CAAA;IAET,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACjE,KAAK,GAAG,CAAC,CAAA;QACT,IAAI,EAAE,GAAG,CAAC,CAAA;QACV,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;QACxC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;QAExC,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACzD,MAAM,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACtE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAClC,CAAC;IAED,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AA3BY,QAAA,0BAA0B,8BA2BtC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,QAAQ,CAAC,KAAgB,EAAE,YAAgB,EAAE,YAAgB;IAC3E,IAAI,iBAAiB,IAAI,KAAK,EAAE,CAAC;QAC/B,OAAO,IAAA,iBAAI,EAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;IAC7C,CAAC;SAAM,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,WAAE,CAAC,SAAS,CAAC,CAAA;QACnC,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAA;QAEpD,MAAM,cAAc,GAAG,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACzE,MAAM,cAAc,GAAG,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAEzE,IAAI,UAAU,GAAG,IAAA,kCAA0B,EAAC,GAAG,EAAE,cAAc,EAAE,cAAc,CAAC,CAAA;QAEhF,qEAAqE;QACrE,MAAM,SAAS,GAAG,KAAK,CAAC,SAA6C,CAAA;QACrE,IAAI,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAClC,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,0EAA0E;IAC1E,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;AACvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exponent-labs/exponent-fetcher",
3
- "version": "0.1.2",
3
+ "version": "0.1.5",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "license": "AGPL-3.0",
@@ -9,18 +9,22 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "@coral-xyz/anchor": "0.30.0",
12
- "@exponent-labs/exponent-idl": "0.1.2",
13
- "@exponent-labs/exponent-types": "0.1.2",
14
- "@exponent-labs/fragmetric-idl": "0.1.2",
15
- "@exponent-labs/generic-sy-idl": "0.1.2",
16
- "@exponent-labs/jito-restaking-sy-idl": "0.1.2",
17
- "@exponent-labs/kamino-reserve-deserializer": "0.1.2",
18
- "@exponent-labs/marginfi-sy-idl": "0.1.2",
19
- "@exponent-labs/meteora-idl": "0.1.2",
20
- "@exponent-labs/kamino-sy-idl": "0.1.2",
21
- "@exponent-labs/perena-sy-idl": "0.1.2",
22
- "@exponent-labs/precise-number": "0.1.2",
12
+ "@exponent-labs/exponent-idl": "0.1.5",
13
+ "@exponent-labs/exponent-types": "0.1.5",
14
+ "@exponent-labs/fragmetric-idl": "0.1.5",
15
+ "@exponent-labs/generic-sy-idl": "0.1.5",
16
+ "@exponent-labs/jito-restaking-sy-idl": "0.1.5",
17
+ "@exponent-labs/kamino-reserve-deserializer": "0.1.5",
18
+ "@exponent-labs/marginfi-sy-idl": "0.1.5",
19
+ "@exponent-labs/meteora-idl": "0.1.5",
20
+ "@exponent-labs/kamino-sy-idl": "0.1.5",
21
+ "@exponent-labs/perena-sy-idl": "0.1.5",
22
+ "@exponent-labs/precise-number": "0.1.5",
23
+ "@exponent-labs/jupiter-lend-idl": "0.1.5",
24
+ "@exponent-labs/jupiter-perps-idl": "0.1.5",
25
+ "@exponent-labs/kamino-vault-idl": "0.1.5",
23
26
  "@solana/spl-stake-pool": "1.1.8",
27
+ "@exponent-labs/solstice-idl": "0.1.5",
24
28
  "@solana/spl-token": "0.4.6",
25
29
  "bn-sqrt": "^1.0.0",
26
30
  "decimal.js": "^10.4.3"
@@ -1,50 +1,68 @@
1
1
  import { AnchorProvider, BN, Idl, Program, Wallet, web3 } from "@coral-xyz/anchor"
2
- import { ExponentCore, IDL, PROGRAM_ID } from "@exponent-labs/exponent-idl"
3
- import { PROGRAM_ID as KAMINO_STANDARD_PROGRAM_ID } from "@exponent-labs/kamino-sy-idl"
4
- import { KaminoLendStandard } from "@exponent-labs/kamino-sy-idl"
5
- import {
6
- PROGRAM_ID as MARGINFI_SY_PROGRAM_ID,
7
- MarginfiStandard,
8
- IDL as MarginfiSyIdl,
9
- } from "@exponent-labs/marginfi-sy-idl"
10
- import { PROGRAM_ID as PERENA_STANDARD_PROGRAM_ID } from "@exponent-labs/perena-sy-idl"
11
- import { PROGRAM_ID as JITO_RESTAKING_SY_PROGRAM_ID } from "@exponent-labs/jito-restaking-sy-idl"
12
- import { IDL as KaminoSyIdl } from "@exponent-labs/kamino-sy-idl"
13
- import { PreciseNumber } from "@exponent-labs/precise-number"
14
- import { Reserve } from "@exponent-labs/kamino-reserve-deserializer"
15
- import { JitoRestakingStandard, IDL as JitoRestakingSyIdl } from "@exponent-labs/jito-restaking-sy-idl"
16
- import { IDL as PerenaSyIdl } from "@exponent-labs/perena-sy-idl"
17
- import { getStakePoolAccount } from "@solana/spl-stake-pool"
18
- import { IDL as FragmetricIdl } from "@exponent-labs/fragmetric-idl"
19
- import { decodePoolAccount, decodeVaultAccount } from "@exponent-labs/meteora-idl"
20
- import { getMint, getAccount } from "@solana/spl-token"
21
2
  import { BorshCoder } from "@coral-xyz/anchor"
3
+ import { getStakePoolAccount } from "@solana/spl-stake-pool"
4
+ import { getAccount, getMint } from "@solana/spl-token"
5
+ import { MintLayout } from "@solana/spl-token"
6
+ import Decimal from "decimal.js"
7
+ import { ExponentCore, IDL, PROGRAM_ID } from "@exponent-labs/exponent-idl"
22
8
  import {
23
9
  AnchorizedPNum,
24
10
  AnchorizedPNumJson,
11
+ CpiAccountIndexes,
12
+ GenericSyMetaAccount,
13
+ GenericSyMetaAccountRaw,
14
+ InterfaceType,
15
+ JitoRestakingSyMetaAccount,
16
+ JitoRestakingSyMetaAccountRaw,
25
17
  MarginfiSyMeta,
26
18
  MarginfiSyMetaRaw,
19
+ PerenaSyMetaAccount,
20
+ PerenaSyMetaAccountRaw,
21
+ SyEmissionRaw,
27
22
  VaultEmission,
28
23
  VaultEmissionJson,
29
- CpiAccountIndexes,
30
- JitoRestakingSyMetaAccountRaw,
31
- JitoRestakingSyMetaAccount,
32
- deserializeJitoRestakingSyMetaAccountRaw,
33
- InterfaceType,
34
- SyEmissionRaw,
35
- GenericSyMetaAccount,
36
24
  deserializeGenericSyMetaAccountRaw,
37
- GenericSyMetaAccountRaw,
25
+ deserializeJitoRestakingSyMetaAccountRaw,
38
26
  deserializePerenaSyMetaAccountRaw,
39
- PerenaSyMetaAccountRaw,
40
- PerenaSyMetaAccount,
41
27
  } from "@exponent-labs/exponent-types"
42
- import Decimal from "decimal.js"
43
- import { PerenaStandard } from "@exponent-labs/perena-sy-idl"
44
- import { MintLayout } from "@solana/spl-token"
28
+ import { IDL as FragmetricIdl } from "@exponent-labs/fragmetric-idl"
29
+ import { IDL as JupiterLendIdl } from "@exponent-labs/jupiter-lend-idl"
30
+ import { IDL as KaminoVaultIdl } from "@exponent-labs/kamino-vault-idl"
45
31
  import { GenericStandard } from "@exponent-labs/generic-sy-idl"
46
32
  import { PROGRAM_ID as GENERIC_STANDARD_PROGRAM_ID, IDL as GenericStandardIdl } from "@exponent-labs/generic-sy-idl"
33
+ import { PROGRAM_ID as JITO_RESTAKING_SY_PROGRAM_ID } from "@exponent-labs/jito-restaking-sy-idl"
34
+ import { JitoRestakingStandard, IDL as JitoRestakingSyIdl } from "@exponent-labs/jito-restaking-sy-idl"
35
+ import { Obligation, Reserve } from "@exponent-labs/kamino-reserve-deserializer"
36
+ import { PROGRAM_ID as KAMINO_LEND_PROGRAM_ID } from "@exponent-labs/kamino-reserve-deserializer"
37
+ import { PROGRAM_ID as KAMINO_STANDARD_PROGRAM_ID } from "@exponent-labs/kamino-sy-idl"
38
+ import { KaminoLendStandard } from "@exponent-labs/kamino-sy-idl"
39
+ import { IDL as KaminoSyIdl } from "@exponent-labs/kamino-sy-idl"
40
+ import {
41
+ PROGRAM_ID as MARGINFI_SY_PROGRAM_ID,
42
+ MarginfiStandard,
43
+ IDL as MarginfiSyIdl,
44
+ } from "@exponent-labs/marginfi-sy-idl"
45
+ import { decodePoolAccount, decodeVaultAccount } from "@exponent-labs/meteora-idl"
46
+ import { PROGRAM_ID as PERENA_STANDARD_PROGRAM_ID } from "@exponent-labs/perena-sy-idl"
47
+ import { IDL as PerenaSyIdl } from "@exponent-labs/perena-sy-idl"
48
+ import { PerenaStandard } from "@exponent-labs/perena-sy-idl"
49
+ import { PreciseNumber } from "@exponent-labs/precise-number"
50
+ import { decodePoolStateAccount } from "@exponent-labs/sanctum-idl"
51
+ import {
52
+ decodePoolAccount as decodeAdrenaPoolAccount,
53
+ decodeCustodyAccount,
54
+ CustodyState,
55
+ FeesStats,
56
+ PoolState,
57
+ decodePoolAndCustodyAccounts,
58
+ calculateTotalFeesFromCustodies,
59
+ } from "@exponent-labs/adrena-idl"
60
+ import { decodeYieldPoolAndVestingScheduleAccounts } from "@exponent-labs/solstice-idl"
61
+
47
62
  import { computeD, getAmountByShare } from "./utils/meteora"
63
+ import { Adrena } from "@exponent-labs/adrena-idl/src/adrena"
64
+ // Decode Jupiter Perps pool accounts via helper using Anchor 0.29.0
65
+ import { decodePoolAccount as decodeJupiterPerpsPoolAccount } from "@exponent-labs/jupiter-perps-idl"
48
66
 
49
67
  export function serializeAnchorizedPNumFromJson(pnum: AnchorizedPNum): AnchorizedPNumJson {
50
68
  const serializedArray = pnum[0].map((bn) => bn.toString())
@@ -242,7 +260,6 @@ export class ExponentFetcher {
242
260
 
243
261
  async fetchLpPosition(address: web3.PublicKey): Promise<LpPosition> {
244
262
  const x: LpPositionRaw = await this.program.account.lpPosition.fetch(address)
245
- console.log("FARMs SHOULD BE HERE", x.farms)
246
263
  return deserializeLpPosition(x)
247
264
  }
248
265
 
@@ -303,6 +320,7 @@ function deserializeMarketTwo(m: MarketTwoRaw): MarketTwo {
303
320
  })),
304
321
  },
305
322
  liquidityNetBalanceLimits: m.liquidityNetBalanceLimits,
323
+ seedId: m.seedId,
306
324
  }
307
325
  }
308
326
 
@@ -414,12 +432,49 @@ export async function fetchKaminoReserve(address: web3.PublicKey, connection: we
414
432
  }
415
433
  }
416
434
 
435
+ const DEPOSITS_LIMIT = 8
436
+
437
+ export async function fetchAllKaminoObligationsByKaminoReserve(
438
+ reserve: web3.PublicKey,
439
+ connection: web3.Connection,
440
+ ): Promise<Obligation[]> {
441
+ const finalObligations: Obligation[] = []
442
+ const programId = new web3.PublicKey(KAMINO_LEND_PROGRAM_ID)
443
+
444
+ for (let i = 0; i < DEPOSITS_LIMIT; i++) {
445
+ const [slot, obligations] = await Promise.all([
446
+ connection.getSlot(),
447
+ connection.getProgramAccounts(programId, {
448
+ filters: [
449
+ {
450
+ dataSize: Obligation.layout.span + 8,
451
+ },
452
+ {
453
+ memcmp: {
454
+ offset: 96 + 136 * i,
455
+ bytes: reserve.toBase58(),
456
+ },
457
+ },
458
+ ],
459
+ }),
460
+ ])
461
+
462
+ for (const obligation of obligations) {
463
+ const data = Obligation.decode(obligation.account.data)
464
+ finalObligations.push(data)
465
+ }
466
+ }
467
+
468
+ return finalObligations
469
+ }
470
+
417
471
  export function serializeEmission(emission: VaultEmission): VaultEmissionJson {
418
472
  return {
419
473
  tokenAccount: emission.tokenAccount.toString(),
420
474
  initialIndex: serializeAnchorizedPNumFromJson(emission.initialIndex),
421
475
  lastSeenIndex: serializeAnchorizedPNumFromJson(emission.lastSeenIndex),
422
476
  treasuryTokenAccount: emission.treasuryTokenAccount.toString(),
477
+ finalIndex: serializeAnchorizedPNumFromJson(emission.finalIndex),
423
478
  feeBps: emission.feeBps,
424
479
  treasuryEmission: emission.treasuryEmission.toString(),
425
480
  }
@@ -431,6 +486,7 @@ export function deserializeEmission(emission: VaultEmissionJson): VaultEmission
431
486
  initialIndex: deserializeAnchorizedPNumFromJson(emission.initialIndex),
432
487
  lastSeenIndex: deserializeAnchorizedPNumFromJson(emission.lastSeenIndex),
433
488
  treasuryTokenAccount: new web3.PublicKey(emission.treasuryTokenAccount),
489
+ finalIndex: deserializeAnchorizedPNumFromJson(emission.finalIndex),
434
490
  feeBps: emission.feeBps,
435
491
  treasuryEmission: new BN(emission.treasuryEmission),
436
492
  }
@@ -469,6 +525,7 @@ export interface MarketTwo {
469
525
  }[]
470
526
  }
471
527
  liquidityNetBalanceLimits: LiquidityNetBalanceLimits
528
+ seedId: number[]
472
529
  }
473
530
 
474
531
  export interface Vault {
@@ -608,6 +665,7 @@ interface MarketTwoRaw {
608
665
  lpFarm: LpFarm
609
666
  liquidityNetBalanceLimits: LiquidityNetBalanceLimits
610
667
  emissions: MarketEmissions
668
+ seedId: number[]
611
669
  }
612
670
 
613
671
  interface MarketFinancialsRaw {
@@ -801,6 +859,76 @@ export async function fetchJitoRestaking(
801
859
  }
802
860
  }
803
861
 
862
+ /**
863
+ * Fetch the pre-simulated index for Jupiter Perps pool to mirror on-chain logic in utils.rs (InterfaceType::JupiterPerps)
864
+ * Uses fields: pool.pool_apr.{realized_fee_usd, fee_apr_bps, last_updated}, pool.aum_usd,
865
+ * and tracks last_* values to compute the next index increment similar to the program.
866
+ */
867
+ export async function fetchJupiterPerpsIndex({
868
+ connection,
869
+ pool,
870
+ lastFeeUsdResetUnixTimestamp,
871
+ lastRealizedFeeUsd,
872
+ lastAumUsd,
873
+ currentIndex,
874
+ lastRealizedFeeUsdUpdateUnixTimestamp,
875
+ }: {
876
+ connection: web3.Connection
877
+ pool: web3.PublicKey
878
+ lastFeeUsdResetUnixTimestamp: number
879
+ lastRealizedFeeUsd: BN
880
+ lastAumUsd: BN
881
+ currentIndex: AnchorizedPNum
882
+ lastRealizedFeeUsdUpdateUnixTimestamp: number
883
+ }): Promise<{
884
+ index: number
885
+ newState: {
886
+ lastAumUsd: BN
887
+ lastRealizedFeeUsd: BN
888
+ lastFeeUsdResetUnixTimestamp: number
889
+ lastRealizedFeeUsdUpdateUnixTimestamp: number
890
+ }
891
+ }> {
892
+ // Decode pool account using helper that leverages Anchor 0.29.0
893
+ const accountInfo = await connection.getAccountInfo(pool)
894
+ const account: any = decodeJupiterPerpsPoolAccount(accountInfo?.data as Buffer)
895
+ const SECONDS_PER_YEAR = 365 * 24 * 60 * 60
896
+
897
+ let newFeesBn: BN
898
+
899
+ if (lastRealizedFeeUsdUpdateUnixTimestamp === 0) {
900
+ newFeesBn = new BN(account.poolApr.realizedFeeUsd.toString())
901
+ } else if (Number(account.poolApr.lastUpdated) > lastFeeUsdResetUnixTimestamp) {
902
+ const timeBetweenResets = Number(account.poolApr.lastUpdated) - lastFeeUsdResetUnixTimestamp
903
+ const feeAprBps = new BN(account.poolApr.feeAprBps)
904
+ const estTotalFees =
905
+ lastAumUsd.gt(new BN(0)) && timeBetweenResets > 0
906
+ ? feeAprBps.mul(lastAumUsd).mul(new BN(timeBetweenResets)).div(new BN(SECONDS_PER_YEAR)).div(new BN(10_000))
907
+ : new BN(0)
908
+
909
+ const missingFees = estTotalFees.sub(lastRealizedFeeUsd)
910
+ const feesSinceReset = new BN(account.poolApr.realizedFeeUsd.toString())
911
+ newFeesBn = missingFees.add(feesSinceReset)
912
+ } else {
913
+ newFeesBn = new BN(account.poolApr.realizedFeeUsd.toString()).sub(lastRealizedFeeUsd)
914
+ }
915
+
916
+ const aumUsd = new BN(account.aumUsd.toString())
917
+ const indexIncrease = new Decimal(newFeesBn.toString()).div(new Decimal(aumUsd.toString())).toNumber()
918
+ const currentIndexNum = parseFloat(PreciseNumber.fromRaw(currentIndex[0]).valueString)
919
+ const nextIndex = currentIndexNum + indexIncrease
920
+
921
+ return {
922
+ index: nextIndex,
923
+ newState: {
924
+ lastAumUsd: aumUsd,
925
+ lastRealizedFeeUsd: new BN(account.poolApr.realizedFeeUsd.toString()),
926
+ lastFeeUsdResetUnixTimestamp: Number(account.poolApr.lastUpdated),
927
+ lastRealizedFeeUsdUpdateUnixTimestamp: Math.floor(Date.now() / 1000),
928
+ },
929
+ }
930
+ }
931
+
804
932
  export async function fetchPyth(connection: web3.Connection): Promise<string> {
805
933
  return ""
806
934
  }
@@ -858,6 +986,65 @@ export async function fetchFragmetricIndex({
858
986
  return { index, receiptTokenMint, wrappedTokenMint }
859
987
  }
860
988
 
989
+ export async function fetchJupiterLendIndex({
990
+ connection,
991
+ jupiterLendAccount,
992
+ }: {
993
+ connection: web3.Connection
994
+ jupiterLendAccount: web3.PublicKey
995
+ }) {
996
+ const account = await connection.getAccountInfo(jupiterLendAccount)
997
+ const coder = new BorshCoder(JupiterLendIdl as Idl)
998
+ const data = coder.accounts.decode("Lending", account.data)
999
+ const index = Number(data.token_exchange_price) / Number(10 ** 12)
1000
+ const tokenReservesLiquidity = data.token_reserves_liquidity
1001
+ const lendingSupplyPosition = data.supply_position_on_liquidity
1002
+ const rewardsRateModel = data.rewards_rate_model
1003
+ const rateModel = jupiterLendAccount.equals(new web3.PublicKey("BeAqbxfrcXmzEYT2Ra62oW2MqkuFDHaCtps47Mzg6Zj3"))
1004
+ ? new web3.PublicKey("Acvyi9HBGmqh3Exe1N4PjBVyY8fokq2AdC6fSLqV6KSo")
1005
+ : new web3.PublicKey("6iHHKAK9Mqjn57CVmWe4szAPyTH8s8pniXSj6vWaKW5r")
1006
+
1007
+ console.log("token reserves liquidity in fetch jupiter lend index", tokenReservesLiquidity.toBase58())
1008
+
1009
+ return { index, baseTokenMint: data.mint, tokenReservesLiquidity, lendingSupplyPosition, rewardsRateModel, rateModel }
1010
+ }
1011
+
1012
+ export async function fetchKaminoVaultIndex({
1013
+ connection,
1014
+ kaminoVaultAccount,
1015
+ }: {
1016
+ connection: web3.Connection
1017
+ kaminoVaultAccount: web3.PublicKey
1018
+ }) {
1019
+ const account = await connection.getAccountInfo(kaminoVaultAccount)
1020
+ const coder = new BorshCoder(KaminoVaultIdl as Idl)
1021
+
1022
+ const data = coder.accounts.decode("VaultState", account.data)
1023
+
1024
+ const activeReserves = data.vault_allocation_strategy
1025
+ .map((r) => r.reserve)
1026
+ .filter((reserve) => reserve.toBase58() !== web3.PublicKey.default.toBase58())
1027
+
1028
+ console.log("activeReserves", activeReserves)
1029
+ const activeReservesData = await connection.getMultipleAccountsInfo(activeReserves)
1030
+
1031
+ const reserves = activeReserves.map((r, i) => {
1032
+ console.log("r.data", activeReservesData[i].data)
1033
+ return {
1034
+ reserveAddress: r,
1035
+ reserve: Reserve.decode(activeReservesData[i].data).lendingMarket,
1036
+ }
1037
+ })
1038
+
1039
+ console.log("reserves", reserves)
1040
+ const tokenVault = data.token_vault
1041
+ const tokenMint = data.token_mint
1042
+ const baseVaultAuthority = data.base_vault_authority
1043
+ const sharesMint = data.shares_mint
1044
+
1045
+ return { index: 1, tokenVault, tokenMint, baseVaultAuthority, sharesMint, reserves }
1046
+ }
1047
+
861
1048
  export async function fetchFragmetricSupportedTokenIndex({
862
1049
  connection,
863
1050
  fragmetricFund,
@@ -953,3 +1140,151 @@ export async function fetchMeteoraIndex({
953
1140
  throw error
954
1141
  }
955
1142
  }
1143
+
1144
+ export async function fetchAdrenaIndex({
1145
+ connection,
1146
+ accounts,
1147
+ previousTotalFees,
1148
+ currentIndex,
1149
+ }: {
1150
+ connection: web3.Connection
1151
+ accounts: AccountsInterface
1152
+ previousTotalFees: BN
1153
+ currentIndex: AnchorizedPNum
1154
+ }): Promise<{
1155
+ index: number
1156
+ }> {
1157
+ try {
1158
+ const zero = new BN(0)
1159
+
1160
+ // Fetch all account data in a single RPC call
1161
+ const accountInfos = await connection.getMultipleAccountsInfo([
1162
+ accounts.pool,
1163
+ accounts.custody1,
1164
+ accounts.custody2,
1165
+ accounts.custody3,
1166
+ accounts.custody4,
1167
+ ])
1168
+
1169
+ if (!accountInfos[0] || !accountInfos[1] || !accountInfos[2] || !accountInfos[3] || !accountInfos[4]) {
1170
+ throw new Error("One or more Adrena accounts not found")
1171
+ }
1172
+
1173
+ // Decode accounts using adrena-idl package functions
1174
+ const { poolAccount, custodyAccounts } = decodePoolAndCustodyAccounts(accountInfos)
1175
+ // @ts-ignore
1176
+ const currentTotalFees = calculateTotalFeesFromCustodies(custodyAccounts)
1177
+
1178
+ let yieldIncrement: number
1179
+ let aumValue = poolAccount.aumUsd.low
1180
+
1181
+ if (aumValue.eq(zero)) {
1182
+ yieldIncrement = 0
1183
+ }
1184
+
1185
+ let feeDifference = currentTotalFees.gte(previousTotalFees) ? currentTotalFees.sub(previousTotalFees) : zero
1186
+
1187
+ yieldIncrement = feeDifference.toNumber() / aumValue.toNumber()
1188
+
1189
+ let currentIndexNumber = parseFloat(PreciseNumber.fromRaw(currentIndex[0]).valueString)
1190
+
1191
+ return { index: currentIndexNumber + yieldIncrement }
1192
+ } catch (error) {
1193
+ throw error
1194
+ }
1195
+ }
1196
+
1197
+ export async function fetchSanctumIndex({
1198
+ connection,
1199
+ accounts,
1200
+ }: {
1201
+ connection: web3.Connection
1202
+ accounts: AccountsInterface
1203
+ }): Promise<number> {
1204
+ try {
1205
+ const poolState = await decodePoolStateAccount(connection, accounts.poolState)
1206
+ const lpMint = await getMint(connection, accounts.lpMint)
1207
+
1208
+ const zeroBn = new BN(0)
1209
+ const precision = new BN(10 ** lpMint.decimals)
1210
+ const lpTokenSupplyBn = new BN(lpMint.supply.toString())
1211
+ const poolTotalSolValueBn = new BN(poolState.totalSolValue.toString())
1212
+
1213
+ if (lpTokenSupplyBn.eq(zeroBn) || poolTotalSolValueBn.eq(zeroBn)) {
1214
+ return 1
1215
+ }
1216
+
1217
+ const exchangeRateBn = lpTokenSupplyBn.mul(precision).div(poolTotalSolValueBn)
1218
+ const exchangeRate = new Decimal(exchangeRateBn.toString()).div(precision.toString()).toNumber()
1219
+
1220
+ return 1 / exchangeRate // We return inverse exchange rate
1221
+ } catch (error) {
1222
+ throw error
1223
+ }
1224
+ }
1225
+
1226
+ export async function fetchSolsticeRedemptionRate({
1227
+ connection,
1228
+ yieldPool,
1229
+ vestingSchedule,
1230
+ }: {
1231
+ connection: web3.Connection
1232
+ yieldPool: web3.PublicKey
1233
+ vestingSchedule: web3.PublicKey
1234
+ }): Promise<{
1235
+ redemptionRate: number
1236
+ totalAssets: string
1237
+ sharesSupply: string
1238
+ vestingAmount: string
1239
+ totalVestedAssets: string
1240
+ }> {
1241
+ try {
1242
+ // Fetch both accounts in a single RPC call for efficiency
1243
+ const accountInfos = await connection.getMultipleAccountsInfo([yieldPool, vestingSchedule])
1244
+
1245
+ if (!accountInfos[0] || !accountInfos[1]) {
1246
+ throw new Error("One or more Solstice accounts not found")
1247
+ }
1248
+
1249
+ // Decode accounts using solstice-idl package function
1250
+ const { yieldPoolAccount, vestingScheduleAccount } = decodeYieldPoolAndVestingScheduleAccounts(accountInfos)
1251
+
1252
+ // Extract fields for calculation (convert BN to bigint)
1253
+ const poolTotalAssets = BigInt(yieldPoolAccount.total_assets.toString())
1254
+ const poolSharesSupply = BigInt(yieldPoolAccount.shares_supply.toString())
1255
+ const vestingAmount = BigInt(vestingScheduleAccount.vesting_amount.toString())
1256
+
1257
+ // Calculate total vested assets (mimicking the Rust logic)
1258
+ let totalVestedAssets: bigint
1259
+ if (vestingAmount === 0n) {
1260
+ totalVestedAssets = poolTotalAssets // If no vesting amount, all assets are considered vested
1261
+ } else {
1262
+ const vestingStart = BigInt(vestingScheduleAccount.start_time.toString())
1263
+ const vestingEnd = BigInt(vestingScheduleAccount.end_time.toString())
1264
+ const currentTime = BigInt(Math.floor(Date.now() / 1000)) // Current Unix timestamp
1265
+
1266
+ // Calculate unvested amount
1267
+ let unvestedAmount: bigint
1268
+ if (currentTime > vestingEnd) {
1269
+ unvestedAmount = 0n // If current time passed the vesting end, no unvested amount
1270
+ } else {
1271
+ unvestedAmount = (vestingAmount * (vestingEnd - currentTime)) / (vestingEnd - vestingStart)
1272
+ }
1273
+
1274
+ totalVestedAssets = poolTotalAssets - unvestedAmount
1275
+ }
1276
+
1277
+ // Calculate redemption rate: (total_vested_assets + 1) / (pool_shares_supply + 1)
1278
+ const redemptionRate = Number(totalVestedAssets + 1n) / Number(poolSharesSupply + 1n)
1279
+
1280
+ return {
1281
+ redemptionRate,
1282
+ totalAssets: poolTotalAssets.toString(),
1283
+ sharesSupply: poolSharesSupply.toString(),
1284
+ vestingAmount: vestingAmount.toString(),
1285
+ totalVestedAssets: totalVestedAssets.toString(),
1286
+ }
1287
+ } catch (error) {
1288
+ throw error
1289
+ }
1290
+ }
package/src/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  // TODO - rename to "sol"
2
2
  export * from "./exponentFetcher"
3
+ export { fetchJupiterPerpsIndex } from "./exponentFetcher"
package/tsconfig.json CHANGED
@@ -30,6 +30,12 @@
30
30
  { "path": "../generic-sy-pda" },
31
31
  { "path": "../perena-sy-idl" },
32
32
  { "path": "../fragmetric-idl" },
33
- { "path": "../meteora-idl" }
33
+ { "path": "../meteora-idl" },
34
+ { "path": "../sanctum-idl" },
35
+ { "path": "../adrena-idl" },
36
+ { "path": "../jupiter-lend-idl" },
37
+ { "path": "../kamino-vault-idl" },
38
+ { "path": "../jupiter-perps-idl" },
39
+ { "path": "../solstice-idl" }
34
40
  ]
35
41
  }