@exponent-labs/exponent-fetcher 0.9.11 → 0.9.13

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.
Files changed (39) hide show
  1. package/build/constants.js +3 -3
  2. package/build/constants.js.map +1 -1
  3. package/build/exponentFetcher.d.ts +18 -16
  4. package/build/exponentFetcher.js +74 -141
  5. package/build/exponentFetcher.js.map +1 -1
  6. package/build/utils/adrena.d.ts +0 -2
  7. package/build/utils/adrena.js +1 -2
  8. package/build/utils/adrena.js.map +1 -1
  9. package/build/utils/fragmetric.d.ts +0 -2
  10. package/build/utils/fragmetric.js +2 -2
  11. package/build/utils/fragmetric.js.map +1 -1
  12. package/build/utils/jito.d.ts +0 -2
  13. package/build/utils/jito.js +1 -2
  14. package/build/utils/jito.js.map +1 -1
  15. package/build/utils/jupiter.d.ts +0 -2
  16. package/build/utils/jupiter.js +2 -3
  17. package/build/utils/jupiter.js.map +1 -1
  18. package/build/utils/kamino.d.ts +0 -2
  19. package/build/utils/kamino.js +1 -2
  20. package/build/utils/kamino.js.map +1 -1
  21. package/build/utils/meteora.d.ts +0 -3
  22. package/build/utils/meteora.js +5 -5
  23. package/build/utils/meteora.js.map +1 -1
  24. package/build/utils/ore.d.ts +6 -21
  25. package/build/utils/ore.js +30 -85
  26. package/build/utils/ore.js.map +1 -1
  27. package/build/utils/perena.d.ts +0 -2
  28. package/build/utils/perena.js +2 -3
  29. package/build/utils/perena.js.map +1 -1
  30. package/build/utils/sanctum.d.ts +0 -2
  31. package/build/utils/sanctum.js +1 -2
  32. package/build/utils/sanctum.js.map +1 -1
  33. package/build/utils/solstice.d.ts +9 -2
  34. package/build/utils/solstice.js +20 -2
  35. package/build/utils/solstice.js.map +1 -1
  36. package/package.json +21 -21
  37. package/src/exponentFetcher.ts +75 -155
  38. package/src/utils/ore.ts +36 -122
  39. package/src/utils/solstice.ts +27 -0
@@ -3,13 +3,13 @@ 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.calculateOreExchangeRate = void 0;
6
+ exports.calculateOreExchangeRate = calculateOreExchangeRate;
7
7
  const anchor_1 = require("@coral-xyz/anchor");
8
8
  const anchor_2 = require("@coral-xyz/anchor");
9
9
  const spl_token_1 = require("@solana/spl-token");
10
10
  const decimal_js_1 = __importDefault(require("decimal.js"));
11
- // Steel's Numeric type is a u128 with 12 decimal places of precision
12
- const NUMERIC_DECIMAL_PLACES = 12;
11
+ // Steel's Numeric type is an I80F48 fixed-point number.
12
+ const NUMERIC_SCALE = new decimal_js_1.default(2).pow(48);
13
13
  /**
14
14
  * Deserialize a steel Numeric type from buffer
15
15
  * Numeric is stored as u128 (16 bytes = 2 x u64, little-endian)
@@ -18,24 +18,22 @@ function deserializeNumeric(data, offset) {
18
18
  const low = new anchor_1.BN(data.slice(offset, offset + 8), "le");
19
19
  const high = new anchor_1.BN(data.slice(offset + 8, offset + 16), "le");
20
20
  const rawValue = low.add(high.shln(64));
21
- const decimalValue = new decimal_js_1.default(rawValue.toString()).div(new decimal_js_1.default(10).pow(NUMERIC_DECIMAL_PLACES));
21
+ const decimalValue = new decimal_js_1.default(rawValue.toString()).div(NUMERIC_SCALE);
22
22
  return { rawValue, decimalValue };
23
23
  }
24
24
  /**
25
25
  * Deserialize Stake account from Buffer
26
26
  * Skips the 8-byte steel discriminator and deserializes the struct fields
27
27
  *
28
- * Account layout (152 bytes total):
28
+ * Account layout (120 bytes total):
29
29
  * - discriminator: 8 bytes
30
30
  * - authority: 32 bytes
31
31
  * - balance: 8 bytes
32
- * - buffer_a through buffer_d: 32 bytes (4 x u64)
33
- * - compound_fee_reserve: 8 bytes
32
+ * - compound_fee, compound_fee_reserve: 16 bytes (2 x u64)
34
33
  * - last_claim_at, last_deposit_at, last_withdraw_at: 24 bytes (3 x i64)
35
- * - rewards_factor: 16 bytes (u128 Numeric)
34
+ * - rewards_factor: 16 bytes (I80F48 Numeric)
36
35
  * - rewards: 8 bytes
37
36
  * - lifetime_rewards: 8 bytes
38
- * - buffer_f: 8 bytes
39
37
  */
