@exponent-labs/exponent-fetcher 0.1.2 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/exponentFetcher.d.ts +74 -5
- package/build/exponentFetcher.js +249 -29
- 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/build/utils/meteora.d.ts +0 -1
- package/build/utils/meteora.js +4 -4
- package/build/utils/meteora.js.map +1 -1
- package/package.json +16 -12
- package/src/exponentFetcher.ts +368 -33
- package/src/index.ts +1 -0
- package/tsconfig.json +7 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
/// <reference types="bn.js" />
|
|
2
1
|
import { BN, Program, Wallet, web3 } from "@coral-xyz/anchor";
|
|
2
|
+
import Decimal from "decimal.js";
|
|
3
3
|
import { ExponentCore } from "@exponent-labs/exponent-idl";
|
|
4
|
+
import { AnchorizedPNum, AnchorizedPNumJson, CpiAccountIndexes, GenericSyMetaAccount, InterfaceType, JitoRestakingSyMetaAccount, MarginfiSyMeta, PerenaSyMetaAccount, SyEmissionRaw, VaultEmission, VaultEmissionJson } from "@exponent-labs/exponent-types";
|
|
5
|
+
import { GenericStandard } from "@exponent-labs/generic-sy-idl";
|
|
6
|
+
import { JitoRestakingStandard } from "@exponent-labs/jito-restaking-sy-idl";
|
|
7
|
+
import { Obligation } from "@exponent-labs/kamino-reserve-deserializer";
|
|
4
8
|
import { KaminoLendStandard } from "@exponent-labs/kamino-sy-idl";
|
|
5
9
|
import { MarginfiStandard } from "@exponent-labs/marginfi-sy-idl";
|
|
6
|
-
import { JitoRestakingStandard } from "@exponent-labs/jito-restaking-sy-idl";
|
|
7
|
-
import { AnchorizedPNum, AnchorizedPNumJson, MarginfiSyMeta, VaultEmission, VaultEmissionJson, CpiAccountIndexes, JitoRestakingSyMetaAccount, InterfaceType, SyEmissionRaw, GenericSyMetaAccount, PerenaSyMetaAccount } from "@exponent-labs/exponent-types";
|
|
8
|
-
import Decimal from "decimal.js";
|
|
9
10
|
import { PerenaStandard } from "@exponent-labs/perena-sy-idl";
|
|
10
|
-
import { GenericStandard } from "@exponent-labs/generic-sy-idl";
|
|
11
11
|
export declare function serializeAnchorizedPNumFromJson(pnum: AnchorizedPNum): AnchorizedPNumJson;
|
|
12
12
|
export declare function deserializeAnchorizedPNumFromJson(serialized: AnchorizedPNumJson): AnchorizedPNum;
|
|
13
13
|
export declare class MyWallet implements Wallet {
|
|
@@ -60,6 +60,7 @@ export declare function fetchKaminoReserve(address: web3.PublicKey, connection:
|
|
|
60
60
|
baseMint: web3.PublicKey;
|
|
61
61
|
assetShareValue: Decimal;
|
|
62
62
|
}>;
|
|
63
|
+
export declare function fetchAllKaminoObligationsByKaminoReserve(reserve: web3.PublicKey, connection: web3.Connection): Promise<Obligation[]>;
|
|
63
64
|
export declare function serializeEmission(emission: VaultEmission): VaultEmissionJson;
|
|
64
65
|
export declare function deserializeEmission(emission: VaultEmissionJson): VaultEmission;
|
|
65
66
|
export interface MarketTwo {
|
|
@@ -95,6 +96,7 @@ export interface MarketTwo {
|
|
|
95
96
|
}[];
|
|
96
97
|
};
|
|
97
98
|
liquidityNetBalanceLimits: LiquidityNetBalanceLimits;
|
|
99
|
+
seedId: number[];
|
|
98
100
|
}
|
|
99
101
|
export interface Vault {
|
|
100
102
|
syProgram: web3.PublicKey;
|
|
@@ -223,6 +225,28 @@ export declare function fetchJitoRestaking(connection: web3.Connection, accounts
|
|
|
223
225
|
exchangeRateUnderlying: number;
|
|
224
226
|
exchangeRate: string;
|
|
225
227
|
}>;
|
|
228
|
+
/**
|
|
229
|
+
* Fetch the pre-simulated index for Jupiter Perps pool to mirror on-chain logic in utils.rs (InterfaceType::JupiterPerps)
|
|
230
|
+
* Uses fields: pool.pool_apr.{realized_fee_usd, fee_apr_bps, last_updated}, pool.aum_usd,
|
|
231
|
+
* and tracks last_* values to compute the next index increment similar to the program.
|
|
232
|
+
*/
|
|
233
|
+
export declare function fetchJupiterPerpsIndex({ connection, pool, lastFeeUsdResetUnixTimestamp, lastRealizedFeeUsd, lastAumUsd, currentIndex, lastRealizedFeeUsdUpdateUnixTimestamp, }: {
|
|
234
|
+
connection: web3.Connection;
|
|
235
|
+
pool: web3.PublicKey;
|
|
236
|
+
lastFeeUsdResetUnixTimestamp: number;
|
|
237
|
+
lastRealizedFeeUsd: BN;
|
|
238
|
+
lastAumUsd: BN;
|
|
239
|
+
currentIndex: AnchorizedPNum;
|
|
240
|
+
lastRealizedFeeUsdUpdateUnixTimestamp: number;
|
|
241
|
+
}): Promise<{
|
|
242
|
+
index: number;
|
|
243
|
+
newState: {
|
|
244
|
+
lastAumUsd: BN;
|
|
245
|
+
lastRealizedFeeUsd: BN;
|
|
246
|
+
lastFeeUsdResetUnixTimestamp: number;
|
|
247
|
+
lastRealizedFeeUsdUpdateUnixTimestamp: number;
|
|
248
|
+
};
|
|
249
|
+
}>;
|
|
226
250
|
export declare function fetchPyth(connection: web3.Connection): Promise<string>;
|
|
227
251
|
export declare function fetchGenericSyMetaIndex({ connection, genericSyMeta, }: {
|
|
228
252
|
connection: web3.Connection;
|
|
@@ -238,6 +262,28 @@ export declare function fetchFragmetricIndex({ connection, fragmetricFund, }: {
|
|
|
238
262
|
receiptTokenMint: web3.PublicKey;
|
|
239
263
|
wrappedTokenMint: web3.PublicKey;
|
|
240
264
|
}>;
|
|
265
|
+
export declare function fetchJupiterLendIndex({ connection, jupiterLendAccount, }: {
|
|
266
|
+
connection: web3.Connection;
|
|
267
|
+
jupiterLendAccount: web3.PublicKey;
|
|
268
|
+
}): Promise<{
|
|
269
|
+
index: number;
|
|
270
|
+
baseTokenMint: any;
|
|
271
|
+
tokenReservesLiquidity: any;
|
|
272
|
+
lendingSupplyPosition: any;
|
|
273
|
+
rewardsRateModel: any;
|
|
274
|
+
rateModel: web3.PublicKey;
|
|
275
|
+
}>;
|
|
276
|
+
export declare function fetchKaminoVaultIndex({ connection, kaminoVaultAccount, }: {
|
|
277
|
+
connection: web3.Connection;
|
|
278
|
+
kaminoVaultAccount: web3.PublicKey;
|
|
279
|
+
}): Promise<{
|
|
280
|
+
index: number;
|
|
281
|
+
tokenVault: any;
|
|
282
|
+
tokenMint: any;
|
|
283
|
+
baseVaultAuthority: any;
|
|
284
|
+
sharesMint: any;
|
|
285
|
+
reserves: any;
|
|
286
|
+
}>;
|
|
241
287
|
export declare function fetchFragmetricSupportedTokenIndex({ connection, fragmetricFund, index, }: {
|
|
242
288
|
connection: web3.Connection;
|
|
243
289
|
fragmetricFund: web3.PublicKey;
|
|
@@ -262,4 +308,27 @@ export declare function fetchMeteoraIndex({ connection, accounts, onChainTime, }
|
|
|
262
308
|
poolVaultBLpTokenAmount: number;
|
|
263
309
|
lpSupply: number;
|
|
264
310
|
}>;
|
|
311
|
+
export declare function fetchAdrenaIndex({ connection, accounts, previousTotalFees, currentIndex, }: {
|
|
312
|
+
connection: web3.Connection;
|
|
313
|
+
accounts: AccountsInterface;
|
|
314
|
+
previousTotalFees: BN;
|
|
315
|
+
currentIndex: AnchorizedPNum;
|
|
316
|
+
}): Promise<{
|
|
317
|
+
index: number;
|
|
318
|
+
}>;
|
|
319
|
+
export declare function fetchSanctumIndex({ connection, accounts, }: {
|
|
320
|
+
connection: web3.Connection;
|
|
321
|
+
accounts: AccountsInterface;
|
|
322
|
+
}): Promise<number>;
|
|
323
|
+
export declare function fetchSolsticeRedemptionRate({ connection, yieldPool, vestingSchedule, }: {
|
|
324
|
+
connection: web3.Connection;
|
|
325
|
+
yieldPool: web3.PublicKey;
|
|
326
|
+
vestingSchedule: web3.PublicKey;
|
|
327
|
+
}): Promise<{
|
|
328
|
+
redemptionRate: number;
|
|
329
|
+
totalAssets: string;
|
|
330
|
+
sharesSupply: string;
|
|
331
|
+
vestingAmount: string;
|
|
332
|
+
totalVestedAssets: string;
|
|
333
|
+
}>;
|
|
265
334
|
export {};
|
package/build/exponentFetcher.js
CHANGED
|
@@ -3,38 +3,64 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.ExponentFetcher = exports.MyWallet = void 0;
|
|
7
|
+
exports.serializeAnchorizedPNumFromJson = serializeAnchorizedPNumFromJson;
|
|
8
|
+
exports.deserializeAnchorizedPNumFromJson = deserializeAnchorizedPNumFromJson;
|
|
9
|
+
exports.fetchKaminoReserve = fetchKaminoReserve;
|
|
10
|
+
exports.fetchAllKaminoObligationsByKaminoReserve = fetchAllKaminoObligationsByKaminoReserve;
|
|
11
|
+
exports.serializeEmission = serializeEmission;
|
|
12
|
+
exports.deserializeEmission = deserializeEmission;
|
|
13
|
+
exports.fetchSplStakePoolIndex = fetchSplStakePoolIndex;
|
|
14
|
+
exports.fetchPerenaStablePoolData = fetchPerenaStablePoolData;
|
|
15
|
+
exports.fetchJitoRestaking = fetchJitoRestaking;
|
|
16
|
+
exports.fetchJupiterPerpsIndex = fetchJupiterPerpsIndex;
|
|
17
|
+
exports.fetchPyth = fetchPyth;
|
|
18
|
+
exports.fetchGenericSyMetaIndex = fetchGenericSyMetaIndex;
|
|
19
|
+
exports.fetchFragmetricIndex = fetchFragmetricIndex;
|
|
20
|
+
exports.fetchJupiterLendIndex = fetchJupiterLendIndex;
|
|
21
|
+
exports.fetchKaminoVaultIndex = fetchKaminoVaultIndex;
|
|
22
|
+
exports.fetchFragmetricSupportedTokenIndex = fetchFragmetricSupportedTokenIndex;
|
|
23
|
+
exports.fetchMeteoraIndex = fetchMeteoraIndex;
|
|
24
|
+
exports.fetchAdrenaIndex = fetchAdrenaIndex;
|
|
25
|
+
exports.fetchSanctumIndex = fetchSanctumIndex;
|
|
26
|
+
exports.fetchSolsticeRedemptionRate = fetchSolsticeRedemptionRate;
|
|
7
27
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
28
|
+
const anchor_2 = require("@coral-xyz/anchor");
|
|
29
|
+
const spl_stake_pool_1 = require("@solana/spl-stake-pool");
|
|
30
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
31
|
+
const spl_token_2 = require("@solana/spl-token");
|
|
32
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
8
33
|
const exponent_idl_1 = require("@exponent-labs/exponent-idl");
|
|
34
|
+
const exponent_types_1 = require("@exponent-labs/exponent-types");
|
|
35
|
+
const fragmetric_idl_1 = require("@exponent-labs/fragmetric-idl");
|
|
36
|
+
const jupiter_lend_idl_1 = require("@exponent-labs/jupiter-lend-idl");
|
|
37
|
+
const kamino_vault_idl_1 = require("@exponent-labs/kamino-vault-idl");
|
|
38
|
+
const generic_sy_idl_1 = require("@exponent-labs/generic-sy-idl");
|
|
39
|
+
const jito_restaking_sy_idl_1 = require("@exponent-labs/jito-restaking-sy-idl");
|
|
40
|
+
const jito_restaking_sy_idl_2 = require("@exponent-labs/jito-restaking-sy-idl");
|
|
41
|
+
const kamino_reserve_deserializer_1 = require("@exponent-labs/kamino-reserve-deserializer");
|
|
42
|
+
const kamino_reserve_deserializer_2 = require("@exponent-labs/kamino-reserve-deserializer");
|
|
9
43
|
const kamino_sy_idl_1 = require("@exponent-labs/kamino-sy-idl");
|
|
44
|
+
const kamino_sy_idl_2 = require("@exponent-labs/kamino-sy-idl");
|
|
10
45
|
const marginfi_sy_idl_1 = require("@exponent-labs/marginfi-sy-idl");
|
|
46
|
+
const meteora_idl_1 = require("@exponent-labs/meteora-idl");
|
|
11
47
|
const perena_sy_idl_1 = require("@exponent-labs/perena-sy-idl");
|
|
12
|
-
const jito_restaking_sy_idl_1 = require("@exponent-labs/jito-restaking-sy-idl");
|
|
13
|
-
const kamino_sy_idl_2 = require("@exponent-labs/kamino-sy-idl");
|
|
14
|
-
const precise_number_1 = require("@exponent-labs/precise-number");
|
|
15
|
-
const kamino_reserve_deserializer_1 = require("@exponent-labs/kamino-reserve-deserializer");
|
|
16
|
-
const jito_restaking_sy_idl_2 = require("@exponent-labs/jito-restaking-sy-idl");
|
|
17
48
|
const perena_sy_idl_2 = require("@exponent-labs/perena-sy-idl");
|
|
18
|
-
const
|
|
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");
|
|
49
|
+
const precise_number_1 = require("@exponent-labs/precise-number");
|
|
50
|
+
const sanctum_idl_1 = require("@exponent-labs/sanctum-idl");
|
|
51
|
+
const adrena_idl_1 = require("@exponent-labs/adrena-idl");
|
|
52
|
+
const solstice_idl_1 = require("@exponent-labs/solstice-idl");
|
|
27
53
|
const meteora_1 = require("./utils/meteora");
|
|
54
|
+
// Decode Jupiter Perps pool accounts via helper using Anchor 0.29.0
|
|
55
|
+
const jupiter_perps_idl_1 = require("@exponent-labs/jupiter-perps-idl");
|
|
28
56
|
function serializeAnchorizedPNumFromJson(pnum) {
|
|
29
57
|
const serializedArray = pnum[0].map((bn) => bn.toString());
|
|
30
58
|
return { 0: serializedArray };
|
|
31
59
|
}
|
|
32
|
-
exports.serializeAnchorizedPNumFromJson = serializeAnchorizedPNumFromJson;
|
|
33
60
|
function deserializeAnchorizedPNumFromJson(serialized) {
|
|
34
61
|
const bnArray = serialized[0].map((str) => new anchor_1.BN(str));
|
|
35
62
|
return { 0: bnArray };
|
|
36
63
|
}
|
|
37
|
-
exports.deserializeAnchorizedPNumFromJson = deserializeAnchorizedPNumFromJson;
|
|
38
64
|
class MyWallet {
|
|
39
65
|
payer;
|
|
40
66
|
constructor(payer) {
|
|
@@ -190,7 +216,6 @@ class ExponentFetcher {
|
|
|
190
216
|
}
|
|
191
217
|
async fetchLpPosition(address) {
|
|
192
218
|
const x = await this.program.account.lpPosition.fetch(address);
|
|
193
|
-
console.log("FARMs SHOULD BE HERE", x.farms);
|
|
194
219
|
return deserializeLpPosition(x);
|
|
195
220
|
}
|
|
196
221
|
async fetchYtPosition(address) {
|
|
@@ -245,6 +270,7 @@ function deserializeMarketTwo(m) {
|
|
|
245
270
|
})),
|
|
246
271
|
},
|
|
247
272
|
liquidityNetBalanceLimits: m.liquidityNetBalanceLimits,
|
|
273
|
+
seedId: m.seedId,
|
|
248
274
|
};
|
|
249
275
|
}
|
|
250
276
|
function deserializeVault(x) {
|
|
@@ -338,29 +364,56 @@ async function fetchKaminoReserve(address, connection) {
|
|
|
338
364
|
assetShareValue: reserve.getCollateralExchangeRate(),
|
|
339
365
|
};
|
|
340
366
|
}
|
|
341
|
-
|
|
367
|
+
const DEPOSITS_LIMIT = 8;
|
|
368
|
+
async function fetchAllKaminoObligationsByKaminoReserve(reserve, connection) {
|
|
369
|
+
const finalObligations = [];
|
|
370
|
+
const programId = new anchor_1.web3.PublicKey(kamino_reserve_deserializer_2.PROGRAM_ID);
|
|
371
|
+
for (let i = 0; i < DEPOSITS_LIMIT; i++) {
|
|
372
|
+
const [slot, obligations] = await Promise.all([
|
|
373
|
+
connection.getSlot(),
|
|
374
|
+
connection.getProgramAccounts(programId, {
|
|
375
|
+
filters: [
|
|
376
|
+
{
|
|
377
|
+
dataSize: kamino_reserve_deserializer_1.Obligation.layout.span + 8,
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
memcmp: {
|
|
381
|
+
offset: 96 + 136 * i,
|
|
382
|
+
bytes: reserve.toBase58(),
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
],
|
|
386
|
+
}),
|
|
387
|
+
]);
|
|
388
|
+
for (const obligation of obligations) {
|
|
389
|
+
const data = kamino_reserve_deserializer_1.Obligation.decode(obligation.account.data);
|
|
390
|
+
finalObligations.push(data);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return finalObligations;
|
|
394
|
+
}
|
|
342
395
|
function serializeEmission(emission) {
|
|
343
396
|
return {
|
|
344
397
|
tokenAccount: emission.tokenAccount.toString(),
|
|
345
398
|
initialIndex: serializeAnchorizedPNumFromJson(emission.initialIndex),
|
|
346
399
|
lastSeenIndex: serializeAnchorizedPNumFromJson(emission.lastSeenIndex),
|
|
347
400
|
treasuryTokenAccount: emission.treasuryTokenAccount.toString(),
|
|
401
|
+
finalIndex: serializeAnchorizedPNumFromJson(emission.finalIndex),
|
|
348
402
|
feeBps: emission.feeBps,
|
|
349
403
|
treasuryEmission: emission.treasuryEmission.toString(),
|
|
350
404
|
};
|
|
351
405
|
}
|
|
352
|
-
exports.serializeEmission = serializeEmission;
|
|
353
406
|
function deserializeEmission(emission) {
|
|
354
407
|
return {
|
|
355
408
|
tokenAccount: new anchor_1.web3.PublicKey(emission.tokenAccount),
|
|
356
409
|
initialIndex: deserializeAnchorizedPNumFromJson(emission.initialIndex),
|
|
357
410
|
lastSeenIndex: deserializeAnchorizedPNumFromJson(emission.lastSeenIndex),
|
|
358
411
|
treasuryTokenAccount: new anchor_1.web3.PublicKey(emission.treasuryTokenAccount),
|
|
412
|
+
finalIndex: deserializeAnchorizedPNumFromJson(emission.finalIndex),
|
|
359
413
|
feeBps: emission.feeBps,
|
|
360
414
|
treasuryEmission: new anchor_1.BN(emission.treasuryEmission),
|
|
361
415
|
};
|
|
362
416
|
}
|
|
363
|
-
exports.deserializeEmission = deserializeEmission;
|
|
364
417
|
function deserializeAnchorizedPNum(x) {
|
|
365
418
|
return parseFloat(precise_number_1.PreciseNumber.fromRaw(x[0]).valueString);
|
|
366
419
|
}
|
|
@@ -397,7 +450,6 @@ async function fetchSplStakePoolIndex({ connection, stakePool, }) {
|
|
|
397
450
|
const stakePoolAccount = await (0, spl_stake_pool_1.getStakePoolAccount)(connection, stakePool);
|
|
398
451
|
return Number(stakePoolAccount.account.data.totalLamports) / Number(stakePoolAccount.account.data.poolTokenSupply);
|
|
399
452
|
}
|
|
400
|
-
exports.fetchSplStakePoolIndex = fetchSplStakePoolIndex;
|
|
401
453
|
async function fetchPerenaStablePoolData({ connection, perenaStablePool, }) {
|
|
402
454
|
const [lpMint, _] = anchor_1.web3.PublicKey.findProgramAddressSync([perenaStablePool.toBuffer(), Buffer.from("liquidity")], new anchor_1.web3.PublicKey("NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P"));
|
|
403
455
|
const [accountInfo, lpMintInfo] = await connection.getMultipleAccountsInfo([perenaStablePool, lpMint]);
|
|
@@ -410,7 +462,6 @@ async function fetchPerenaStablePoolData({ connection, perenaStablePool, }) {
|
|
|
410
462
|
const exchangeRate = new decimal_js_1.default(invT.toString()).div(new decimal_js_1.default(lpMintDeserialized.supply.toString())).toString();
|
|
411
463
|
return { lpSupply: lpMintDeserialized.supply, invT, exchangeRate, lpMint };
|
|
412
464
|
}
|
|
413
|
-
exports.fetchPerenaStablePoolData = fetchPerenaStablePoolData;
|
|
414
465
|
/**
|
|
415
466
|
* Fetch the exchange rate of a JitoRestaking vault
|
|
416
467
|
* @param connection
|
|
@@ -431,11 +482,50 @@ async function fetchJitoRestaking(connection, accounts, interfaceType, vaultAddr
|
|
|
431
482
|
exchangeRate: exr.toString(),
|
|
432
483
|
};
|
|
433
484
|
}
|
|
434
|
-
|
|
485
|
+
/**
|
|
486
|
+
* Fetch the pre-simulated index for Jupiter Perps pool to mirror on-chain logic in utils.rs (InterfaceType::JupiterPerps)
|
|
487
|
+
* Uses fields: pool.pool_apr.{realized_fee_usd, fee_apr_bps, last_updated}, pool.aum_usd,
|
|
488
|
+
* and tracks last_* values to compute the next index increment similar to the program.
|
|
489
|
+
*/
|
|
490
|
+
async function fetchJupiterPerpsIndex({ connection, pool, lastFeeUsdResetUnixTimestamp, lastRealizedFeeUsd, lastAumUsd, currentIndex, lastRealizedFeeUsdUpdateUnixTimestamp, }) {
|
|
491
|
+
// Decode pool account using helper that leverages Anchor 0.29.0
|
|
492
|
+
const accountInfo = await connection.getAccountInfo(pool);
|
|
493
|
+
const account = (0, jupiter_perps_idl_1.decodePoolAccount)(accountInfo?.data);
|
|
494
|
+
const SECONDS_PER_YEAR = 365 * 24 * 60 * 60;
|
|
495
|
+
let newFeesBn;
|
|
496
|
+
if (lastRealizedFeeUsdUpdateUnixTimestamp === 0) {
|
|
497
|
+
newFeesBn = new anchor_1.BN(account.poolApr.realizedFeeUsd.toString());
|
|
498
|
+
}
|
|
499
|
+
else if (Number(account.poolApr.lastUpdated) > lastFeeUsdResetUnixTimestamp) {
|
|
500
|
+
const timeBetweenResets = Number(account.poolApr.lastUpdated) - lastFeeUsdResetUnixTimestamp;
|
|
501
|
+
const feeAprBps = new anchor_1.BN(account.poolApr.feeAprBps);
|
|
502
|
+
const estTotalFees = lastAumUsd.gt(new anchor_1.BN(0)) && timeBetweenResets > 0
|
|
503
|
+
? feeAprBps.mul(lastAumUsd).mul(new anchor_1.BN(timeBetweenResets)).div(new anchor_1.BN(SECONDS_PER_YEAR)).div(new anchor_1.BN(10_000))
|
|
504
|
+
: new anchor_1.BN(0);
|
|
505
|
+
const missingFees = estTotalFees.sub(lastRealizedFeeUsd);
|
|
506
|
+
const feesSinceReset = new anchor_1.BN(account.poolApr.realizedFeeUsd.toString());
|
|
507
|
+
newFeesBn = missingFees.add(feesSinceReset);
|
|
508
|
+
}
|
|
509
|
+
else {
|
|
510
|
+
newFeesBn = new anchor_1.BN(account.poolApr.realizedFeeUsd.toString()).sub(lastRealizedFeeUsd);
|
|
511
|
+
}
|
|
512
|
+
const aumUsd = new anchor_1.BN(account.aumUsd.toString());
|
|
513
|
+
const indexIncrease = new decimal_js_1.default(newFeesBn.toString()).div(new decimal_js_1.default(aumUsd.toString())).toNumber();
|
|
514
|
+
const currentIndexNum = parseFloat(precise_number_1.PreciseNumber.fromRaw(currentIndex[0]).valueString);
|
|
515
|
+
const nextIndex = currentIndexNum + indexIncrease;
|
|
516
|
+
return {
|
|
517
|
+
index: nextIndex,
|
|
518
|
+
newState: {
|
|
519
|
+
lastAumUsd: aumUsd,
|
|
520
|
+
lastRealizedFeeUsd: new anchor_1.BN(account.poolApr.realizedFeeUsd.toString()),
|
|
521
|
+
lastFeeUsdResetUnixTimestamp: Number(account.poolApr.lastUpdated),
|
|
522
|
+
lastRealizedFeeUsdUpdateUnixTimestamp: Math.floor(Date.now() / 1000),
|
|
523
|
+
},
|
|
524
|
+
};
|
|
525
|
+
}
|
|
435
526
|
async function fetchPyth(connection) {
|
|
436
527
|
return "";
|
|
437
528
|
}
|
|
438
|
-
exports.fetchPyth = fetchPyth;
|
|
439
529
|
async function fetchGenericSyMetaIndex({ connection, genericSyMeta, }) {
|
|
440
530
|
const [accountInfo] = await connection.getMultipleAccountsInfo([genericSyMeta]);
|
|
441
531
|
const d = accountInfo.data;
|
|
@@ -460,7 +550,6 @@ async function fetchGenericSyMetaIndex({ connection, genericSyMeta, }) {
|
|
|
460
550
|
const index = parseFloat(precise_number_1.PreciseNumber.fromRaw(indexRaw[0]).valueString);
|
|
461
551
|
return { index };
|
|
462
552
|
}
|
|
463
|
-
exports.fetchGenericSyMetaIndex = fetchGenericSyMetaIndex;
|
|
464
553
|
async function fetchFragmetricIndex({ connection, fragmetricFund, }) {
|
|
465
554
|
const account = await connection.getAccountInfo(fragmetricFund);
|
|
466
555
|
const coder = new anchor_2.BorshCoder(fragmetric_idl_1.IDL);
|
|
@@ -470,7 +559,43 @@ async function fetchFragmetricIndex({ connection, fragmetricFund, }) {
|
|
|
470
559
|
const wrappedTokenMint = new anchor_1.web3.PublicKey(data.wrapped_token.mint);
|
|
471
560
|
return { index, receiptTokenMint, wrappedTokenMint };
|
|
472
561
|
}
|
|
473
|
-
|
|
562
|
+
async function fetchJupiterLendIndex({ connection, jupiterLendAccount, }) {
|
|
563
|
+
const account = await connection.getAccountInfo(jupiterLendAccount);
|
|
564
|
+
const coder = new anchor_2.BorshCoder(jupiter_lend_idl_1.IDL);
|
|
565
|
+
const data = coder.accounts.decode("Lending", account.data);
|
|
566
|
+
const index = Number(data.token_exchange_price) / Number(10 ** 12);
|
|
567
|
+
const tokenReservesLiquidity = data.token_reserves_liquidity;
|
|
568
|
+
const lendingSupplyPosition = data.supply_position_on_liquidity;
|
|
569
|
+
const rewardsRateModel = data.rewards_rate_model;
|
|
570
|
+
const rateModel = jupiterLendAccount.equals(new anchor_1.web3.PublicKey("BeAqbxfrcXmzEYT2Ra62oW2MqkuFDHaCtps47Mzg6Zj3"))
|
|
571
|
+
? new anchor_1.web3.PublicKey("Acvyi9HBGmqh3Exe1N4PjBVyY8fokq2AdC6fSLqV6KSo")
|
|
572
|
+
: new anchor_1.web3.PublicKey("6iHHKAK9Mqjn57CVmWe4szAPyTH8s8pniXSj6vWaKW5r");
|
|
573
|
+
console.log("token reserves liquidity in fetch jupiter lend index", tokenReservesLiquidity.toBase58());
|
|
574
|
+
return { index, baseTokenMint: data.mint, tokenReservesLiquidity, lendingSupplyPosition, rewardsRateModel, rateModel };
|
|
575
|
+
}
|
|
576
|
+
async function fetchKaminoVaultIndex({ connection, kaminoVaultAccount, }) {
|
|
577
|
+
const account = await connection.getAccountInfo(kaminoVaultAccount);
|
|
578
|
+
const coder = new anchor_2.BorshCoder(kamino_vault_idl_1.IDL);
|
|
579
|
+
const data = coder.accounts.decode("VaultState", account.data);
|
|
580
|
+
const activeReserves = data.vault_allocation_strategy
|
|
581
|
+
.map((r) => r.reserve)
|
|
582
|
+
.filter((reserve) => reserve.toBase58() !== anchor_1.web3.PublicKey.default.toBase58());
|
|
583
|
+
console.log("activeReserves", activeReserves);
|
|
584
|
+
const activeReservesData = await connection.getMultipleAccountsInfo(activeReserves);
|
|
585
|
+
const reserves = activeReserves.map((r, i) => {
|
|
586
|
+
console.log("r.data", activeReservesData[i].data);
|
|
587
|
+
return {
|
|
588
|
+
reserveAddress: r,
|
|
589
|
+
reserve: kamino_reserve_deserializer_1.Reserve.decode(activeReservesData[i].data).lendingMarket,
|
|
590
|
+
};
|
|
591
|
+
});
|
|
592
|
+
console.log("reserves", reserves);
|
|
593
|
+
const tokenVault = data.token_vault;
|
|
594
|
+
const tokenMint = data.token_mint;
|
|
595
|
+
const baseVaultAuthority = data.base_vault_authority;
|
|
596
|
+
const sharesMint = data.shares_mint;
|
|
597
|
+
return { index: 1, tokenVault, tokenMint, baseVaultAuthority, sharesMint, reserves };
|
|
598
|
+
}
|
|
474
599
|
async function fetchFragmetricSupportedTokenIndex({ connection, fragmetricFund, index, }) {
|
|
475
600
|
const account = await connection.getAccountInfo(fragmetricFund);
|
|
476
601
|
const coder = new anchor_2.BorshCoder(fragmetric_idl_1.IDL);
|
|
@@ -481,7 +606,6 @@ async function fetchFragmetricSupportedTokenIndex({ connection, fragmetricFund,
|
|
|
481
606
|
const wrappedTokenMint = new anchor_1.web3.PublicKey(data.wrapped_token.mint);
|
|
482
607
|
return { index: syIndex, receiptTokenMint, wrappedTokenMint };
|
|
483
608
|
}
|
|
484
|
-
exports.fetchFragmetricSupportedTokenIndex = fetchFragmetricSupportedTokenIndex;
|
|
485
609
|
async function fetchMeteoraIndex({ connection, accounts, onChainTime, }) {
|
|
486
610
|
try {
|
|
487
611
|
const VIRTUAL_PRICE_PRECISION = new anchor_1.BN(100_000_000);
|
|
@@ -517,5 +641,101 @@ async function fetchMeteoraIndex({ connection, accounts, onChainTime, }) {
|
|
|
517
641
|
throw error;
|
|
518
642
|
}
|
|
519
643
|
}
|
|
520
|
-
|
|
644
|
+
async function fetchAdrenaIndex({ connection, accounts, previousTotalFees, currentIndex, }) {
|
|
645
|
+
try {
|
|
646
|
+
const zero = new anchor_1.BN(0);
|
|
647
|
+
// Fetch all account data in a single RPC call
|
|
648
|
+
const accountInfos = await connection.getMultipleAccountsInfo([
|
|
649
|
+
accounts.pool,
|
|
650
|
+
accounts.custody1,
|
|
651
|
+
accounts.custody2,
|
|
652
|
+
accounts.custody3,
|
|
653
|
+
accounts.custody4,
|
|
654
|
+
]);
|
|
655
|
+
if (!accountInfos[0] || !accountInfos[1] || !accountInfos[2] || !accountInfos[3] || !accountInfos[4]) {
|
|
656
|
+
throw new Error("One or more Adrena accounts not found");
|
|
657
|
+
}
|
|
658
|
+
// Decode accounts using adrena-idl package functions
|
|
659
|
+
const { poolAccount, custodyAccounts } = (0, adrena_idl_1.decodePoolAndCustodyAccounts)(accountInfos);
|
|
660
|
+
// @ts-ignore
|
|
661
|
+
const currentTotalFees = (0, adrena_idl_1.calculateTotalFeesFromCustodies)(custodyAccounts);
|
|
662
|
+
let yieldIncrement;
|
|
663
|
+
let aumValue = poolAccount.aumUsd.low;
|
|
664
|
+
if (aumValue.eq(zero)) {
|
|
665
|
+
yieldIncrement = 0;
|
|
666
|
+
}
|
|
667
|
+
let feeDifference = currentTotalFees.gte(previousTotalFees) ? currentTotalFees.sub(previousTotalFees) : zero;
|
|
668
|
+
yieldIncrement = feeDifference.toNumber() / aumValue.toNumber();
|
|
669
|
+
let currentIndexNumber = parseFloat(precise_number_1.PreciseNumber.fromRaw(currentIndex[0]).valueString);
|
|
670
|
+
return { index: currentIndexNumber + yieldIncrement };
|
|
671
|
+
}
|
|
672
|
+
catch (error) {
|
|
673
|
+
throw error;
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
async function fetchSanctumIndex({ connection, accounts, }) {
|
|
677
|
+
try {
|
|
678
|
+
const poolState = await (0, sanctum_idl_1.decodePoolStateAccount)(connection, accounts.poolState);
|
|
679
|
+
const lpMint = await (0, spl_token_1.getMint)(connection, accounts.lpMint);
|
|
680
|
+
const zeroBn = new anchor_1.BN(0);
|
|
681
|
+
const precision = new anchor_1.BN(10 ** lpMint.decimals);
|
|
682
|
+
const lpTokenSupplyBn = new anchor_1.BN(lpMint.supply.toString());
|
|
683
|
+
const poolTotalSolValueBn = new anchor_1.BN(poolState.totalSolValue.toString());
|
|
684
|
+
if (lpTokenSupplyBn.eq(zeroBn) || poolTotalSolValueBn.eq(zeroBn)) {
|
|
685
|
+
return 1;
|
|
686
|
+
}
|
|
687
|
+
const exchangeRateBn = lpTokenSupplyBn.mul(precision).div(poolTotalSolValueBn);
|
|
688
|
+
const exchangeRate = new decimal_js_1.default(exchangeRateBn.toString()).div(precision.toString()).toNumber();
|
|
689
|
+
return 1 / exchangeRate; // We return inverse exchange rate
|
|
690
|
+
}
|
|
691
|
+
catch (error) {
|
|
692
|
+
throw error;
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
async function fetchSolsticeRedemptionRate({ connection, yieldPool, vestingSchedule, }) {
|
|
696
|
+
try {
|
|
697
|
+
// Fetch both accounts in a single RPC call for efficiency
|
|
698
|
+
const accountInfos = await connection.getMultipleAccountsInfo([yieldPool, vestingSchedule]);
|
|
699
|
+
if (!accountInfos[0] || !accountInfos[1]) {
|
|
700
|
+
throw new Error("One or more Solstice accounts not found");
|
|
701
|
+
}
|
|
702
|
+
// Decode accounts using solstice-idl package function
|
|
703
|
+
const { yieldPoolAccount, vestingScheduleAccount } = (0, solstice_idl_1.decodeYieldPoolAndVestingScheduleAccounts)(accountInfos);
|
|
704
|
+
// Extract fields for calculation (convert BN to bigint)
|
|
705
|
+
const poolTotalAssets = BigInt(yieldPoolAccount.total_assets.toString());
|
|
706
|
+
const poolSharesSupply = BigInt(yieldPoolAccount.shares_supply.toString());
|
|
707
|
+
const vestingAmount = BigInt(vestingScheduleAccount.vesting_amount.toString());
|
|
708
|
+
// Calculate total vested assets (mimicking the Rust logic)
|
|
709
|
+
let totalVestedAssets;
|
|
710
|
+
if (vestingAmount === 0n) {
|
|
711
|
+
totalVestedAssets = poolTotalAssets; // If no vesting amount, all assets are considered vested
|
|
712
|
+
}
|
|
713
|
+
else {
|
|
714
|
+
const vestingStart = BigInt(vestingScheduleAccount.start_time.toString());
|
|
715
|
+
const vestingEnd = BigInt(vestingScheduleAccount.end_time.toString());
|
|
716
|
+
const currentTime = BigInt(Math.floor(Date.now() / 1000)); // Current Unix timestamp
|
|
717
|
+
// Calculate unvested amount
|
|
718
|
+
let unvestedAmount;
|
|
719
|
+
if (currentTime > vestingEnd) {
|
|
720
|
+
unvestedAmount = 0n; // If current time passed the vesting end, no unvested amount
|
|
721
|
+
}
|
|
722
|
+
else {
|
|
723
|
+
unvestedAmount = (vestingAmount * (vestingEnd - currentTime)) / (vestingEnd - vestingStart);
|
|
724
|
+
}
|
|
725
|
+
totalVestedAssets = poolTotalAssets - unvestedAmount;
|
|
726
|
+
}
|
|
727
|
+
// Calculate redemption rate: (total_vested_assets + 1) / (pool_shares_supply + 1)
|
|
728
|
+
const redemptionRate = Number(totalVestedAssets + 1n) / Number(poolSharesSupply + 1n);
|
|
729
|
+
return {
|
|
730
|
+
redemptionRate,
|
|
731
|
+
totalAssets: poolTotalAssets.toString(),
|
|
732
|
+
sharesSupply: poolSharesSupply.toString(),
|
|
733
|
+
vestingAmount: vestingAmount.toString(),
|
|
734
|
+
totalVestedAssets: totalVestedAssets.toString(),
|
|
735
|
+
};
|
|
736
|
+
}
|
|
737
|
+
catch (error) {
|
|
738
|
+
throw error;
|
|
739
|
+
}
|
|
740
|
+
}
|
|
521
741
|
//# sourceMappingURL=exponentFetcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exponentFetcher.js","sourceRoot":"","sources":["../src/exponentFetcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exponentFetcher.js","sourceRoot":"","sources":["../src/exponentFetcher.ts"],"names":[],"mappings":";;;;;;AAkEA,0EAGC;AAED,8EAGC;AA2VD,gDAWC;AAID,4FAgCC;AAED,8CAUC;AAED,kDAUC;AA6SD,wDAUC;AAED,8DAwBC;AAUD,gDAoBC;AAOD,wDA+DC;AAED,8BAEC;AAED,0DAiCC;AAED,oDAgBC;AAED,sDAqBC;AAED,sDAkCC;AAED,gFAoBC;AAMD,8CAoEC;AAED,4CAmDC;AAED,8CA2BC;AAED,kEAgEC;AAzwCD,8CAAkF;AAClF,8CAA8C;AAC9C,2DAA4D;AAC5D,iDAAuD;AACvD,iDAA8C;AAC9C,4DAAgC;AAChC,8DAA2E;AAC3E,kEAmBsC;AACtC,kEAAoE;AACpE,sEAAuE;AACvE,sEAAuE;AAEvE,kEAAoH;AACpH,gFAAiG;AACjG,gFAAuG;AACvG,4FAAgF;AAChF,4FAAiG;AACjG,gEAAuF;AAEvF,gEAAiE;AACjE,oEAIuC;AACvC,4DAAkF;AAClF,gEAAuF;AACvF,gEAAiE;AAEjE,kEAA6D;AAC7D,4DAAmE;AACnE,0DAQkC;AAClC,8DAAuF;AAEvF,6CAA4D;AAE5D,oEAAoE;AACpE,wEAAqG;AAErG,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;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;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,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;AApLD,0CAoLC;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;QACtD,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,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;AAED,MAAM,cAAc,GAAG,CAAC,CAAA;AAEjB,KAAK,UAAU,wCAAwC,CAC5D,OAAuB,EACvB,UAA2B;IAE3B,MAAM,gBAAgB,GAAiB,EAAE,CAAA;IACzC,MAAM,SAAS,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,wCAAsB,CAAC,CAAA;IAE5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC5C,UAAU,CAAC,OAAO,EAAE;YACpB,UAAU,CAAC,kBAAkB,CAAC,SAAS,EAAE;gBACvC,OAAO,EAAE;oBACP;wBACE,QAAQ,EAAE,wCAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;qBACrC;oBACD;wBACE,MAAM,EAAE;4BACN,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC;4BACpB,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;yBAC1B;qBACF;iBACF;aACF,CAAC;SACH,CAAC,CAAA;QAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,wCAAU,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACvD,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC;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,UAAU,EAAE,+BAA+B,CAAC,QAAQ,CAAC,UAAU,CAAC;QAChE,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE;KACvD,CAAA;AACH,CAAC;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,UAAU,EAAE,iCAAiC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAClE,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,gBAAgB,EAAE,IAAI,WAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KACpD,CAAA;AACH,CAAC;AAkPD,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;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;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;AAED;;;;GAIG;AACI,KAAK,UAAU,sBAAsB,CAAC,EAC3C,UAAU,EACV,IAAI,EACJ,4BAA4B,EAC5B,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,qCAAqC,GAStC;IASC,gEAAgE;IAChE,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;IACzD,MAAM,OAAO,GAAQ,IAAA,qCAA6B,EAAC,WAAW,EAAE,IAAc,CAAC,CAAA;IAC/E,MAAM,gBAAgB,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IAE3C,IAAI,SAAa,CAAA;IAEjB,IAAI,qCAAqC,KAAK,CAAC,EAAE,CAAC;QAChD,SAAS,GAAG,IAAI,WAAE,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC/D,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,4BAA4B,EAAE,CAAC;QAC9E,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,4BAA4B,CAAA;QAC5F,MAAM,SAAS,GAAG,IAAI,WAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACnD,MAAM,YAAY,GAChB,UAAU,CAAC,EAAE,CAAC,IAAI,WAAE,CAAC,CAAC,CAAC,CAAC,IAAI,iBAAiB,GAAG,CAAC;YAC/C,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,WAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,WAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,WAAE,CAAC,MAAM,CAAC,CAAC;YAC5G,CAAC,CAAC,IAAI,WAAE,CAAC,CAAC,CAAC,CAAA;QAEf,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QACxD,MAAM,cAAc,GAAG,IAAI,WAAE,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAA;QACxE,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC7C,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,IAAI,WAAE,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IACvF,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,WAAE,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChD,MAAM,aAAa,GAAG,IAAI,oBAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,oBAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACtG,MAAM,eAAe,GAAG,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IACtF,MAAM,SAAS,GAAG,eAAe,GAAG,aAAa,CAAA;IAEjD,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE;YACR,UAAU,EAAE,MAAM;YAClB,kBAAkB,EAAE,IAAI,WAAE,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YACrE,4BAA4B,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;YACjE,qCAAqC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;SACrE;KACF,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,UAA2B;IACzD,OAAO,EAAE,CAAA;AACX,CAAC;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;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;AAEM,KAAK,UAAU,qBAAqB,CAAC,EAC1C,UAAU,EACV,kBAAkB,GAInB;IACC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAA;IACnE,MAAM,KAAK,GAAG,IAAI,mBAAU,CAAC,sBAAqB,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAClE,MAAM,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,CAAA;IAC5D,MAAM,qBAAqB,GAAG,IAAI,CAAC,4BAA4B,CAAA;IAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAA;IAChD,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,aAAI,CAAC,SAAS,CAAC,8CAA8C,CAAC,CAAC;QAC7G,CAAC,CAAC,IAAI,aAAI,CAAC,SAAS,CAAC,8CAA8C,CAAC;QACpE,CAAC,CAAC,IAAI,aAAI,CAAC,SAAS,CAAC,8CAA8C,CAAC,CAAA;IAEtE,OAAO,CAAC,GAAG,CAAC,sDAAsD,EAAE,sBAAsB,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEtG,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAA;AACxH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAC,EAC1C,UAAU,EACV,kBAAkB,GAInB;IACC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAA;IACnE,MAAM,KAAK,GAAG,IAAI,mBAAU,CAAC,sBAAqB,CAAC,CAAA;IAEnD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAE9D,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB;SAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SACrB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,aAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEhF,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAA;IAC7C,MAAM,kBAAkB,GAAG,MAAM,UAAU,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAA;IAEnF,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACjD,OAAO;YACL,cAAc,EAAE,CAAC;YACjB,OAAO,EAAE,qCAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa;SAClE,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAA;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAA;IACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAA;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAA;IAEnC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;AACtF,CAAC;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;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;AAEM,KAAK,UAAU,gBAAgB,CAAC,EACrC,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,YAAY,GAMb;IAGC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,WAAE,CAAC,CAAC,CAAC,CAAA;QAEtB,8CAA8C;QAC9C,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,uBAAuB,CAAC;YAC5D,QAAQ,CAAC,IAAI;YACb,QAAQ,CAAC,QAAQ;YACjB,QAAQ,CAAC,QAAQ;YACjB,QAAQ,CAAC,QAAQ;YACjB,QAAQ,CAAC,QAAQ;SAClB,CAAC,CAAA;QAEF,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YACrG,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC1D,CAAC;QAED,qDAAqD;QACrD,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,IAAA,yCAA4B,EAAC,YAAY,CAAC,CAAA;QACnF,aAAa;QACb,MAAM,gBAAgB,GAAG,IAAA,4CAA+B,EAAC,eAAe,CAAC,CAAA;QAEzE,IAAI,cAAsB,CAAA;QAC1B,IAAI,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAA;QAErC,IAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,cAAc,GAAG,CAAC,CAAA;QACpB,CAAC;QAED,IAAI,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAE5G,cAAc,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;QAE/D,IAAI,kBAAkB,GAAG,UAAU,CAAC,8BAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;QAEvF,OAAO,EAAE,KAAK,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAAA;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,EACtC,UAAU,EACV,QAAQ,GAIT;IACC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAA,oCAAsB,EAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC9E,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAO,EAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEzD,MAAM,MAAM,GAAG,IAAI,WAAE,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,SAAS,GAAG,IAAI,WAAE,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC/C,MAAM,eAAe,GAAG,IAAI,WAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QACxD,MAAM,mBAAmB,GAAG,IAAI,WAAE,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEtE,IAAI,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,CAAA;QACV,CAAC;QAED,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAC9E,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;QAEhG,OAAO,CAAC,GAAG,YAAY,CAAA,CAAC,kCAAkC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,2BAA2B,CAAC,EAChD,UAAU,EACV,SAAS,EACT,eAAe,GAKhB;IAOC,IAAI,CAAC;QACH,0DAA0D;QAC1D,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,uBAAuB,CAAC,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAA;QAE3F,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC5D,CAAC;QAED,sDAAsD;QACtD,MAAM,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,GAAG,IAAA,wDAAyC,EAAC,YAAY,CAAC,CAAA;QAE5G,wDAAwD;QACxD,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;QACxE,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAA;QAE9E,2DAA2D;QAC3D,IAAI,iBAAyB,CAAA;QAC7B,IAAI,aAAa,KAAK,EAAE,EAAE,CAAC;YACzB,iBAAiB,GAAG,eAAe,CAAA,CAAC,yDAAyD;QAC/F,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;YACzE,MAAM,UAAU,GAAG,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;YACrE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA,CAAC,yBAAyB;YAEnF,4BAA4B;YAC5B,IAAI,cAAsB,CAAA;YAC1B,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;gBAC7B,cAAc,GAAG,EAAE,CAAA,CAAC,6DAA6D;YACnF,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,CAAC,aAAa,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC,CAAA;YAC7F,CAAC;YAED,iBAAiB,GAAG,eAAe,GAAG,cAAc,CAAA;QACtD,CAAC;QAED,kFAAkF;QAClF,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAA;QAErF,OAAO;YACL,cAAc;YACd,WAAW,EAAE,eAAe,CAAC,QAAQ,EAAE;YACvC,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE;YACzC,aAAa,EAAE,aAAa,CAAC,QAAQ,EAAE;YACvC,iBAAiB,EAAE,iBAAiB,CAAC,QAAQ,EAAE;SAChD,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
|
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/build/utils/meteora.d.ts
CHANGED
package/build/utils/meteora.js
CHANGED
|
@@ -3,7 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.computeStableSwapInvariant = void 0;
|
|
7
|
+
exports.calculateUnlockedAmount = calculateUnlockedAmount;
|
|
8
|
+
exports.getAmountByShare = getAmountByShare;
|
|
9
|
+
exports.computeD = computeD;
|
|
7
10
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
8
11
|
const bn_sqrt_1 = __importDefault(require("bn-sqrt"));
|
|
9
12
|
/**
|
|
@@ -27,7 +30,6 @@ function calculateUnlockedAmount(onChainTime, vaultState) {
|
|
|
27
30
|
.div(lockedProfitDegradationDenominator);
|
|
28
31
|
return vaultTotalAmount.sub(lockedProfit);
|
|
29
32
|
}
|
|
30
|
-
exports.calculateUnlockedAmount = calculateUnlockedAmount;
|
|
31
33
|
/**
|
|
32
34
|
* Calculates the amount of tokens corresponding to a share of the vault.
|
|
33
35
|
*
|
|
@@ -42,7 +44,6 @@ function getAmountByShare(share, totalSupply, vaultState, onChainTime) {
|
|
|
42
44
|
const withdrawableAmount = calculateUnlockedAmount(onChainTime, vaultState);
|
|
43
45
|
return totalSupply.isZero() ? new anchor_1.BN(0) : share.mul(withdrawableAmount).div(totalSupply);
|
|
44
46
|
}
|
|
45
|
-
exports.getAmountByShare = getAmountByShare;
|
|
46
47
|
/**
|
|
47
48
|
* Computes the StableSwap invariant (D) based on the Curve Finance formula.
|
|
48
49
|
*
|
|
@@ -116,5 +117,4 @@ function computeD(curve, tokenAmountA, tokenAmountB) {
|
|
|
116
117
|
// Default case - should never reach here if CurveType is properly defined
|
|
117
118
|
throw new Error("Invalid curve type");
|
|
118
119
|
}
|
|
119
|
-
exports.computeD = computeD;
|
|
120
120
|
//# sourceMappingURL=meteora.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meteora.js","sourceRoot":"","sources":["../../src/utils/meteora.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"meteora.js","sourceRoot":"","sources":["../../src/utils/meteora.ts"],"names":[],"mappings":"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"}
|
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.5",
|
|
4
4
|
"main": "build/index.js",
|
|
5
5
|
"types": "build/index.d.ts",
|
|
6
6
|
"license": "AGPL-3.0",
|
|
@@ -9,18 +9,22 @@
|
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@coral-xyz/anchor": "0.30.0",
|
|
12
|
-
"@exponent-labs/exponent-idl": "0.1.
|
|
13
|
-
"@exponent-labs/exponent-types": "0.1.
|
|
14
|
-
"@exponent-labs/fragmetric-idl": "0.1.
|
|
15
|
-
"@exponent-labs/generic-sy-idl": "0.1.
|
|
16
|
-
"@exponent-labs/jito-restaking-sy-idl": "0.1.
|
|
17
|
-
"@exponent-labs/kamino-reserve-deserializer": "0.1.
|
|
18
|
-
"@exponent-labs/marginfi-sy-idl": "0.1.
|
|
19
|
-
"@exponent-labs/meteora-idl": "0.1.
|
|
20
|
-
"@exponent-labs/kamino-sy-idl": "0.1.
|
|
21
|
-
"@exponent-labs/perena-sy-idl": "0.1.
|
|
22
|
-
"@exponent-labs/precise-number": "0.1.
|
|
12
|
+
"@exponent-labs/exponent-idl": "0.1.5",
|
|
13
|
+
"@exponent-labs/exponent-types": "0.1.5",
|
|
14
|
+
"@exponent-labs/fragmetric-idl": "0.1.5",
|
|
15
|
+
"@exponent-labs/generic-sy-idl": "0.1.5",
|
|
16
|
+
"@exponent-labs/jito-restaking-sy-idl": "0.1.5",
|
|
17
|
+
"@exponent-labs/kamino-reserve-deserializer": "0.1.5",
|
|
18
|
+
"@exponent-labs/marginfi-sy-idl": "0.1.5",
|
|
19
|
+
"@exponent-labs/meteora-idl": "0.1.5",
|
|
20
|
+
"@exponent-labs/kamino-sy-idl": "0.1.5",
|
|
21
|
+
"@exponent-labs/perena-sy-idl": "0.1.5",
|
|
22
|
+
"@exponent-labs/precise-number": "0.1.5",
|
|
23
|
+
"@exponent-labs/jupiter-lend-idl": "0.1.5",
|
|
24
|
+
"@exponent-labs/jupiter-perps-idl": "0.1.5",
|
|
25
|
+
"@exponent-labs/kamino-vault-idl": "0.1.5",
|
|
23
26
|
"@solana/spl-stake-pool": "1.1.8",
|
|
27
|
+
"@exponent-labs/solstice-idl": "0.1.5",
|
|
24
28
|
"@solana/spl-token": "0.4.6",
|
|
25
29
|
"bn-sqrt": "^1.0.0",
|
|
26
30
|
"decimal.js": "^10.4.3"
|
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
|
}
|