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

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.
@@ -1,7 +1,7 @@
1
1
  import * as _solana_web3_js from '@solana/web3.js';
2
2
  import { PublicKey, AccountMeta } from '@solana/web3.js';
3
3
  import BN from 'bn.js';
4
- import { M as MarginfiProgram, B as BankConfigCompactRaw, a as BankConfigOptRaw } from './types-CqP5W-Bu.cjs';
4
+ import { M as MarginfiProgram, B as BankConfigCompactRaw, a as BankConfigOptRaw } from './types-Dqhd5rGy.cjs';
5
5
  import '@coral-xyz/anchor';
6
6
  import 'bignumber.js';
7
7
  import './dto-rate-model.types-DnQmHIO6.cjs';
@@ -1,7 +1,7 @@
1
1
  import * as _solana_web3_js from '@solana/web3.js';
2
2
  import { PublicKey, AccountMeta } from '@solana/web3.js';
3
3
  import BN from 'bn.js';
4
- import { M as MarginfiProgram, B as BankConfigCompactRaw, a as BankConfigOptRaw } from './types-DEoJ8ewV.js';
4
+ import { M as MarginfiProgram, B as BankConfigCompactRaw, a as BankConfigOptRaw } from './types-CX88CgJK.js';
5
5
  import '@coral-xyz/anchor';
6
6
  import 'bignumber.js';
7
7
  import './dto-rate-model.types-DnQmHIO6.js';
@@ -12568,6 +12568,26 @@ type Marginfi = {
12568
12568
  "code": 6604;
12569
12569
  "name": "circuitBreakerPriceJump";
12570
12570
  "msg": "Oracle price deviates too far from the circuit breaker reference; action rejected";
12571
+ },
12572
+ {
12573
+ "code": 6700;
12574
+ "name": "scopeInvalidAccount";
12575
+ "msg": "Scope oracle account is not owned by the Scope program or is malformed";
12576
+ },
12577
+ {
12578
+ "code": 6701;
12579
+ "name": "scopeInvalidEntry";
12580
+ "msg": "Scope entry index is out of range or the entry has never been refreshed";
12581
+ },
12582
+ {
12583
+ "code": 6702;
12584
+ "name": "scopeStalePrice";
12585
+ "msg": "Scope price is stale";
12586
+ },
12587
+ {
12588
+ "code": 6703;
12589
+ "name": "useConfigureBankOracleScope";
12590
+ "msg": "Use lending_pool_configure_bank_oracle_scope; Scope requires an entry index";
12571
12591
  }
12572
12592
  ];
12573
12593
  "types": [
@@ -18641,117 +18661,6 @@ type Marginfi = {
18641
18661
  },
18642
18662
  {
18643
18663
  "name": "ptFixed";
18644
- },
18645
- {
18646
- "name": "reserved27";
18647
- },
18648
- {
18649
- "name": "reserved28";
18650
- },
18651
- {
18652
- "name": "reserved29";
18653
- },
18654
- {
18655
- "name": "reserved30";
18656
- },
18657
- {
18658
- "name": "reserved31";
18659
- },
18660
- {
18661
- "name": "reserved32";
18662
- },
18663
- {
18664
- "name": "reserved33";
18665
- },
18666
- {
18667
- "name": "reserved34";
18668
- },
18669
- {
18670
- "name": "reserved35";
18671
- },
18672
- {
18673
- "name": "reserved36";
18674
- },
18675
- {
18676
- "name": "reserved37";
18677
- },
18678
- {
18679
- "name": "reserved38";
18680
- },
18681
- {
18682
- "name": "reserved39";
18683
- },
18684
- {
18685
- "name": "reserved40";
18686
- },
18687
- {
18688
- "name": "reserved41";
18689
- },
18690
- {
18691
- "name": "reserved42";
18692
- },
18693
- {
18694
- "name": "reserved43";
18695
- },
18696
- {
18697
- "name": "reserved44";
18698
- },
18699
- {
18700
- "name": "reserved45";
18701
- },
18702
- {
18703
- "name": "reserved46";
18704
- },
18705
- {
18706
- "name": "reserved47";
18707
- },
18708
- {
18709
- "name": "reserved48";
18710
- },
18711
- {
18712
- "name": "reserved49";
18713
- },
18714
- {
18715
- "name": "reserved50";
18716
- },
18717
- {
18718
- "name": "reserved51";
18719
- },
18720
- {
18721
- "name": "reserved52";
18722
- },
18723
- {
18724
- "name": "reserved53";
18725
- },
18726
- {
18727
- "name": "reserved54";
18728
- },
18729
- {
18730
- "name": "reserved55";
18731
- },
18732
- {
18733
- "name": "reserved56";
18734
- },
18735
- {
18736
- "name": "reserved57";
18737
- },
18738
- {
18739
- "name": "reserved58";
18740
- },
18741
- {
18742
- "name": "reserved59";
18743
- },
18744
- {
18745
- "name": "reserved60";
18746
- },
18747
- {
18748
- "name": "reserved61";
18749
- },
18750
- {
18751
- "name": "reserved62";
18752
- },
18753
- {
18754
- "name": "reserved63";
18755
18664
  }
18756
18665
  ];
