@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.
- package/build/exponentFetcher.d.ts +74 -4
- package/build/exponentFetcher.js +236 -16
- package/build/exponentFetcher.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.js +3 -0
- package/build/index.js.map +1 -1
- package/package.json +18 -12
- package/src/exponentFetcher.ts +368 -33
- package/src/index.ts +1 -0
- package/tsconfig.json +7 -1
|
@@ -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 {};
|
package/build/exponentFetcher.js
CHANGED
|
@@ -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
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
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":";;;;;;AAAA,8CAAkF;AAClF,8DAA2E;AAC3E,gEAAuF;AAEvF,oEAIuC;AACvC,gEAAuF;AACvF,gFAAiG;AACjG,gEAAiE;AACjE,kEAA6D;AAC7D,4FAAoE;AACpE,gFAAuG;AACvG,gEAAiE;AACjE,2DAA4D;AAC5D,kEAAoE;AACpE,4DAAkF;AAClF,iDAAuD;AACvD,8CAA8C;AAC9C,kEAmBsC;AACtC,4DAAgC;AAEhC,iDAA8C;AAE9C,kEAAoH;AACpH,6CAA4D;AAE5D,SAAgB,+BAA+B,CAAC,IAAoB;IAClE,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC1D,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,CAAA;AAC/B,CAAC;AAHD,0EAGC;AAED,SAAgB,iCAAiC,CAAC,UAA8B;IAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,WAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACvD,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAA;AACvB,CAAC;AAHD,8EAGC;AAED,MAAa,QAAQ;IACE;IAArB,YAAqB,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,eAAe,CAAyD,EAAK;QACjF,IAAI,EAAE,YAAY,aAAI,CAAC,WAAW,EAAE,CAAC;YACnC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAyD,GAAQ;QACxF,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,YAAY,aAAI,CAAC,WAAW,EAAE,CAAC;gBAClC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC;iBAAM,IAAI,CAAC,YAAY,aAAI,CAAC,oBAAoB,EAAE,CAAC;gBAClD,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YACtB,CAAC;YACD,OAAO,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAA;IAC7B,CAAC;CACF;AA5BD,4BA4BC;AAED,MAAa,eAAe;IACnB,OAAO,CAAuB;IAC9B,iBAAiB,CAA2B;IAC5C,eAAe,CAA6B;IAC5C,sBAAsB,CAAgC;IACtD,eAAe,CAAyB;IACxC,sBAAsB,CAA0B;IAChD,UAAU,CAAiB;IAC3B,aAAa,CAAgB;IAC7B,mBAAmB,CAAgB;IACnC,iBAAiB,CAAgB;IACjC,wBAAwB,CAAgB;IACxC,iBAAiB,CAAgB;IACjC,wBAAwB,CAAgB;IAE/C,YAAY,EACV,UAAU,EACV,aAAa,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,yBAAU,CAAC,EAC9C,mBAAmB,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,4BAAsB,CAAC,EAChE,iBAAiB,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAClE,wBAAwB,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,kCAA4B,CAAC,EAC3E,iBAAiB,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAClE,wBAAwB,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,GAS3E;QACC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAA;QAC9C,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAA;QACxD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAA;QACxD,oEAAoE;QACpE,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,aAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QACxD,MAAM,QAAQ,GAAG,IAAI,uBAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAE3D,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAO,CAAe,kBAAmB,EAAE,QAAQ,CAAC,CAAA;QACvE,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAO,CAAmB,qBAAiC,EAAE,QAAQ,CAAC,CAAA;QACnG,IAAI,CAAC,eAAe,GAAG,IAAI,gBAAO,CAAqB,mBAAiC,EAAE,QAAQ,CAAC,CAAA;QACnG,IAAI,CAAC,sBAAsB,GAAG,IAAI,gBAAO,CACvC,2BAA2C,EAC3C,QAAQ,CACT,CAAA;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,gBAAO,CAAiB,mBAA6B,EAAE,QAAQ,CAAC,CAAA;QAC3F,IAAI,CAAC,sBAAsB,GAAG,IAAI,gBAAO,CAAkB,oBAAkB,EAAE,QAAQ,CAAC,CAAA;IAC1F,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAuB;QACtC,IAAI,CAAC;YACH,MAAM,CAAC,GAAa,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACnE,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YAC3D,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAChB,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAuB;QACvC,IAAI,CAAC;YACH,MAAM,CAAC,GAAiB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC3E,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YAC5D,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAChB,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAAuB;QAC/C,MAAM,CAAC,GAAsB,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACvF,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,OAAuB;QACnD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACtE,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YACnD,aAAa,EAAE,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACtF,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,SAAS;SACV,CAAA;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,OAAuB;QACjD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACpE,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YACnD,aAAa,EAAE,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACtF,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,SAAS;SACV,CAAA;IACH,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,OAAuB;QACxD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3E,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YACnD,aAAa,EAAE,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACtF,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,SAAS;SACV,CAAA;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,OAAuB;QACjD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACpE,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YACnD,aAAa,EAAE,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACtF,CAAC,CAAC,CAAA;QACH,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAA;IAC9E,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,OAAuB;QAClD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3E,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YACnD,aAAa,EAAE,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACtF,CAAC,CAAC,CAAA;QACH,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAA;IAC9E,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAuB;QAC7C,MAAM,CAAC,GAAoB,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACnF,OAAO;YACL,GAAG,CAAC;YACJ,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC;SACrD,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAuB;QAC3C,MAAM,CAAC,GAAkB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC7E,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;QAC5C,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAuB;QAC3C,MAAM,CAAC,GAAkB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrF,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,OAAuB;QACpD,MAAM,CAAC,GAAkC,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAExG,OAAO,IAAA,yDAAwC,EAAC,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAuB;QAC7C,MAAM,CAAC,GAA2B,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC1F,OAAO,IAAA,kDAAiC,EAAC,CAAC,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAAuB;QAC9C,MAAM,CAAC,GAA4B,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAElG,OAAO,IAAA,mDAAkC,EAAC,CAAC,CAAC,CAAA;IAC9C,CAAC;CACF;AArLD,0CAqLC;AAED,SAAS,oBAAoB,CAAC,CAAe;IAC3C,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACpD,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACpD,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QACnD,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC7C,cAAc,EAAE,CAAC,CAAC,UAAU,CAAC,cAAc;QAC3C,aAAa,EAAE,CAAC,CAAC,UAAU,CAAC,aAAa;QACzC,iBAAiB,EAAE,CAAC,CAAC,UAAU,CAAC,iBAAiB;QACjD,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE;QAClD,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;QACxC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;QACxC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;QACxC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE;YACT,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzC,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,YAAY,EAAE,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC;gBACvD,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;aACzC,CAAC,CAAC;SACJ;QACD,yBAAyB,EAAE,CAAC,CAAC,yBAAyB;KACvD,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAW;IACnC,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,sBAAsB,EAAE,yBAAyB,CAAC,CAAC,CAAC,sBAAsB,CAAC;QAC3E,yBAAyB,EAAE,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC;QACjF,mBAAmB,EAAE,yBAAyB,CAAC,CAAC,CAAC,mBAAmB,CAAC;QACrE,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;QACxC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrC,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QACrD,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,sBAAsB,EAAE,CAAC,CAAC,sBAAsB;QAChD,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QACnD,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QACnD,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC9C,CAAA;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,CAAoB;IACrD,OAAO;QACL,GAAG,CAAC;QACJ,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC7C,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC7C,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KAClD,CAAA;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,CASjC;IACC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,6BAA6B,EAAE,IAAI,WAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC;QACjF,qBAAqB,EAAE,IAAI,WAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QACjE,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,gBAAgB,EAAE,IAAI,WAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QACvD,aAAa,EAAE,CAAC,CAAC,aAAa;KAC/B,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,CAAgB;IAC7C,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACzC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACnC,aAAa,EAAE,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACjF,CAAC,CAAC;QACH,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACnC,aAAa,EAAE,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACjF,CAAC,CAAC;KACJ,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,CAAgB;IAC7C,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACzC,QAAQ,EAAE,4BAA4B,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClD,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC;KACzD,CAAA;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,CAAuB;IAC3D,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnC,aAAa,EAAE,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;KACjF,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,OAAuB,EAAE,UAA2B;IAC3F,MAAM,OAAO,GAAG,MAAM,qCAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACxD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;IAED,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,UAAU;QACtC,eAAe,EAAE,OAAO,CAAC,yBAAyB,EAAE;KACrD,CAAA;AACH,CAAC;AAXD,gDAWC;AAED,SAAgB,iBAAiB,CAAC,QAAuB;IACvD,OAAO;QACL,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE;QAC9C,YAAY,EAAE,+BAA+B,CAAC,QAAQ,CAAC,YAAY,CAAC;QACpE,aAAa,EAAE,+BAA+B,CAAC,QAAQ,CAAC,aAAa,CAAC;QACtE,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,EAAE;QAC9D,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE;KACvD,CAAA;AACH,CAAC;AATD,8CASC;AAED,SAAgB,mBAAmB,CAAC,QAA2B;IAC7D,OAAO;QACL,YAAY,EAAE,IAAI,aAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;QACvD,YAAY,EAAE,iCAAiC,CAAC,QAAQ,CAAC,YAAY,CAAC;QACtE,aAAa,EAAE,iCAAiC,CAAC,QAAQ,CAAC,aAAa,CAAC;QACxE,oBAAoB,EAAE,IAAI,aAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACvE,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,gBAAgB,EAAE,IAAI,WAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KACpD,CAAA;AACH,CAAC;AATD,kDASC;AAgPD,SAAS,yBAAyB,CAAC,CAAiB;IAClD,OAAO,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;AAC5D,CAAC;AAED,wEAAwE;AACxE,KAAK,UAAU,kBAAkB,CAAC,EAChC,UAAU,EACV,YAAY,GAIb;IACC,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;IACtE,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAA;IAE/B,yDAAyD;IACzD,MAAM,mBAAmB,GAAG,CAAC,CAAA;IAC7B,MAAM,aAAa,GAAG,EAAE,GAAG,mBAAmB,CAAA;IAC9C,MAAM,eAAe,GAAG,EAAE,GAAG,mBAAmB,CAAA;IAChD,MAAM,4BAA4B,GAAG,GAAG,GAAG,mBAAmB,CAAA;IAC9D,MAAM,QAAQ,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC,CAAA;IAE/E,4DAA4D;IAC5D,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,eAAe,GAAG,CAAC,CAAC,CAAA;IAChF,MAAM,oBAAoB,GAAG,IAAI,WAAE,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAA;IAErE,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,4BAA4B,EAAE,4BAA4B,GAAG,CAAC,CAAC,CAAA;IAC5G,MAAM,sBAAsB,GAAG,IAAI,WAAE,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAA;IAEzE,MAAM,qBAAqB,GAAG,IAAI,oBAAO,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC1E,MAAM,uBAAuB,GAAG,IAAI,oBAAO,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE9E,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,EAAE;QACnD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAA;IAEjE,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAA;AAC7D,CAAC;AAED,KAAK,UAAU,6BAA6B,CAAC,EAC3C,UAAU,EACV,aAAa,EACb,QAAQ,GAOT;IACC,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,IAAA,oCAAmB,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAEpE,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACtG,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC/C,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAAC,EAC3C,UAAU,EACV,SAAS,GAIV;IACC,MAAM,gBAAgB,GAAG,MAAM,IAAA,oCAAmB,EAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAEzE,OAAO,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AACpH,CAAC;AAVD,wDAUC;AAEM,KAAK,UAAU,yBAAyB,CAAC,EAC9C,UAAU,EACV,gBAAgB,GAIjB;IACC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,aAAI,CAAC,SAAS,CAAC,sBAAsB,CACvD,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EACvD,IAAI,aAAI,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAClE,CAAA;IAED,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,MAAM,UAAU,CAAC,uBAAuB,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAA;IACtG,MAAM,kBAAkB,GAAG,sBAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAC7D,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAA;IAE1B,MAAM,mBAAmB,GAAG,CAAC,CAAA;IAC7B,MAAM,UAAU,GAAG,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA,CAAC,wBAAwB;IACnF,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAEvD,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,oBAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAEnH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAA;AAC5E,CAAC;AAxBD,8DAwBC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,kBAAkB,CACtC,UAA2B,EAC3B,QAA0B,EAC1B,aAA4B,EAC5B,YAA4B;IAE5B,MAAM,UAAU,GAAG,kBAAkB,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAA;IAEnE,MAAM,qBAAqB,GAAG,6BAA6B,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAA;IAEpG,MAAM,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC,CAAA;IAEnG,uEAAuE;IACvE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAA;IAEnB,OAAO;QACL,QAAQ;QACR,sBAAsB,EAAE,EAAE;QAC1B,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE;KAC7B,CAAA;AACH,CAAC;AApBD,gDAoBC;AAEM,KAAK,UAAU,SAAS,CAAC,UAA2B;IACzD,OAAO,EAAE,CAAA;AACX,CAAC;AAFD,8BAEC;AAEM,KAAK,UAAU,uBAAuB,CAAC,EAC5C,UAAU,EACV,aAAa,GAId;IACC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,UAAU,CAAC,uBAAuB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAA;IAC/E,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAA;IAE1B,oBAAoB;IACpB,sBAAsB;IACtB,iBAAiB;IACjB,yBAAyB;IACzB,sBAAsB;IACtB,sBAAsB;IACtB,wBAAwB;IACxB,wBAAwB;IACxB,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC/C,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,CAAA;IAE1D,qDAAqD;IACrD,MAAM,IAAI,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,WAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAA,CAAC,+BAA+B;IAC3E,CAAC;IAED,yDAAyD;IACzD,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAA;IAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IAExE,OAAO,EAAE,KAAK,EAAE,CAAA;AAClB,CAAC;AAjCD,0DAiCC;AAEM,KAAK,UAAU,oBAAoB,CAAC,EACzC,UAAU,EACV,cAAc,GAIf;IACC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;IAC/D,MAAM,KAAK,GAAG,IAAI,mBAAU,CAAC,oBAAoB,CAAC,CAAA;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAA;IAE/F,MAAM,gBAAgB,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACpE,MAAM,gBAAgB,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAEpE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA;AACtD,CAAC;AAhBD,oDAgBC;AAEM,KAAK,UAAU,kCAAkC,CAAC,EACvD,UAAU,EACV,cAAc,EACd,KAAK,GAKN;IACC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;IAC/D,MAAM,KAAK,GAAG,IAAI,mBAAU,CAAC,oBAAoB,CAAC,CAAA;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,MAAM,OAAO,GACX,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC,CAAA;IAEjE,MAAM,gBAAgB,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACpE,MAAM,gBAAgB,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAEpE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA;AAC/D,CAAC;AApBD,gFAoBC;AAMM,KAAK,UAAU,iBAAiB,CAAC,EACtC,UAAU,EACV,QAAQ,EACR,WAAW,GAKZ;IAQC,IAAI,CAAC;QACH,MAAM,uBAAuB,GAAG,IAAI,WAAE,CAAC,WAAW,CAAC,CAAA;QAEnD,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAiB,EAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;QAE/D,MAAM,QAAQ,GAAG,MAAM,IAAA,mBAAO,EAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACvD,MAAM,YAAY,GAAG,IAAI,WAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QACvD,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;QAE3D,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAkB,EAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;QACpE,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAkB,EAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEpE,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAO,EAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAC7D,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAO,EAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAE7D,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAA;QAC1C,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAA;QAE1C,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAA;QACvC,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAA;QAEvC,MAAM,uBAAuB,GAAG,CAAC,MAAM,IAAA,sBAAU,EAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAA;QACpF,MAAM,uBAAuB,GAAG,CAAC,MAAM,IAAA,sBAAU,EAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAA;QAEpF,MAAM,YAAY,GAAG,IAAA,0BAAgB,EACnC,IAAI,WAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EAC1C,IAAI,WAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,EACjC,MAAM,EACN,WAAW,CACZ,CAAA;QACD,MAAM,YAAY,GAAG,IAAA,0BAAgB,EACnC,IAAI,WAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EAC1C,IAAI,WAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,EACjC,MAAM,EACN,WAAW,CACZ,CAAA;QAED,MAAM,CAAC,GAAG,IAAA,kBAAQ,EAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;QAC9D,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,WAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAC/G,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;QAElH,OAAO;YACL,YAAY;YACZ,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,IAAI,SAAS;YAC1E,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,IAAI,SAAS;YAC1E,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,cAAc;SACzD,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AApED,8CAoEC"}
|
|
1
|
+
{"version":3,"file":"exponentFetcher.js","sourceRoot":"","sources":["../src/exponentFetcher.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
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
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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
|
+
"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/
|
|
13
|
-
"@exponent-labs/exponent-
|
|
14
|
-
"@exponent-labs/
|
|
15
|
-
"@exponent-labs/
|
|
16
|
-
"@exponent-labs/
|
|
17
|
-
"@exponent-labs/
|
|
18
|
-
"@exponent-labs/
|
|
19
|
-
"@exponent-labs/
|
|
20
|
-
"@exponent-labs/kamino-
|
|
21
|
-
"@exponent-labs/
|
|
22
|
-
"@exponent-labs/
|
|
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",
|
package/src/exponentFetcher.ts
CHANGED
|
@@ -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
|
-
|
|
25
|
+
deserializeJitoRestakingSyMetaAccountRaw,
|
|
38
26
|
deserializePerenaSyMetaAccountRaw,
|
|
39
|
-
PerenaSyMetaAccountRaw,
|
|
40
|
-
PerenaSyMetaAccount,
|
|
41
27
|
} from "@exponent-labs/exponent-types"
|
|
42
|
-
import
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
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
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
|
}
|