@exponent-labs/exponent-fetcher 0.1.3 → 0.1.6

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,14 @@
1
1
  /// <reference types="bn.js" />
2
2
  import { BN, Program, Wallet, web3 } from "@coral-xyz/anchor";
3
+ import Decimal from "decimal.js";
3
4
  import { ExponentCore } from "@exponent-labs/exponent-idl";
5
+ import { AnchorizedPNum, AnchorizedPNumJson, CpiAccountIndexes, GenericSyMetaAccount, InterfaceType, JitoRestakingSyMetaAccount, MarginfiSyMeta, PerenaSyMetaAccount, SyEmissionRaw, VaultEmission, VaultEmissionJson } from "@exponent-labs/exponent-types";
6
+ import { GenericStandard } from "@exponent-labs/generic-sy-idl";
7
+ import { JitoRestakingStandard } from "@exponent-labs/jito-restaking-sy-idl";
8
+ import { Obligation } from "@exponent-labs/kamino-reserve-deserializer";
4
9
  import { KaminoLendStandard } from "@exponent-labs/kamino-sy-idl";
5
10
  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
11
  import { PerenaStandard } from "@exponent-labs/perena-sy-idl";
10
- import { GenericStandard } from "@exponent-labs/generic-sy-idl";
11
12
  export declare function serializeAnchorizedPNumFromJson(pnum: AnchorizedPNum): AnchorizedPNumJson;
12
13
  export declare function deserializeAnchorizedPNumFromJson(serialized: AnchorizedPNumJson): AnchorizedPNum;
13
14
  export declare class MyWallet implements Wallet {
@@ -60,6 +61,7 @@ export declare function fetchKaminoReserve(address: web3.PublicKey, connection:
60
61
  baseMint: web3.PublicKey;
61
62
  assetShareValue: Decimal;
62
63
  }>;
64
+ export declare function fetchAllKaminoObligationsByKaminoReserve(reserve: web3.PublicKey, connection: web3.Connection): Promise<Obligation[]>;
63
65
  export declare function serializeEmission(emission: VaultEmission): VaultEmissionJson;
64
66
  export declare function deserializeEmission(emission: VaultEmissionJson): VaultEmission;
65
67
  export interface MarketTwo {
@@ -95,6 +97,7 @@ export interface MarketTwo {
95
97
  }[];
96
98
  };
97
99
  liquidityNetBalanceLimits: LiquidityNetBalanceLimits;
100
+ seedId: number[];
98
101
  }
