@0dotxyz/p0-ts-sdk 2.8.2 → 2.8.3
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 +290 -200
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +93 -19
- package/dist/index.d.ts +93 -19
- package/dist/index.js +285 -201
- package/dist/index.js.map +1 -1
- package/dist/instructions.cjs.map +1 -1
- package/dist/instructions.d.cts +1 -0
- package/dist/instructions.d.ts +1 -0
- package/dist/instructions.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -54864,8 +54864,6 @@ var SWAP_ADAPTERS = {
|
|
|
54864
54864
|
function getSwapAdapter(provider) {
|
|
54865
54865
|
return SWAP_ADAPTERS[provider];
|
|
54866
54866
|
}
|
|
54867
|
-
|
|
54868
|
-
// src/services/account/services/swap-engine/swap-engine.service.ts
|
|
54869
54867
|
function resolveAdapters(req, predicate) {
|
|
54870
54868
|
const resolved = [];
|
|
54871
54869
|
for (const entry of req.providers) {
|
|
@@ -54909,7 +54907,18 @@ async function runSwapEngine(req) {
|
|
|
54909
54907
|
failures.join("; ") || "No swap route available"
|
|
54910
54908
|
);
|
|
54911
54909
|
}
|
|
54912
|
-
const
|
|
54910
|
+
const wsolAta = getAssociatedTokenAddressSync(NATIVE_MINT, req.taker, true);
|
|
54911
|
+
const isProviderSolWrapIx = (ix) => ix.programId.equals(SystemProgram.programId) && ix.data.length >= 12 && ix.data.readUInt32LE(0) === 2 && ix.keys[0]?.pubkey.equals(req.taker) && ix.keys[1]?.pubkey.equals(wsolAta) || ix.programId.equals(TOKEN_PROGRAM_ID) && (ix.data[0] === 17 /* SyncNative */ || ix.data[0] === 9 /* CloseAccount */) && ix.keys[0]?.pubkey.equals(wsolAta);
|
|
54912
|
+
const candidates = routes.map(
|
|
54913
|
+
(route) => annotateFit(
|
|
54914
|
+
{
|
|
54915
|
+
...route,
|
|
54916
|
+
swapInstructions: route.swapInstructions.filter((ix) => !isProviderSolWrapIx(ix)),
|
|
54917
|
+
setupInstructions: route.setupInstructions.filter((ix) => !isProviderSolWrapIx(ix))
|
|
54918
|
+
},
|
|
54919
|
+
req
|
|
54920
|
+
)
|
|
54921
|
+
);
|
|
54913
54922
|
const fitting = candidates.filter((c) => c.fits && c.outAmountNative.gtn(0));
|
|
54914
54923
|
if (fitting.length === 0) {
|
|
54915
54924
|
const closest = candidates.reduce((best, c) => c.fullTxSize < best.fullTxSize ? c : best);
|
|
@@ -55004,6 +55013,7 @@ async function makeEndFlashLoanIx3(program, marginfiAccountPk, group, projectedA
|
|
|
55004
55013
|
program,
|
|
55005
55014
|
{
|
|
55006
55015
|
marginfiAccount: marginfiAccountPk,
|
|
55016
|
+
group,
|
|
55007
55017
|
authority
|
|
55008
55018
|
},
|
|
55009
55019
|
remainingAccounts.map((account) => ({
|
|
@@ -74890,6 +74900,231 @@ async function computeSmartCrank({
|
|
|
74890
74900
|
isCrankable: true
|
|
74891
74901
|
});
|
|
74892
74902
|
}
|
|
74903
|
+
new PublicKey("MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD");
|
|
74904
|
+
var MARINADE_STATE_DISCRIMINATOR = Buffer.from([216, 146, 107, 94, 104, 75, 182, 177]);
|
|
74905
|
+
var DELAYED_UNSTAKE_COOLING_DOWN_OFFSET = 226;
|
|
74906
|
+
var TOTAL_ACTIVE_BALANCE_OFFSET = 376;
|
|
74907
|
+
var AVAILABLE_RESERVE_BALANCE_OFFSET = 496;
|
|
74908
|
+
var MSOL_SUPPLY_OFFSET = 504;
|
|
74909
|
+
var CIRCULATING_TICKET_BALANCE_OFFSET = 528;
|
|
74910
|
+
var EMERGENCY_COOLING_DOWN_OFFSET = 568;
|
|
74911
|
+
var MARINADE_STATE_MIN_SIZE = EMERGENCY_COOLING_DOWN_OFFSET + 8;
|
|
74912
|
+
var U64_MAX = (1n << 64n) - 1n;
|
|
74913
|
+
var MAX_MSOL_SOL_RATE = 3;
|
|
74914
|
+
function decodeMarinadeState(data) {
|
|
74915
|
+
if (data.length < MARINADE_STATE_MIN_SIZE) {
|
|
74916
|
+
throw new Error(`Invalid Marinade State account size: ${data.length}`);
|
|
74917
|
+
}
|
|
74918
|
+
if (!data.subarray(0, 8).equals(MARINADE_STATE_DISCRIMINATOR)) {
|
|
74919
|
+
throw new Error("Invalid Marinade State discriminator");
|
|
74920
|
+
}
|
|
74921
|
+
const delayedUnstakeCoolingDown = data.readBigUInt64LE(DELAYED_UNSTAKE_COOLING_DOWN_OFFSET);
|
|
74922
|
+
const totalActiveBalance = data.readBigUInt64LE(TOTAL_ACTIVE_BALANCE_OFFSET);
|
|
74923
|
+
const availableReserveBalance = data.readBigUInt64LE(AVAILABLE_RESERVE_BALANCE_OFFSET);
|
|
74924
|
+
const msolSupply = data.readBigUInt64LE(MSOL_SUPPLY_OFFSET);
|
|
74925
|
+
const circulatingTicketBalance = data.readBigUInt64LE(CIRCULATING_TICKET_BALANCE_OFFSET);
|
|
74926
|
+
const emergencyCoolingDown = data.readBigUInt64LE(EMERGENCY_COOLING_DOWN_OFFSET);
|
|
74927
|
+
if (msolSupply === 0n) {
|
|
74928
|
+
throw new Error("Marinade State has zero mSOL supply");
|
|
74929
|
+
}
|
|
74930
|
+
const underControl = totalActiveBalance + delayedUnstakeCoolingDown + emergencyCoolingDown + availableReserveBalance;
|
|
74931
|
+
if (underControl > U64_MAX) {
|
|
74932
|
+
throw new Error("Marinade virtual staked balance overflow");
|
|
74933
|
+
}
|
|
74934
|
+
const totalVirtualStakedLamports = underControl > circulatingTicketBalance ? underControl - circulatingTicketBalance : 0n;
|
|
74935
|
+
const msolPrice = new BigNumber3(totalVirtualStakedLamports.toString()).div(msolSupply.toString());
|
|
74936
|
+
if (!msolPrice.gt(0) || msolPrice.gte(MAX_MSOL_SOL_RATE)) {
|
|
74937
|
+
throw new Error(`Marinade mSOL/SOL rate out of bounds: ${msolPrice.toString()}`);
|
|
74938
|
+
}
|
|
74939
|
+
return { msolPrice };
|
|
74940
|
+
}
|
|
74941
|
+
new PublicKey(
|
|
74942
|
+
"SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy"
|
|
74943
|
+
);
|
|
74944
|
+
new PublicKey(
|
|
74945
|
+
"SP12tWFxD9oJsVWNavTTBZvMbA6gkAmxtVgxdqvyvhY"
|
|
74946
|
+
);
|
|
74947
|
+
new PublicKey(
|
|
74948
|
+
"SPMBzsVUuoHA4Jm6KunbsotaahvVikZs1JyTW6iJvbn"
|
|
74949
|
+
);
|
|
74950
|
+
var ACCOUNT_TYPE_STAKE_POOL = 1;
|
|
74951
|
+
var TOTAL_LAMPORTS_OFFSET = 258;
|
|
74952
|
+
var POOL_TOKEN_SUPPLY_OFFSET = 266;
|
|
74953
|
+
var LAST_UPDATE_EPOCH_OFFSET = 274;
|
|
74954
|
+
var MAX_LST_SOL_RATE = 3;
|
|
74955
|
+
function decodeStakePool(data) {
|
|
74956
|
+
if (data.length < LAST_UPDATE_EPOCH_OFFSET + 8) {
|
|
74957
|
+
throw new Error(`Invalid StakePool account size: ${data.length}`);
|
|
74958
|
+
}
|
|
74959
|
+
if (data[0] !== ACCOUNT_TYPE_STAKE_POOL) {
|
|
74960
|
+
throw new Error(`Invalid StakePool account type: ${data[0]}`);
|
|
74961
|
+
}
|
|
74962
|
+
const totalLamports = data.readBigUInt64LE(TOTAL_LAMPORTS_OFFSET);
|
|
74963
|
+
const poolTokenSupply = data.readBigUInt64LE(POOL_TOKEN_SUPPLY_OFFSET);
|
|
74964
|
+
const lastUpdateEpoch = Number(data.readBigUInt64LE(LAST_UPDATE_EPOCH_OFFSET));
|
|
74965
|
+
if (poolTokenSupply === 0n) {
|
|
74966
|
+
throw new Error("StakePool has zero token supply");
|
|
74967
|
+
}
|
|
74968
|
+
const exchangeRate = new BigNumber3(totalLamports.toString()).div(
|
|
74969
|
+
new BigNumber3(poolTokenSupply.toString())
|
|
74970
|
+
);
|
|
74971
|
+
if (!exchangeRate.gt(0) || exchangeRate.gte(MAX_LST_SOL_RATE)) {
|
|
74972
|
+
throw new Error(`StakePool LST/SOL rate out of bounds: ${exchangeRate.toString()}`);
|
|
74973
|
+
}
|
|
74974
|
+
return {
|
|
74975
|
+
totalLamports,
|
|
74976
|
+
poolTokenSupply,
|
|
74977
|
+
lastUpdateEpoch,
|
|
74978
|
+
exchangeRate
|
|
74979
|
+
};
|
|
74980
|
+
}
|
|
74981
|
+
|
|
74982
|
+
// src/services/price/utils/multiplier-data.utils.ts
|
|
74983
|
+
var PT_MAX_MATURITY_HORIZON_SECONDS = 5 * 365 * 24 * 60 * 60;
|
|
74984
|
+
var MAX_SY_EXCHANGE_RATE = new BigNumber3("18446744073709551615").div(1e12);
|
|
74985
|
+
var MAX_STAKE_POOL_EPOCH_LAG = 1;
|
|
74986
|
+
function multiplierAccountKey(bank) {
|
|
74987
|
+
switch (bank.config.oracleSetup) {
|
|
74988
|
+
case "PythMSOL" /* PythMSOL */:
|
|
74989
|
+
case "PythLST" /* PythLST */:
|
|
74990
|
+
case "PTPyth" /* PTPyth */:
|
|
74991
|
+
return bank.config.oracleKeys[1];
|
|
74992
|
+
case "KaminoMSOL" /* KaminoMSOL */:
|
|
74993
|
+
case "JuplendMSOL" /* JuplendMSOL */:
|
|
74994
|
+
case "KaminoLST" /* KaminoLST */:
|
|
74995
|
+
case "JuplendLST" /* JuplendLST */:
|
|
74996
|
+
return bank.config.oracleKeys[2];
|
|
74997
|
+
case "PTFixed" /* PTFixed */:
|
|
74998
|
+
return bank.config.oracleKeys[0];
|
|
74999
|
+
default:
|
|
75000
|
+
return void 0;
|
|
75001
|
+
}
|
|
75002
|
+
}
|
|
75003
|
+
function getOracleMultiplierBankInput(bank) {
|
|
75004
|
+
const accountKey = multiplierAccountKey(bank);
|
|
75005
|
+
if (!accountKey) return void 0;
|
|
75006
|
+
const isPt = bank.config.oracleSetup === "PTPyth" /* PTPyth */ || bank.config.oracleSetup === "PTFixed" /* PTFixed */;
|
|
75007
|
+
return {
|
|
75008
|
+
bankAddress: bank.address.toBase58(),
|
|
75009
|
+
oracleSetup: bank.config.oracleSetup,
|
|
75010
|
+
multiplierAccountKey: accountKey.toBase58(),
|
|
75011
|
+
fixedPrice: isPt ? bank.config.fixedPrice : void 0
|
|
75012
|
+
};
|
|
75013
|
+
}
|
|
75014
|
+
function decodeMultiplierAccount(data) {
|
|
75015
|
+
try {
|
|
75016
|
+
const vault = decodeExponentVault(data);
|
|
75017
|
+
return {
|
|
75018
|
+
kind: "exponentVault",
|
|
75019
|
+
startTs: vault.startTs,
|
|
75020
|
+
duration: vault.duration,
|
|
75021
|
+
syForPt: vault.syForPt.toString(),
|
|
75022
|
+
ptSupply: vault.ptSupply.toString(),
|
|
75023
|
+
lastSeenSyExchangeRate: vault.lastSeenSyExchangeRate.toString(),
|
|
75024
|
+
allTimeHighSyExchangeRate: vault.allTimeHighSyExchangeRate.toString()
|
|
75025
|
+
};
|
|
75026
|
+
} catch {
|
|
75027
|
+
}
|
|
75028
|
+
try {
|
|
75029
|
+
return { kind: "marinade", msolPrice: decodeMarinadeState(data).msolPrice.toString() };
|
|
75030
|
+
} catch {
|
|
75031
|
+
}
|
|
75032
|
+
try {
|
|
75033
|
+
const pool = decodeStakePool(data);
|
|
75034
|
+
return {
|
|
75035
|
+
kind: "stakePool",
|
|
75036
|
+
exchangeRate: pool.exchangeRate.toString(),
|
|
75037
|
+
lastUpdateEpoch: pool.lastUpdateEpoch
|
|
75038
|
+
};
|
|
75039
|
+
} catch {
|
|
75040
|
+
}
|
|
75041
|
+
return void 0;
|
|
75042
|
+
}
|
|
75043
|
+
function computePtMultiplier(vault, startPrice, nowSeconds) {
|
|
75044
|
+
const maturity = vault.startTs + vault.duration;
|
|
75045
|
+
if (vault.duration <= 0 || maturity > nowSeconds + PT_MAX_MATURITY_HORIZON_SECONDS) {
|
|
75046
|
+
throw new Error("Exponent vault has an invalid maturity schedule");
|
|
75047
|
+
}
|
|
75048
|
+
if (!vault.lastSeenSyExchangeRate.gt(0) || vault.lastSeenSyExchangeRate.gt(MAX_SY_EXCHANGE_RATE)) {
|
|
75049
|
+
throw new Error("Exponent vault SY exchange rate out of bounds");
|
|
75050
|
+
}
|
|
75051
|
+
if (vault.ptSupply === 0n) {
|
|
75052
|
+
throw new Error("Exponent vault has zero PT supply");
|
|
75053
|
+
}
|
|
75054
|
+
if (vault.lastSeenSyExchangeRate.lt(vault.allTimeHighSyExchangeRate)) {
|
|
75055
|
+
throw new Error("Exponent vault is in emergency mode");
|
|
75056
|
+
}
|
|
75057
|
+
let expectedRate;
|
|
75058
|
+
if (nowSeconds <= vault.startTs) {
|
|
75059
|
+
expectedRate = startPrice;
|
|
75060
|
+
} else if (nowSeconds >= maturity) {
|
|
75061
|
+
expectedRate = new BigNumber3(1);
|
|
75062
|
+
} else {
|
|
75063
|
+
const progress = new BigNumber3(nowSeconds - vault.startTs).div(vault.duration);
|
|
75064
|
+
expectedRate = startPrice.plus(new BigNumber3(1).minus(startPrice).times(progress));
|
|
75065
|
+
}
|
|
75066
|
+
const syPerPt = new BigNumber3(vault.syForPt.toString()).div(
|
|
75067
|
+
new BigNumber3(vault.ptSupply.toString())
|
|
75068
|
+
);
|
|
75069
|
+
const redemptionCap = syPerPt.times(vault.lastSeenSyExchangeRate);
|
|
75070
|
+
return BigNumber3.min(expectedRate, redemptionCap);
|
|
75071
|
+
}
|
|
75072
|
+
function computeOracleMultiplier(input, state, ctx) {
|
|
75073
|
+
switch (input.oracleSetup) {
|
|
75074
|
+
case "PythMSOL" /* PythMSOL */:
|
|
75075
|
+
case "KaminoMSOL" /* KaminoMSOL */:
|
|
75076
|
+
case "JuplendMSOL" /* JuplendMSOL */:
|
|
75077
|
+
if (state.kind !== "marinade") throw new Error(`Expected Marinade state, got ${state.kind}`);
|
|
75078
|
+
return Number(state.msolPrice);
|
|
75079
|
+
case "PythLST" /* PythLST */:
|
|
75080
|
+
case "KaminoLST" /* KaminoLST */:
|
|
75081
|
+
case "JuplendLST" /* JuplendLST */:
|
|
75082
|
+
if (state.kind !== "stakePool") throw new Error(`Expected stake pool, got ${state.kind}`);
|
|
75083
|
+
if (ctx.currentEpoch - state.lastUpdateEpoch > MAX_STAKE_POOL_EPOCH_LAG) {
|
|
75084
|
+
throw new Error(
|
|
75085
|
+
`Stale stake pool (last updated epoch ${state.lastUpdateEpoch}, current ${ctx.currentEpoch})`
|
|
75086
|
+
);
|
|
75087
|
+
}
|
|
75088
|
+
return Number(state.exchangeRate);
|
|
75089
|
+
case "PTPyth" /* PTPyth */:
|
|
75090
|
+
case "PTFixed" /* PTFixed */:
|
|
75091
|
+
if (state.kind !== "exponentVault") {
|
|
75092
|
+
throw new Error(`Expected Exponent vault, got ${state.kind}`);
|
|
75093
|
+
}
|
|
75094
|
+
if (!input.fixedPrice) throw new Error("Missing fixedPrice for PT bank");
|
|
75095
|
+
return computePtMultiplier(
|
|
75096
|
+
{
|
|
75097
|
+
startTs: state.startTs,
|
|
75098
|
+
duration: state.duration,
|
|
75099
|
+
syForPt: BigInt(state.syForPt),
|
|
75100
|
+
ptSupply: BigInt(state.ptSupply),
|
|
75101
|
+
lastSeenSyExchangeRate: new BigNumber3(state.lastSeenSyExchangeRate),
|
|
75102
|
+
allTimeHighSyExchangeRate: new BigNumber3(state.allTimeHighSyExchangeRate)
|
|
75103
|
+
},
|
|
75104
|
+
input.fixedPrice,
|
|
75105
|
+
ctx.nowSeconds
|
|
75106
|
+
).toNumber();
|
|
75107
|
+
default:
|
|
75108
|
+
throw new Error(`Oracle setup ${input.oracleSetup} is not multiplier-priced`);
|
|
75109
|
+
}
|
|
75110
|
+
}
|
|
75111
|
+
function computeOracleMultipliers(inputs, accountStates, nowSeconds = Math.floor(Date.now() / 1e3)) {
|
|
75112
|
+
const multiplierByBank = {};
|
|
75113
|
+
const ctx = { currentEpoch: accountStates.currentEpoch, nowSeconds };
|
|
75114
|
+
for (const input of inputs) {
|
|
75115
|
+
const state = accountStates.states[input.multiplierAccountKey];
|
|
75116
|
+
if (!state) {
|
|
75117
|
+
console.error(`Missing multiplier account for bank ${input.bankAddress}`);
|
|
75118
|
+
continue;
|
|
75119
|
+
}
|
|
75120
|
+
try {
|
|
75121
|
+
multiplierByBank[input.bankAddress] = computeOracleMultiplier(input, state, ctx);
|
|
75122
|
+
} catch (e) {
|
|
75123
|
+
console.error(`Failed to compute multiplier for bank ${input.bankAddress}`, e);
|
|
75124
|
+
}
|
|
75125
|
+
}
|
|
75126
|
+
return multiplierByBank;
|
|
75127
|
+
}
|
|
74893
75128
|
async function makeSmartCrankSwbFeedIx(params) {
|
|
74894
75129
|
const crankResult = await computeSmartCrank(params);
|
|
74895
75130
|
if (crankResult.uncrankableLiabilities.length > 0) {
|
|
@@ -75216,84 +75451,6 @@ function decodeScopePriceAtIndex(data, entryIndex) {
|
|
|
75216
75451
|
unixTimestamp: Number(unixTimestamp)
|
|
75217
75452
|
};
|
|
75218
75453
|
}
|
|
75219
|
-
new PublicKey("MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD");
|
|
75220
|
-
var MARINADE_STATE_DISCRIMINATOR = Buffer.from([216, 146, 107, 94, 104, 75, 182, 177]);
|
|
75221
|
-
var DELAYED_UNSTAKE_COOLING_DOWN_OFFSET = 226;
|
|
75222
|
-
var TOTAL_ACTIVE_BALANCE_OFFSET = 376;
|
|
75223
|
-
var AVAILABLE_RESERVE_BALANCE_OFFSET = 496;
|
|
75224
|
-
var MSOL_SUPPLY_OFFSET = 504;
|
|
75225
|
-
var CIRCULATING_TICKET_BALANCE_OFFSET = 528;
|
|
75226
|
-
var EMERGENCY_COOLING_DOWN_OFFSET = 568;
|
|
75227
|
-
var MARINADE_STATE_MIN_SIZE = EMERGENCY_COOLING_DOWN_OFFSET + 8;
|
|
75228
|
-
var U64_MAX = (1n << 64n) - 1n;
|
|
75229
|
-
var MAX_MSOL_SOL_RATE = 3;
|
|
75230
|
-
function decodeMarinadeState(data) {
|
|
75231
|
-
if (data.length < MARINADE_STATE_MIN_SIZE) {
|
|
75232
|
-
throw new Error(`Invalid Marinade State account size: ${data.length}`);
|
|
75233
|
-
}
|
|
75234
|
-
if (!data.subarray(0, 8).equals(MARINADE_STATE_DISCRIMINATOR)) {
|
|
75235
|
-
throw new Error("Invalid Marinade State discriminator");
|
|
75236
|
-
}
|
|
75237
|
-
const delayedUnstakeCoolingDown = data.readBigUInt64LE(DELAYED_UNSTAKE_COOLING_DOWN_OFFSET);
|
|
75238
|
-
const totalActiveBalance = data.readBigUInt64LE(TOTAL_ACTIVE_BALANCE_OFFSET);
|
|
75239
|
-
const availableReserveBalance = data.readBigUInt64LE(AVAILABLE_RESERVE_BALANCE_OFFSET);
|
|
75240
|
-
const msolSupply = data.readBigUInt64LE(MSOL_SUPPLY_OFFSET);
|
|
75241
|
-
const circulatingTicketBalance = data.readBigUInt64LE(CIRCULATING_TICKET_BALANCE_OFFSET);
|
|
75242
|
-
const emergencyCoolingDown = data.readBigUInt64LE(EMERGENCY_COOLING_DOWN_OFFSET);
|
|
75243
|
-
if (msolSupply === 0n) {
|
|
75244
|
-
throw new Error("Marinade State has zero mSOL supply");
|
|
75245
|
-
}
|
|
75246
|
-
const underControl = totalActiveBalance + delayedUnstakeCoolingDown + emergencyCoolingDown + availableReserveBalance;
|
|
75247
|
-
if (underControl > U64_MAX) {
|
|
75248
|
-
throw new Error("Marinade virtual staked balance overflow");
|
|
75249
|
-
}
|
|
75250
|
-
const totalVirtualStakedLamports = underControl > circulatingTicketBalance ? underControl - circulatingTicketBalance : 0n;
|
|
75251
|
-
const msolPrice = new BigNumber3(totalVirtualStakedLamports.toString()).div(msolSupply.toString());
|
|
75252
|
-
if (!msolPrice.gt(0) || msolPrice.gte(MAX_MSOL_SOL_RATE)) {
|
|
75253
|
-
throw new Error(`Marinade mSOL/SOL rate out of bounds: ${msolPrice.toString()}`);
|
|
75254
|
-
}
|
|
75255
|
-
return { msolPrice };
|
|
75256
|
-
}
|
|
75257
|
-
new PublicKey(
|
|
75258
|
-
"SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy"
|
|
75259
|
-
);
|
|
75260
|
-
new PublicKey(
|
|
75261
|
-
"SP12tWFxD9oJsVWNavTTBZvMbA6gkAmxtVgxdqvyvhY"
|
|
75262
|
-
);
|
|
75263
|
-
new PublicKey(
|
|
75264
|
-
"SPMBzsVUuoHA4Jm6KunbsotaahvVikZs1JyTW6iJvbn"
|
|
75265
|
-
);
|
|
75266
|
-
var ACCOUNT_TYPE_STAKE_POOL = 1;
|
|
75267
|
-
var TOTAL_LAMPORTS_OFFSET = 258;
|
|
75268
|
-
var POOL_TOKEN_SUPPLY_OFFSET = 266;
|
|
75269
|
-
var LAST_UPDATE_EPOCH_OFFSET = 274;
|
|
75270
|
-
var MAX_LST_SOL_RATE = 3;
|
|
75271
|
-
function decodeStakePool(data) {
|
|
75272
|
-
if (data.length < LAST_UPDATE_EPOCH_OFFSET + 8) {
|
|
75273
|
-
throw new Error(`Invalid StakePool account size: ${data.length}`);
|
|
75274
|
-
}
|
|
75275
|
-
if (data[0] !== ACCOUNT_TYPE_STAKE_POOL) {
|
|
75276
|
-
throw new Error(`Invalid StakePool account type: ${data[0]}`);
|
|
75277
|
-
}
|
|
75278
|
-
const totalLamports = data.readBigUInt64LE(TOTAL_LAMPORTS_OFFSET);
|
|
75279
|
-
const poolTokenSupply = data.readBigUInt64LE(POOL_TOKEN_SUPPLY_OFFSET);
|
|
75280
|
-
const lastUpdateEpoch = Number(data.readBigUInt64LE(LAST_UPDATE_EPOCH_OFFSET));
|
|
75281
|
-
if (poolTokenSupply === 0n) {
|
|
75282
|
-
throw new Error("StakePool has zero token supply");
|
|
75283
|
-
}
|
|
75284
|
-
const exchangeRate = new BigNumber3(totalLamports.toString()).div(
|
|
75285
|
-
new BigNumber3(poolTokenSupply.toString())
|
|
75286
|
-
);
|
|
75287
|
-
if (!exchangeRate.gt(0) || exchangeRate.gte(MAX_LST_SOL_RATE)) {
|
|
75288
|
-
throw new Error(`StakePool LST/SOL rate out of bounds: ${exchangeRate.toString()}`);
|
|
75289
|
-
}
|
|
75290
|
-
return {
|
|
75291
|
-
totalLamports,
|
|
75292
|
-
poolTokenSupply,
|
|
75293
|
-
lastUpdateEpoch,
|
|
75294
|
-
exchangeRate
|
|
75295
|
-
};
|
|
75296
|
-
}
|
|
75297
75454
|
var GAMMA_VAULT_PROGRAM_ID = new PublicKey(
|
|
75298
75455
|
"GaMmanX9i4jGmqDZZD2tbD6B2v9p21btenPneMXnTczV"
|
|
75299
75456
|
);
|
|
@@ -85143,144 +85300,71 @@ var fetchScopeOraclePricesFromChain = async (requestKeys, connection) => {
|
|
|
85143
85300
|
}
|
|
85144
85301
|
return oraclePriceByRequestKey;
|
|
85145
85302
|
};
|
|
85146
|
-
|
|
85147
|
-
|
|
85148
|
-
var MAX_STAKE_POOL_EPOCH_LAG = 1;
|
|
85149
|
-
function multiplierAccountKey(bank) {
|
|
85150
|
-
switch (bank.config.oracleSetup) {
|
|
85151
|
-
case "PythMSOL" /* PythMSOL */:
|
|
85152
|
-
case "PythLST" /* PythLST */:
|
|
85153
|
-
case "PTPyth" /* PTPyth */:
|
|
85154
|
-
return bank.config.oracleKeys[1];
|
|
85155
|
-
case "KaminoMSOL" /* KaminoMSOL */:
|
|
85156
|
-
case "JuplendMSOL" /* JuplendMSOL */:
|
|
85157
|
-
case "KaminoLST" /* KaminoLST */:
|
|
85158
|
-
case "JuplendLST" /* JuplendLST */:
|
|
85159
|
-
return bank.config.oracleKeys[2];
|
|
85160
|
-
case "PTFixed" /* PTFixed */:
|
|
85161
|
-
return bank.config.oracleKeys[0];
|
|
85162
|
-
default:
|
|
85163
|
-
return void 0;
|
|
85164
|
-
}
|
|
85165
|
-
}
|
|
85166
|
-
function computePtMultiplier(vault, startPrice, nowSeconds) {
|
|
85167
|
-
const maturity = vault.startTs + vault.duration;
|
|
85168
|
-
if (vault.duration <= 0 || maturity > nowSeconds + PT_MAX_MATURITY_HORIZON_SECONDS) {
|
|
85169
|
-
throw new Error("Exponent vault has an invalid maturity schedule");
|
|
85170
|
-
}
|
|
85171
|
-
if (!vault.lastSeenSyExchangeRate.gt(0) || vault.lastSeenSyExchangeRate.gt(MAX_SY_EXCHANGE_RATE)) {
|
|
85172
|
-
throw new Error("Exponent vault SY exchange rate out of bounds");
|
|
85173
|
-
}
|
|
85174
|
-
if (vault.ptSupply === 0n) {
|
|
85175
|
-
throw new Error("Exponent vault has zero PT supply");
|
|
85176
|
-
}
|
|
85177
|
-
if (vault.lastSeenSyExchangeRate.lt(vault.allTimeHighSyExchangeRate)) {
|
|
85178
|
-
throw new Error("Exponent vault is in emergency mode");
|
|
85179
|
-
}
|
|
85180
|
-
let expectedRate;
|
|
85181
|
-
if (nowSeconds <= vault.startTs) {
|
|
85182
|
-
expectedRate = startPrice;
|
|
85183
|
-
} else if (nowSeconds >= maturity) {
|
|
85184
|
-
expectedRate = new BigNumber3(1);
|
|
85185
|
-
} else {
|
|
85186
|
-
const progress = new BigNumber3(nowSeconds - vault.startTs).div(vault.duration);
|
|
85187
|
-
expectedRate = startPrice.plus(new BigNumber3(1).minus(startPrice).times(progress));
|
|
85188
|
-
}
|
|
85189
|
-
const syPerPt = new BigNumber3(vault.syForPt.toString()).div(
|
|
85190
|
-
new BigNumber3(vault.ptSupply.toString())
|
|
85191
|
-
);
|
|
85192
|
-
const redemptionCap = syPerPt.times(vault.lastSeenSyExchangeRate);
|
|
85193
|
-
return BigNumber3.min(expectedRate, redemptionCap);
|
|
85194
|
-
}
|
|
85303
|
+
|
|
85304
|
+
// src/services/price/services/oracle-multiplier.service.ts
|
|
85195
85305
|
var fetchOracleMultipliers = async (banks, opts) => {
|
|
85196
|
-
const
|
|
85197
|
-
if (!
|
|
85306
|
+
const inputs = banks.map(getOracleMultiplierBankInput).filter((input) => input !== void 0);
|
|
85307
|
+
if (!inputs.length) {
|
|
85198
85308
|
return {};
|
|
85199
85309
|
}
|
|
85200
85310
|
if (!opts) {
|
|
85201
85311
|
console.warn(
|
|
85202
|
-
`fetchOracleMultipliers: no oracleMultiplierOpts provided; ${
|
|
85312
|
+
`fetchOracleMultipliers: no oracleMultiplierOpts provided; ${inputs.length} multiplier-priced bank(s) will have zero prices`
|
|
85203
85313
|
);
|
|
85204
85314
|
return {};
|
|
85205
85315
|
}
|
|
85206
85316
|
if (opts.mode === "api") {
|
|
85207
|
-
return fetchOracleMultipliersFromAPI(
|
|
85208
|
-
|
|
85209
|
-
|
|
85210
|
-
{ queryKey: opts.multiplierData.queryKey }
|
|
85211
|
-
);
|
|
85317
|
+
return fetchOracleMultipliersFromAPI(inputs, opts.multiplierData.endpoint, {
|
|
85318
|
+
queryKey: opts.multiplierData.queryKey
|
|
85319
|
+
});
|
|
85212
85320
|
}
|
|
85213
|
-
return fetchOracleMultipliersFromChain(
|
|
85321
|
+
return fetchOracleMultipliersFromChain(inputs, opts.connection);
|
|
85214
85322
|
};
|
|
85215
|
-
var fetchOracleMultipliersFromAPI = async (
|
|
85216
|
-
const
|
|
85217
|
-
|
|
85323
|
+
var fetchOracleMultipliersFromAPI = async (inputs, apiEndpoint, opts) => {
|
|
85324
|
+
const accountStates = await fetchMultiplierAccountStatesFromAPI(
|
|
85325
|
+
inputs.map((input) => input.multiplierAccountKey),
|
|
85326
|
+
apiEndpoint,
|
|
85327
|
+
opts
|
|
85328
|
+
);
|
|
85329
|
+
return computeOracleMultipliers(inputs, accountStates);
|
|
85330
|
+
};
|
|
85331
|
+
var fetchOracleMultipliersFromChain = async (inputs, connection) => {
|
|
85332
|
+
const accountStates = await fetchMultiplierAccountStates(
|
|
85333
|
+
inputs.map((input) => input.multiplierAccountKey),
|
|
85334
|
+
connection
|
|
85335
|
+
);
|
|
85336
|
+
return computeOracleMultipliers(inputs, accountStates);
|
|
85337
|
+
};
|
|
85338
|
+
var fetchMultiplierAccountStatesFromAPI = async (accountKeys, apiEndpoint, opts) => {
|
|
85339
|
+
const queryKey = opts?.queryKey ?? "multiplierAccounts";
|
|
85340
|
+
const uniqueKeys = Array.from(new Set(accountKeys));
|
|
85341
|
+
const response = await fetch(`${apiEndpoint}?${queryKey}=${uniqueKeys.join(",")}`);
|
|
85218
85342
|
if (!response.ok) {
|
|
85219
85343
|
throw new Error("Failed to fetch price multiplier data");
|
|
85220
85344
|
}
|
|
85221
85345
|
const { data } = await response.json();
|
|
85222
|
-
return
|
|
85223
|
-
Object.entries(data).map(([bankAddress, multiplier]) => [bankAddress, Number(multiplier)]).filter(([, multiplier]) => Number.isFinite(multiplier))
|
|
85224
|
-
);
|
|
85346
|
+
return data;
|
|
85225
85347
|
};
|
|
85226
|
-
var
|
|
85227
|
-
const
|
|
85228
|
-
|
|
85229
|
-
|
|
85230
|
-
|
|
85231
|
-
|
|
85232
|
-
connection,
|
|
85233
|
-
uniqueAccountKeys
|
|
85234
|
-
);
|
|
85235
|
-
const isLstSetup = (setup) => setup === "PythLST" /* PythLST */ || setup === "KaminoLST" /* KaminoLST */ || setup === "JuplendLST" /* JuplendLST */;
|
|
85236
|
-
const currentEpoch = multipliedBanks.some((bank) => isLstSetup(bank.config.oracleSetup)) ? (await connection.getEpochInfo()).epoch : 0;
|
|
85237
|
-
const accountDataByKey = {};
|
|
85238
|
-
uniqueAccountKeys.forEach((accountKey, index) => {
|
|
85239
|
-
accountDataByKey[accountKey] = accountAis[index]?.data;
|
|
85240
|
-
});
|
|
85241
|
-
const multiplierByBank = {};
|
|
85242
|
-
const nowSeconds = Math.floor(Date.now() / 1e3);
|
|
85243
|
-
for (const bank of multipliedBanks) {
|
|
85244
|
-
const bankAddress = bank.address.toBase58();
|
|
85245
|
-
const data = accountDataByKey[accountKeyByBank.get(bankAddress)];
|
|
85348
|
+
var fetchMultiplierAccountStates = async (accountKeys, connection) => {
|
|
85349
|
+
const uniqueKeys = Array.from(new Set(accountKeys));
|
|
85350
|
+
const accountAis = await chunkedGetRawMultipleAccountInfoOrderedWithNulls(connection, uniqueKeys);
|
|
85351
|
+
const states = {};
|
|
85352
|
+
uniqueKeys.forEach((accountKey, index) => {
|
|
85353
|
+
const data = accountAis[index]?.data;
|
|
85246
85354
|
if (!data) {
|
|
85247
|
-
console.error(`Missing multiplier account
|
|
85248
|
-
|
|
85355
|
+
console.error(`Missing multiplier account ${accountKey}`);
|
|
85356
|
+
return;
|
|
85249
85357
|
}
|
|
85250
|
-
|
|
85251
|
-
|
|
85252
|
-
|
|
85253
|
-
|
|
85254
|
-
case "JuplendMSOL" /* JuplendMSOL */:
|
|
85255
|
-
multiplierByBank[bankAddress] = decodeMarinadeState(data).msolPrice.toNumber();
|
|
85256
|
-
break;
|
|
85257
|
-
case "PythLST" /* PythLST */:
|
|
85258
|
-
case "KaminoLST" /* KaminoLST */:
|
|
85259
|
-
case "JuplendLST" /* JuplendLST */: {
|
|
85260
|
-
const stakePool = decodeStakePool(data);
|
|
85261
|
-
if (currentEpoch - stakePool.lastUpdateEpoch > MAX_STAKE_POOL_EPOCH_LAG) {
|
|
85262
|
-
console.error(
|
|
85263
|
-
`Stale stake pool for bank ${bankAddress} (last updated epoch ${stakePool.lastUpdateEpoch}, current ${currentEpoch})`
|
|
85264
|
-
);
|
|
85265
|
-
continue;
|
|
85266
|
-
}
|
|
85267
|
-
multiplierByBank[bankAddress] = stakePool.exchangeRate.toNumber();
|
|
85268
|
-
break;
|
|
85269
|
-
}
|
|
85270
|
-
case "PTPyth" /* PTPyth */:
|
|
85271
|
-
case "PTFixed" /* PTFixed */:
|
|
85272
|
-
multiplierByBank[bankAddress] = computePtMultiplier(
|
|
85273
|
-
decodeExponentVault(data),
|
|
85274
|
-
bank.config.fixedPrice,
|
|
85275
|
-
nowSeconds
|
|
85276
|
-
).toNumber();
|
|
85277
|
-
break;
|
|
85278
|
-
}
|
|
85279
|
-
} catch (e) {
|
|
85280
|
-
console.error(`Failed to compute multiplier for bank ${bankAddress}`, e);
|
|
85358
|
+
const state = decodeMultiplierAccount(data);
|
|
85359
|
+
if (!state) {
|
|
85360
|
+
console.error(`Unrecognized multiplier account ${accountKey}`);
|
|
85361
|
+
return;
|
|
85281
85362
|
}
|
|
85282
|
-
|
|
85283
|
-
|
|
85363
|
+
states[accountKey] = state;
|
|
85364
|
+
});
|
|
85365
|
+
const hasStakePool = Object.values(states).some((state) => state.kind === "stakePool");
|
|
85366
|
+
const currentEpoch = hasStakePool ? (await connection.getEpochInfo()).epoch : 0;
|
|
85367
|
+
return { states, currentEpoch };
|
|
85284
85368
|
};
|
|
85285
85369
|
var fetchOracleData = async (banks, opts) => {
|
|
85286
85370
|
const { zeroOracleBanks, isolatedAssetBanks, collateralAssetBanks, fixedAssetBanks } = classifyBanksForOracleStrategy(banks);
|
|
@@ -89386,6 +89470,6 @@ var EmodeSettings = class _EmodeSettings {
|
|
|
89386
89470
|
}
|
|
89387
89471
|
};
|
|
89388
89472
|
|
|
89389
|
-
export { ADDRESS_LOOKUP_TABLE_FOR_GROUP, ADDRESS_LOOKUP_TABLE_FOR_GROUP_NATIVE_STAKE, ADDRESS_LOOKUP_TABLE_FOR_SWAP, AccountFlags, AccountType, AssetTag, BUNDLE_TX_SIZE, Balance, Bank, BankConfig, BankConfigFlag, BankVaultType, DEFAULT_BRIDGE_MINTS, DEFAULT_CROSSBAR_URL, DEFAULT_FALLBACK_CROSSBAR_URL, DEFAULT_ORACLE_MAX_AGE, DEFAULT_REPAY_ALL_EXTRA_BUFFER_BPS, DISABLED_FLAG, EMPTY_HEALTH_CACHE, EXECUTION_HEADROOM_SECONDS, EmodeEntryFlags, EmodeFlags, EmodeImpactStatus, EmodeSettings, EmodeTag, FLASHLOAN_ENABLED_FLAG, HOURS_PER_YEAR, HealthCache, HealthCacheFlags, HealthCacheSimulationError, HealthCacheStatus, JUPITER_V6_PROGRAM, JUP_SWAP_LUT_PROGRAM_AUTHORITY_INDEX, LST_MINT, MARGINFI_IDL, MARGINFI_PROGRAM, MARGINFI_PROGRAM_STAGING, MARGINFI_PROGRAM_STAGING_ALT, MARGINFI_SPONSORED_SHARD_ID, MAX_ACCOUNT_LOCKS, MAX_CONFIDENCE_INTERVAL_RATIO, MAX_TX_SIZE, MAX_U64, MPL_METADATA_PROGRAM_ID, MarginRequirementType, MarginfiAccount, MarginfiAccountWrapper, MarginfiGroup, OperationalState, OracleSetup, PDA_BANK_EMISSIONS_AUTH_SEED, PDA_BANK_EMISSIONS_VAULT_SEED, PDA_BANK_FEE_STATE_SEED, PDA_BANK_FEE_VAULT_AUTH_SEED, PDA_BANK_FEE_VAULT_SEED, PDA_BANK_INSURANCE_VAULT_AUTH_SEED, PDA_BANK_INSURANCE_VAULT_SEED, PDA_BANK_LIQUIDITY_VAULT_AUTH_SEED, PDA_BANK_LIQUIDITY_VAULT_SEED, PDA_MARGINFI_ACCOUNT_SEED, PRIORITY_TX_SIZE, PYTH_PRICE_CONF_INTERVALS, PYTH_PUSH_ORACLE_ID, PYTH_SPONSORED_SHARD_ID, PriceBias, Project0Client, RiskTier, SECONDS_PER_YEAR, SINGLE_POOL_PROGRAM_ID, STAKED_ORACLE_DISABLED_FLAG, STAKED_ORACLE_USES_ONRAMP_FLAG, STAKE_CONFIG_ID, STAKE_PROGRAM_ID, SWAP_ADAPTERS, SWB_PRICE_CONF_INTERVALS, SYSTEM_PROGRAM_ID, SYSVAR_CLOCK_ID, SYSVAR_RENT_ID, SYSVAR_STAKE_HISTORY_ID, SwapProvider, TRANSFER_ACCOUNT_AUTHORITY_FLAG, TransactionArenaKeyMap, TransactionBuildingError, TransactionBuildingErrorCode, TransactionConfigMap, TransactionType, U64_MAX2 as U64_MAX, USDC_DECIMALS, USDC_MINT, USDT_MINT, VENUE_AVAILABLE_LIQUIDITY_BUFFER, WSOL_MINT, ZERO_ORACLE_KEY, accountConflictsWithBridgeBank, accountFlagToBN, addOracleToBanksIx, addTransactionMetadata, adjustPriceComponent, aprToApy, apyToApr, balanceToDto, bankConfigRawToDto, bankConfigToBankConfigRaw, bankMetadataMapToDto, bankMetadataToDto, bankRateLimiterRawToDto, bankRawToDto, bigNumberToWrappedI80F48, bpsToPercentile, buildCollateralLegIxs, calculateApyFromInterest, calculateInterestFromApy, capConfidenceInterval, categorizePythBanks, checkBatchOracleCrankability, checkJupiterFeeAccount, checkMultipleOraclesCrankability, checkTitanFeeAccount, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, classifyAndValidate, compileFlashloanPrecheck, composeBridgedSwap, composeRemainingAccounts, computeAccountValue, computeAccrualProjectionSeconds, computeActiveEmodePairs, computeAssetHealthComponent, computeAssetUsdValue, computeBalanceUsdValue, computeBankAvailableLiquidity, computeBankBorrowApy, computeBankBorrowCapRemaining, computeBankDepositCapRemaining, computeBankMetrics, computeBankPoolSize, computeBankProjectedAvailableLiquidity, computeBankRateLimitRemaining, computeBankSupplyApy, computeBankTotalBorrows, computeBankTotalBorrowsUsd, computeBankTotalDeposits, computeBankTotalDepositsUsd, computeBaseInterestRate, computeBorrowEstimateForRepay, computeClaimedEmissions, computeClosePositionTokenAmount, computeEmodeImpacts, computeFlashLoanNonSwapBudget, computeFlashloanSwapConstraints, computeFreeCollateralFromBalances, computeFreeCollateralFromCache, computeGroupRateLimitRemainingUsd, computeHealthAccountMetas, computeHealthCacheStatus, computeHealthCheckAccounts, computeHealthComponentsFromBalances, computeHealthComponentsFromCache, computeInterestRates, computeLiabilityHealthComponent, computeLiabilityUsdValue, computeLiquidationPriceForBank, computeLoopingParams, computeLowestEmodeWeights, computeMaxBorrowForBank, computeMaxDepositForBank, computeMaxLeverage, computeMaxWithdrawForBank, computeNetApy, computeProjectedActiveBalancesNoCpi, computeProjectedActiveBanksNoCpi, computePtMultiplier, computeQuantity, computeQuantityUi, computeRateLimitWindowRemainingCapacity, computeRateLimiterRemainingCapacity, computeRemainingCapacity, computeSmartCrank, computeStakedBankMultipliers, computeTotalOutstandingEmissions, computeTvl, computeUsdValue, computeUtilizationRate, computeV0TxSize, computeVenueAvailableLiquidity, configureScopeOracleIx, convertVoteAccCoeffsToBankCoeffs, createActiveEmodePairFromPairs, createEmptyBalance, decodeAccountRaw, decodeBankRaw, decodeInstruction, decompileV0Transaction, deriveBankEmissionsAuth, deriveBankEmissionsVault, deriveBankFeeVault, deriveBankFeeVaultAuthority, deriveBankInsuranceVault, deriveBankInsuranceVaultAuthority, deriveBankLiquidityVault, deriveBankLiquidityVaultAuthority, deriveFeeState, deriveMarginfiAccount, deserializeInstruction, deserializeLut, deserializeSwapEngineRequest, deserializeSwapEngineResult, dtoToBalance, dtoToBank, dtoToBankConfig, dtoToBankConfigRaw, dtoToBankMetadata, dtoToBankMetadataMap, dtoToBankRateLimiter, dtoToBankRateLimiterRaw, dtoToBankRaw, dtoToEmodeSettings, dtoToEmodeSettingsRaw, dtoToGroup, dtoToHealthCache, dtoToInterestRateConfig, dtoToMarginfiAccount, dtoToOraclePrice, dtoToValidatorStakeGroup, emodeSettingsRawToDto, extractPythOracleKeys, fetchBank, fetchBankIntegrationMetadata, fetchGammaLpVault, fetchGammaWithdrawReceipt, fetchMarginfiAccountActiveBalancesForBank, fetchMarginfiAccountAddresses, fetchMarginfiAccountAddressesHoldingBank, fetchMarginfiAccountData, fetchMultipleBanks, fetchNativeStakeAccounts, fetchOracleData, fetchOracleMultipliers, fetchOracleMultipliersFromAPI, fetchOracleMultipliersFromChain, fetchProgramForMints, fetchPythOracleData, fetchPythOraclePricesFromAPI, fetchPythOraclePricesFromChain, fetchScopeOracleData, fetchScopeOraclePricesFromAPI, fetchScopeOraclePricesFromChain, fetchStakeAccount, fetchStakePoolActiveStates, fetchStakePoolMev, fetchSwbOracleAccountsFromAPI, fetchSwbOracleAccountsFromChain, fetchSwbOracleData, fetchSwbOraclePricesFromAPI, fetchSwbOraclePricesFromCrossbar, findRandomAvailableAccountIndex, freezeBankConfigIx, generateDummyAccount, getAccountKeys, getActiveAccountFlags, getActiveBalances, getActiveEmodeEntryFlags, getActiveEmodeFlags, getActiveHealthCacheFlags, getAssetQuantity, getAssetShares, getAssetWeight, getBalance, getBalanceUsdValueWithPriceBias, getBankVaultAuthority, getBankVaultSeeds, getBirdeyeFallbackPricesByFeedId, getBirdeyePricesForMints, getConfig, getDriftCTokenMultiplier, getDriftMetadata, getDriftStatesDto, getEffectiveDepositLimit, getEmodePairs, getExactOutEstimate, getFallbackPricesByFeedId, getFallbackPricesForMints, getHealthCacheStatusDescription, getHealthSimulationTransactions, getJupLendFTokenMultiplier, getJupLendMetadata, getJupLendStatesDto, getJupiterReferralFeeAccount, getJupiterSwapIxsForFlashloan, getKaminoCTokenMultiplier, getKaminoMetadata, getKaminoStatesDto, getLiabilityQuantity, getLiabilityShares, getLiabilityWeight, getOracleSourceFromBank, getOracleSourceFromOracleSetup, getOracleSourceNameFromKey, getPrice, getPriceWithConfidence, getStakedBankMetadataMap, getSwapAdapter, getSwapIxsForFlashloan, getTitanExactOutEstimate, getTitanSwapIxsForFlashloan, getTotalAccountKeys, getTotalAssetQuantity, getTotalLiabilityQuantity, getTxSize, getValidatorVoteAccountByBank, getWritableAccountKeys, groupToDto, hasAccountFlag, hasEmodeEntryFlag, hasEmodeFlag, hasHealthCacheFlag, healthCacheToDto, isBorrowLimitActive, isBridgeConflictError, isDecomposableSwapError, isDepositIx, isDepositLimitActive, isFlashloan, isGroupRateLimiterEnabled, isStandardBorrowable, isStandardDepositable, isV0Tx, isWeightedPrice, isWholePosition, makeAccountTransferToNewAccountTx, makeAddPermissionlessStakedBankIx, makeBeginFlashLoanIx3 as makeBeginFlashLoanIx, makeBorrowIx3 as makeBorrowIx, makeBorrowTx, makeBridgedLoopTx, makeBridgedSwapCollateralTx, makeBridgedSwapDebtTx, makeBulkRepayTx, makeBulkWithdrawTx, makeBundleTipIx, makeCloseMarginfiAccountIx, makeCloseMarginfiAccountTx, makeCrankSwbFeedIx, makeCreateAccountIxWithProjection, makeCreateAccountTxWithProjection, makeCreateMarginfiAccountIx, makeCreateMarginfiAccountTx, makeDepositIx3 as makeDepositIx, makeDepositTx, makeDriftDepositIx3 as makeDriftDepositIx, makeDriftDepositTx, makeDriftWithdrawIx3 as makeDriftWithdrawIx, makeDriftWithdrawTx, makeEndFlashLoanIx3 as makeEndFlashLoanIx, makeFlashLoanTx, makeJuplendDepositIx2 as makeJuplendDepositIx, makeJuplendDepositTx, makeJuplendWithdrawIx2 as makeJuplendWithdrawIx, makeJuplendWithdrawTx, makeKaminoDepositIx3 as makeKaminoDepositIx, makeKaminoDepositTx, makeKaminoWithdrawIx3 as makeKaminoWithdrawIx, makeKaminoWithdrawTx, makeLoopTx, makeMergeStakeAccountsTx, makeMintStakedLstIx, makeMintStakedLstTx, makePoolAddBankIx3 as makePoolAddBankIx, makePoolConfigureBankIx3 as makePoolConfigureBankIx, makePriorityFeeIx, makePriorityFeeMicroIx, makePulseHealthIx3 as makePulseHealthIx, makeRedeemStakedLstIx, makeRedeemStakedLstTx, makeRefreshIntegrationBanksIxs, makeRefreshKaminoBanksIxs, makeRepayIx3 as makeRepayIx, makeRepayTx, makeRepayWithCollatTx, makeRollPtTx, makeSetupIx, makeSmartCrankSwbFeedIx, makeSmartCrankSwbFeedIxForAccounts, makeSwapCollateralTx, makeSwapDebtTx, makeTransferPositionsTx, makeTxPriorityIx, makeUnwrapSolIx, makeUpdateDriftMarketIxs, makeUpdateJupLendRateIxs, makeUpdateSwbFeedIx, makeVaultCompleteWithdrawalIx, makeVaultCompleteWithdrawalTx, makeVaultDepositIx, makeVaultDepositTx, makeVaultDepositWithSwapTx, makeVaultWithdrawIx, makeVaultWithdrawTx, makeVersionedTransaction, makeWithdrawIx3 as makeWithdrawIx, makeWithdrawTx, makeWrapSolIxs, mapBrokenFeedsToOraclePrices, mapJupiterQuoteToSwapQuoteResult, mapPythBanksToOraclePrices, mapSwbBanksToOraclePrices, marginfiAccountToDto, mergeBridgeQuotes, mergeBridgeQuotesDebt, mergeBridgeQuotesLoop, nativeToUi, oraclePriceToDto, parseBalanceRaw, parseBankConfigRaw, parseBankRateLimiterRaw, parseBankRaw, parseEmodeSettingsRaw, parseEmodeTag, parseHealthCacheRaw, parseMarginfiAccountRaw, parseOperationalState, parseOracleSetup, parseOraclePriceData as parsePriceInfo, parseRiskTier, parseRpcPythPriceData, parseSwbOraclePriceData, partitionBanksByCrankability, patchDepositAmount, requireBank, requireTokenProgram, resolveAmount, resolveBridgeCandidateBanks, resolvePinnedSwapRoute, resolveTokenProgramForMint, resolveVaultTokenProgram, runSwapEngine, selectLutsForAccountAction, selectLutsForBanks, selectSwapBridges, serializeBankConfigOpt, serializeInstruction, serializeInterestRateConfig, serializeLut, serializeOperationalState, serializeOracleSetup, serializeOracleSetupToIndex, serializeRiskTier, serializeSwapEngineRequest, serializeSwapEngineResult, setOraclePriceIx, sharedBridgeLegContext, shortenAddress, simulateAccountHealthCache, simulateAccountHealthCacheWithFallback, simulateBundle, splitInstructionsToFitTransactions, swapEngineProvidersFromOpts, swapEngineQuoteFieldsFromOpts, toBankConfigDto, toBankDto, toBankRateLimiterDto, toBigNumber, toEmodeSettingsDto, toInterestRateConfigDto, toJupiterConfig, toNumber, tryBridgeCandidates, uiToNative, uiToNativeBigNumber, validatorStakeGroupToDto, wrappedI80F48toBigNumber };
|
|
89473
|
+
export { ADDRESS_LOOKUP_TABLE_FOR_GROUP, ADDRESS_LOOKUP_TABLE_FOR_GROUP_NATIVE_STAKE, ADDRESS_LOOKUP_TABLE_FOR_SWAP, AccountFlags, AccountType, AssetTag, BUNDLE_TX_SIZE, Balance, Bank, BankConfig, BankConfigFlag, BankVaultType, DEFAULT_BRIDGE_MINTS, DEFAULT_CROSSBAR_URL, DEFAULT_FALLBACK_CROSSBAR_URL, DEFAULT_ORACLE_MAX_AGE, DEFAULT_REPAY_ALL_EXTRA_BUFFER_BPS, DISABLED_FLAG, EMPTY_HEALTH_CACHE, EXECUTION_HEADROOM_SECONDS, EmodeEntryFlags, EmodeFlags, EmodeImpactStatus, EmodeSettings, EmodeTag, FLASHLOAN_ENABLED_FLAG, HOURS_PER_YEAR, HealthCache, HealthCacheFlags, HealthCacheSimulationError, HealthCacheStatus, JUPITER_V6_PROGRAM, JUP_SWAP_LUT_PROGRAM_AUTHORITY_INDEX, LST_MINT, MARGINFI_IDL, MARGINFI_PROGRAM, MARGINFI_PROGRAM_STAGING, MARGINFI_PROGRAM_STAGING_ALT, MARGINFI_SPONSORED_SHARD_ID, MAX_ACCOUNT_LOCKS, MAX_CONFIDENCE_INTERVAL_RATIO, MAX_TX_SIZE, MAX_U64, MPL_METADATA_PROGRAM_ID, MarginRequirementType, MarginfiAccount, MarginfiAccountWrapper, MarginfiGroup, OperationalState, OracleSetup, PDA_BANK_EMISSIONS_AUTH_SEED, PDA_BANK_EMISSIONS_VAULT_SEED, PDA_BANK_FEE_STATE_SEED, PDA_BANK_FEE_VAULT_AUTH_SEED, PDA_BANK_FEE_VAULT_SEED, PDA_BANK_INSURANCE_VAULT_AUTH_SEED, PDA_BANK_INSURANCE_VAULT_SEED, PDA_BANK_LIQUIDITY_VAULT_AUTH_SEED, PDA_BANK_LIQUIDITY_VAULT_SEED, PDA_MARGINFI_ACCOUNT_SEED, PRIORITY_TX_SIZE, PYTH_PRICE_CONF_INTERVALS, PYTH_PUSH_ORACLE_ID, PYTH_SPONSORED_SHARD_ID, PriceBias, Project0Client, RiskTier, SECONDS_PER_YEAR, SINGLE_POOL_PROGRAM_ID, STAKED_ORACLE_DISABLED_FLAG, STAKED_ORACLE_USES_ONRAMP_FLAG, STAKE_CONFIG_ID, STAKE_PROGRAM_ID, SWAP_ADAPTERS, SWB_PRICE_CONF_INTERVALS, SYSTEM_PROGRAM_ID, SYSVAR_CLOCK_ID, SYSVAR_RENT_ID, SYSVAR_STAKE_HISTORY_ID, SwapProvider, TRANSFER_ACCOUNT_AUTHORITY_FLAG, TransactionArenaKeyMap, TransactionBuildingError, TransactionBuildingErrorCode, TransactionConfigMap, TransactionType, U64_MAX2 as U64_MAX, USDC_DECIMALS, USDC_MINT, USDT_MINT, VENUE_AVAILABLE_LIQUIDITY_BUFFER, WSOL_MINT, ZERO_ORACLE_KEY, accountConflictsWithBridgeBank, accountFlagToBN, addOracleToBanksIx, addTransactionMetadata, adjustPriceComponent, aprToApy, apyToApr, balanceToDto, bankConfigRawToDto, bankConfigToBankConfigRaw, bankMetadataMapToDto, bankMetadataToDto, bankRateLimiterRawToDto, bankRawToDto, bigNumberToWrappedI80F48, bpsToPercentile, buildCollateralLegIxs, calculateApyFromInterest, calculateInterestFromApy, capConfidenceInterval, categorizePythBanks, checkBatchOracleCrankability, checkJupiterFeeAccount, checkMultipleOraclesCrankability, checkTitanFeeAccount, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, classifyAndValidate, compileFlashloanPrecheck, composeBridgedSwap, composeRemainingAccounts, computeAccountValue, computeAccrualProjectionSeconds, computeActiveEmodePairs, computeAssetHealthComponent, computeAssetUsdValue, computeBalanceUsdValue, computeBankAvailableLiquidity, computeBankBorrowApy, computeBankBorrowCapRemaining, computeBankDepositCapRemaining, computeBankMetrics, computeBankPoolSize, computeBankProjectedAvailableLiquidity, computeBankRateLimitRemaining, computeBankSupplyApy, computeBankTotalBorrows, computeBankTotalBorrowsUsd, computeBankTotalDeposits, computeBankTotalDepositsUsd, computeBaseInterestRate, computeBorrowEstimateForRepay, computeClaimedEmissions, computeClosePositionTokenAmount, computeEmodeImpacts, computeFlashLoanNonSwapBudget, computeFlashloanSwapConstraints, computeFreeCollateralFromBalances, computeFreeCollateralFromCache, computeGroupRateLimitRemainingUsd, computeHealthAccountMetas, computeHealthCacheStatus, computeHealthCheckAccounts, computeHealthComponentsFromBalances, computeHealthComponentsFromCache, computeInterestRates, computeLiabilityHealthComponent, computeLiabilityUsdValue, computeLiquidationPriceForBank, computeLoopingParams, computeLowestEmodeWeights, computeMaxBorrowForBank, computeMaxDepositForBank, computeMaxLeverage, computeMaxWithdrawForBank, computeNetApy, computeOracleMultiplier, computeOracleMultipliers, computeProjectedActiveBalancesNoCpi, computeProjectedActiveBanksNoCpi, computePtMultiplier, computeQuantity, computeQuantityUi, computeRateLimitWindowRemainingCapacity, computeRateLimiterRemainingCapacity, computeRemainingCapacity, computeSmartCrank, computeStakedBankMultipliers, computeTotalOutstandingEmissions, computeTvl, computeUsdValue, computeUtilizationRate, computeV0TxSize, computeVenueAvailableLiquidity, configureScopeOracleIx, convertVoteAccCoeffsToBankCoeffs, createActiveEmodePairFromPairs, createEmptyBalance, decodeAccountRaw, decodeBankRaw, decodeInstruction, decodeMultiplierAccount, decompileV0Transaction, deriveBankEmissionsAuth, deriveBankEmissionsVault, deriveBankFeeVault, deriveBankFeeVaultAuthority, deriveBankInsuranceVault, deriveBankInsuranceVaultAuthority, deriveBankLiquidityVault, deriveBankLiquidityVaultAuthority, deriveFeeState, deriveMarginfiAccount, deserializeInstruction, deserializeLut, deserializeSwapEngineRequest, deserializeSwapEngineResult, dtoToBalance, dtoToBank, dtoToBankConfig, dtoToBankConfigRaw, dtoToBankMetadata, dtoToBankMetadataMap, dtoToBankRateLimiter, dtoToBankRateLimiterRaw, dtoToBankRaw, dtoToEmodeSettings, dtoToEmodeSettingsRaw, dtoToGroup, dtoToHealthCache, dtoToInterestRateConfig, dtoToMarginfiAccount, dtoToOraclePrice, dtoToValidatorStakeGroup, emodeSettingsRawToDto, extractPythOracleKeys, fetchBank, fetchBankIntegrationMetadata, fetchGammaLpVault, fetchGammaWithdrawReceipt, fetchMarginfiAccountActiveBalancesForBank, fetchMarginfiAccountAddresses, fetchMarginfiAccountAddressesHoldingBank, fetchMarginfiAccountData, fetchMultipleBanks, fetchMultiplierAccountStates, fetchMultiplierAccountStatesFromAPI, fetchNativeStakeAccounts, fetchOracleData, fetchOracleMultipliers, fetchOracleMultipliersFromAPI, fetchOracleMultipliersFromChain, fetchProgramForMints, fetchPythOracleData, fetchPythOraclePricesFromAPI, fetchPythOraclePricesFromChain, fetchScopeOracleData, fetchScopeOraclePricesFromAPI, fetchScopeOraclePricesFromChain, fetchStakeAccount, fetchStakePoolActiveStates, fetchStakePoolMev, fetchSwbOracleAccountsFromAPI, fetchSwbOracleAccountsFromChain, fetchSwbOracleData, fetchSwbOraclePricesFromAPI, fetchSwbOraclePricesFromCrossbar, findRandomAvailableAccountIndex, freezeBankConfigIx, generateDummyAccount, getAccountKeys, getActiveAccountFlags, getActiveBalances, getActiveEmodeEntryFlags, getActiveEmodeFlags, getActiveHealthCacheFlags, getAssetQuantity, getAssetShares, getAssetWeight, getBalance, getBalanceUsdValueWithPriceBias, getBankVaultAuthority, getBankVaultSeeds, getBirdeyeFallbackPricesByFeedId, getBirdeyePricesForMints, getConfig, getDriftCTokenMultiplier, getDriftMetadata, getDriftStatesDto, getEffectiveDepositLimit, getEmodePairs, getExactOutEstimate, getFallbackPricesByFeedId, getFallbackPricesForMints, getHealthCacheStatusDescription, getHealthSimulationTransactions, getJupLendFTokenMultiplier, getJupLendMetadata, getJupLendStatesDto, getJupiterReferralFeeAccount, getJupiterSwapIxsForFlashloan, getKaminoCTokenMultiplier, getKaminoMetadata, getKaminoStatesDto, getLiabilityQuantity, getLiabilityShares, getLiabilityWeight, getOracleMultiplierBankInput, getOracleSourceFromBank, getOracleSourceFromOracleSetup, getOracleSourceNameFromKey, getPrice, getPriceWithConfidence, getStakedBankMetadataMap, getSwapAdapter, getSwapIxsForFlashloan, getTitanExactOutEstimate, getTitanSwapIxsForFlashloan, getTotalAccountKeys, getTotalAssetQuantity, getTotalLiabilityQuantity, getTxSize, getValidatorVoteAccountByBank, getWritableAccountKeys, groupToDto, hasAccountFlag, hasEmodeEntryFlag, hasEmodeFlag, hasHealthCacheFlag, healthCacheToDto, isBorrowLimitActive, isBridgeConflictError, isDecomposableSwapError, isDepositIx, isDepositLimitActive, isFlashloan, isGroupRateLimiterEnabled, isStandardBorrowable, isStandardDepositable, isV0Tx, isWeightedPrice, isWholePosition, makeAccountTransferToNewAccountTx, makeAddPermissionlessStakedBankIx, makeBeginFlashLoanIx3 as makeBeginFlashLoanIx, makeBorrowIx3 as makeBorrowIx, makeBorrowTx, makeBridgedLoopTx, makeBridgedSwapCollateralTx, makeBridgedSwapDebtTx, makeBulkRepayTx, makeBulkWithdrawTx, makeBundleTipIx, makeCloseMarginfiAccountIx, makeCloseMarginfiAccountTx, makeCrankSwbFeedIx, makeCreateAccountIxWithProjection, makeCreateAccountTxWithProjection, makeCreateMarginfiAccountIx, makeCreateMarginfiAccountTx, makeDepositIx3 as makeDepositIx, makeDepositTx, makeDriftDepositIx3 as makeDriftDepositIx, makeDriftDepositTx, makeDriftWithdrawIx3 as makeDriftWithdrawIx, makeDriftWithdrawTx, makeEndFlashLoanIx3 as makeEndFlashLoanIx, makeFlashLoanTx, makeJuplendDepositIx2 as makeJuplendDepositIx, makeJuplendDepositTx, makeJuplendWithdrawIx2 as makeJuplendWithdrawIx, makeJuplendWithdrawTx, makeKaminoDepositIx3 as makeKaminoDepositIx, makeKaminoDepositTx, makeKaminoWithdrawIx3 as makeKaminoWithdrawIx, makeKaminoWithdrawTx, makeLoopTx, makeMergeStakeAccountsTx, makeMintStakedLstIx, makeMintStakedLstTx, makePoolAddBankIx3 as makePoolAddBankIx, makePoolConfigureBankIx3 as makePoolConfigureBankIx, makePriorityFeeIx, makePriorityFeeMicroIx, makePulseHealthIx3 as makePulseHealthIx, makeRedeemStakedLstIx, makeRedeemStakedLstTx, makeRefreshIntegrationBanksIxs, makeRefreshKaminoBanksIxs, makeRepayIx3 as makeRepayIx, makeRepayTx, makeRepayWithCollatTx, makeRollPtTx, makeSetupIx, makeSmartCrankSwbFeedIx, makeSmartCrankSwbFeedIxForAccounts, makeSwapCollateralTx, makeSwapDebtTx, makeTransferPositionsTx, makeTxPriorityIx, makeUnwrapSolIx, makeUpdateDriftMarketIxs, makeUpdateJupLendRateIxs, makeUpdateSwbFeedIx, makeVaultCompleteWithdrawalIx, makeVaultCompleteWithdrawalTx, makeVaultDepositIx, makeVaultDepositTx, makeVaultDepositWithSwapTx, makeVaultWithdrawIx, makeVaultWithdrawTx, makeVersionedTransaction, makeWithdrawIx3 as makeWithdrawIx, makeWithdrawTx, makeWrapSolIxs, mapBrokenFeedsToOraclePrices, mapJupiterQuoteToSwapQuoteResult, mapPythBanksToOraclePrices, mapSwbBanksToOraclePrices, marginfiAccountToDto, mergeBridgeQuotes, mergeBridgeQuotesDebt, mergeBridgeQuotesLoop, nativeToUi, oraclePriceToDto, parseBalanceRaw, parseBankConfigRaw, parseBankRateLimiterRaw, parseBankRaw, parseEmodeSettingsRaw, parseEmodeTag, parseHealthCacheRaw, parseMarginfiAccountRaw, parseOperationalState, parseOracleSetup, parseOraclePriceData as parsePriceInfo, parseRiskTier, parseRpcPythPriceData, parseSwbOraclePriceData, partitionBanksByCrankability, patchDepositAmount, requireBank, requireTokenProgram, resolveAmount, resolveBridgeCandidateBanks, resolvePinnedSwapRoute, resolveTokenProgramForMint, resolveVaultTokenProgram, runSwapEngine, selectLutsForAccountAction, selectLutsForBanks, selectSwapBridges, serializeBankConfigOpt, serializeInstruction, serializeInterestRateConfig, serializeLut, serializeOperationalState, serializeOracleSetup, serializeOracleSetupToIndex, serializeRiskTier, serializeSwapEngineRequest, serializeSwapEngineResult, setOraclePriceIx, sharedBridgeLegContext, shortenAddress, simulateAccountHealthCache, simulateAccountHealthCacheWithFallback, simulateBundle, splitInstructionsToFitTransactions, swapEngineProvidersFromOpts, swapEngineQuoteFieldsFromOpts, toBankConfigDto, toBankDto, toBankRateLimiterDto, toBigNumber, toEmodeSettingsDto, toInterestRateConfigDto, toJupiterConfig, toNumber, tryBridgeCandidates, uiToNative, uiToNativeBigNumber, validatorStakeGroupToDto, wrappedI80F48toBigNumber };
|
|
89390
89474
|
//# sourceMappingURL=index.js.map
|
|
89391
89475
|
//# sourceMappingURL=index.js.map
|