@0dotxyz/p0-ts-sdk 2.7.1-alpha.0 → 2.7.1-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.
- package/dist/index.cjs +107 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +50 -6
- package/dist/index.d.ts +50 -6
- package/dist/index.js +106 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -27746,6 +27746,11 @@ var klendInstructions = {
|
|
|
27746
27746
|
};
|
|
27747
27747
|
var instructions_default2 = klendInstructions;
|
|
27748
27748
|
|
|
27749
|
+
// src/vendor/drift/types/drift-spot-market/drift-spot-market.types.ts
|
|
27750
|
+
function isSpotBalanceTypeVariant(value, variant) {
|
|
27751
|
+
return value === variant;
|
|
27752
|
+
}
|
|
27753
|
+
|
|
27749
27754
|
// src/vendor/drift/idl/drift.json
|
|
27750
27755
|
var drift_default = {
|
|
27751
27756
|
address: "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH",
|
|
@@ -42111,6 +42116,34 @@ function deriveDriftSpotMarketVault(marketIndex, programId = DRIFT_PROGRAM_ID) {
|
|
|
42111
42116
|
programId
|
|
42112
42117
|
);
|
|
42113
42118
|
}
|
|
42119
|
+
var ZERO = new BN9__default.default(0);
|
|
42120
|
+
var ONE = new BN9__default.default(1);
|
|
42121
|
+
var TEN = new BN9__default.default(10);
|
|
42122
|
+
var PERCENTAGE_PRECISION_EXP = new BN9__default.default(6);
|
|
42123
|
+
new BN9__default.default(10).pow(PERCENTAGE_PRECISION_EXP);
|
|
42124
|
+
var SPOT_MARKET_RATE_PRECISION_EXP = new BN9__default.default(6);
|
|
42125
|
+
new BN9__default.default(10).pow(SPOT_MARKET_RATE_PRECISION_EXP);
|
|
42126
|
+
var SPOT_MARKET_UTILIZATION_PRECISION_EXP = new BN9__default.default(6);
|
|
42127
|
+
new BN9__default.default(10).pow(
|
|
42128
|
+
SPOT_MARKET_UTILIZATION_PRECISION_EXP
|
|
42129
|
+
);
|
|
42130
|
+
new BN9__default.default(31536e3);
|
|
42131
|
+
function divCeil(a, b) {
|
|
42132
|
+
const quotient = a.div(b);
|
|
42133
|
+
const remainder = a.mod(b);
|
|
42134
|
+
if (remainder.gt(ZERO)) {
|
|
42135
|
+
return quotient.add(ONE);
|
|
42136
|
+
}
|
|
42137
|
+
return quotient;
|
|
42138
|
+
}
|
|
42139
|
+
function getDriftTokenAmount(balanceAmount, spotMarket, balanceType) {
|
|
42140
|
+
const precisionDecrease = TEN.pow(new BN9__default.default(19 - spotMarket.decimals));
|
|
42141
|
+
if (isSpotBalanceTypeVariant(balanceType, "deposit")) {
|
|
42142
|
+
return balanceAmount.mul(spotMarket.cumulativeDepositInterest).div(precisionDecrease);
|
|
42143
|
+
} else {
|
|
42144
|
+
return divCeil(balanceAmount.mul(spotMarket.cumulativeBorrowInterest), precisionDecrease);
|
|
42145
|
+
}
|
|
42146
|
+
}
|
|
42114
42147
|
|
|
42115
42148
|
// src/vendor/drift/utils/rewards.utils.ts
|
|
42116
42149
|
async function getDriftRewards(spotMarkets, userStates, connection) {
|
|
@@ -77835,17 +77868,28 @@ function computeMaxBorrowForBank(params) {
|
|
|
77835
77868
|
bank,
|
|
77836
77869
|
assetShareValueMultiplier
|
|
77837
77870
|
).div(originationFeeFactor);
|
|
77838
|
-
const rateLimitRemaining = computeOutflowRateLimitRemaining(
|
|
77871
|
+
const rateLimitRemaining = computeOutflowRateLimitRemaining(
|
|
77872
|
+
bank,
|
|
77873
|
+
oraclePrice,
|
|
77874
|
+
groupRateLimiter,
|
|
77875
|
+
assetShareValueMultiplier
|
|
77876
|
+
);
|
|
77839
77877
|
return BigNumber3__default.default.max(
|
|
77840
77878
|
0,
|
|
77841
77879
|
BigNumber3__default.default.min(healthMaxBorrow, borrowCapRemaining, availableLiquidity, rateLimitRemaining)
|
|
77842
77880
|
);
|
|
77843
77881
|
}
|
|
77844
|
-
function computeOutflowRateLimitRemaining(bank, oraclePrice, groupRateLimiter) {
|
|
77882
|
+
function computeOutflowRateLimitRemaining(bank, oraclePrice, groupRateLimiter, assetShareValueMultiplier) {
|
|
77845
77883
|
const nowSeconds = Date.now() / 1e3;
|
|
77846
77884
|
let remaining = new BigNumber3__default.default(Infinity);
|
|
77847
|
-
|
|
77848
|
-
if (bankRemaining !== null)
|
|
77885
|
+
let bankRemaining = computeBankRateLimitRemaining(bank, nowSeconds);
|
|
77886
|
+
if (bankRemaining !== null) {
|
|
77887
|
+
const limiterInBankMintUnits = bank.config.assetTag === 3 /* KAMINO */ || bank.config.assetTag === 2 /* STAKED */;
|
|
77888
|
+
if (limiterInBankMintUnits && assetShareValueMultiplier?.gt(0)) {
|
|
77889
|
+
bankRemaining = bankRemaining.times(assetShareValueMultiplier);
|
|
77890
|
+
}
|
|
77891
|
+
remaining = BigNumber3__default.default.min(remaining, bankRemaining);
|
|
77892
|
+
}
|
|
77849
77893
|
const groupRemainingUsd = computeGroupRateLimitRemainingUsd(groupRateLimiter, nowSeconds);
|
|
77850
77894
|
if (groupRemainingUsd !== null) {
|
|
77851
77895
|
const price = getPrice(oraclePrice, 1 /* None */, false);
|
|
@@ -77860,6 +77904,7 @@ function computeMaxWithdrawForBank(params) {
|
|
|
77860
77904
|
oraclePricesByBank,
|
|
77861
77905
|
assetShareValueMultiplierByBank,
|
|
77862
77906
|
groupRateLimiter,
|
|
77907
|
+
venueStates,
|
|
77863
77908
|
ignoreBankLimits
|
|
77864
77909
|
} = params;
|
|
77865
77910
|
const bank = banksMap.get(bankAddress.toBase58());
|
|
@@ -77873,8 +77918,16 @@ function computeMaxWithdrawForBank(params) {
|
|
|
77873
77918
|
bank,
|
|
77874
77919
|
assetShareValueMultiplier
|
|
77875
77920
|
);
|
|
77876
|
-
const rateLimitRemaining = computeOutflowRateLimitRemaining(
|
|
77877
|
-
|
|
77921
|
+
const rateLimitRemaining = computeOutflowRateLimitRemaining(
|
|
77922
|
+
bank,
|
|
77923
|
+
oraclePrice,
|
|
77924
|
+
groupRateLimiter,
|
|
77925
|
+
assetShareValueMultiplier
|
|
77926
|
+
);
|
|
77927
|
+
const clamps = [healthMaxWithdraw, availableLiquidity, rateLimitRemaining];
|
|
77928
|
+
const venueLiquidity = computeVenueAvailableLiquidity(bank, venueStates);
|
|
77929
|
+
if (venueLiquidity !== void 0) clamps.push(venueLiquidity);
|
|
77930
|
+
return BigNumber3__default.default.max(0, BigNumber3__default.default.min(...clamps));
|
|
77878
77931
|
}
|
|
77879
77932
|
function computeHealthMaxWithdrawForBank(params) {
|
|
77880
77933
|
const {
|
|
@@ -79942,6 +79995,51 @@ function computeGroupRateLimitRemainingUsd(rateLimiter, nowSeconds = Date.now()
|
|
|
79942
79995
|
if (remaining === null) return null;
|
|
79943
79996
|
return BigNumber3__default.default.max(0, remaining);
|
|
79944
79997
|
}
|
|
79998
|
+
var VENUE_AVAILABLE_LIQUIDITY_BUFFER = 0.995;
|
|
79999
|
+
function computeVenueAvailableLiquidity(bank, venueStates) {
|
|
80000
|
+
const decimals = bank.mintDecimals;
|
|
80001
|
+
switch (bank.config.assetTag) {
|
|
80002
|
+
case 3 /* KAMINO */: {
|
|
80003
|
+
const reserveState = venueStates?.kaminoStates?.reserveState;
|
|
80004
|
+
if (!reserveState) return void 0;
|
|
80005
|
+
return new BigNumber3__default.default(
|
|
80006
|
+
nativeToUi(reserveState.liquidity.availableAmount.toString(), decimals)
|
|
80007
|
+
).times(VENUE_AVAILABLE_LIQUIDITY_BUFFER);
|
|
80008
|
+
}
|
|
80009
|
+
case 4 /* DRIFT */: {
|
|
80010
|
+
const spotMarketState = venueStates?.driftStates?.spotMarketState;
|
|
80011
|
+
if (!spotMarketState) return void 0;
|
|
80012
|
+
const deposits = getDriftTokenAmount(
|
|
80013
|
+
spotMarketState.depositBalance,
|
|
80014
|
+
spotMarketState,
|
|
80015
|
+
"deposit" /* DEPOSIT */
|
|
80016
|
+
);
|
|
80017
|
+
const borrows = getDriftTokenAmount(
|
|
80018
|
+
spotMarketState.borrowBalance,
|
|
80019
|
+
spotMarketState,
|
|
80020
|
+
"borrow" /* BORROW */
|
|
80021
|
+
);
|
|
80022
|
+
const idle = deposits.sub(borrows);
|
|
80023
|
+
return new BigNumber3__default.default(nativeToUi(idle.isNeg() ? "0" : idle.toString(), decimals)).times(
|
|
80024
|
+
VENUE_AVAILABLE_LIQUIDITY_BUFFER
|
|
80025
|
+
);
|
|
80026
|
+
}
|
|
80027
|
+
case 6 /* JUPLEND */: {
|
|
80028
|
+
const reserveState = venueStates?.jupLendStates?.jupTokenReserveState;
|
|
80029
|
+
if (!reserveState) return void 0;
|
|
80030
|
+
const supplyWithInterestNative = reserveState.totalSupplyWithInterest.mul(reserveState.supplyExchangePrice).div(JUP_EXCHANGE_PRICES_PRECISION);
|
|
80031
|
+
const borrowWithInterestNative = reserveState.totalBorrowWithInterest.mul(reserveState.borrowExchangePrice).div(JUP_EXCHANGE_PRICES_PRECISION);
|
|
80032
|
+
const totalSupply = supplyWithInterestNative.add(reserveState.totalSupplyInterestFree);
|
|
80033
|
+
const totalBorrow = borrowWithInterestNative.add(reserveState.totalBorrowInterestFree);
|
|
80034
|
+
const idle = totalSupply.sub(totalBorrow);
|
|
80035
|
+
return new BigNumber3__default.default(nativeToUi(idle.isNeg() ? "0" : idle.toString(), decimals)).times(
|
|
80036
|
+
VENUE_AVAILABLE_LIQUIDITY_BUFFER
|
|
80037
|
+
);
|
|
80038
|
+
}
|
|
80039
|
+
default:
|
|
80040
|
+
return void 0;
|
|
80041
|
+
}
|
|
80042
|
+
}
|
|
79945
80043
|
|
|
79946
80044
|
// src/services/bank/bank.service.ts
|
|
79947
80045
|
async function freezeBankConfigIx(program, bankAddress, bankConfigOpt) {
|
|
@@ -82788,6 +82886,7 @@ var MarginfiAccountWrapper = class {
|
|
|
82788
82886
|
activePair,
|
|
82789
82887
|
volatilityFactor: opts?.volatilityFactor,
|
|
82790
82888
|
groupRateLimiter: this.client.group.rateLimiter,
|
|
82889
|
+
venueStates: this.client.bankIntegrationMap[bankAddress.toBase58()],
|
|
82791
82890
|
ignoreBankLimits: opts?.ignoreBankLimits
|
|
82792
82891
|
});
|
|
82793
82892
|
}
|
|
@@ -83309,6 +83408,7 @@ exports.U64_MAX = U64_MAX;
|
|
|
83309
83408
|
exports.USDC_DECIMALS = USDC_DECIMALS;
|
|
83310
83409
|
exports.USDC_MINT = USDC_MINT;
|
|
83311
83410
|
exports.USDT_MINT = USDT_MINT;
|
|
83411
|
+
exports.VENUE_AVAILABLE_LIQUIDITY_BUFFER = VENUE_AVAILABLE_LIQUIDITY_BUFFER;
|
|
83312
83412
|
exports.WSOL_MINT = WSOL_MINT;
|
|
83313
83413
|
exports.ZERO_ORACLE_KEY = ZERO_ORACLE_KEY;
|
|
83314
83414
|
exports.accountConflictsWithBridgeBank = accountConflictsWithBridgeBank;
|
|
@@ -83402,6 +83502,7 @@ exports.computeTvl = computeTvl;
|
|
|
83402
83502
|
exports.computeUsdValue = computeUsdValue;
|
|
83403
83503
|
exports.computeUtilizationRate = computeUtilizationRate;
|
|
83404
83504
|
exports.computeV0TxSize = computeV0TxSize;
|
|
83505
|
+
exports.computeVenueAvailableLiquidity = computeVenueAvailableLiquidity;
|
|
83405
83506
|
exports.convertVoteAccCoeffsToBankCoeffs = convertVoteAccCoeffsToBankCoeffs;
|
|
83406
83507
|
exports.createActiveEmodePairFromPairs = createActiveEmodePairFromPairs;
|
|
83407
83508
|
exports.createEmptyBalance = createEmptyBalance;
|