99
102
  export interface Vault {
100
103
  syProgram: web3.PublicKey;
@@ -223,6 +226,28 @@ export declare function fetchJitoRestaking(connection: web3.Connection, accounts
223
226
  exchangeRateUnderlying: number;
224
227
  exchangeRate: string;
225
228
  }>;
229
+ /**
230
+ * Fetch the pre-simulated index for Jupiter Perps pool to mirror on-chain logic in utils.rs (InterfaceType::JupiterPerps)
231
+ * Uses fields: pool.pool_apr.{realized_fee_usd, fee_apr_bps, last_updated}, pool.aum_usd,
232
+ * and tracks last_* values to compute the next index increment similar to the program.
233
+ */
234
+ export declare function fetchJupiterPerpsIndex({ connection, pool, lastFeeUsdResetUnixTimestamp, lastRealizedFeeUsd, lastAumUsd, currentIndex, lastRealizedFeeUsdUpdateUnixTimestamp, }: {
235
+ connection: web3.Connection;
236
+ pool: web3.PublicKey;
237
+ lastFeeUsdResetUnixTimestamp: number;
238
+ lastRealizedFeeUsd: BN;
239
+ lastAumUsd: BN;
240
+ currentIndex: AnchorizedPNum;
241
+ lastRealizedFeeUsdUpdateUnixTimestamp: number;
242
+ }): Promise<{
243
+ index: number;
244
+ newState: {
245
+ lastAumUsd: BN;
246
+ lastRealizedFeeUsd: BN;
247
+ lastFeeUsdResetUnixTimestamp: number;
248
+ lastRealizedFeeUsdUpdateUnixTimestamp: number;
249
+ };
250
+ }>;
226
251
  export declare function fetchPyth(connection: web3.Connection): Promise<string>;
227
252
  export declare function fetchGenericSyMetaIndex({ connection, genericSyMeta, }: {
228
253
  connection: web3.Connection;
@@ -238,6 +263,28 @@ export declare function fetchFragmetricIndex({ connection, fragmetricFund, }: {
238
263
  receiptTokenMint: web3.PublicKey;
239
264
  wrappedTokenMint: web3.PublicKey;
240
265
  }>;
266
+ export declare function fetchJupiterLendIndex({ connection, jupiterLendAccount, }: {
267
+ connection: web3.Connection;
268
+ jupiterLendAccount: web3.PublicKey;
269
+ }): Promise<{
270
+ index: number;
271
+ baseTokenMint: any;
272
+ tokenReservesLiquidity: any;
273
+ lendingSupplyPosition: any;
274
+ rewardsRateModel: any;
275
+ rateModel: web3.PublicKey;
276
+ }>;
277
+ export declare function fetchKaminoVaultIndex({ connection, kaminoVaultAccount, }: {
278
+ connection: web3.Connection;
279
+ kaminoVaultAccount: web3.PublicKey;
280
+ }): Promise<{
281
+ index: number;
282
+ tokenVault: any;
283
+ tokenMint: any;
284
+ baseVaultAuthority: any;
285
+ sharesMint: any;
286
+ reserves: any;
287
+ }>;
241
288
  export declare function fetchFragmetricSupportedTokenIndex({ connection, fragmetricFund, index, }: {
242
289
  connection: web3.Connection;
243
290
  fragmetricFund: web3.PublicKey;
@@ -262,4 +309,27 @@ export declare function fetchMeteoraIndex({ connection, accounts, onChainTime, }
262
309
  poolVaultBLpTokenAmount: number;
263
310
  lpSupply: number;
264
311
  }>;
312
+ export declare function fetchAdrenaIndex({ connection, accounts, previousTotalFees, currentIndex, }: {
313
+ connection: web3.Connection;
314
+ accounts: AccountsInterface;
315
+ previousTotalFees: BN;
316
+ currentIndex: AnchorizedPNum;
317
+ }): Promise<{
318
+ index: number;
319
+ }>;
320
+ export declare function fetchSanctumIndex({ connection, accounts, }: {
321
+ connection: web3.Connection;
322
+ accounts: AccountsInterface;
323
+ }): Promise<number>;
324
+ export declare function fetchSolsticeRedemptionRate({ connection, yieldPool, vestingSchedule, }: {
325
+ connection: web3.Connection;
326
+ yieldPool: web3.PublicKey;
327
+ vestingSchedule: web3.PublicKey;
328
+ }): Promise<{
329
+ redemptionRate: number;
330
+ totalAssets: string;
331
+ sharesSupply: string;
332
+ vestingAmount: string;
333
+ totalVestedAssets: string;
334
+ }>;
265
335
  export {};
@@ -3,28 +3,36 @@ 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.fetchSolsticeRedemptionRate = exports.fetchSanctumIndex = exports.fetchAdrenaIndex = exports.fetchMeteoraIndex = exports.fetchFragmetricSupportedTokenIndex = exports.fetchKaminoVaultIndex = exports.fetchJupiterLendIndex = exports.fetchFragmetricIndex = exports.fetchGenericSyMetaIndex = exports.fetchPyth = exports.fetchJupiterPerpsIndex = exports.fetchJitoRestaking = exports.fetchPerenaStablePoolData = exports.fetchSplStakePoolIndex = exports.deserializeEmission = exports.serializeEmission = exports.fetchAllKaminoObligationsByKaminoReserve = exports.fetchKaminoReserve = exports.ExponentFetcher = exports.MyWallet = exports.deserializeAnchorizedPNumFromJson = exports.serializeAnchorizedPNumFromJson = void 0;
7
7
  const anchor_1 = require("@coral-xyz/anchor");
8
+ const anchor_2 = require("@coral-xyz/anchor");
9
+ const spl_stake_pool_1 = require("@solana/spl-stake-pool");
10
+ const spl_token_1 = require("@solana/spl-token");
11
+ const spl_token_2 = require("@solana/spl-token");
12
+ const decimal_js_1 = __importDefault(require("decimal.js"));
8
13
  const exponent_idl_1 = require("@exponent-labs/exponent-idl");
14
+ const exponent_types_1 = require("@exponent-labs/exponent-types");
15
+ const fragmetric_idl_1 = require("@exponent-labs/fragmetric-idl");
16
+ const jupiter_lend_idl_1 = require("@exponent-labs/jupiter-lend-idl");
17
+ const kamino_vault_idl_1 = require("@exponent-labs/kamino-vault-idl");
18
+ const generic_sy_idl_1 = require("@exponent-labs/generic-sy-idl");
19
+ const jito_restaking_sy_idl_1 = require("@exponent-labs/jito-restaking-sy-idl");
20
+ const jito_restaking_sy_idl_2 = require("@exponent-labs/jito-restaking-sy-idl");
21
+ const kamino_reserve_deserializer_1 = require("@exponent-labs/kamino-reserve-deserializer");
22
+ const kamino_reserve_deserializer_2 = require("@exponent-labs/kamino-reserve-deserializer");
9
23
  const kamino_sy_idl_1 = require("@exponent-labs/kamino-sy-idl");
24
+ const kamino_sy_idl_2 = require("@exponent-labs/kamino-sy-idl");
10
25
  const marginfi_sy_idl_1 = require("@exponent-labs/marginfi-sy-idl");
26
+ const meteora_idl_1 = require("@exponent-labs/meteora-idl");
11
27
  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
28
  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");
29
+ const precise_number_1 = require("@exponent-labs/precise-number");
30
+ const sanctum_idl_1 = require("@exponent-labs/sanctum-idl");
31
+ const adrena_idl_1 = require("@exponent-labs/adrena-idl");
32
+ const solstice_idl_1 = require("@exponent-labs/solstice-idl");
27
33
  const meteora_1 = require("./utils/meteora");
34
+ // Decode Jupiter Perps pool accounts via helper using Anchor 0.29.0
35
+ const jupiter_perps_idl_1 = require("@exponent-labs/jupiter-perps-idl");
28
36
  function serializeAnchorizedPNumFromJson(pnum) {
29
37
  const serializedArray = pnum[0].map((bn) => bn.toString());
30
38
  return { 0: serializedArray };
@@ -190,7 +198,6 @@ class ExponentFetcher {
190
198
  }
191
199
  async fetchLpPosition(address) {
192
200
  const x = await this.program.account.lpPosition.fetch(address);
193
- console.log("FARMs SHOULD BE HERE", x.farms);
194
201
  return deserializeLpPosition(x);
195
202
  }
196
203
  async fetchYtPosition(address) {
@@ -245,6 +252,7 @@ function deserializeMarketTwo(m) {
245
252
  })),
246
253
  },
247
254
  liquidityNetBalanceLimits: m.liquidityNetBalanceLimits,
255
+ seedId: m.seedId,
248
256
  };
249
257
  }
250
258
  function deserializeVault(x) {
@@ -339,12 +347,42 @@ async function fetchKaminoReserve(address, connection) {
339
347
  };
340
348
  }
341
349
  exports.fetchKaminoReserve = fetchKaminoReserve;
350
+ const DEPOSITS_LIMIT = 8;
351
+ async function fetchAllKaminoObligationsByKaminoReserve(reserve, connection) {
352
+ const finalObligations = [];
353
+ const programId = new anchor_1.web3.PublicKey(kamino_reserve_deserializer_2.PROGRAM_ID);
354
+ for (let i = 0; i < DEPOSITS_LIMIT; i++) {
355
+ const [slot, obligations] = await Promise.all([
356
+ connection.getSlot(),
357
+ connection.getProgramAccounts(programId, {
358
+ filters: [
359
+ {
360
+ dataSize: kamino_reserve_deserializer_1.Obligation.layout.span + 8,
361
+ },
362
+ {
363
+ memcmp: {
364
+ offset: 96 + 136 * i,
365
+ bytes: reserve.toBase58(),
366
+ },
367
+ },
368
+ ],
369
+ }),
370
+ ]);
371
+ for (const obligation of obligations) {
372
+ const data = kamino_reserve_deserializer_1.Obligation.decode(obligation.account.data);
373
+ finalObligations.push(data);
374
+ }
375
+ }
376
+ return finalObligations;
377
+ }
378
+ exports.fetchAllKaminoObligationsByKaminoReserve = fetchAllKaminoObligationsByKaminoReserve;
342
379
  function serializeEmission(emission) {
343
380
  return {
344
381
  tokenAccount: emission.tokenAccount.toString(),
345
382
  initialIndex: serializeAnchorizedPNumFromJson(emission.initialIndex),
346
383
  lastSeenIndex: serializeAnchorizedPNumFromJson(emission.lastSeenIndex),
347
384
  treasuryTokenAccount: emission.treasuryTokenAccount.toString(),
385
+ finalIndex: serializeAnchorizedPNumFromJson(emission.finalIndex),
348
386
  feeBps: emission.feeBps,
349
387
  treasuryEmission: emission.treasuryEmission.toString(),
350
388
  };
@@ -356,6 +394,7 @@ function deserializeEmission(emission) {
356
394
  initialIndex: deserializeAnchorizedPNumFromJson(emission.initialIndex),
357
395
  lastSeenIndex: deserializeAnchorizedPNumFromJson(emission.lastSeenIndex),
358
396
  treasuryTokenAccount: new anchor_1.web3.PublicKey(emission.treasuryTokenAccount),
397
+ finalIndex: deserializeAnchorizedPNumFromJson(emission.finalIndex),
359
398
  feeBps: emission.feeBps,
360
399
  treasuryEmission: new anchor_1.BN(emission.treasuryEmission),
361
400
  };
@@ -432,6 +471,48 @@ async function fetchJitoRestaking(connection, accounts, interfaceType, vaultAddr
432
471
  };
433
472
  }
434
473
  exports.fetchJitoRestaking = fetchJitoRestaking;
474
+ /**
475
+ * Fetch the pre-simulated index for Jupiter Perps pool to mirror on-chain logic in utils.rs (InterfaceType::JupiterPerps)
476
+ * Uses fields: pool.pool_apr.{realized_fee_usd, fee_apr_bps, last_updated}, pool.aum_usd,
477
+ * and tracks last_* values to compute the next index increment similar to the program.
478
+ */
479
+ async function fetchJupiterPerpsIndex({ connection, pool, lastFeeUsdResetUnixTimestamp, lastRealizedFeeUsd, lastAumUsd, currentIndex, lastRealizedFeeUsdUpdateUnixTimestamp, }) {
480
+ // Decode pool account using helper that leverages Anchor 0.29.0
481
+ const accountInfo = await connection.getAccountInfo(pool);
482
+ const account = (0, jupiter_perps_idl_1.decodePoolAccount)(accountInfo?.data);
483
+ const SECONDS_PER_YEAR = 365 * 24 * 60 * 60;
484
+ let newFeesBn;
485
+ if (lastRealizedFeeUsdUpdateUnixTimestamp === 0) {
486
+ newFeesBn = new anchor_1.BN(account.poolApr.realizedFeeUsd.toString());
487
+ }
488
+ else if (Number(account.poolApr.lastUpdated) > lastFeeUsdResetUnixTimestamp) {
489
+ const timeBetweenResets = Number(account.poolApr.lastUpdated) - lastFeeUsdResetUnixTimestamp;
490
+ const feeAprBps = new anchor_1.BN(account.poolApr.feeAprBps);
491
+ const estTotalFees = lastAumUsd.gt(new anchor_1.BN(0)) && timeBetweenResets > 0
492
+ ? feeAprBps.mul(lastAumUsd).mul(new anchor_1.BN(timeBetweenResets)).div(new anchor_1.BN(SECONDS_PER_YEAR)).div(new anchor_1.BN(10_000))
493
+ : new anchor_1.BN(0);
494
+ const missingFees = estTotalFees.sub(lastRealizedFeeUsd);
495
+ const feesSinceReset = new anchor_1.BN(account.poolApr.realizedFeeUsd.toString());
496
+ newFeesBn = missingFees.add(feesSinceReset);
497
+ }
498
+ else {
499
+ newFeesBn = new anchor_1.BN(account.poolApr.realizedFeeUsd.toString()).sub(lastRealizedFeeUsd);
500
+ }
501
+ const aumUsd = new anchor_1.BN(account.aumUsd.toString());
502
+ const indexIncrease = new decimal_js_1.default(newFeesBn.toString()).div(new decimal_js_1.default(aumUsd.toString())).toNumber();
503
+ const currentIndexNum = parseFloat(precise_number_1.PreciseNumber.fromRaw(currentIndex[0]).valueString);
504
+ const nextIndex = currentIndexNum + indexIncrease;
505
+ return {
506
+ index: nextIndex,
507
+ newState: {
508
+ lastAumUsd: aumUsd,
509
+ lastRealizedFeeUsd: new anchor_1.BN(account.poolApr.realizedFeeUsd.toString()),
510
+ lastFeeUsdResetUnixTimestamp: Number(account.poolApr.lastUpdated),
511
+ lastRealizedFeeUsdUpdateUnixTimestamp: Math.floor(Date.now() / 1000),
512
+ },
513
+ };
514
+ }
515
+ exports.fetchJupiterPerpsIndex = fetchJupiterPerpsIndex;
435
516
  async function fetchPyth(connection) {
436
517
  return "";
437
518
  }
@@ -471,6 +552,45 @@ async function fetchFragmetricIndex({ connection, fragmetricFund, }) {
471
552
  return { index, receiptTokenMint, wrappedTokenMint };
472
553
  }
473
554
  exports.fetchFragmetricIndex = fetchFragmetricIndex;
555
+ async function fetchJupiterLendIndex({ connection, jupiterLendAccount, }) {
556
+ const account = await connection.getAccountInfo(jupiterLendAccount);
557
+ const coder = new anchor_2.BorshCoder(jupiter_lend_idl_1.IDL);
558
+ const data = coder.accounts.decode("Lending", account.data);
559
+ const index = Number(data.token_exchange_price) / Number(10 ** 12);
560
+ const tokenReservesLiquidity = data.token_reserves_liquidity;
561
+ const lendingSupplyPosition = data.supply_position_on_liquidity;
562
+ const rewardsRateModel = data.rewards_rate_model;
563
+ const rateModel = jupiterLendAccount.equals(new anchor_1.web3.PublicKey("BeAqbxfrcXmzEYT2Ra62oW2MqkuFDHaCtps47Mzg6Zj3"))
564
+ ? new anchor_1.web3.PublicKey("Acvyi9HBGmqh3Exe1N4PjBVyY8fokq2AdC6fSLqV6KSo")
565
+ : new anchor_1.web3.PublicKey("6iHHKAK9Mqjn57CVmWe4szAPyTH8s8pniXSj6vWaKW5r");
566
+ console.log("token reserves liquidity in fetch jupiter lend index", tokenReservesLiquidity.toBase58());
567
+ return { index, baseTokenMint: data.mint, tokenReservesLiquidity, lendingSupplyPosition, rewardsRateModel, rateModel };
568
+ }
569
+ exports.fetchJupiterLendIndex = fetchJupiterLendIndex;
570
+ async function fetchKaminoVaultIndex({ connection, kaminoVaultAccount, }) {
571
+ const account = await connection.getAccountInfo(kaminoVaultAccount);
572
+ const coder = new anchor_2.BorshCoder(kamino_vault_idl_1.IDL);
573
+ const data = coder.accounts.decode("VaultState", account.data);
574
+ const activeReserves = data.vault_allocation_strategy
575
+ .map((r) => r.reserve)
576
+ .filter((reserve) => reserve.toBase58() !== anchor_1.web3.PublicKey.default.toBase58());
577
+ console.log("activeReserves", activeReserves);
578
+ const activeReservesData = await connection.getMultipleAccountsInfo(activeReserves);
579
+ const reserves = activeReserves.map((r, i) => {
580
+ console.log("r.data", activeReservesData[i].data);
581
+ return {
582
+ reserveAddress: r,
583
+ reserve: kamino_reserve_deserializer_1.Reserve.decode(activeReservesData[i].data).lendingMarket,
584
+ };
585
+ });
586
+ console.log("reserves", reserves);
587
+ const tokenVault = data.token_vault;
588
+ const tokenMint = data.token_mint;
589
+ const baseVaultAuthority = data.base_vault_authority;
590
+ const sharesMint = data.shares_mint;
591
+ return { index: 1, tokenVault, tokenMint, baseVaultAuthority, sharesMint, reserves };
592
+ }
593
+ exports.fetchKaminoVaultIndex = fetchKaminoVaultIndex;
474
594
  async function fetchFragmetricSupportedTokenIndex({ connection, fragmetricFund, index, }) {
475
595
  const account = await connection.getAccountInfo(fragmetricFund);
476
596
  const coder = new anchor_2.BorshCoder(fragmetric_idl_1.IDL);
@@ -518,4 +638,104 @@ async function fetchMeteoraIndex({ connection, accounts, onChainTime, }) {
518
638
  }
519
639
  }
520
640
  exports.fetchMeteoraIndex = fetchMeteoraIndex;
641
+ async function fetchAdrenaIndex({ connection, accounts, previousTotalFees, currentIndex, }) {
642
+ try {
643
+ const zero = new anchor_1.BN(0);
644
+ // Fetch all account data in a single RPC call
645
+ const accountInfos = await connection.getMultipleAccountsInfo([
646
+ accounts.pool,
647
+ accounts.custody1,
648
+ accounts.custody2,
649
+ accounts.custody3,
650
+ accounts.custody4,
651
+ ]);
652
+ if (!accountInfos[0] || !accountInfos[1] || !accountInfos[2] || !accountInfos[3] || !accountInfos[4]) {
653
+ throw new Error("One or more Adrena accounts not found");
654
+ }
655
+ // Decode accounts using adrena-idl package functions
656
+ const { poolAccount, custodyAccounts } = (0, adrena_idl_1.decodePoolAndCustodyAccounts)(accountInfos);
657
+ // @ts-ignore
658
+ const currentTotalFees = (0, adrena_idl_1.calculateTotalFeesFromCustodies)(custodyAccounts);
659
+ let yieldIncrement;
660
+ let aumValue = poolAccount.aumUsd.low;
661
+ if (aumValue.eq(zero)) {
662
+ yieldIncrement = 0;
663
+ }
664
+ let feeDifference = currentTotalFees.gte(previousTotalFees) ? currentTotalFees.sub(previousTotalFees) : zero;
665
+ yieldIncrement = feeDifference.toNumber() / aumValue.toNumber();
666
+ let currentIndexNumber = parseFloat(precise_number_1.PreciseNumber.fromRaw(currentIndex[0]).valueString);
667
+ return { index: currentIndexNumber + yieldIncrement };
668
+ }
669
+ catch (error) {
670
+ throw error;
671
+ }
672
+ }
673
+ exports.fetchAdrenaIndex = fetchAdrenaIndex;
674
+ async function fetchSanctumIndex({ connection, accounts, }) {
675
+ try {
676
+ const poolState = await (0, sanctum_idl_1.decodePoolStateAccount)(connection, accounts.poolState);
677
+ const lpMint = await (0, spl_token_1.getMint)(connection, accounts.lpMint);
678
+ const zeroBn = new anchor_1.BN(0);
679
+ const precision = new anchor_1.BN(10 ** lpMint.decimals);
680
+ const lpTokenSupplyBn = new anchor_1.BN(lpMint.supply.toString());
681
+ const poolTotalSolValueBn = new anchor_1.BN(poolState.totalSolValue.toString());
682
+ if (lpTokenSupplyBn.eq(zeroBn) || poolTotalSolValueBn.eq(zeroBn)) {
683
+ return 1;
684
+ }
685
+ const exchangeRateBn = lpTokenSupplyBn.mul(precision).div(poolTotalSolValueBn);
686
+ const exchangeRate = new decimal_js_1.default(exchangeRateBn.toString()).div(precision.toString()).toNumber();
687
+ return 1 / exchangeRate; // We return inverse exchange rate
688
+ }
689
+ catch (error) {
690
+ throw error;
691
+ }
692
+ }
693
+ exports.fetchSanctumIndex = fetchSanctumIndex;
694
+ async function fetchSolsticeRedemptionRate({ connection, yieldPool, vestingSchedule, }) {
695
+ try {
696
+ // Fetch both accounts in a single RPC call for efficiency
697
+ const accountInfos = await connection.getMultipleAccountsInfo([yieldPool, vestingSchedule]);
698
+ if (!accountInfos[0] || !accountInfos[1]) {
699
+ throw new Error("One or more Solstice accounts not found");
700
+ }
701
+ // Decode accounts using solstice-idl package function
702
+ const { yieldPoolAccount, vestingScheduleAccount } = (0, solstice_idl_1.decodeYieldPoolAndVestingScheduleAccounts)(accountInfos);
703
+ // Extract fields for calculation (convert BN to bigint)
704
+ const poolTotalAssets = BigInt(yieldPoolAccount.total_assets.toString());
705
+ const poolSharesSupply = BigInt(yieldPoolAccount.shares_supply.toString());
706
+ const vestingAmount = BigInt(vestingScheduleAccount.vesting_amount.toString());
707
+ // Calculate total vested assets (mimicking the Rust logic)
708
+ let totalVestedAssets;
709
+ if (vestingAmount === 0n) {
710
+ totalVestedAssets = poolTotalAssets; // If no vesting amount, all assets are considered vested
711
+ }
712
+ else {
713
+ const vestingStart = BigInt(vestingScheduleAccount.start_time.toString());
714
+ const vestingEnd = BigInt(vestingScheduleAccount.end_time.toString());
715
+ const currentTime = BigInt(Math.floor(Date.now() / 1000)); // Current Unix timestamp
716
+ // Calculate unvested amount
717
+ let unvestedAmount;
718
+ if (currentTime > vestingEnd) {
719
+ unvestedAmount = 0n; // If current time passed the vesting end, no unvested amount
720
+ }
721
+ else {
722
+ unvestedAmount = (vestingAmount * (vestingEnd - currentTime)) / (vestingEnd - vestingStart);
723
+ }
724
+ totalVestedAssets = poolTotalAssets - unvestedAmount;
725
+ }
726
+ // Calculate redemption rate: (total_vested_assets + 1) / (pool_shares_supply + 1)
727
+ const redemptionRate = Number(totalVestedAssets + 1n) / Number(poolSharesSupply + 1n);
728
+ return {
729
+ redemptionRate,
730
+ totalAssets: poolTotalAssets.toString(),
731
+ sharesSupply: poolSharesSupply.toString(),
732
+ vestingAmount: vestingAmount.toString(),
733
+ totalVestedAssets: totalVestedAssets.toString(),
734
+ };
735
+ }
736
+ catch (error) {
737
+ throw error;
738
+ }
739
+ }
740
+ exports.fetchSolsticeRedemptionRate = fetchSolsticeRedemptionRate;
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exponent-labs/exponent-fetcher",
3
- "version": "0.1.3",
3
+ "version": "0.1.6",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "license": "AGPL-3.0",
@@ -9,17 +9,23 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "@coral-xyz/anchor": "0.30.0",
12
- "@exponent-labs/exponent-idl": "0.1.3",
13
- "@exponent-labs/exponent-types": "0.1.3",
14
- "@exponent-labs/fragmetric-idl": "0.1.3",
15
- "@exponent-labs/generic-sy-idl": "0.1.3",
16
- "@exponent-labs/jito-restaking-sy-idl": "0.1.3",
17
- "@exponent-labs/kamino-reserve-deserializer": "0.1.3",
18
- "@exponent-labs/marginfi-sy-idl": "0.1.3",
19
- "@exponent-labs/meteora-idl": "0.1.3",
20
- "@exponent-labs/kamino-sy-idl": "0.1.3",
21
- "@exponent-labs/perena-sy-idl": "0.1.3",
22
- "@exponent-labs/precise-number": "0.1.3",
12
+ "@exponent-labs/adrena-idl": "0.1.6",
13
+ "@exponent-labs/exponent-idl": "0.1.6",
14
+ "@exponent-labs/exponent-types": "0.1.6",
15
+ "@exponent-labs/fragmetric-idl": "0.1.6",
16
+ "@exponent-labs/generic-sy-idl": "0.1.6",
17
+ "@exponent-labs/jito-restaking-sy-idl": "0.1.6",
18
+ "@exponent-labs/jupiter-lend-idl": "0.1.6",
19
+ "@exponent-labs/jupiter-perps-idl": "0.1.6",
20
+ "@exponent-labs/kamino-reserve-deserializer": "0.1.6",
21
+ "@exponent-labs/kamino-sy-idl": "0.1.6",
22
+ "@exponent-labs/kamino-vault-idl": "0.1.6",
23
+ "@exponent-labs/marginfi-sy-idl": "0.1.6",
24
+ "@exponent-labs/meteora-idl": "0.1.6",
25
+ "@exponent-labs/perena-sy-idl": "0.1.6",
26
+ "@exponent-labs/precise-number": "0.1.6",
27
+ "@exponent-labs/sanctum-idl": "0.1.6",
28
+ "@exponent-labs/solstice-idl": "0.1.6",
23
29
  "@solana/spl-stake-pool": "1.1.8",
24
30
  "@solana/spl-token": "0.4.6",
25
31
  "bn-sqrt": "^1.0.0",
@@ -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
  }