@exponent-labs/exponent-fetcher 0.0.3

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.
@@ -0,0 +1,492 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fetchMeteoraUsdcUsdtIndex = exports.fetchFragmetricIndex = exports.fetchGenericSyMetaIndex = exports.fetchPyth = exports.fetchJitoRestaking = exports.fetchPerenaStablePoolData = exports.deserializeEmission = exports.serializeEmission = exports.fetchKaminoReserve = exports.ExponentFetcher = exports.MyWallet = exports.deserializeAnchorizedPNumFromJson = exports.serializeAnchorizedPNumFromJson = void 0;
7
+ const anchor_1 = require("@coral-xyz/anchor");
8
+ const exponent_idl_1 = require("@exponent-labs/exponent-idl");
9
+ const kamino_sy_idl_1 = require("@exponent-labs/kamino-sy-idl");
10
+ const marginfi_sy_idl_1 = require("@exponent-labs/marginfi-sy-idl");
11
+ 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_lend_standard_1 = require("@exponent-labs/kamino-lend-standard");
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
+ const perena_sy_idl_2 = require("@exponent-labs/perena-sy-idl");
18
+ const spl_stake_pool_1 = require("@solana/spl-stake-pool");
19
+ const fragmetric_idl_1 = require("@exponent-labs/fragmetric-idl");
20
+ const meteora_idl_1 = require("@exponent-labs/meteora-idl");
21
+ const spl_token_1 = require("@solana/spl-token");
22
+ const anchor_2 = require("@coral-xyz/anchor");
23
+ const exponent_types_1 = require("@exponent-labs/exponent-types");
24
+ const decimal_js_1 = __importDefault(require("decimal.js"));
25
+ const spl_token_2 = require("@solana/spl-token");
26
+ const generic_sy_idl_1 = require("@exponent-labs/generic-sy-idl");
27
+ const meteora_1 = require("./utils/meteora");
28
+ function serializeAnchorizedPNumFromJson(pnum) {
29
+ const serializedArray = pnum[0].map((bn) => bn.toString());
30
+ return { 0: serializedArray };
31
+ }
32
+ exports.serializeAnchorizedPNumFromJson = serializeAnchorizedPNumFromJson;
33
+ function deserializeAnchorizedPNumFromJson(serialized) {
34
+ const bnArray = serialized[0].map((str) => new anchor_1.BN(str));
35
+ return { 0: bnArray };
36
+ }
37
+ exports.deserializeAnchorizedPNumFromJson = deserializeAnchorizedPNumFromJson;
38
+ class MyWallet {
39
+ payer;
40
+ constructor(payer) {
41
+ this.payer = payer;
42
+ this.payer = payer;
43
+ }
44
+ async signTransaction(tx) {
45
+ if (tx instanceof anchor_1.web3.Transaction) {
46
+ tx.partialSign(this.payer);
47
+ }
48
+ else {
49
+ tx.sign([this.payer]);
50
+ }
51
+ return tx;
52
+ }
53
+ async signAllTransactions(txs) {
54
+ return txs.map((t) => {
55
+ if (t instanceof anchor_1.web3.Transaction) {
56
+ t.partialSign(this.payer);
57
+ }
58
+ else if (t instanceof anchor_1.web3.VersionedTransaction) {
59
+ t.sign([this.payer]);
60
+ }
61
+ return t;
62
+ });
63
+ }
64
+ get publicKey() {
65
+ return this.payer.publicKey;
66
+ }
67
+ }
68
+ exports.MyWallet = MyWallet;
69
+ class ExponentFetcher {
70
+ program;
71
+ marginfiSyProgram;
72
+ kaminoSyProgram;
73
+ jitoRestakingSyProgram;
74
+ perenaSyProgram;
75
+ genericStandardProgram;
76
+ connection;
77
+ coreProgramId;
78
+ marginfiSyProgramId;
79
+ kaminoSyProgramId;
80
+ jitoRestakingSyProgramId;
81
+ perenaSyProgramId;
82
+ genericStandardProgramId;
83
+ constructor({ connection, coreProgramId = new anchor_1.web3.PublicKey(exponent_idl_1.PROGRAM_ID), marginfiSyProgramId = new anchor_1.web3.PublicKey(marginfi_sy_idl_1.PROGRAM_ID), kaminoSyProgramId = new anchor_1.web3.PublicKey(kamino_sy_idl_1.PROGRAM_ID), jitoRestakingSyProgramId = new anchor_1.web3.PublicKey(jito_restaking_sy_idl_1.PROGRAM_ID), perenaSyProgramId = new anchor_1.web3.PublicKey(perena_sy_idl_1.PROGRAM_ID), genericStandardProgramId = new anchor_1.web3.PublicKey(generic_sy_idl_1.PROGRAM_ID), }) {
84
+ this.connection = connection;
85
+ this.coreProgramId = coreProgramId;
86
+ this.marginfiSyProgramId = marginfiSyProgramId;
87
+ this.kaminoSyProgramId = kaminoSyProgramId;
88
+ this.jitoRestakingSyProgramId = jitoRestakingSyProgramId;
89
+ this.perenaSyProgramId = perenaSyProgramId;
90
+ this.genericStandardProgramId = genericStandardProgramId;
91
+ // Note - keypair does not matter. this is purely read-only fetching
92
+ const mockWallet = new MyWallet(anchor_1.web3.Keypair.generate());
93
+ const provider = new anchor_1.AnchorProvider(connection, mockWallet);
94
+ this.program = new anchor_1.Program(exponent_idl_1.IDL, provider);
95
+ this.marginfiSyProgram = new anchor_1.Program(marginfi_sy_idl_1.IDL, provider);
96
+ this.kaminoSyProgram = new anchor_1.Program(kamino_lend_standard_1.IDL, provider);
97
+ this.jitoRestakingSyProgram = new anchor_1.Program(jito_restaking_sy_idl_2.IDL, provider);
98
+ this.perenaSyProgram = new anchor_1.Program(perena_sy_idl_2.IDL, provider);
99
+ this.genericStandardProgram = new anchor_1.Program(generic_sy_idl_1.IDL, provider);
100
+ }
101
+ async fetchVault(address) {
102
+ try {
103
+ const v = await this.program.account.vault.fetch(address);
104
+ return deserializeVault(v);
105
+ }
106
+ catch (e) {
107
+ console.error(`Error fetching vault ${address.toBase58()}`);
108
+ console.error(e);
109
+ throw e;
110
+ }
111
+ }
112
+ async fetchMarket(address) {
113
+ try {
114
+ const m = await this.program.account.marketTwo.fetch(address);
115
+ return deserializeMarketTwo(m);
116
+ }
117
+ catch (e) {
118
+ console.error(`Error fetching market ${address.toBase58()}`);
119
+ console.error(e);
120
+ throw e;
121
+ }
122
+ }
123
+ async fetchMarginfiSyMeta(address) {
124
+ const x = await this.marginfiSyProgram.account.syMeta.fetch(address);
125
+ return deserializeMarginfiSyMeta(x);
126
+ }
127
+ async fetchMarginfiSyPosition(address) {
128
+ const x = await this.marginfiSyProgram.account.position.fetch(address);
129
+ const emissions = x.rewardIndexes.map((r) => ({
130
+ mint: r.mint,
131
+ staged: BigInt(r.claimableRewardsAmount.toString()),
132
+ lastSeenIndex: parseFloat(precise_number_1.PreciseNumber.fromRaw(r.lastSeenShareIndex[0]).valueString),
133
+ }));
134
+ return {
135
+ owner: x.owner,
136
+ balanceSy: BigInt(x.amount.toString()),
137
+ emissions,
138
+ };
139
+ }
140
+ async fetchKaminoSyPosition(address) {
141
+ const x = await this.kaminoSyProgram.account.position.fetch(address);
142
+ const emissions = x.rewardIndexes.map((r) => ({
143
+ mint: r.mint,
144
+ staged: BigInt(r.claimableRewardsAmount.toString()),
145
+ lastSeenIndex: parseFloat(precise_number_1.PreciseNumber.fromRaw(r.lastSeenShareIndex[0]).valueString),
146
+ }));
147
+ return {
148
+ owner: x.owner,
149
+ balanceSy: BigInt(x.amount.toString()),
150
+ emissions,
151
+ };
152
+ }
153
+ async fetchJitoRestakingSyPosition(address) {
154
+ const x = await this.jitoRestakingSyProgram.account.position.fetch(address);
155
+ const emissions = x.rewardIndexes.map((r) => ({
156
+ mint: r.mint,
157
+ staged: BigInt(r.claimableRewardsAmount.toString()),
158
+ lastSeenIndex: parseFloat(precise_number_1.PreciseNumber.fromRaw(r.lastSeenShareIndex[0]).valueString),
159
+ }));
160
+ return {
161
+ owner: x.owner,
162
+ balanceSy: BigInt(x.amount.toString()),
163
+ emissions,
164
+ };
165
+ }
166
+ async fetchPerenaSyPosition(address) {
167
+ const x = await this.perenaSyProgram.account.position.fetch(address);
168
+ const emissions = x.rewardIndexes.map((r) => ({
169
+ mint: r.mint,
170
+ staged: BigInt(r.claimableRewardsAmount.toString()),
171
+ lastSeenIndex: parseFloat(precise_number_1.PreciseNumber.fromRaw(r.lastSeenShareIndex[0]).valueString),
172
+ }));
173
+ return { owner: x.owner, balanceSy: BigInt(x.amount.toString()), emissions };
174
+ }
175
+ async fetchGenericSyPosition(address) {
176
+ const x = await this.genericStandardProgram.account.position.fetch(address);
177
+ const emissions = x.rewardIndexes.map((r) => ({
178
+ mint: r.mint,
179
+ staged: BigInt(r.claimableRewardsAmount.toString()),
180
+ lastSeenIndex: parseFloat(precise_number_1.PreciseNumber.fromRaw(r.lastSeenShareIndex[0]).valueString),
181
+ }));
182
+ return { owner: x.owner, balanceSy: BigInt(x.amount.toString()), emissions };
183
+ }
184
+ async fetchKaminoSyMeta(address) {
185
+ const x = await this.kaminoSyProgram.account.syMeta.fetch(address);
186
+ return {
187
+ ...x,
188
+ emissions: x.emissions.map(deserializeSyEmissionRaw),
189
+ };
190
+ }
191
+ async fetchLpPosition(address) {
192
+ const x = await this.program.account.lpPosition.fetch(address);
193
+ console.log("FARMs SHOULD BE HERE", x.farms);
194
+ return deserializeLpPosition(x);
195
+ }
196
+ async fetchYtPosition(address) {
197
+ const x = await this.program.account.yieldTokenPosition.fetch(address);
198
+ return deserializeYtPosition(x);
199
+ }
200
+ async fetchJitoRestakingSyMeta(address) {
201
+ const x = await this.jitoRestakingSyProgram.account.syMeta.fetch(address);
202
+ return (0, exponent_types_1.deserializeJitoRestakingSyMetaAccountRaw)(x);
203
+ }
204
+ async fetchPerenaSyMeta(address) {
205
+ const x = await this.perenaSyProgram.account.syMeta.fetch(address);
206
+ return (0, exponent_types_1.deserializePerenaSyMetaAccountRaw)(x);
207
+ }
208
+ async fetchGenericSyMeta(address) {
209
+ const x = await this.genericStandardProgram.account.syMeta.fetch(address);
210
+ return (0, exponent_types_1.deserializeGenericSyMetaAccountRaw)(x);
211
+ }
212
+ }
213
+ exports.ExponentFetcher = ExponentFetcher;
214
+ function deserializeMarketTwo(m) {
215
+ return {
216
+ ptBalance: BigInt(m.financials.ptBalance.toString()),
217
+ syBalance: BigInt(m.financials.syBalance.toString()),
218
+ lpEscrowAmount: BigInt(m.lpEscrowAmount.toString()),
219
+ maxLpSupply: BigInt(m.maxLpSupply.toString()),
220
+ rateScalarRoot: m.financials.rateScalarRoot,
221
+ lnFeeRateRoot: m.financials.lnFeeRateRoot,
222
+ lastLnImpliedRate: m.financials.lastLnImpliedRate,
223
+ expirationTs: m.financials.expirationTs.toNumber(),
224
+ addressLookupTable: m.addressLookupTable,
225
+ mintSy: m.mintSy,
226
+ mintPt: m.mintPt,
227
+ mintLp: m.mintLp,
228
+ vault: m.vault,
229
+ tokenLpEscrow: m.tokenLpEscrow,
230
+ tokenSyEscrow: m.tokenSyEscrow,
231
+ tokenPtEscrow: m.tokenPtEscrow,
232
+ tokenFeeTreasurySy: m.tokenFeeTreasurySy,
233
+ selfAddress: m.selfAddress,
234
+ syProgram: m.syProgram,
235
+ statusFlags: m.statusFlags,
236
+ cpiAccounts: m.cpiAccounts,
237
+ feeTreasurySyBps: m.feeTreasurySyBps,
238
+ isCurrentFlashSwap: m.isCurrentFlashSwap,
239
+ lpFarm: m.lpFarm,
240
+ emissions: {
241
+ trackers: m.emissions.trackers.map((t) => ({
242
+ tokenEscrow: t.tokenEscrow,
243
+ lpShareIndex: deserializeAnchorizedPNum(t.lpShareIndex),
244
+ lastSeenStaged: Number(t.lastSeenStaged),
245
+ })),
246
+ },
247
+ liquidityNetBalanceLimits: m.liquidityNetBalanceLimits,
248
+ };
249
+ }
250
+ function deserializeVault(x) {
251
+ return {
252
+ syProgram: x.syProgram,
253
+ mintSy: x.mintSy,
254
+ mintYt: x.mintYt,
255
+ mintPt: x.mintPt,
256
+ escrowSy: x.escrowSy,
257
+ escrowYt: x.escrowYt,
258
+ startTs: x.startTs,
259
+ duration: x.duration,
260
+ authority: x.authority,
261
+ lastSeenSyExchangeRate: deserializeAnchorizedPNum(x.lastSeenSyExchangeRate),
262
+ allTimeHighSyExchangeRate: deserializeAnchorizedPNum(x.allTimeHighSyExchangeRate),
263
+ finalSyExchangeRate: deserializeAnchorizedPNum(x.finalSyExchangeRate),
264
+ addressLookupTable: x.addressLookupTable,
265
+ ptSupply: BigInt(x.ptSupply.toString()),
266
+ syForPt: BigInt(x.syForPt.toString()),
267
+ yieldPosition: x.yieldPosition,
268
+ emissions: x.emissions,
269
+ cpiAccounts: x.cpiAccounts,
270
+ treasurySy: x.treasurySy,
271
+ totalSyInEscrow: BigInt(x.totalSyInEscrow.toString()),
272
+ interestBpsFee: x.interestBpsFee,
273
+ status: x.status,
274
+ treasurySyTokenAccount: x.treasurySyTokenAccount,
275
+ minOpSizeStrip: BigInt(x.minOpSizeStrip.toString()),
276
+ minOpSizeMerge: BigInt(x.minOpSizeMerge.toString()),
277
+ maxPySupply: BigInt(x.maxPySupply.toString()),
278
+ };
279
+ }
280
+ function deserializeMarginfiSyMeta(x) {
281
+ return {
282
+ ...x,
283
+ maxSySupply: BigInt(x.maxSySupply.toString()),
284
+ minMintSize: BigInt(x.minMintSize.toString()),
285
+ minRedeemSize: BigInt(x.minRedeemSize.toString()),
286
+ };
287
+ }
288
+ function deserializeSyEmissionRaw(x) {
289
+ return {
290
+ mint: x.mint,
291
+ index: x.index,
292
+ lastSeenTotalAccruedEmissions: new anchor_1.BN(x.lastSeenTotalAccruedEmissions.toString()),
293
+ totalClaimedEmissions: new anchor_1.BN(x.totalClaimedEmissions.toString()),
294
+ tokenProgram: x.tokenProgram,
295
+ escrowAccount: x.escrowAccount,
296
+ treasuryEmission: new anchor_1.BN(x.treasuryEmission.toString()),
297
+ lastSeenIndex: x.lastSeenIndex,
298
+ };
299
+ }
300
+ function deserializeLpPosition(x) {
301
+ return {
302
+ owner: x.owner,
303
+ market: x.market,
304
+ lpBalance: BigInt(x.lpBalance.toString()),
305
+ emissions: x.emissions.trackers.map((t) => ({
306
+ staged: BigInt(t.staged.toString()),
307
+ lastSeenIndex: parseFloat(precise_number_1.PreciseNumber.fromRaw(t.lastSeenIndex[0]).valueString),
308
+ })),
309
+ farms: x.farms.trackers.map((t) => ({
310
+ staged: BigInt(t.staged.toString()),
311
+ lastSeenIndex: parseFloat(precise_number_1.PreciseNumber.fromRaw(t.lastSeenIndex[0]).valueString),
312
+ })),
313
+ };
314
+ }
315
+ function deserializeYtPosition(x) {
316
+ return {
317
+ owner: x.owner,
318
+ vault: x.vault,
319
+ ytBalance: BigInt(x.ytBalance.toString()),
320
+ interest: deserializeYieldTokenTracker(x.interest),
321
+ emissions: x.emissions.map(deserializeYieldTokenTracker),
322
+ };
323
+ }
324
+ function deserializeYieldTokenTracker(x) {
325
+ return {
326
+ staged: BigInt(x.staged.toString()),
327
+ lastSeenIndex: parseFloat(precise_number_1.PreciseNumber.fromRaw(x.lastSeenIndex[0]).valueString),
328
+ };
329
+ }
330
+ async function fetchKaminoReserve(address, connection) {
331
+ const reserve = await kamino_reserve_deserializer_1.Reserve.fetch(connection, address);
332
+ if (!reserve) {
333
+ throw new Error("Reserve not found");
334
+ }
335
+ return {
336
+ lendingMarket: reserve.lendingMarket,
337
+ baseMint: reserve.liquidity.mintPubkey,
338
+ assetShareValue: reserve.getCollateralExchangeRate(),
339
+ };
340
+ }
341
+ exports.fetchKaminoReserve = fetchKaminoReserve;
342
+ function serializeEmission(emission) {
343
+ return {
344
+ tokenAccount: emission.tokenAccount.toString(),
345
+ initialIndex: serializeAnchorizedPNumFromJson(emission.initialIndex),
346
+ lastSeenIndex: serializeAnchorizedPNumFromJson(emission.lastSeenIndex),
347
+ treasuryTokenAccount: emission.treasuryTokenAccount.toString(),
348
+ feeBps: emission.feeBps,
349
+ treasuryEmission: emission.treasuryEmission.toString(),
350
+ };
351
+ }
352
+ exports.serializeEmission = serializeEmission;
353
+ function deserializeEmission(emission) {
354
+ return {
355
+ tokenAccount: new anchor_1.web3.PublicKey(emission.tokenAccount),
356
+ initialIndex: deserializeAnchorizedPNumFromJson(emission.initialIndex),
357
+ lastSeenIndex: deserializeAnchorizedPNumFromJson(emission.lastSeenIndex),
358
+ treasuryTokenAccount: new anchor_1.web3.PublicKey(emission.treasuryTokenAccount),
359
+ feeBps: emission.feeBps,
360
+ treasuryEmission: new anchor_1.BN(emission.treasuryEmission),
361
+ };
362
+ }
363
+ exports.deserializeEmission = deserializeEmission;
364
+ function deserializeAnchorizedPNum(x) {
365
+ return parseFloat(precise_number_1.PreciseNumber.fromRaw(x[0]).valueString);
366
+ }
367
+ /** Fetch the exchange rate of a JitoRestaking vault's VRT to JitoSOL */
368
+ async function fetchJitoVaultData({ connection, vaultAddress, }) {
369
+ const vaultAccountInfo = await connection.getAccountInfo(vaultAddress);
370
+ const d = vaultAccountInfo.data;
371
+ // the vault has an 8 byte discriminator at the beginning
372
+ const discriminatorOffset = 8;
373
+ const vrtMintOffset = 32 + discriminatorOffset;
374
+ const vrtSupplyOffset = 96 + discriminatorOffset;
375
+ const jitoVaultTotalDepositsOffset = 104 + discriminatorOffset;
376
+ const mintBase = new anchor_1.web3.PublicKey(d.slice(vrtMintOffset, vrtMintOffset + 32));
377
+ // For Borsh, numbers are serialized in little-endian format
378
+ const jitoVaultTotalSharesBuffer = d.slice(vrtSupplyOffset, vrtSupplyOffset + 8);
379
+ const jitoVaultTotalShares = new anchor_1.BN(jitoVaultTotalSharesBuffer, "le");
380
+ const jitoVaultTotalDepositsBuffer = d.slice(jitoVaultTotalDepositsOffset, jitoVaultTotalDepositsOffset + 8);
381
+ const jitoVaultTotalDeposits = new anchor_1.BN(jitoVaultTotalDepositsBuffer, "le");
382
+ const jitoVaultTotalSharesD = new decimal_js_1.default(jitoVaultTotalShares.toString());
383
+ const jitoVaultTotalDepositsD = new decimal_js_1.default(jitoVaultTotalDeposits.toString());
384
+ const exchangeRate = jitoVaultTotalDepositsD.isZero()
385
+ ? "1.0"
386
+ : jitoVaultTotalDepositsD.div(jitoVaultTotalSharesD).toString();
387
+ return { exchangeRate: parseFloat(exchangeRate), mintBase };
388
+ }
389
+ async function fetchJitoSolToSolExchangeRate({ connection, interfaceType, accounts, }) {
390
+ if (interfaceType.splStakePool) {
391
+ const stakePool = await (0, spl_stake_pool_1.getStakePoolAccount)(connection, accounts[0]);
392
+ return Number(stakePool.account.data.totalLamports) / Number(stakePool.account.data.poolTokenSupply);
393
+ }
394
+ throw new Error("Unsupported interface type");
395
+ }
396
+ async function fetchPerenaStablePoolData({ connection, perenaStablePool, }) {
397
+ const [lpMint, _] = anchor_1.web3.PublicKey.findProgramAddressSync([perenaStablePool.toBuffer(), Buffer.from("liquidity")], new anchor_1.web3.PublicKey("NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P"));
398
+ const [accountInfo, lpMintInfo] = await connection.getMultipleAccountsInfo([perenaStablePool, lpMint]);
399
+ const lpMintDeserialized = spl_token_2.MintLayout.decode(lpMintInfo.data);
400
+ const d = accountInfo.data;
401
+ const discriminatorOffset = 8;
402
+ const invTOffset = discriminatorOffset + 32 + 32 + 32 + 32; // 4 Pubkeys before invT
403
+ const invTBuffer = d.slice(invTOffset, invTOffset + 8);
404
+ const invT = Buffer.from(invTBuffer).readBigUInt64LE(0);
405
+ const exchangeRate = new decimal_js_1.default(invT.toString()).div(new decimal_js_1.default(lpMintDeserialized.supply.toString())).toString();
406
+ return { lpSupply: lpMintDeserialized.supply, invT, exchangeRate, lpMint };
407
+ }
408
+ exports.fetchPerenaStablePoolData = fetchPerenaStablePoolData;
409
+ /**
410
+ * Fetch the exchange rate of a JitoRestaking vault
411
+ * @param connection
412
+ * @param accounts "remaining accounts"
413
+ * @param vaultAddress "address of the Jito Restaking vault"
414
+ * @param interfaceType "interface type of the Jito Restaking interface program that Exponent manages"
415
+ * @returns
416
+ */
417
+ async function fetchJitoRestaking(connection, accounts, interfaceType, vaultAddress) {
418
+ const vaultDataP = fetchJitoVaultData({ connection, vaultAddress });
419
+ const solToSolExchangeRateP = fetchJitoSolToSolExchangeRate({ connection, interfaceType, accounts });
420
+ const [{ exchangeRate: e1, mintBase }, e2] = await Promise.all([vaultDataP, solToSolExchangeRateP]);
421
+ // exchange rate of VRT to SOL is the product of the two exchange rates
422
+ const exr = e1 * e2;
423
+ return {
424
+ mintBase,
425
+ exchangeRateUnderlying: e2,
426
+ exchangeRate: exr.toString(),
427
+ };
428
+ }
429
+ exports.fetchJitoRestaking = fetchJitoRestaking;
430
+ async function fetchPyth(connection) {
431
+ return "";
432
+ }
433
+ exports.fetchPyth = fetchPyth;
434
+ async function fetchGenericSyMetaIndex({ connection, genericSyMeta, }) {
435
+ const [accountInfo] = await connection.getMultipleAccountsInfo([genericSyMeta]);
436
+ const d = accountInfo.data;
437
+ // Calculate offset:
438
+ // 8 (discriminator) +
439
+ // 32 (mint_sy) +
440
+ // 32 (token_sy_escrow) +
441
+ // 8 (max_sy_supply) +
442
+ // 8 (min_mint_size) +
443
+ // 8 (min_redeem_size) +
444
+ // 1 (self_address_bump)
445
+ const indexOffset = 8 + 32 + 32 + 8 + 8 + 8 + 1;
446
+ const indexBuffer = d.slice(indexOffset, indexOffset + 32);
447
+ // Split the 32 byte buffer into 4 u64 (8 bytes each)
448
+ const nums = [];
449
+ for (let i = 0; i < 4; i++) {
450
+ const slice = indexBuffer.slice(i * 8, (i + 1) * 8);
451
+ nums.push(new anchor_1.BN(slice, undefined, "le")); // Added 'le' for little-endian
452
+ }
453
+ // Convert the buffer to AnchorizedPNum format with 4 BNs
454
+ const indexRaw = { 0: nums };
455
+ const index = parseFloat(precise_number_1.PreciseNumber.fromRaw(indexRaw[0]).valueString);
456
+ return { index };
457
+ }
458
+ exports.fetchGenericSyMetaIndex = fetchGenericSyMetaIndex;
459
+ async function fetchFragmetricIndex({ connection, fragmetricFund, }) {
460
+ const account = await connection.getAccountInfo(fragmetricFund);
461
+ const coder = new anchor_2.BorshCoder(fragmetric_idl_1.IDL);
462
+ const data = coder.accounts.decode("FundAccount", account.data);
463
+ const index = Number(data.one_receipt_token_as_sol) / Number(10 ** data.receipt_token_decimals);
464
+ const receiptTokenMint = new anchor_1.web3.PublicKey(data.receipt_token_mint);
465
+ const wrappedTokenMint = new anchor_1.web3.PublicKey(data.wrapped_token.mint);
466
+ return { index, receiptTokenMint, wrappedTokenMint };
467
+ }
468
+ exports.fetchFragmetricIndex = fetchFragmetricIndex;
469
+ async function fetchMeteoraUsdcUsdtIndex({ connection, accounts, onChainTime, }) {
470
+ try {
471
+ const VIRTUAL_PRICE_PRECISION = new anchor_1.BN(100_000_000);
472
+ const pool = await (0, meteora_idl_1.decodePoolAccount)(connection, accounts.pool);
473
+ const poolLpSupply = new anchor_1.BN((await (0, spl_token_1.getMint)(connection, pool.lpMint)).supply.toString());
474
+ const vaultA = await (0, meteora_idl_1.decodeVaultAccount)(connection, accounts.vaultA);
475
+ const vaultB = await (0, meteora_idl_1.decodeVaultAccount)(connection, accounts.vaultB);
476
+ const vaultALpSupply = (await (0, spl_token_1.getMint)(connection, vaultA.lpMint)).supply;
477
+ const vaultBLpSupply = (await (0, spl_token_1.getMint)(connection, vaultB.lpMint)).supply;
478
+ const poolVaultALpTokenAmount = (await (0, spl_token_1.getAccount)(connection, pool.aVaultLp)).amount;
479
+ const poolVaultBLpTokenAmount = (await (0, spl_token_1.getAccount)(connection, pool.bVaultLp)).amount;
480
+ const tokenAAmount = (0, meteora_1.getAmountByShare)(new anchor_1.BN(poolVaultALpTokenAmount.toString()), new anchor_1.BN(vaultALpSupply.toString()), vaultA, onChainTime);
481
+ const tokenBAmount = (0, meteora_1.getAmountByShare)(new anchor_1.BN(poolVaultBLpTokenAmount.toString()), new anchor_1.BN(vaultBLpSupply.toString()), vaultB, onChainTime);
482
+ const d = (0, meteora_1.computeD)(pool.curveType, tokenAAmount, tokenBAmount);
483
+ const virtualPriceBigNum = poolLpSupply.isZero() ? new anchor_1.BN(0) : d.mul(VIRTUAL_PRICE_PRECISION).div(poolLpSupply);
484
+ const virtualPrice = new decimal_js_1.default(virtualPriceBigNum.toString()).div(VIRTUAL_PRICE_PRECISION.toString()).toNumber();
485
+ return virtualPrice;
486
+ }
487
+ catch (error) {
488
+ throw error;
489
+ }
490
+ }
491
+ exports.fetchMeteoraUsdcUsdtIndex = fetchMeteoraUsdcUsdtIndex;
492
+ //# sourceMappingURL=exponentFetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exponentFetcher.js","sourceRoot":"","sources":["../src/exponentFetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./exponentFetcher";
package/build/index.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ // TODO - rename to "sol"
18
+ __exportStar(require("./exponentFetcher"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yBAAyB;AACzB,oDAAiC"}
@@ -0,0 +1,54 @@
1
+ /// <reference types="bn.js" />
2
+ import { CurveType, VaultState } from "@exponent-labs/meteora-idl";
3
+ import { BN } from "@coral-xyz/anchor";
4
+ /**
5
+ * Calculates the unlocked (withdrawable) amount of tokens in a Meteora vault.
6
+ *
7
+ * @param onChainTime - Current blockchain timestamp in seconds
8
+ * @param vaultState - The state of the Meteora vault
9
+ * @returns A BN representing the unlocked amount that can be withdrawn from the vault
10
+ *
11
+ */
12
+ export declare function calculateUnlockedAmount(onChainTime: number, vaultState: VaultState): BN;
13
+ /**
14
+ * Calculates the amount of tokens corresponding to a share of the vault.
15
+ *
16
+ * @param share - Share amount of LP tokens
17
+ * @param totalSupply - Total supply of LP tokens
18
+ * @param vaultState - Current state of the vault
19
+ * @param onChainTime - Current blockchain timestamp in seconds
20
+ * @returns The amount of underlying tokens represented by the shares
21
+ *
22
+ */
23
+ export declare function getAmountByShare(share: BN, totalSupply: BN, vaultState: VaultState, onChainTime: number): BN;
24
+ /**
25
+ * Computes the StableSwap invariant (D) based on the Curve Finance formula.
26
+ *
27
+ * This function implements the iterative algorithm to find the value D such that:
28
+ * Ann * S + D * P / (A * N^n) = D^(n+1) / (n^n * prod(x_i))
29
+ *
30
+ * Where:
31
+ * - Ann is amplification coefficient * n^n
32
+ * - S is the sum of all coin amounts
33
+ * - P is the product of all coin amounts
34
+ * - n is the number of coins (2 in this case)
35
+ *
36
+ * @param ampFactor - Amplification coefficient (A)
37
+ * @param amountA - Amount of token A in the pool
38
+ * @param amountB - Amount of token B in the pool
39
+ * @returns The computed invariant D
40
+ *
41
+ */
42
+ export declare const computeStableSwapInvariant: (ampFactor: BN, amountA: BN, amountB: BN) => BN;
43
+ /**
44
+ * Computes the invariant D value for a token pair based on curve type.
45
+ *
46
+ * @param curve - Type of curve (ConstantProduct or Stable with parameters)
47
+ * @param tokenAmountA - Amount of token A
48
+ * @param tokenAmountB - Amount of token B
49
+ * @returns The calculated invariant D value
50
+ *
51
+ * Corresponds to `compute_d` function in Rust implementation.
52
+ *
53
+ */
54
+ export declare function computeD(curve: CurveType, tokenAmountA: BN, tokenAmountB: BN): BN;