@0dotxyz/p0-ts-sdk 2.8.0-alpha.4 → 2.8.0-alpha.5
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 +87 -16
- 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 +86 -16
- 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/index.cjs
CHANGED
|
@@ -21837,7 +21837,11 @@ async function makeLendingPoolConfigureBankOracleIx(mfProgram, accounts, args, r
|
|
|
21837
21837
|
}
|
|
21838
21838
|
async function makeLendingPoolConfigureBankOracleScopeIx(mfProgram, accounts, args) {
|
|
21839
21839
|
const { bank, ...optionalAccounts } = accounts;
|
|
21840
|
-
return mfProgram.methods.lendingPoolConfigureBankOracleScope(args.oracle, args.entryIndex).accounts({ bank }).accountsPartial(optionalAccounts).instruction();
|
|
21840
|
+
return mfProgram.methods.lendingPoolConfigureBankOracleScope(args.oracle, args.entryIndex).accounts({ bank }).accountsPartial(optionalAccounts).remainingAccounts([{ pubkey: args.oracle, isSigner: false, isWritable: false }]).instruction();
|
|
21841
|
+
}
|
|
21842
|
+
async function makeLendingPoolSetOraclePriceIx(mfProgram, accounts, args, remainingAccounts = []) {
|
|
21843
|
+
const { bank, ...optionalAccounts } = accounts;
|
|
21844
|
+
return mfProgram.methods.lendingPoolSetOraclePrice(args.price, args.setup).accounts({ bank }).accountsPartial(optionalAccounts).remainingAccounts(remainingAccounts).instruction();
|
|
21841
21845
|
}
|
|
21842
21846
|
async function makePoolAddPermissionlessStakedBankIx(mfProgram, accounts, remainingAccounts = [], args) {
|
|
21843
21847
|
const {
|
|
@@ -21912,6 +21916,7 @@ var instructions = {
|
|
|
21912
21916
|
makePoolAddPermissionlessStakedBankIx,
|
|
21913
21917
|
makeLendingPoolConfigureBankOracleIx,
|
|
21914
21918
|
makeLendingPoolConfigureBankOracleScopeIx,
|
|
21919
|
+
makeLendingPoolSetOraclePriceIx,
|
|
21915
21920
|
makePulseHealthIx
|
|
21916
21921
|
};
|
|
21917
21922
|
var instructions_default = instructions;
|
|
@@ -52611,7 +52616,8 @@ function makeLendingPoolConfigureBankOracleScopeIx2(programId, accounts, args) {
|
|
|
52611
52616
|
const keys = [
|
|
52612
52617
|
{ pubkey: accounts.group, isSigner: false, isWritable: false },
|
|
52613
52618
|
{ pubkey: accounts.admin, isSigner: true, isWritable: false },
|
|
52614
|
-
{ pubkey: accounts.bank, isSigner: false, isWritable: true }
|
|
52619
|
+
{ pubkey: accounts.bank, isSigner: false, isWritable: true },
|
|
52620
|
+
{ pubkey: args.oracle, isSigner: false, isWritable: false }
|
|
52615
52621
|
];
|
|
52616
52622
|
const data = Buffer.concat([
|
|
52617
52623
|
DISCRIMINATORS.LENDING_POOL_CONFIGURE_BANK_ORACLE_SCOPE,
|
|
@@ -75371,10 +75377,15 @@ function decodeScopePriceAtIndex(data, entryIndex) {
|
|
|
75371
75377
|
}
|
|
75372
75378
|
new web3_js.PublicKey("MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD");
|
|
75373
75379
|
var MARINADE_STATE_DISCRIMINATOR = Buffer.from([216, 146, 107, 94, 104, 75, 182, 177]);
|
|
75374
|
-
var
|
|
75375
|
-
var
|
|
75376
|
-
var
|
|
75377
|
-
var
|
|
75380
|
+
var DELAYED_UNSTAKE_COOLING_DOWN_OFFSET = 226;
|
|
75381
|
+
var TOTAL_ACTIVE_BALANCE_OFFSET = 376;
|
|
75382
|
+
var AVAILABLE_RESERVE_BALANCE_OFFSET = 496;
|
|
75383
|
+
var MSOL_SUPPLY_OFFSET = 504;
|
|
75384
|
+
var CIRCULATING_TICKET_BALANCE_OFFSET = 528;
|
|
75385
|
+
var EMERGENCY_COOLING_DOWN_OFFSET = 568;
|
|
75386
|
+
var MARINADE_STATE_MIN_SIZE = EMERGENCY_COOLING_DOWN_OFFSET + 8;
|
|
75387
|
+
var U64_MAX = (1n << 64n) - 1n;
|
|
75388
|
+
var MAX_MSOL_SOL_RATE = 3;
|
|
75378
75389
|
function decodeMarinadeState(data) {
|
|
75379
75390
|
if (data.length < MARINADE_STATE_MIN_SIZE) {
|
|
75380
75391
|
throw new Error(`Invalid Marinade State account size: ${data.length}`);
|
|
@@ -75382,8 +75393,21 @@ function decodeMarinadeState(data) {
|
|
|
75382
75393
|
if (!data.subarray(0, 8).equals(MARINADE_STATE_DISCRIMINATOR)) {
|
|
75383
75394
|
throw new Error("Invalid Marinade State discriminator");
|
|
75384
75395
|
}
|
|
75385
|
-
const
|
|
75386
|
-
const
|
|
75396
|
+
const delayedUnstakeCoolingDown = data.readBigUInt64LE(DELAYED_UNSTAKE_COOLING_DOWN_OFFSET);
|
|
75397
|
+
const totalActiveBalance = data.readBigUInt64LE(TOTAL_ACTIVE_BALANCE_OFFSET);
|
|
75398
|
+
const availableReserveBalance = data.readBigUInt64LE(AVAILABLE_RESERVE_BALANCE_OFFSET);
|
|
75399
|
+
const msolSupply = data.readBigUInt64LE(MSOL_SUPPLY_OFFSET);
|
|
75400
|
+
const circulatingTicketBalance = data.readBigUInt64LE(CIRCULATING_TICKET_BALANCE_OFFSET);
|
|
75401
|
+
const emergencyCoolingDown = data.readBigUInt64LE(EMERGENCY_COOLING_DOWN_OFFSET);
|
|
75402
|
+
if (msolSupply === 0n) {
|
|
75403
|
+
throw new Error("Marinade State has zero mSOL supply");
|
|
75404
|
+
}
|
|
75405
|
+
const underControl = totalActiveBalance + delayedUnstakeCoolingDown + emergencyCoolingDown + availableReserveBalance;
|
|
75406
|
+
if (underControl > U64_MAX) {
|
|
75407
|
+
throw new Error("Marinade virtual staked balance overflow");
|
|
75408
|
+
}
|
|
75409
|
+
const totalVirtualStakedLamports = underControl > circulatingTicketBalance ? underControl - circulatingTicketBalance : 0n;
|
|
75410
|
+
const msolPrice = new BigNumber3__default.default(totalVirtualStakedLamports.toString()).div(msolSupply.toString());
|
|
75387
75411
|
if (!msolPrice.gt(0) || msolPrice.gte(MAX_MSOL_SOL_RATE)) {
|
|
75388
75412
|
throw new Error(`Marinade mSOL/SOL rate out of bounds: ${msolPrice.toString()}`);
|
|
75389
75413
|
}
|
|
@@ -75402,7 +75426,7 @@ var ACCOUNT_TYPE_STAKE_POOL = 1;
|
|
|
75402
75426
|
var TOTAL_LAMPORTS_OFFSET = 258;
|
|
75403
75427
|
var POOL_TOKEN_SUPPLY_OFFSET = 266;
|
|
75404
75428
|
var LAST_UPDATE_EPOCH_OFFSET = 274;
|
|
75405
|
-
var MAX_LST_SOL_RATE =
|
|
75429
|
+
var MAX_LST_SOL_RATE = 3;
|
|
75406
75430
|
function decodeStakePool(data) {
|
|
75407
75431
|
if (data.length < LAST_UPDATE_EPOCH_OFFSET + 8) {
|
|
75408
75432
|
throw new Error(`Invalid StakePool account size: ${data.length}`);
|
|
@@ -82040,13 +82064,13 @@ var fetchMultipleBanks = async (program, opts) => {
|
|
|
82040
82064
|
}
|
|
82041
82065
|
return bankDatas;
|
|
82042
82066
|
};
|
|
82043
|
-
var
|
|
82067
|
+
var U64_MAX2 = new BigNumber3__default.default("18446744073709551615");
|
|
82044
82068
|
var DRIFT_SCALED_BALANCE_DECIMALS = 9;
|
|
82045
82069
|
function isDepositLimitActive(bank) {
|
|
82046
|
-
return !bank.config.depositLimit.eq(
|
|
82070
|
+
return !bank.config.depositLimit.eq(U64_MAX2);
|
|
82047
82071
|
}
|
|
82048
82072
|
function isBorrowLimitActive(bank) {
|
|
82049
|
-
return !bank.config.borrowLimit.eq(
|
|
82073
|
+
return !bank.config.borrowLimit.eq(U64_MAX2);
|
|
82050
82074
|
}
|
|
82051
82075
|
function getEffectiveDepositLimit(bank) {
|
|
82052
82076
|
const limit = bank.config.depositLimit;
|
|
@@ -82160,12 +82184,12 @@ function computeRemainingCapacity(bank) {
|
|
|
82160
82184
|
const remainingCapacity = isDepositLimitActive(bank) ? BigNumber3__default.default.max(
|
|
82161
82185
|
0,
|
|
82162
82186
|
getEffectiveDepositLimit(bank).minus(totalDeposits).minus(1).integerValue(BigNumber3__default.default.ROUND_FLOOR)
|
|
82163
|
-
) :
|
|
82187
|
+
) : U64_MAX2;
|
|
82164
82188
|
const totalBorrows = getTotalLiabilityQuantity(bank);
|
|
82165
82189
|
const remainingBorrowCapacity = isBorrowLimitActive(bank) ? BigNumber3__default.default.max(
|
|
82166
82190
|
0,
|
|
82167
82191
|
bank.config.borrowLimit.minus(totalBorrows).minus(1).integerValue(BigNumber3__default.default.ROUND_FLOOR)
|
|
82168
|
-
) :
|
|
82192
|
+
) : U64_MAX2;
|
|
82169
82193
|
const projectionSeconds = computeAccrualProjectionSeconds(bank);
|
|
82170
82194
|
const { lendingRate, borrowingRate } = computeInterestRates(bank);
|
|
82171
82195
|
const projectedLendingInterest = lendingRate.times(projectionSeconds).dividedBy(SECONDS_PER_YEAR).times(totalDeposits);
|
|
@@ -82414,10 +82438,21 @@ async function addOracleToBanksIx({
|
|
|
82414
82438
|
bankAddress,
|
|
82415
82439
|
feedId,
|
|
82416
82440
|
oracleKey,
|
|
82441
|
+
oracleAccounts,
|
|
82417
82442
|
setup,
|
|
82418
82443
|
groupAddress,
|
|
82419
82444
|
adminAddress
|
|
82420
82445
|
}) {
|
|
82446
|
+
if (setup === "Scope" /* Scope */ || setup === "PTPyth" /* PTPyth */ || setup === "PTFixed" /* PTFixed */) {
|
|
82447
|
+
throw new Error(
|
|
82448
|
+
`${setup} must be configured with ${setup === "Scope" /* Scope */ ? "configureScopeOracleIx" : "setOraclePriceIx"}`
|
|
82449
|
+
);
|
|
82450
|
+
}
|
|
82451
|
+
const resolvedOracleAccounts = oracleAccounts ?? (oracleKey ? [oracleKey] : []);
|
|
82452
|
+
const expectedAccountCount = setup === "PythMSOL" /* PythMSOL */ || setup === "PythLST" /* PythLST */ ? 2 : setup === "KaminoMSOL" /* KaminoMSOL */ || setup === "JuplendMSOL" /* JuplendMSOL */ || setup === "KaminoLST" /* KaminoLST */ || setup === "JuplendLST" /* JuplendLST */ ? 3 : void 0;
|
|
82453
|
+
if (expectedAccountCount !== void 0 && resolvedOracleAccounts.length !== expectedAccountCount) {
|
|
82454
|
+
throw new Error(`${setup} requires ${expectedAccountCount} ordered oracle accounts`);
|
|
82455
|
+
}
|
|
82421
82456
|
const ix = await instructions_default.makeLendingPoolConfigureBankOracleIx(
|
|
82422
82457
|
program,
|
|
82423
82458
|
{
|
|
@@ -82429,7 +82464,42 @@ async function addOracleToBanksIx({
|
|
|
82429
82464
|
setup: serializeOracleSetupToIndex(setup),
|
|
82430
82465
|
feedId
|
|
82431
82466
|
},
|
|
82432
|
-
|
|
82467
|
+
resolvedOracleAccounts.map((pubkey) => ({
|
|
82468
|
+
isSigner: false,
|
|
82469
|
+
isWritable: false,
|
|
82470
|
+
pubkey
|
|
82471
|
+
}))
|
|
82472
|
+
);
|
|
82473
|
+
return {
|
|
82474
|
+
instructions: [ix],
|
|
82475
|
+
keys: []
|
|
82476
|
+
};
|
|
82477
|
+
}
|
|
82478
|
+
async function setOraclePriceIx({
|
|
82479
|
+
program,
|
|
82480
|
+
bankAddress,
|
|
82481
|
+
price,
|
|
82482
|
+
setup,
|
|
82483
|
+
oracleAccounts = [],
|
|
82484
|
+
groupAddress,
|
|
82485
|
+
adminAddress
|
|
82486
|
+
}) {
|
|
82487
|
+
const expectedAccountCount = setup === "PTPyth" /* PTPyth */ ? 2 : setup === "PTFixed" /* PTFixed */ ? 1 : void 0;
|
|
82488
|
+
if (expectedAccountCount !== void 0 && oracleAccounts.length !== expectedAccountCount) {
|
|
82489
|
+
throw new Error(`${setup} requires ${expectedAccountCount} ordered oracle accounts`);
|
|
82490
|
+
}
|
|
82491
|
+
const ix = await instructions_default.makeLendingPoolSetOraclePriceIx(
|
|
82492
|
+
program,
|
|
82493
|
+
{
|
|
82494
|
+
bank: bankAddress,
|
|
82495
|
+
group: groupAddress,
|
|
82496
|
+
admin: adminAddress
|
|
82497
|
+
},
|
|
82498
|
+
{
|
|
82499
|
+
price: bigNumberToWrappedI80F48(price),
|
|
82500
|
+
setup: serializeOracleSetupToIndex(setup)
|
|
82501
|
+
},
|
|
82502
|
+
oracleAccounts.map((pubkey) => ({ isSigner: false, isWritable: false, pubkey }))
|
|
82433
82503
|
);
|
|
82434
82504
|
return {
|
|
82435
82505
|
instructions: [ix],
|
|
@@ -85778,7 +85848,7 @@ exports.TransactionBuildingError = TransactionBuildingError;
|
|
|
85778
85848
|
exports.TransactionBuildingErrorCode = TransactionBuildingErrorCode;
|
|
85779
85849
|
exports.TransactionConfigMap = TransactionConfigMap;
|
|
85780
85850
|
exports.TransactionType = TransactionType;
|
|
85781
|
-
exports.U64_MAX =
|
|
85851
|
+
exports.U64_MAX = U64_MAX2;
|
|
85782
85852
|
exports.USDC_DECIMALS = USDC_DECIMALS;
|
|
85783
85853
|
exports.USDC_MINT = USDC_MINT;
|
|
85784
85854
|
exports.USDT_MINT = USDT_MINT;
|
|
@@ -86142,6 +86212,7 @@ exports.serializeOracleSetupToIndex = serializeOracleSetupToIndex;
|
|
|
86142
86212
|
exports.serializeRiskTier = serializeRiskTier;
|
|
86143
86213
|
exports.serializeSwapEngineRequest = serializeSwapEngineRequest;
|
|
86144
86214
|
exports.serializeSwapEngineResult = serializeSwapEngineResult;
|
|
86215
|
+
exports.setOraclePriceIx = setOraclePriceIx;
|
|
86145
86216
|
exports.sharedBridgeLegContext = sharedBridgeLegContext;
|
|
86146
86217
|
exports.shortenAddress = shortenAddress;
|
|
86147
86218
|
exports.simulateAccountHealthCache = simulateAccountHealthCache;
|