18757
18666
  };
@@ -20250,7 +20159,7 @@ interface BankConfigType {
20250
20159
  oracleMaxAge: number;
20251
20160
  oracleMaxConfidence: number;
20252
20161
  fixedPrice: BigNumber$1;
20253
- scopeEntryIndex: number;
20162
+ scopeEntryIndex?: number;
20254
20163
  }
20255
20164
  interface BankType {
20256
20165
  address: PublicKey;
@@ -20677,80 +20586,6 @@ type OracleSetupRaw = {
20677
20586
  ptPyth: {};
20678
20587
  } | {
20679
20588
  ptFixed: {};
20680
- } | {
20681
- reserved27: {};
20682
- } | {
20683
- reserved28: {};
20684
- } | {
20685
- reserved29: {};
20686
- } | {
20687
- reserved30: {};
20688
- } | {
20689
- reserved31: {};
20690
- } | {
20691
- reserved32: {};
20692
- } | {
20693
- reserved33: {};
20694
- } | {
20695
- reserved34: {};
20696
- } | {
20697
- reserved35: {};
20698
- } | {
20699
- reserved36: {};
20700
- } | {
20701
- reserved37: {};
20702
- } | {
20703
- reserved38: {};
20704
- } | {
20705
- reserved39: {};
20706
- } | {
20707
- reserved40: {};
20708
- } | {
20709
- reserved41: {};
20710
- } | {
20711
- reserved42: {};
20712
- } | {
20713
- reserved43: {};
20714
- } | {
20715
- reserved44: {};
20716
- } | {
20717
- reserved45: {};
20718
- } | {
20719
- reserved46: {};
20720
- } | {
20721
- reserved47: {};
20722
- } | {
20723
- reserved48: {};
20724
- } | {
20725
- reserved49: {};
20726
- } | {
20727
- reserved50: {};
20728
- } | {
20729
- reserved51: {};
20730
- } | {
20731
- reserved52: {};
20732
- } | {
20733
- reserved53: {};
20734
- } | {
20735
- reserved54: {};
20736
- } | {
20737
- reserved55: {};
20738
- } | {
20739
- reserved56: {};
20740
- } | {
20741
- reserved57: {};
20742
- } | {
20743
- reserved58: {};
20744
- } | {
20745
- reserved59: {};
20746
- } | {
20747
- reserved60: {};
20748
- } | {
20749
- reserved61: {};
20750
- } | {
20751
- reserved62: {};
20752
- } | {
20753
- reserved63: {};
20754
20589
  };
20755
20590
  interface OracleConfigOptRaw {
20756
20591
  setup: OracleSetupRaw;
@@ -21337,8 +21172,8 @@ declare class BankConfig implements BankConfigType {
21337
21172
  readonly oracleMaxConfidence: number;
21338
21173
  readonly fixedPrice: BigNumber$1;
21339
21174
  readonly configFlags?: BankConfigFlag | undefined;
21340
- readonly scopeEntryIndex: number;
21341
- constructor(assetWeightInit: BigNumber$1, assetWeightMaint: BigNumber$1, liabilityWeightInit: BigNumber$1, liabilityWeightMaint: BigNumber$1, depositLimit: BigNumber$1, borrowLimit: BigNumber$1, riskTier: RiskTier, totalAssetValueInitLimit: BigNumber$1, assetTag: AssetTag, oracleSetup: OracleSetup, oracleKeys: PublicKey[], oracleMaxAge: number, interestRateConfig: InterestRateConfig, operationalState: OperationalState, oracleMaxConfidence: number, fixedPrice: BigNumber$1, configFlags?: BankConfigFlag | undefined, scopeEntryIndex?: number);
21175
+ readonly scopeEntryIndex?: number | undefined;
21176
+ constructor(assetWeightInit: BigNumber$1, assetWeightMaint: BigNumber$1, liabilityWeightInit: BigNumber$1, liabilityWeightMaint: BigNumber$1, depositLimit: BigNumber$1, borrowLimit: BigNumber$1, riskTier: RiskTier, totalAssetValueInitLimit: BigNumber$1, assetTag: AssetTag, oracleSetup: OracleSetup, oracleKeys: PublicKey[], oracleMaxAge: number, interestRateConfig: InterestRateConfig, operationalState: OperationalState, oracleMaxConfidence: number, fixedPrice: BigNumber$1, configFlags?: BankConfigFlag | undefined, scopeEntryIndex?: number | undefined);
21342
21177
  static fromAccountParsed(bankConfigRaw: BankConfigRaw): BankConfig;
21343
21178
  }
21344
21179
 
@@ -12568,6 +12568,26 @@ type Marginfi = {
12568
12568
  "code": 6604;
12569
12569
  "name": "circuitBreakerPriceJump";
12570
12570
  "msg": "Oracle price deviates too far from the circuit breaker reference; action rejected";
12571
+ },
12572
+ {
12573
+ "code": 6700;
12574
+ "name": "scopeInvalidAccount";
12575
+ "msg": "Scope oracle account is not owned by the Scope program or is malformed";
12576
+ },
12577
+ {
12578
+ "code": 6701;
12579
+ "name": "scopeInvalidEntry";
12580
+ "msg": "Scope entry index is out of range or the entry has never been refreshed";
12581
+ },
12582
+ {
12583
+ "code": 6702;
12584
+ "name": "scopeStalePrice";
12585
+ "msg": "Scope price is stale";
12586
+ },
12587
+ {
12588
+ "code": 6703;
12589
+ "name": "useConfigureBankOracleScope";
12590
+ "msg": "Use lending_pool_configure_bank_oracle_scope; Scope requires an entry index";
12571
12591
  }
12572
12592
  ];
12573
12593
  "types": [
@@ -18641,117 +18661,6 @@ type Marginfi = {
18641
18661
  },
18642
18662
  {
18643
18663
  "name": "ptFixed";
18644
- },
18645
- {
18646
- "name": "reserved27";
18647
- },
18648
- {
18649
- "name": "reserved28";
18650
- },
18651
- {
18652
- "name": "reserved29";
18653
- },
18654
- {
18655
- "name": "reserved30";
18656
- },
18657
- {
18658
- "name": "reserved31";
18659
- },
18660
- {
18661
- "name": "reserved32";
18662
- },
18663
- {
18664
- "name": "reserved33";
18665
- },
18666
- {
18667
- "name": "reserved34";
18668
- },
18669
- {
18670
- "name": "reserved35";
18671
- },
18672
- {
18673
- "name": "reserved36";
18674
- },
18675
- {
18676
- "name": "reserved37";
18677
- },
18678
- {
18679
- "name": "reserved38";
18680
- },
18681
- {
18682
- "name": "reserved39";
18683
- },
18684
- {
18685
- "name": "reserved40";
18686
- },
18687
- {
18688
- "name": "reserved41";
18689
- },
18690
- {
18691
- "name": "reserved42";
18692
- },
18693
- {
18694
- "name": "reserved43";
18695
- },
18696
- {
18697
- "name": "reserved44";
18698
- },
18699
- {
18700
- "name": "reserved45";
18701
- },
18702
- {
18703
- "name": "reserved46";
18704
- },
18705
- {
18706
- "name": "reserved47";
18707
- },
18708
- {
18709
- "name": "reserved48";
18710
- },
18711
- {
18712
- "name": "reserved49";
18713
- },
18714
- {
18715
- "name": "reserved50";
18716
- },
18717
- {
18718
- "name": "reserved51";
18719
- },
18720
- {
18721
- "name": "reserved52";
18722
- },
18723
- {
18724
- "name": "reserved53";
18725
- },
18726
- {
18727
- "name": "reserved54";
18728
- },
18729
- {
18730
- "name": "reserved55";
18731
- },
18732
- {
18733
- "name": "reserved56";
18734
- },
18735
- {
18736
- "name": "reserved57";
18737
- },
18738
- {
18739
- "name": "reserved58";
18740
- },
18741
- {
18742
- "name": "reserved59";
18743
- },
18744
- {
18745
- "name": "reserved60";
18746
- },
18747
- {
18748
- "name": "reserved61";
18749
- },
18750
- {
18751
- "name": "reserved62";
18752
- },
18753
- {
18754
- "name": "reserved63";
18755
18664
  }
18756
18665
  ];
18757
18666
  };
