@0dotxyz/p0-ts-sdk 2.8.0-alpha.4 → 2.8.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vendor.d.cts CHANGED
@@ -35332,7 +35332,7 @@ declare function decodeScopePriceAtIndex(data: Buffer, entryIndex: number): Scop
35332
35332
 
35333
35333
  declare const MARINADE_PROGRAM_ID: PublicKey;
35334
35334
  declare const MARINADE_STATE_DISCRIMINATOR: Buffer<ArrayBuffer>;
35335
- declare const MARINADE_STATE_MIN_SIZE = 520;
35335
+ declare const MARINADE_STATE_MIN_SIZE: number;
35336
35336
  interface MarinadeState {
35337
35337
  /** mSOL/SOL exchange rate */
35338
35338
  msolPrice: BigNumber$1;
package/dist/vendor.d.ts CHANGED
@@ -35332,7 +35332,7 @@ declare function decodeScopePriceAtIndex(data: Buffer, entryIndex: number): Scop
35332
35332
 
35333
35333
  declare const MARINADE_PROGRAM_ID: PublicKey;
35334
35334
  declare const MARINADE_STATE_DISCRIMINATOR: Buffer<ArrayBuffer>;
35335
- declare const MARINADE_STATE_MIN_SIZE = 520;
35335
+ declare const MARINADE_STATE_MIN_SIZE: number;
35336
35336
  interface MarinadeState {
35337
35337
  /** mSOL/SOL exchange rate */
35338
35338
  msolPrice: BigNumber$1;
package/dist/vendor.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PublicKey, TransactionInstruction, SYSVAR_RENT_PUBKEY, SystemProgram, STAKE_CONFIG_ID, Transaction, LAMPORTS_PER_SOL, StakeProgram, SYSVAR_CLOCK_PUBKEY, AddressLookupTableAccount } from '@solana/web3.js';
2
- import BigNumber3, { BigNumber } from 'bignumber.js';
2
+ import BigNumber4, { BigNumber } from 'bignumber.js';
3
3
  import { deserialize } from 'borsh';
4
4
  import BN5, { BN } from 'bn.js';
5
5
  import { struct, u8, u32 } from '@solana/buffer-layout';
@@ -3893,7 +3893,7 @@ function decodeScopePriceAtIndex(data, entryIndex) {
3893
3893
  if (exp >= 24n) {
3894
3894
  throw new Error(`Scope entry exponent out of bounds: ${exp}`);
3895
3895
  }
3896
- const price = new BigNumber3(value.toString()).shiftedBy(-Number(exp));
3896
+ const price = new BigNumber4(value.toString()).shiftedBy(-Number(exp));
3897
3897
  return {
3898
3898
  price,
3899
3899
  lastUpdatedSlot: Number(lastUpdatedSlot),
@@ -3902,10 +3902,15 @@ function decodeScopePriceAtIndex(data, entryIndex) {
3902
3902
  }
3903
3903
  var MARINADE_PROGRAM_ID = new PublicKey("MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD");
3904
3904
  var MARINADE_STATE_DISCRIMINATOR = Buffer.from([216, 146, 107, 94, 104, 75, 182, 177]);
3905
- var MARINADE_STATE_MIN_SIZE = 520;
3906
- var MSOL_PRICE_OFFSET = 512;
3907
- var MSOL_PRICE_PRECISION = new BigNumber3(2).pow(32);
3908
- var MAX_MSOL_SOL_RATE = 200;
3905
+ var DELAYED_UNSTAKE_COOLING_DOWN_OFFSET = 226;
3906
+ var TOTAL_ACTIVE_BALANCE_OFFSET = 376;
3907
+ var AVAILABLE_RESERVE_BALANCE_OFFSET = 496;
3908
+ var MSOL_SUPPLY_OFFSET = 504;
3909
+ var CIRCULATING_TICKET_BALANCE_OFFSET = 528;
3910
+ var EMERGENCY_COOLING_DOWN_OFFSET = 568;
3911
+ var MARINADE_STATE_MIN_SIZE = EMERGENCY_COOLING_DOWN_OFFSET + 8;
3912
+ var U64_MAX = (1n << 64n) - 1n;
3913
+ var MAX_MSOL_SOL_RATE = 3;
3909
3914
  function decodeMarinadeState(data) {
3910
3915
  if (data.length < MARINADE_STATE_MIN_SIZE) {
3911
3916
  throw new Error(`Invalid Marinade State account size: ${data.length}`);
@@ -3913,8 +3918,21 @@ function decodeMarinadeState(data) {
3913
3918
  if (!data.subarray(0, 8).equals(MARINADE_STATE_DISCRIMINATOR)) {
3914
3919
  throw new Error("Invalid Marinade State discriminator");
3915
3920
  }
3916
- const msolPriceRaw = data.readBigUInt64LE(MSOL_PRICE_OFFSET);
3917
- const msolPrice = new BigNumber3(msolPriceRaw.toString()).div(MSOL_PRICE_PRECISION);
3921
+ const delayedUnstakeCoolingDown = data.readBigUInt64LE(DELAYED_UNSTAKE_COOLING_DOWN_OFFSET);
3922
+ const totalActiveBalance = data.readBigUInt64LE(TOTAL_ACTIVE_BALANCE_OFFSET);
3923
+ const availableReserveBalance = data.readBigUInt64LE(AVAILABLE_RESERVE_BALANCE_OFFSET);
3924
+ const msolSupply = data.readBigUInt64LE(MSOL_SUPPLY_OFFSET);
3925
+ const circulatingTicketBalance = data.readBigUInt64LE(CIRCULATING_TICKET_BALANCE_OFFSET);
3926
+ const emergencyCoolingDown = data.readBigUInt64LE(EMERGENCY_COOLING_DOWN_OFFSET);
3927
+ if (msolSupply === 0n) {
3928
+ throw new Error("Marinade State has zero mSOL supply");
3929
+ }
3930
+ const underControl = totalActiveBalance + delayedUnstakeCoolingDown + emergencyCoolingDown + availableReserveBalance;
3931
+ if (underControl > U64_MAX) {
3932
+ throw new Error("Marinade virtual staked balance overflow");
3933
+ }
3934
+ const totalVirtualStakedLamports = underControl > circulatingTicketBalance ? underControl - circulatingTicketBalance : 0n;
3935
+ const msolPrice = new BigNumber4(totalVirtualStakedLamports.toString()).div(msolSupply.toString());
3918
3936
  if (!msolPrice.gt(0) || msolPrice.gte(MAX_MSOL_SOL_RATE)) {
3919
3937
  throw new Error(`Marinade mSOL/SOL rate out of bounds: ${msolPrice.toString()}`);
3920
3938
  }
@@ -3933,7 +3951,7 @@ var ACCOUNT_TYPE_STAKE_POOL = 1;
3933
3951
  var TOTAL_LAMPORTS_OFFSET = 258;
3934
3952
  var POOL_TOKEN_SUPPLY_OFFSET = 266;
3935
3953
  var LAST_UPDATE_EPOCH_OFFSET = 274;
3936
- var MAX_LST_SOL_RATE = 200;
3954
+ var MAX_LST_SOL_RATE = 3;
3937
3955
  function decodeStakePool(data) {
3938
3956
  if (data.length < LAST_UPDATE_EPOCH_OFFSET + 8) {
3939
3957
  throw new Error(`Invalid StakePool account size: ${data.length}`);
@@ -3947,8 +3965,8 @@ function decodeStakePool(data) {
3947
3965
  if (poolTokenSupply === 0n) {
3948
3966
  throw new Error("StakePool has zero token supply");
3949
3967
  }
3950
- const exchangeRate = new BigNumber3(totalLamports.toString()).div(
3951
- new BigNumber3(poolTokenSupply.toString())
3968
+ const exchangeRate = new BigNumber4(totalLamports.toString()).div(
3969
+ new BigNumber4(poolTokenSupply.toString())
3952
3970
  );
3953
3971
  if (!exchangeRate.gt(0) || exchangeRate.gte(MAX_LST_SOL_RATE)) {
3954
3972
  throw new Error(`StakePool LST/SOL rate out of bounds: ${exchangeRate.toString()}`);