@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/index.cjs +103 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -2
- package/dist/index.d.ts +17 -2
- package/dist/index.js +102 -22
- package/dist/index.js.map +1 -1
- package/dist/instructions.cjs +6 -1
- package/dist/instructions.cjs.map +1 -1
- package/dist/instructions.d.cts +11 -1
- package/dist/instructions.d.ts +11 -1
- package/dist/instructions.js +6 -1
- package/dist/instructions.js.map +1 -1
- package/dist/vendor.cjs +37 -19
- package/dist/vendor.cjs.map +1 -1
- package/dist/vendor.d.cts +1 -1
- package/dist/vendor.d.ts +1 -1
- package/dist/vendor.js +29 -11
- package/dist/vendor.js.map +1 -1
- package/package.json +1 -1
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
3906
|
-
var
|
|
3907
|
-
var
|
|
3908
|
-
var
|
|
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
|
|
3917
|
-
const
|
|
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 =
|
|
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
|
|
3951
|
-
new
|
|
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()}`);
|