@@ -20250,7 +20159,7 @@ interface BankConfigType {
20250
20159
  oracleMaxAge: number;
20251
20160
  oracleMaxConfidence: number;
20252
20161
  fixedPrice: BigNumber$1;
20253
- scopeEntryIndex: number;
20162
+ scopeEntryIndex?: number;
20254
20163
  }
20255
20164
  interface BankType {
20256
20165
  address: PublicKey;
@@ -20677,80 +20586,6 @@ type OracleSetupRaw = {
20677
20586
  ptPyth: {};
20678
20587
  } | {
20679
20588
  ptFixed: {};
20680
- } | {
20681
- reserved27: {};
20682
- } | {
20683
- reserved28: {};
20684
- } | {
20685
- reserved29: {};
20686
- } | {
20687
- reserved30: {};
20688
- } | {
20689
- reserved31: {};
20690
- } | {
20691
- reserved32: {};
20692
- } | {
20693
- reserved33: {};
20694
- } | {
20695
- reserved34: {};
20696
- } | {
20697
- reserved35: {};
20698
- } | {
20699
- reserved36: {};
20700
- } | {
20701
- reserved37: {};
20702
- } | {
20703
- reserved38: {};
20704
- } | {
20705
- reserved39: {};
20706
- } | {
20707
- reserved40: {};
20708
- } | {
20709
- reserved41: {};
20710
- } | {
20711
- reserved42: {};
20712
- } | {
20713
- reserved43: {};
20714
- } | {
20715
- reserved44: {};
20716
- } | {
20717
- reserved45: {};
20718
- } | {
20719
- reserved46: {};
20720
- } | {
20721
- reserved47: {};
20722
- } | {
20723
- reserved48: {};
20724
- } | {
20725
- reserved49: {};
20726
- } | {
20727
- reserved50: {};
20728
- } | {
20729
- reserved51: {};
20730
- } | {
20731
- reserved52: {};
20732
- } | {
20733
- reserved53: {};
20734
- } | {
20735
- reserved54: {};
20736
- } | {
20737
- reserved55: {};
20738
- } | {
20739
- reserved56: {};
20740
- } | {
20741
- reserved57: {};
20742
- } | {
20743
- reserved58: {};
20744
- } | {
20745
- reserved59: {};
20746
- } | {
20747
- reserved60: {};
20748
- } | {
20749
- reserved61: {};
20750
- } | {
20751
- reserved62: {};
20752
- } | {
20753
- reserved63: {};
20754
20589
  };
20755
20590
  interface OracleConfigOptRaw {
20756
20591
  setup: OracleSetupRaw;
@@ -21337,8 +21172,8 @@ declare class BankConfig implements BankConfigType {
21337
21172
  readonly oracleMaxConfidence: number;
21338
21173
  readonly fixedPrice: BigNumber$1;
21339
21174
  readonly configFlags?: BankConfigFlag | undefined;
21340
- readonly scopeEntryIndex: number;
21341
- constructor(assetWeightInit: BigNumber$1, assetWeightMaint: BigNumber$1, liabilityWeightInit: BigNumber$1, liabilityWeightMaint: BigNumber$1, depositLimit: BigNumber$1, borrowLimit: BigNumber$1, riskTier: RiskTier, totalAssetValueInitLimit: BigNumber$1, assetTag: AssetTag, oracleSetup: OracleSetup, oracleKeys: PublicKey[], oracleMaxAge: number, interestRateConfig: InterestRateConfig, operationalState: OperationalState, oracleMaxConfidence: number, fixedPrice: BigNumber$1, configFlags?: BankConfigFlag | undefined, scopeEntryIndex?: number);
21175
+ readonly scopeEntryIndex?: number | undefined;
21176
+ constructor(assetWeightInit: BigNumber$1, assetWeightMaint: BigNumber$1, liabilityWeightInit: BigNumber$1, liabilityWeightMaint: BigNumber$1, depositLimit: BigNumber$1, borrowLimit: BigNumber$1, riskTier: RiskTier, totalAssetValueInitLimit: BigNumber$1, assetTag: AssetTag, oracleSetup: OracleSetup, oracleKeys: PublicKey[], oracleMaxAge: number, interestRateConfig: InterestRateConfig, operationalState: OperationalState, oracleMaxConfidence: number, fixedPrice: BigNumber$1, configFlags?: BankConfigFlag | undefined, scopeEntryIndex?: number | undefined);
21342
21177
  static fromAccountParsed(bankConfigRaw: BankConfigRaw): BankConfig;
21343
21178
  }
21344
21179
 
package/dist/vendor.cjs CHANGED
@@ -3917,6 +3917,9 @@ function decodeScopePriceAtIndex(data, entryIndex) {
3917
3917
  const exp = data.readBigUInt64LE(offset + 8);
3918
3918
  const lastUpdatedSlot = data.readBigUInt64LE(offset + 16);
3919
3919
  const unixTimestamp = data.readBigUInt64LE(offset + 24);
3920
+ if (exp >= 24n) {
3921
+ throw new Error(`Scope entry exponent out of bounds: ${exp}`);
3922
+ }
3920
3923
  const price = new BigNumber3__default.default(value.toString()).shiftedBy(-Number(exp));
3921
3924
  return {
3922
3925
  price,
@@ -3925,17 +3928,24 @@ function decodeScopePriceAtIndex(data, entryIndex) {
3925
3928
  };
3926
3929
  }
3927
3930
  var MARINADE_PROGRAM_ID = new web3_js.PublicKey("MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD");
3928
- var MARINADE_STATE_SIZE = 520;
3931
+ var MARINADE_STATE_DISCRIMINATOR = Buffer.from([216, 146, 107, 94, 104, 75, 182, 177]);
3932
+ var MARINADE_STATE_MIN_SIZE = 520;
3929
3933
  var MSOL_PRICE_OFFSET = 512;
3930
3934
  var MSOL_PRICE_PRECISION = new BigNumber3__default.default(2).pow(32);
3935
+ var MAX_MSOL_SOL_RATE = 200;
3931
3936
  function decodeMarinadeState(data) {
3932
- if (data.length !== MARINADE_STATE_SIZE) {
3937
+ if (data.length < MARINADE_STATE_MIN_SIZE) {
3933
3938
  throw new Error(`Invalid Marinade State account size: ${data.length}`);
3934
3939
  }
3940
+ if (!data.subarray(0, 8).equals(MARINADE_STATE_DISCRIMINATOR)) {
3941
+ throw new Error("Invalid Marinade State discriminator");
3942
+ }
3935
3943
  const msolPriceRaw = data.readBigUInt64LE(MSOL_PRICE_OFFSET);
3936
- return {
3937
- msolPrice: new BigNumber3__default.default(msolPriceRaw.toString()).div(MSOL_PRICE_PRECISION)
3938
- };
3944
+ const msolPrice = new BigNumber3__default.default(msolPriceRaw.toString()).div(MSOL_PRICE_PRECISION);
3945
+ if (!msolPrice.gt(0) || msolPrice.gte(MAX_MSOL_SOL_RATE)) {
3946
+ throw new Error(`Marinade mSOL/SOL rate out of bounds: ${msolPrice.toString()}`);
3947
+ }
3948
+ return { msolPrice };
3939
3949
  }
3940
3950
  var SPL_STAKE_POOL_PROGRAM_ID = new web3_js.PublicKey(
3941
3951
  "SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy"
@@ -3950,6 +3960,7 @@ var ACCOUNT_TYPE_STAKE_POOL = 1;
3950
3960
  var TOTAL_LAMPORTS_OFFSET = 258;
3951
3961
  var POOL_TOKEN_SUPPLY_OFFSET = 266;
3952
3962
  var LAST_UPDATE_EPOCH_OFFSET = 274;
3963
+ var MAX_LST_SOL_RATE = 200;
3953
3964
  function decodeStakePool(data) {
3954
3965
  if (data.length < LAST_UPDATE_EPOCH_OFFSET + 8) {
3955
3966
  throw new Error(`Invalid StakePool account size: ${data.length}`);
@@ -3963,13 +3974,17 @@ function decodeStakePool(data) {
3963
3974
  if (poolTokenSupply === 0n) {
3964
3975
  throw new Error("StakePool has zero token supply");
3965
3976
  }
3977
+ const exchangeRate = new BigNumber3__default.default(totalLamports.toString()).div(
3978
+ new BigNumber3__default.default(poolTokenSupply.toString())
3979
+ );
3980
+ if (!exchangeRate.gt(0) || exchangeRate.gte(MAX_LST_SOL_RATE)) {
3981
+ throw new Error(`StakePool LST/SOL rate out of bounds: ${exchangeRate.toString()}`);
3982
+ }
3966
3983
  return {
3967
3984
  totalLamports,
3968
3985
  poolTokenSupply,
3969
3986
  lastUpdateEpoch,
3970
- exchangeRate: new BigNumber3__default.default(totalLamports.toString()).div(
3971
- new BigNumber3__default.default(poolTokenSupply.toString())
3972
- )
3987
+ exchangeRate
3973
3988
  };
3974
3989
  }
3975
3990
  var KLEND_PROGRAM_ID = new web3_js.PublicKey(
@@ -52706,7 +52721,8 @@ exports.KLEND_PROGRAM_ID = KLEND_PROGRAM_ID;
52706
52721
  exports.KaminoInterestRateBasis = KaminoInterestRateBasis;
52707
52722
  exports.LENGTH_SIZE = LENGTH_SIZE;
52708
52723
  exports.MARINADE_PROGRAM_ID = MARINADE_PROGRAM_ID;
52709
- exports.MARINADE_STATE_SIZE = MARINADE_STATE_SIZE;
52724
+ exports.MARINADE_STATE_DISCRIMINATOR = MARINADE_STATE_DISCRIMINATOR;
52725
+ exports.MARINADE_STATE_MIN_SIZE = MARINADE_STATE_MIN_SIZE;
52710
52726
  exports.MAX_SLOT_DIFFERENCE = MAX_SLOT_DIFFERENCE;
52711
52727
  exports.MEMO_PROGRAM_ID = MEMO_PROGRAM_ID;
52712
52728
  exports.MINT_SIZE = MINT_SIZE;