40
38
  function deserializeStakeAccount(stakeData) {
41
39
  const DISCRIMINATOR_SIZE = 8;
@@ -46,17 +44,8 @@ function deserializeStakeAccount(stakeData) {
46
44
  // balance: u64 (8 bytes)
47
45
  const balance = new anchor_1.BN(stakeData.slice(offset, offset + 8), "le");
48
46
  offset += 8;
49
- // buffer_a: u64 (8 bytes)
50
- const bufferA = new anchor_1.BN(stakeData.slice(offset, offset + 8), "le");
51
- offset += 8;
52
- // buffer_b: u64 (8 bytes)
53
- const bufferB = new anchor_1.BN(stakeData.slice(offset, offset + 8), "le");
54
- offset += 8;
55
- // buffer_c: u64 (8 bytes)
56
- const bufferC = new anchor_1.BN(stakeData.slice(offset, offset + 8), "le");
57
- offset += 8;
58
- // buffer_d: u64 (8 bytes)
59
- const bufferD = new anchor_1.BN(stakeData.slice(offset, offset + 8), "le");
47
+ // compound_fee: u64 (8 bytes)
48
+ const compoundFee = new anchor_1.BN(stakeData.slice(offset, offset + 8), "le");
60
49
  offset += 8;
61
50
  // compound_fee_reserve: u64 (8 bytes)
62
51
  const compoundFeeReserve = new anchor_1.BN(stakeData.slice(offset, offset + 8), "le");
@@ -70,7 +59,7 @@ function deserializeStakeAccount(stakeData) {
70
59
  // last_withdraw_at: i64 (8 bytes)
71
60
  const lastWithdrawAt = new anchor_1.BN(stakeData.slice(offset, offset + 8), "le");
72
61
  offset += 8;
73
- // rewards_factor: Numeric (16 bytes = u128)
62
+ // rewards_factor: Numeric (16 bytes = I80F48)
74
63
  const rewardsFactor = deserializeNumeric(stakeData, offset);
75
64
  offset += 16;
76
65
  // rewards: u64 (8 bytes)
@@ -78,16 +67,10 @@ function deserializeStakeAccount(stakeData) {
78
67
  offset += 8;
79
68
  // lifetime_rewards: u64 (8 bytes)
80
69
  const lifetimeRewards = new anchor_1.BN(stakeData.slice(offset, offset + 8), "le");
81
- offset += 8;
82
- // buffer_f: u64 (8 bytes)
83
- const bufferF = new anchor_1.BN(stakeData.slice(offset, offset + 8), "le");
84
70
  return {
85
71
  authority,
86
72
  balance,
87
- bufferA,
88
- bufferB,
89
- bufferC,
90
- bufferD,
73
+ compoundFee,
91
74
  compoundFeeReserve,
92
75
  lastClaimAt,
93
76
  lastDepositAt,
@@ -95,64 +78,28 @@ function deserializeStakeAccount(stakeData) {
95
78
  rewardsFactor,
96
79
  rewards,
97
80
  lifetimeRewards,
98
- bufferF,
99
81
  };
100
82
  }
101
83
  /**
102
84
  * Deserialize Treasury account from Buffer
103
85
  * Skips the 8-byte steel discriminator and deserializes the struct fields
104
86
  *
105
- * Account layout (96 bytes total):
87
+ * Account layout (32 bytes total):
106
88
  * - discriminator: 8 bytes
107
- * - balance: 8 bytes
108
- * - buffer_a: 8 bytes
109
- * - motherlode: 8 bytes
110
- * - miner_rewards_factor: 16 bytes (u128 Numeric)
111
- * - stake_rewards_factor: 16 bytes (u128 Numeric)
112
- * - buffer_b: 8 bytes
113
- * - total_refined: 8 bytes
89
+ * - rewards_factor: 16 bytes (I80F48 Numeric)
114
90
  * - total_staked: 8 bytes
115
- * - total_unclaimed: 8 bytes
116
91
  */
117
92
  function deserializeTreasuryAccount(treasuryData) {
118
93
  const DISCRIMINATOR_SIZE = 8;
119
94
  let offset = DISCRIMINATOR_SIZE;
120
- // balance: u64 (8 bytes)
121
- const balance = new anchor_1.BN(treasuryData.slice(offset, offset + 8), "le");
122
- offset += 8;
123
- // buffer_a: u64 (8 bytes)
124
- const bufferA = new anchor_1.BN(treasuryData.slice(offset, offset + 8), "le");
125
- offset += 8;
126
- // motherlode: u64 (8 bytes)
127
- const motherlode = new anchor_1.BN(treasuryData.slice(offset, offset + 8), "le");
128
- offset += 8;
129
- // miner_rewards_factor: Numeric (16 bytes = u128)
130
- const minerRewardsFactor = deserializeNumeric(treasuryData, offset);
95
+ // rewards_factor: Numeric (16 bytes = I80F48)
96
+ const rewardsFactor = deserializeNumeric(treasuryData, offset);
131
97
  offset += 16;
132
- // stake_rewards_factor: Numeric (16 bytes = u128)
133
- const stakeRewardsFactor = deserializeNumeric(treasuryData, offset);
134
- offset += 16;
135
- // buffer_b: u64 (8 bytes)
136
- const bufferB = new anchor_1.BN(treasuryData.slice(offset, offset + 8), "le");
137
- offset += 8;
138
- // total_refined: u64 (8 bytes)
139
- const totalRefined = new anchor_1.BN(treasuryData.slice(offset, offset + 8), "le");
140
- offset += 8;
141
98
  // total_staked: u64 (8 bytes)
142
99
  const totalStaked = new anchor_1.BN(treasuryData.slice(offset, offset + 8), "le");
143
- offset += 8;
144
- // total_unclaimed: u64 (8 bytes)
145
- const totalUnclaimed = new anchor_1.BN(treasuryData.slice(offset, offset + 8), "le");
146
100
  return {
147
- balance,
148
- bufferA,
149
- motherlode,
150
- minerRewardsFactor,
151
- stakeRewardsFactor,
152
- bufferB,
153
- totalRefined,
101
+ rewardsFactor,
154
102
  totalStaked,
155
- totalUnclaimed,
156
103
  };
157
104
  }
158
105
  /**
@@ -161,8 +108,8 @@ function deserializeTreasuryAccount(treasuryData) {
161
108
  *
162
109
  * Exchange rate formula: (stake.balance + total_rewards) / stORE_supply
163
110
  *
164
- * Where total_rewards is calculated using ORE protocol's Stake::calculate_accrued_rewards:
165
- * 1. accumulated_rewards = treasury.stake_rewards_factor - stake.rewards_factor
111
+ * Where total_rewards is calculated using ORE protocol's Stake::update_rewards:
112
+ * 1. accumulated_rewards = treasury.rewards_factor - stake.rewards_factor
166
113
  * 2. personal_rewards = accumulated_rewards * stake.balance
167
114
  * 3. total_rewards = stake.rewards + personal_rewards
168
115
  *
@@ -172,8 +119,7 @@ function deserializeTreasuryAccount(treasuryData) {
172
119
  * the exchange rate. The stake.balance is only updated via ORE program
173
120
  * deposit/withdraw instructions.
174
121
  *
175
- * Note: Numeric values are stored as fixed-point numbers with 1e12 precision.
176
- * When multiplying two Numeric values, the result is divided by 1e12 to maintain scale.
122
+ * Note: Numeric values are stored as I80F48 fixed-point numbers.
177
123
  */
178
124
  function calculateOreExchangeRate(accounts) {
179
125
  const { stakeAccount, treasuryAccount, storeMint } = accounts;
@@ -189,20 +135,17 @@ function calculateOreExchangeRate(accounts) {
189
135
  // Use stake.balance as the canonical staked amount (not token account balance)
190
136
  // This prevents exchange rate manipulation via direct token transfers
191
137
  const stakeBalance = stake.balance.toNumber();
192
- // Calculate accrued rewards using ORE protocol's calculate_accrued_rewards algorithm
193
- // This mirrors the exact logic from Stake::calculate_accrued_rewards() in ore_cpi
194
- const treasuryStakeRewardsFactorDecimal = treasury.stakeRewardsFactor.decimalValue;
138
+ // Calculate accrued rewards using ORE protocol's update_rewards algorithm
139
+ // This mirrors the exact logic from Stake::update_rewards() in ore_cpi
140
+ const treasuryRewardsFactorDecimal = treasury.rewardsFactor.decimalValue;
195
141
  const stakeRewardsFactorDecimal = stake.rewardsFactor.decimalValue;
196
142
  let newlyAccruedRewards = 0;
197
- if (treasuryStakeRewardsFactorDecimal.gt(stakeRewardsFactorDecimal)) {
198
- // accumulated_rewards = treasury.stake_rewards_factor - stake.rewards_factor
199
- const accumulatedRewards = treasuryStakeRewardsFactorDecimal.minus(stakeRewardsFactorDecimal);
143
+ if (treasuryRewardsFactorDecimal.gt(stakeRewardsFactorDecimal)) {
144
+ // accumulated_rewards = treasury.rewards_factor - stake.rewards_factor
145
+ const accumulatedRewards = treasuryRewardsFactorDecimal.minus(stakeRewardsFactorDecimal);
200
146
  // personal_rewards = accumulated_rewards * stake.balance
201
- // In Rust: accumulated_rewards (as Numeric) * Numeric::from_u64(stake.balance)
202
- // The Numeric type uses 1e12 scaling internally. When multiplying two Numerics,
203
- // the result is (a * b) / 1e12 to maintain scale. Then to_u64() divides by 1e12.
204
- // Since decimalValue already gives us the decimal representation (divided by 1e12),
205
- // we just multiply by balance and floor the result.
147
+ // Since decimalValue already gives us the decoded fixed-point value, we just
148
+ // multiply by balance and floor the result.
206
149
  const personalRewards = accumulatedRewards.mul(new decimal_js_1.default(stakeBalance));
207
150
  newlyAccruedRewards = Math.floor(personalRewards.toNumber());
208
151
  }
@@ -211,7 +154,9 @@ function calculateOreExchangeRate(accounts) {
211
154
  // Calculate total balance: stake.balance + total_rewards
212
155
  const totalBalanceWithRewards = stakeBalance + totalRewards;
213
156
  // Calculate exchange rate: (stake.balance + accrued_rewards) / stORE_supply
157
+ if (totalBalanceWithRewards === 0) {
158
+ return 1;
159
+ }
214
160
  return totalBalanceWithRewards / storeSupply;
215
161
  }
216
- exports.calculateOreExchangeRate = calculateOreExchangeRate;
217
162
  //# sourceMappingURL=ore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ore.js","sourceRoot":"","sources":["../../src/utils/ore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ore.js","sourceRoot":"","sources":["../../src/utils/ore.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import { web3 } from "@coral-xyz/anchor";
4
2
  export declare function getPerenaLpMint(perenaStablePool: web3.PublicKey): web3.PublicKey;
5
3
  export declare function getPerenaStablePoolData(accounts: {
@@ -3,7 +3,8 @@ 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.getPerenaStablePoolData = exports.getPerenaLpMint = void 0;
6
+ exports.getPerenaLpMint = getPerenaLpMint;
7
+ exports.getPerenaStablePoolData = getPerenaStablePoolData;
7
8
  const anchor_1 = require("@coral-xyz/anchor");
8
9
  const spl_token_1 = require("@solana/spl-token");
9
10
  const decimal_js_1 = __importDefault(require("decimal.js"));
@@ -12,7 +13,6 @@ function getPerenaLpMint(perenaStablePool) {
12
13
  const [lpMint, _] = anchor_1.web3.PublicKey.findProgramAddressSync([perenaStablePool.toBuffer(), Buffer.from("liquidity")], PERENA_NUMERAIRE_PROGRAM);
13
14
  return lpMint;
14
15
  }
15
- exports.getPerenaLpMint = getPerenaLpMint;
16
16
  function getPerenaStablePoolData(accounts) {
17
17
  const { perenaStablePoolData, lpMintData } = accounts;
18
18
  const lpMintDeserialized = spl_token_1.MintLayout.decode(lpMintData);
@@ -23,5 +23,4 @@ function getPerenaStablePoolData(accounts) {
23
23
  const exchangeRate = new decimal_js_1.default(invT.toString()).div(new decimal_js_1.default(lpMintDeserialized.supply.toString())).toString();
24
24
  return { lpSupply: lpMintDeserialized.supply, invT, exchangeRate };
25
25
  }
26
- exports.getPerenaStablePoolData = getPerenaStablePoolData;
27
26
  //# sourceMappingURL=perena.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"perena.js","sourceRoot":"","sources":["../../src/utils/perena.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAwC;AACxC,iDAA8C;AAC9C,4DAAgC;AAEhC,SAAgB,eAAe,CAAC,gBAAgC;IAC9D,MAAM,wBAAwB,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAA;IAElG,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,wBAAwB,CACzB,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AARD,0CAQC;AAED,SAAgB,uBAAuB,CAAC,QAA8D;IACpG,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAA;IAErD,MAAM,kBAAkB,GAAG,sBAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAExD,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,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;IACzE,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,CAAA;AACpE,CAAC;AAbD,0DAaC"}
1
+ {"version":3,"file":"perena.js","sourceRoot":"","sources":["../../src/utils/perena.ts"],"names":[],"mappings":";;;;;AAIA,0CAQC;AAED,0DAaC;AA3BD,8CAAwC;AACxC,iDAA8C;AAC9C,4DAAgC;AAEhC,SAAgB,eAAe,CAAC,gBAAgC;IAC9D,MAAM,wBAAwB,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAA;IAElG,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,wBAAwB,CACzB,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAgB,uBAAuB,CAAC,QAA8D;IACpG,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAA;IAErD,MAAM,kBAAkB,GAAG,sBAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAExD,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,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;IACzE,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,CAAA;AACpE,CAAC"}
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  export declare function calculateSanctumIndex(accounts: {
4
2
  lpMintAccountData: Buffer;
5
3
  poolStateAccountData: Buffer;
@@ -3,7 +3,7 @@ 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.calculateSanctumIndex = void 0;
6
+ exports.calculateSanctumIndex = calculateSanctumIndex;
7
7
  const sanctum_idl_1 = require("@exponent-labs/sanctum-idl");
8
8
  const spl_token_1 = require("@solana/spl-token");
9
9
  const decimal_js_1 = __importDefault(require("decimal.js"));
@@ -22,5 +22,4 @@ function calculateSanctumIndex(accounts) {
22
22
  const exchangeRate = new decimal_js_1.default(exchangeRateBn.toString()).div(precision.toString()).toNumber();
23
23
  return 1 / exchangeRate; // We return inverse exchange rate
24
24
  }
25
- exports.calculateSanctumIndex = calculateSanctumIndex;
26
25
  //# sourceMappingURL=sanctum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sanctum.js","sourceRoot":"","sources":["../../src/utils/sanctum.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4D;AAC5D,iDAA8C;AAC9C,4DAAgC;AAChC,8CAAsC;AAEtC,SAAgB,qBAAqB,CAAC,QAAqE;IACzG,MAAM,SAAS,GAAG,IAAA,6BAAe,EAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAEhE,MAAM,MAAM,GAAG,sBAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,sBAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAEzF,MAAM,MAAM,GAAG,IAAI,WAAE,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,SAAS,GAAG,IAAI,WAAE,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,eAAe,GAAG,IAAI,WAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxD,MAAM,mBAAmB,GAAG,IAAI,WAAE,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEtE,IAAI,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAC9E,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;IAEhG,OAAO,CAAC,GAAG,YAAY,CAAA,CAAC,kCAAkC;AAC5D,CAAC;AAlBD,sDAkBC"}
1
+ {"version":3,"file":"sanctum.js","sourceRoot":"","sources":["../../src/utils/sanctum.ts"],"names":[],"mappings":";;;;;AAKA,sDAkBC;AAvBD,4DAA4D;AAC5D,iDAA8C;AAC9C,4DAAgC;AAChC,8CAAsC;AAEtC,SAAgB,qBAAqB,CAAC,QAAqE;IACzG,MAAM,SAAS,GAAG,IAAA,6BAAe,EAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAEhE,MAAM,MAAM,GAAG,sBAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,sBAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAEzF,MAAM,MAAM,GAAG,IAAI,WAAE,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,SAAS,GAAG,IAAI,WAAE,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,eAAe,GAAG,IAAI,WAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxD,MAAM,mBAAmB,GAAG,IAAI,WAAE,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEtE,IAAI,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAC9E,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;IAEhG,OAAO,CAAC,GAAG,YAAY,CAAA,CAAC,kCAAkC;AAC5D,CAAC"}
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  export declare function calculateSolsticeRedemptionRate(accounts: {
4
2
  yieldPool: Buffer;
5
3
  vestingSchedule: Buffer;
@@ -10,3 +8,12 @@ export declare function calculateSolsticeRedemptionRate(accounts: {
10
8
  vestingAmount: string;
11
9
  totalVestedAssets: string;
12
10
  };
11
+ /**
12
+ * Calculates the Solstice GLAM vault stSLX exchange rate using the same account
13
+ * layout and ratio as the Generic Standard on-chain interface.
14
+ */
15
+ export declare function calculateSolsticeGlamVaultExchangeRate(accounts: {
16
+ stakingVaultSlxAta: Buffer;
17
+ slxMint: Buffer;
18
+ stslxMint: Buffer;
19
+ }): number;
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateSolsticeRedemptionRate = void 0;
3
+ exports.calculateSolsticeRedemptionRate = calculateSolsticeRedemptionRate;
4
+ exports.calculateSolsticeGlamVaultExchangeRate = calculateSolsticeGlamVaultExchangeRate;
4
5
  const solstice_idl_1 = require("@exponent-labs/solstice-idl");
6
+ const spl_token_1 = require("@solana/spl-token");
5
7
  function calculateSolsticeRedemptionRate(accounts) {
6
8
  // Decode accounts using solstice-idl package function
7
9
  const { yieldPoolAccount, vestingScheduleAccount } = (0, solstice_idl_1.decodeYieldPoolAndVestingScheduleAccounts)({
@@ -41,5 +43,21 @@ function calculateSolsticeRedemptionRate(accounts) {
41
43
  totalVestedAssets: totalVestedAssets.toString(),
42
44
  };
43
45
  }
44
- exports.calculateSolsticeRedemptionRate = calculateSolsticeRedemptionRate;
46
+ /**
47
+ * Calculates the Solstice GLAM vault stSLX exchange rate using the same account
48
+ * layout and ratio as the Generic Standard on-chain interface.
49
+ */
50
+ function calculateSolsticeGlamVaultExchangeRate(accounts) {
51
+ const stakingVaultSlxAccount = spl_token_1.AccountLayout.decode(accounts.stakingVaultSlxAta.subarray(0, spl_token_1.AccountLayout.span));
52
+ const slxMint = spl_token_1.MintLayout.decode(accounts.slxMint.subarray(0, spl_token_1.MintLayout.span));
53
+ const stslxMint = spl_token_1.MintLayout.decode(accounts.stslxMint.subarray(0, spl_token_1.MintLayout.span));
54
+ const stakingVaultSlxBalance = BigInt(stakingVaultSlxAccount.amount.toString());
55
+ const stslxSupply = BigInt(stslxMint.supply.toString());
56
+ if (stakingVaultSlxBalance === 0n || stslxSupply === 0n) {
57
+ return 1;
58
+ }
59
+ const numerator = stakingVaultSlxBalance * 10n ** BigInt(stslxMint.decimals);
60
+ const denominator = stslxSupply * 10n ** BigInt(slxMint.decimals);
61
+ return Number(numerator) / Number(denominator);
62
+ }
45
63
  //# sourceMappingURL=solstice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solstice.js","sourceRoot":"","sources":["../../src/utils/solstice.ts"],"names":[],"mappings":";;;AAAA,8DAAuF;AAEvF,SAAgB,+BAA+B,CAAC,QAAwD;IAOtG,sDAAsD;IACtD,MAAM,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,GAAG,IAAA,wDAAyC,EAAC;QAC7F,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,eAAe,EAAE,QAAQ,CAAC,eAAe;KAC1C,CAAC,CAAA;IAEF,wDAAwD;IACxD,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxE,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE9E,2DAA2D;IAC3D,IAAI,iBAAyB,CAAA;IAC7B,IAAI,aAAa,KAAK,EAAE,EAAE,CAAC;QACzB,iBAAiB,GAAG,eAAe,CAAA,CAAC,yDAAyD;IAC/F,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;QACzE,MAAM,UAAU,GAAG,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;QACrE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA,CAAC,yBAAyB;QAEnF,4BAA4B;QAC5B,IAAI,cAAsB,CAAA;QAC1B,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YAC7B,cAAc,GAAG,EAAE,CAAA,CAAC,6DAA6D;QACnF,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,CAAC,aAAa,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC,CAAA;QAC7F,CAAC;QAED,iBAAiB,GAAG,eAAe,GAAG,cAAc,CAAA;IACtD,CAAC;IAED,kFAAkF;IAClF,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAA;IAErF,OAAO;QACL,cAAc;QACd,WAAW,EAAE,eAAe,CAAC,QAAQ,EAAE;QACvC,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE;QACzC,aAAa,EAAE,aAAa,CAAC,QAAQ,EAAE;QACvC,iBAAiB,EAAE,iBAAiB,CAAC,QAAQ,EAAE;KAChD,CAAA;AACH,CAAC;AAhDD,0EAgDC"}
1
+ {"version":3,"file":"solstice.js","sourceRoot":"","sources":["../../src/utils/solstice.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.9.11",
3
+ "version": "0.9.13",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "license": "AGPL-3.0",
@@ -9,26 +9,26 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "@coral-xyz/anchor": "0.30.0",
12
- "@exponent-labs/adrena-idl": "0.9.11",
13
- "@exponent-labs/chainlink-idl": "0.9.11",
14
- "@exponent-labs/exponent-idl": "0.9.11",
15
- "@exponent-labs/exponent-types": "0.9.11",
16
- "@exponent-labs/fragmetric-idl": "0.9.11",
17
- "@exponent-labs/generic-sy-idl": "0.9.11",
18
- "@exponent-labs/jito-restaking-sy-idl": "0.9.11",
19
- "@exponent-labs/jupiter-lend-idl": "0.9.11",
20
- "@exponent-labs/jupiter-perps-idl": "0.9.11",
21
- "@exponent-labs/kamino-reserve-deserializer": "0.9.11",
22
- "@exponent-labs/kamino-sy-idl": "0.9.11",
23
- "@exponent-labs/kamino-vault-idl": "0.9.11",
24
- "@exponent-labs/marginfi-sy-idl": "0.9.11",
25
- "@exponent-labs/meteora-idl": "0.9.11",
26
- "@exponent-labs/perena-sy-idl": "0.9.11",
27
- "@exponent-labs/precise-number": "0.9.11",
28
- "@exponent-labs/sanctum-idl": "0.9.11",
29
- "@exponent-labs/solstice-idl": "0.9.11",
30
- "@exponent-labs/exponent-clmm-idl": "0.9.11",
31
- "@exponent-labs/exponent-orderbook-idl": "0.9.11",
12
+ "@exponent-labs/adrena-idl": "0.9.13",
13
+ "@exponent-labs/chainlink-idl": "0.9.13",
14
+ "@exponent-labs/exponent-idl": "0.9.13",
15
+ "@exponent-labs/exponent-types": "0.9.13",
16
+ "@exponent-labs/fragmetric-idl": "0.9.13",
17
+ "@exponent-labs/generic-sy-idl": "0.9.13",
18
+ "@exponent-labs/jito-restaking-sy-idl": "0.9.13",
19
+ "@exponent-labs/jupiter-lend-idl": "0.9.13",
20
+ "@exponent-labs/jupiter-perps-idl": "0.9.13",
21
+ "@exponent-labs/kamino-reserve-deserializer": "0.9.13",
22
+ "@exponent-labs/kamino-sy-idl": "0.9.13",
23
+ "@exponent-labs/kamino-vault-idl": "0.9.13",
24
+ "@exponent-labs/marginfi-sy-idl": "0.9.13",
25
+ "@exponent-labs/meteora-idl": "0.9.13",
26
+ "@exponent-labs/perena-sy-idl": "0.9.13",
27
+ "@exponent-labs/precise-number": "0.9.13",
28
+ "@exponent-labs/sanctum-idl": "0.9.13",
29
+ "@exponent-labs/solstice-idl": "0.9.13",
30
+ "@exponent-labs/exponent-clmm-idl": "0.9.13",
31
+ "@exponent-labs/exponent-orderbook-idl": "0.9.13",
32
32
  "@solana/spl-stake-pool": "1.1.8",
33
33
  "@solana/spl-token": "0.4.6",
34
34
  "bn-sqrt": "^1.0.0",