@kamino-finance/klend-sdk 7.1.3 → 7.1.4-beta.0
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/@codegen/klend/accounts/LendingMarket.d.ts +144 -3
- package/dist/@codegen/klend/accounts/LendingMarket.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/LendingMarket.js +105 -3
- package/dist/@codegen/klend/accounts/LendingMarket.js.map +1 -1
- package/dist/@codegen/klend/accounts/Obligation.d.ts +30 -15
- package/dist/@codegen/klend/accounts/Obligation.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/Obligation.js +31 -21
- package/dist/@codegen/klend/accounts/Obligation.js.map +1 -1
- package/dist/@codegen/klend/accounts/PoolState.d.ts +53 -0
- package/dist/@codegen/klend/accounts/PoolState.d.ts.map +1 -0
- package/dist/@codegen/klend/accounts/PoolState.js +167 -0
- package/dist/@codegen/klend/accounts/PoolState.js.map +1 -0
- package/dist/@codegen/klend/accounts/Reserve.d.ts +6 -0
- package/dist/@codegen/klend/accounts/Reserve.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/Reserve.js +9 -2
- package/dist/@codegen/klend/accounts/Reserve.js.map +1 -1
- package/dist/@codegen/klend/accounts/UnstakeTicket.d.ts +41 -0
- package/dist/@codegen/klend/accounts/UnstakeTicket.d.ts.map +1 -0
- package/dist/@codegen/klend/accounts/UnstakeTicket.js +143 -0
- package/dist/@codegen/klend/accounts/UnstakeTicket.js.map +1 -0
- package/dist/@codegen/klend/accounts/UserState.d.ts +0 -75
- package/dist/@codegen/klend/accounts/UserState.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/UserState.js +0 -25
- package/dist/@codegen/klend/accounts/UserState.js.map +1 -1
- package/dist/@codegen/klend/accounts/WithdrawTicket.d.ts +132 -0
- package/dist/@codegen/klend/accounts/WithdrawTicket.d.ts.map +1 -0
- package/dist/@codegen/klend/accounts/WithdrawTicket.js +191 -0
- package/dist/@codegen/klend/accounts/WithdrawTicket.js.map +1 -0
- package/dist/@codegen/klend/accounts/index.d.ts +6 -0
- package/dist/@codegen/klend/accounts/index.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/index.js +7 -1
- package/dist/@codegen/klend/accounts/index.js.map +1 -1
- package/dist/@codegen/klend/errors/custom.d.ts +226 -2
- package/dist/@codegen/klend/errors/custom.d.ts.map +1 -1
- package/dist/@codegen/klend/errors/custom.js +396 -3
- package/dist/@codegen/klend/errors/custom.js.map +1 -1
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.d.ts +39 -0
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.js +67 -0
- package/dist/@codegen/klend/instructions/enqueueToWithdraw.js.map +1 -0
- package/dist/@codegen/klend/instructions/fillBorrowOrder.d.ts +36 -0
- package/dist/@codegen/klend/instructions/fillBorrowOrder.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/fillBorrowOrder.js +49 -0
- package/dist/@codegen/klend/instructions/fillBorrowOrder.js.map +1 -0
- package/dist/@codegen/klend/instructions/idlMissingTypes.d.ts +1 -2
- package/dist/@codegen/klend/instructions/idlMissingTypes.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/idlMissingTypes.js +6 -2
- package/dist/@codegen/klend/instructions/idlMissingTypes.js.map +1 -1
- package/dist/@codegen/klend/instructions/index.d.ts +16 -0
- package/dist/@codegen/klend/instructions/index.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/index.js +18 -1
- package/dist/@codegen/klend/instructions/index.js.map +1 -1
- package/dist/@codegen/klend/instructions/initReserve.d.ts +1 -1
- package/dist/@codegen/klend/instructions/initReserve.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/initReserve.js +1 -5
- package/dist/@codegen/klend/instructions/initReserve.js.map +1 -1
- package/dist/@codegen/klend/instructions/liquidateObligationAndRedeemReserveCollateral.js +1 -1
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.d.ts +47 -0
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.js +66 -0
- package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.js.map +1 -0
- package/dist/@codegen/klend/instructions/setBorrowOrder.d.ts +31 -0
- package/dist/@codegen/klend/instructions/setBorrowOrder.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/setBorrowOrder.js +64 -0
- package/dist/@codegen/klend/instructions/setBorrowOrder.js.map +1 -0
- package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.d.ts +53 -0
- package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.js +190 -0
- package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.js.map +1 -0
- package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.d.ts +70 -0
- package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.js +261 -0
- package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.js.map +1 -0
- package/dist/@codegen/klend/instructions/updateGlobalConfig.d.ts +1 -1
- package/dist/@codegen/klend/instructions/updateGlobalConfig.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/updateGlobalConfig.js +1 -0
- package/dist/@codegen/klend/instructions/updateGlobalConfig.js.map +1 -1
- package/dist/@codegen/klend/instructions/updateReserveConfig.d.ts +1 -1
- package/dist/@codegen/klend/instructions/updateReserveConfig.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/updateReserveConfig.js +1 -0
- package/dist/@codegen/klend/instructions/updateReserveConfig.js.map +1 -1
- package/dist/@codegen/klend/instructions/withdrawObligationCollateral.js +1 -1
- package/dist/@codegen/klend/instructions/withdrawObligationCollateralV2.js +1 -1
- package/dist/@codegen/klend/instructions/withdrawObligationUsol.d.ts +41 -0
- package/dist/@codegen/klend/instructions/withdrawObligationUsol.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/withdrawObligationUsol.js +135 -0
- package/dist/@codegen/klend/instructions/withdrawObligationUsol.js.map +1 -0
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.d.ts +51 -0
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.js +28 -0
- package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.js.map +1 -0
- package/dist/@codegen/klend/types/BorrowOrder.d.ts +192 -0
- package/dist/@codegen/klend/types/BorrowOrder.d.ts.map +1 -0
- package/dist/@codegen/klend/types/BorrowOrder.js +194 -0
- package/dist/@codegen/klend/types/BorrowOrder.js.map +1 -0
- package/dist/@codegen/klend/types/BorrowOrderConfigArgs.d.ts +39 -0
- package/dist/@codegen/klend/types/BorrowOrderConfigArgs.d.ts.map +1 -0
- package/dist/@codegen/klend/types/BorrowOrderConfigArgs.js +100 -0
- package/dist/@codegen/klend/types/BorrowOrderConfigArgs.js.map +1 -0
- package/dist/@codegen/klend/types/ObligationLiquidity.d.ts +35 -5
- package/dist/@codegen/klend/types/ObligationLiquidity.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ObligationLiquidity.js +17 -7
- package/dist/@codegen/klend/types/ObligationLiquidity.js.map +1 -1
- package/dist/@codegen/klend/types/ObligationOrder.d.ts +4 -4
- package/dist/@codegen/klend/types/ObligationOrder.js +2 -2
- package/dist/@codegen/klend/types/ReserveConfig.d.ts +141 -29
- package/dist/@codegen/klend/types/ReserveConfig.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ReserveConfig.js +89 -25
- package/dist/@codegen/klend/types/ReserveConfig.js.map +1 -1
- package/dist/@codegen/klend/types/ReserveFees.d.ts +8 -8
- package/dist/@codegen/klend/types/ReserveFees.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ReserveFees.js +8 -8
- package/dist/@codegen/klend/types/ReserveFees.js.map +1 -1
- package/dist/@codegen/klend/types/ReserveLiquidity.d.ts +26 -8
- package/dist/@codegen/klend/types/ReserveLiquidity.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ReserveLiquidity.js +14 -8
- package/dist/@codegen/klend/types/ReserveLiquidity.js.map +1 -1
- package/dist/@codegen/klend/types/UpdateConfigMode.d.ts +92 -14
- package/dist/@codegen/klend/types/UpdateConfigMode.d.ts.map +1 -1
- package/dist/@codegen/klend/types/UpdateConfigMode.js +168 -23
- package/dist/@codegen/klend/types/UpdateConfigMode.js.map +1 -1
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts +130 -0
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts.map +1 -1
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.js +241 -1
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.js.map +1 -1
- package/dist/@codegen/klend/types/WithdrawQueue.d.ts +64 -0
- package/dist/@codegen/klend/types/WithdrawQueue.d.ts.map +1 -0
- package/dist/@codegen/klend/types/WithdrawQueue.js +104 -0
- package/dist/@codegen/klend/types/WithdrawQueue.js.map +1 -0
- package/dist/@codegen/klend/types/index.d.ts +10 -8
- package/dist/@codegen/klend/types/index.d.ts.map +1 -1
- package/dist/@codegen/klend/types/index.js +7 -3
- package/dist/@codegen/klend/types/index.js.map +1 -1
- package/dist/@codegen/klend/zero_padding/ObligationZP.d.ts +9 -4
- package/dist/@codegen/klend/zero_padding/ObligationZP.d.ts.map +1 -1
- package/dist/@codegen/klend/zero_padding/ObligationZP.js +22 -13
- package/dist/@codegen/klend/zero_padding/ObligationZP.js.map +1 -1
- package/dist/classes/action.d.ts +30 -3
- package/dist/classes/action.d.ts.map +1 -1
- package/dist/classes/action.js +364 -10
- package/dist/classes/action.js.map +1 -1
- package/dist/classes/manager.d.ts.map +1 -1
- package/dist/classes/manager.js +10 -0
- package/dist/classes/manager.js.map +1 -1
- package/dist/classes/market.d.ts +6 -2
- package/dist/classes/market.d.ts.map +1 -1
- package/dist/classes/market.js +26 -6
- package/dist/classes/market.js.map +1 -1
- package/dist/classes/obligation.js +1 -1
- package/dist/classes/obligation.js.map +1 -1
- package/dist/classes/reserve.d.ts.map +1 -1
- package/dist/classes/reserve.js +13 -7
- package/dist/classes/reserve.js.map +1 -1
- package/dist/classes/unstakingPool.d.ts +20 -3
- package/dist/classes/unstakingPool.d.ts.map +1 -1
- package/dist/classes/unstakingPool.js +62 -8
- package/dist/classes/unstakingPool.js.map +1 -1
- package/dist/idl/klend.json +2125 -232
- package/dist/lending_operations/index.d.ts +1 -0
- package/dist/lending_operations/index.d.ts.map +1 -1
- package/dist/lending_operations/index.js +1 -0
- package/dist/lending_operations/index.js.map +1 -1
- package/dist/lending_operations/unstake_lst_collateral.d.ts +12 -0
- package/dist/lending_operations/unstake_lst_collateral.d.ts.map +1 -0
- package/dist/lending_operations/unstake_lst_collateral.js +104 -0
- package/dist/lending_operations/unstake_lst_collateral.js.map +1 -0
- package/dist/manager/client_kamino_manager.js +11 -8
- package/dist/manager/client_kamino_manager.js.map +1 -1
- package/dist/utils/managerTypes.d.ts.map +1 -1
- package/dist/utils/managerTypes.js +9 -4
- package/dist/utils/managerTypes.js.map +1 -1
- package/dist/utils/seeds.d.ts +10 -14
- package/dist/utils/seeds.d.ts.map +1 -1
- package/dist/utils/seeds.js +25 -22
- package/dist/utils/seeds.js.map +1 -1
- package/package.json +1 -1
- package/src/@codegen/klend/accounts/LendingMarket.ts +210 -5
- package/src/@codegen/klend/accounts/Obligation.ts +53 -31
- package/src/@codegen/klend/accounts/PoolState.ts +192 -0
- package/src/@codegen/klend/accounts/Reserve.ts +13 -2
- package/src/@codegen/klend/accounts/UnstakeTicket.ts +160 -0
- package/src/@codegen/klend/accounts/UserState.ts +0 -75
- package/src/@codegen/klend/accounts/WithdrawTicket.ts +256 -0
- package/src/@codegen/klend/accounts/index.ts +6 -0
- package/src/@codegen/klend/errors/custom.ts +427 -2
- package/src/@codegen/klend/instructions/enqueueToWithdraw.ts +89 -0
- package/src/@codegen/klend/instructions/fillBorrowOrder.ts +96 -0
- package/src/@codegen/klend/instructions/idlMissingTypes.ts +7 -4
- package/src/@codegen/klend/instructions/index.ts +34 -0
- package/src/@codegen/klend/instructions/initReserve.ts +2 -6
- package/src/@codegen/klend/instructions/liquidateObligationAndRedeemReserveCollateral.ts +1 -1
- package/src/@codegen/klend/instructions/recoverInvalidTicketCollateral.ts +96 -0
- package/src/@codegen/klend/instructions/setBorrowOrder.ts +77 -0
- package/src/@codegen/klend/instructions/unstakeLstCollateralEnd.ts +251 -0
- package/src/@codegen/klend/instructions/unstakeLstCollateralStart.ts +353 -0
- package/src/@codegen/klend/instructions/updateGlobalConfig.ts +2 -1
- package/src/@codegen/klend/instructions/updateReserveConfig.ts +2 -1
- package/src/@codegen/klend/instructions/withdrawObligationCollateral.ts +1 -1
- package/src/@codegen/klend/instructions/withdrawObligationCollateralV2.ts +1 -1
- package/src/@codegen/klend/instructions/withdrawObligationUsol.ts +168 -0
- package/src/@codegen/klend/instructions/withdrawQueuedLiquidity.ts +92 -0
- package/src/@codegen/klend/types/BorrowOrder.ts +267 -0
- package/src/@codegen/klend/types/BorrowOrderConfigArgs.ts +87 -0
- package/src/@codegen/klend/types/ObligationLiquidity.ts +39 -9
- package/src/@codegen/klend/types/ObligationOrder.ts +4 -4
- package/src/@codegen/klend/types/ReserveConfig.ts +171 -39
- package/src/@codegen/klend/types/ReserveFees.ts +12 -12
- package/src/@codegen/klend/types/ReserveLiquidity.ts +30 -12
- package/src/@codegen/klend/types/UpdateConfigMode.ts +206 -26
- package/src/@codegen/klend/types/UpdateLendingMarketMode.ts +300 -0
- package/src/@codegen/klend/types/WithdrawQueue.ts +117 -0
- package/src/@codegen/klend/types/index.ts +45 -16
- package/src/@codegen/klend/zero_padding/ObligationZP.ts +22 -13
- package/src/classes/action.ts +577 -8
- package/src/classes/manager.ts +11 -0
- package/src/classes/market.ts +36 -5
- package/src/classes/obligation.ts +1 -1
- package/src/classes/reserve.ts +13 -8
- package/src/classes/unstakingPool.ts +83 -6
- package/src/idl/klend.json +2126 -233
- package/src/lending_operations/index.ts +1 -0
- package/src/lending_operations/unstake_lst_collateral.ts +174 -0
- package/src/manager/client_kamino_manager.ts +11 -8
- package/src/utils/managerTypes.ts +9 -4
- package/src/utils/seeds.ts +28 -26
- package/dist/@codegen/klend/types/AssetTier.d.ts +0 -45
- package/dist/@codegen/klend/types/AssetTier.d.ts.map +0 -1
- package/dist/@codegen/klend/types/AssetTier.js +0 -132
- package/dist/@codegen/klend/types/AssetTier.js.map +0 -1
- package/src/@codegen/klend/types/AssetTier.ts +0 -119
package/src/classes/manager.ts
CHANGED
|
@@ -1566,6 +1566,17 @@ export const MARKET_UPDATER = new ConfigUpdater(UpdateLendingMarketMode.fromDeco
|
|
|
1566
1566
|
[UpdateLendingMarketMode.UpdateInitialDepositAmount.kind]: config.minInitialDepositAmount,
|
|
1567
1567
|
[UpdateLendingMarketMode.UpdateObligationOrderCreationEnabled.kind]: config.obligationOrderCreationEnabled,
|
|
1568
1568
|
[UpdateLendingMarketMode.UpdateObligationOrderExecutionEnabled.kind]: config.obligationOrderExecutionEnabled,
|
|
1569
|
+
[UpdateLendingMarketMode.UpdateMatureReserveDebtLiquidationEnabled.kind]: config.matureReserveDebtLiquidationEnabled,
|
|
1570
|
+
[UpdateLendingMarketMode.UpdateObligationBorrowDebtTermLiquidationEnabled.kind]:
|
|
1571
|
+
config.obligationBorrowDebtTermLiquidationEnabled,
|
|
1572
|
+
[UpdateLendingMarketMode.UpdateProposerAuthority.kind]: config.proposerAuthority,
|
|
1573
|
+
[UpdateLendingMarketMode.UpdateBorrowOrderCreationEnabled.kind]: config.borrowOrderCreationEnabled,
|
|
1574
|
+
[UpdateLendingMarketMode.UpdateBorrowOrderExecutionEnabled.kind]: config.borrowOrderExecutionEnabled,
|
|
1575
|
+
[UpdateLendingMarketMode.UpdatePriceTriggeredLiquidationDisabled.kind]: config.priceTriggeredLiquidationDisabled,
|
|
1576
|
+
[UpdateLendingMarketMode.UpdateUnstakingPoolState.kind]: config.unstakingPoolState,
|
|
1577
|
+
[UpdateLendingMarketMode.UpdateWithdrawTicketIssuanceEnabled.kind]: config.withdrawTicketIssuanceEnabled,
|
|
1578
|
+
[UpdateLendingMarketMode.UpdateWithdrawTicketRedemptionEnabled.kind]: config.withdrawTicketRedemptionEnabled,
|
|
1579
|
+
[UpdateLendingMarketMode.UpdateMinWithdrawQueuedLiquidityValue.kind]: config.minWithdrawQueuedLiquidityValue,
|
|
1569
1580
|
}));
|
|
1570
1581
|
|
|
1571
1582
|
function parseForChangesMarketConfigAndGetIxs(
|
package/src/classes/market.ts
CHANGED
|
@@ -54,6 +54,8 @@ import { parseTokenSymbol, parseZeroPaddedUtf8 } from './utils';
|
|
|
54
54
|
import { ObligationZP } from '../@codegen/klend/zero_padding';
|
|
55
55
|
import { checkDefined } from '../utils/validations';
|
|
56
56
|
import { Buffer } from 'buffer';
|
|
57
|
+
import { UNSTAKING_POOL_STAGING_ID, unstakingPoolMintPda } from './unstakingPool';
|
|
58
|
+
import { PROGRAM_ID as UNSTAKING_POOL_ID } from '../@codegen/unstaking_pool/programId';
|
|
57
59
|
|
|
58
60
|
export type KaminoMarketRpcApi = GetAccountInfoApi &
|
|
59
61
|
GetMultipleAccountsApi &
|
|
@@ -64,6 +66,9 @@ export type KaminoMarketRpcApi = GetAccountInfoApi &
|
|
|
64
66
|
GetBalanceApi;
|
|
65
67
|
|
|
66
68
|
const base58Decoder = getBase58Decoder();
|
|
69
|
+
// This is a list of reserves (for STAGING only) that were incorrectly initialized and mess up with the mapping from mint -> reserve
|
|
70
|
+
// This can be removed once we migrate all ixs to act upon reserve pubkey instead of mints
|
|
71
|
+
export const INCORRECT_RESERVES_STAGING: Address[] = [address('5JPmNb5oxRZF4yp3kQL44HWmZnbyjguRVZbo2ew6FoxV')];
|
|
67
72
|
|
|
68
73
|
export interface ReserveRewardInfo {
|
|
69
74
|
rewardsPerSecond: Decimal; // not lamport
|
|
@@ -230,8 +235,15 @@ export class KaminoMarket {
|
|
|
230
235
|
this.reservesActive = getReservesActive(this.reserves);
|
|
231
236
|
}
|
|
232
237
|
|
|
233
|
-
async reloadSingleReserve(reservePk: Address, reserveData?: Reserve): Promise<void> {
|
|
234
|
-
const reserve = await getSingleReserve(
|
|
238
|
+
async reloadSingleReserve(reservePk: Address, reserveData?: Reserve, programId: Address = PROGRAM_ID): Promise<void> {
|
|
239
|
+
const reserve = await getSingleReserve(
|
|
240
|
+
reservePk,
|
|
241
|
+
this.rpc,
|
|
242
|
+
this.recentSlotDurationMs,
|
|
243
|
+
reserveData,
|
|
244
|
+
undefined,
|
|
245
|
+
programId
|
|
246
|
+
);
|
|
235
247
|
this.reserves.set(reservePk, reserve);
|
|
236
248
|
this.reservesActive.set(reservePk, reserve);
|
|
237
249
|
}
|
|
@@ -244,6 +256,20 @@ export class KaminoMarket {
|
|
|
244
256
|
return this.address;
|
|
245
257
|
}
|
|
246
258
|
|
|
259
|
+
getUsolPoolAddress(): Address {
|
|
260
|
+
return this.state.unstakingPoolState;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
getUsolPoolProgramId(): Address {
|
|
264
|
+
return this.programId == PROGRAM_ID ? UNSTAKING_POOL_ID : UNSTAKING_POOL_STAGING_ID;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
async getUsolPoolMint(): Promise<Address> {
|
|
268
|
+
const usolPoolPk = this.getUsolPoolAddress();
|
|
269
|
+
const usolPoolProgram = this.getUsolPoolProgramId();
|
|
270
|
+
return (await unstakingPoolMintPda(usolPoolPk, usolPoolProgram))[0];
|
|
271
|
+
}
|
|
272
|
+
|
|
247
273
|
/**
|
|
248
274
|
* Get a list of reserves for this market
|
|
249
275
|
*/
|
|
@@ -1584,7 +1610,7 @@ export async function getReservesForMarket(
|
|
|
1584
1610
|
recentSlotDurationMs: number,
|
|
1585
1611
|
oracleAccounts?: AllOracleAccounts
|
|
1586
1612
|
): Promise<Map<Address, KaminoReserve>> {
|
|
1587
|
-
|
|
1613
|
+
let reserves = await rpc
|
|
1588
1614
|
.getProgramAccounts(programId, {
|
|
1589
1615
|
filters: [
|
|
1590
1616
|
{
|
|
@@ -1601,6 +1627,10 @@ export async function getReservesForMarket(
|
|
|
1601
1627
|
encoding: 'base64',
|
|
1602
1628
|
})
|
|
1603
1629
|
.send();
|
|
1630
|
+
// If staging env always filter the incorrect reserves
|
|
1631
|
+
if (programId !== PROGRAM_ID) {
|
|
1632
|
+
reserves = reserves.filter((reserve) => INCORRECT_RESERVES_STAGING.includes(reserve.pubkey) === false);
|
|
1633
|
+
}
|
|
1604
1634
|
const deserializedReserves: ReserveWithAddress[] = reserves.map((reserve) => {
|
|
1605
1635
|
if (reserve.account === null) {
|
|
1606
1636
|
throw new Error(`Reserve account ${reserve.pubkey} does not exist`);
|
|
@@ -1637,9 +1667,10 @@ export async function getSingleReserve(
|
|
|
1637
1667
|
rpc: Rpc<KaminoReserveRpcApi>,
|
|
1638
1668
|
recentSlotDurationMs: number,
|
|
1639
1669
|
reserveData?: Reserve,
|
|
1640
|
-
oracleAccounts?: AllOracleAccounts
|
|
1670
|
+
oracleAccounts?: AllOracleAccounts,
|
|
1671
|
+
programId: Address = PROGRAM_ID
|
|
1641
1672
|
): Promise<KaminoReserve> {
|
|
1642
|
-
const reserve = reserveData ?? (await Reserve.fetch(rpc, reservePk));
|
|
1673
|
+
const reserve = reserveData ?? (await Reserve.fetch(rpc, reservePk, programId));
|
|
1643
1674
|
|
|
1644
1675
|
if (reserve === null) {
|
|
1645
1676
|
throw new Error(`Reserve account ${reservePk} does not exist`);
|
|
@@ -270,7 +270,7 @@ export class KaminoObligation {
|
|
|
270
270
|
* Returns obligation orders (including the null ones, i.e. non-active positions in the orders' array).
|
|
271
271
|
*/
|
|
272
272
|
getOrders(): Array<KaminoObligationOrder | null> {
|
|
273
|
-
return this.state.
|
|
273
|
+
return this.state.obligationOrders.map((order) => KaminoObligationOrder.fromState(order));
|
|
274
274
|
}
|
|
275
275
|
|
|
276
276
|
/**
|
package/src/classes/reserve.ts
CHANGED
|
@@ -144,7 +144,7 @@ export class KaminoReserve {
|
|
|
144
144
|
* @returns the available liquidity amount of the reserve in lamports
|
|
145
145
|
*/
|
|
146
146
|
getLiquidityAvailableAmount(): Decimal {
|
|
147
|
-
return new Decimal(this.state.liquidity.
|
|
147
|
+
return new Decimal(this.state.liquidity.totalAvailableAmount.toString());
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
/**
|
|
@@ -199,7 +199,7 @@ export class KaminoReserve {
|
|
|
199
199
|
* @returns the origination fee percentage of the reserve
|
|
200
200
|
*/
|
|
201
201
|
getBorrowFee = (): Decimal => {
|
|
202
|
-
return new Fraction(this.state.config.fees.
|
|
202
|
+
return new Fraction(this.state.config.fees.originationFeeSf).toDecimal();
|
|
203
203
|
};
|
|
204
204
|
|
|
205
205
|
/**
|
|
@@ -1163,13 +1163,12 @@ export async function createReserveIxs(
|
|
|
1163
1163
|
|
|
1164
1164
|
const { liquiditySupplyVault, collateralMint, collateralSupplyVault, feeVault } = await reservePdas(
|
|
1165
1165
|
programId,
|
|
1166
|
-
|
|
1167
|
-
liquidityMint
|
|
1166
|
+
reserveAddress.address
|
|
1168
1167
|
);
|
|
1169
1168
|
const [lendingMarketAuthority] = await lendingMarketAuthPda(lendingMarket, programId);
|
|
1170
1169
|
|
|
1171
1170
|
const accounts: InitReserveAccounts = {
|
|
1172
|
-
|
|
1171
|
+
signer: owner,
|
|
1173
1172
|
lendingMarket: lendingMarket,
|
|
1174
1173
|
lendingMarketAuthority: lendingMarketAuthority,
|
|
1175
1174
|
reserve: reserveAddress.address,
|
|
@@ -1222,7 +1221,7 @@ export const RESERVE_CONFIG_UPDATER = new ConfigUpdater(UpdateConfigMode.fromDec
|
|
|
1222
1221
|
[UpdateConfigMode.UpdateLiquidationThresholdPct.kind]: config.liquidationThresholdPct,
|
|
1223
1222
|
[UpdateConfigMode.UpdateProtocolLiquidationFee.kind]: config.protocolLiquidationFeePct,
|
|
1224
1223
|
[UpdateConfigMode.UpdateProtocolTakeRate.kind]: config.protocolTakeRatePct,
|
|
1225
|
-
[UpdateConfigMode.
|
|
1224
|
+
[UpdateConfigMode.UpdateFeesOriginationFee.kind]: config.fees.originationFeeSf,
|
|
1226
1225
|
[UpdateConfigMode.UpdateFeesFlashLoanFee.kind]: config.fees.flashLoanFeeSf,
|
|
1227
1226
|
[UpdateConfigMode.DeprecatedUpdateFeesReferralFeeBps.kind]: [], // deprecated
|
|
1228
1227
|
[UpdateConfigMode.UpdateDepositLimit.kind]: config.depositLimit,
|
|
@@ -1256,7 +1255,7 @@ export const RESERVE_CONFIG_UPDATER = new ConfigUpdater(UpdateConfigMode.fromDec
|
|
|
1256
1255
|
[UpdateConfigMode.UpdateMinLiquidationBonusBps.kind]: config.minLiquidationBonusBps,
|
|
1257
1256
|
[UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.kind]: config.deleveragingMarginCallPeriodSecs,
|
|
1258
1257
|
[UpdateConfigMode.UpdateBorrowFactor.kind]: config.borrowFactorPct,
|
|
1259
|
-
[UpdateConfigMode.
|
|
1258
|
+
[UpdateConfigMode.DeprecatedUpdateAssetTier.kind]: [], //deprecated
|
|
1260
1259
|
[UpdateConfigMode.UpdateElevationGroup.kind]: config.elevationGroups,
|
|
1261
1260
|
[UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.kind]: config.deleveragingThresholdDecreaseBpsPerDay,
|
|
1262
1261
|
[UpdateConfigMode.DeprecatedUpdateMultiplierSideBoost.kind]: [], // deprecated
|
|
@@ -1274,6 +1273,12 @@ export const RESERVE_CONFIG_UPDATER = new ConfigUpdater(UpdateConfigMode.fromDec
|
|
|
1274
1273
|
[UpdateConfigMode.UpdateAutodeleverageEnabled.kind]: config.autodeleverageEnabled,
|
|
1275
1274
|
[UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.kind]: config.deleveragingBonusIncreaseBpsPerDay,
|
|
1276
1275
|
[UpdateConfigMode.UpdateProtocolOrderExecutionFee.kind]: config.protocolOrderExecutionFeePct,
|
|
1276
|
+
[UpdateConfigMode.UpdateDebtMaturityTimestamp.kind]: config.debtMaturityTimestamp,
|
|
1277
|
+
[UpdateConfigMode.UpdateDebtTermSeconds.kind]: config.debtTermSeconds,
|
|
1278
|
+
[UpdateConfigMode.UpdateProposerAuthorityLock.kind]: config.proposerAuthorityLocked,
|
|
1279
|
+
[UpdateConfigMode.UpdateMinDeleveragingBonusBps.kind]: config.minDeleveragingBonusBps,
|
|
1280
|
+
[UpdateConfigMode.UpdateCanUnstakeLstCollateral.kind]: config.canUnstakeLstCollateral,
|
|
1281
|
+
[UpdateConfigMode.UpdateLtvLamportsMargin.kind]: config.ltvLamportsMargin,
|
|
1277
1282
|
}));
|
|
1278
1283
|
|
|
1279
1284
|
export async function updateEntireReserveConfigIx(
|
|
@@ -1345,7 +1350,7 @@ const NON_VALIDATED_DISCRIMINATORS = [
|
|
|
1345
1350
|
function shouldSkipValidation(mode: UpdateConfigModeKind, reserve: Reserve | undefined): boolean {
|
|
1346
1351
|
return (
|
|
1347
1352
|
NON_VALIDATED_DISCRIMINATORS.includes(mode.discriminator) &&
|
|
1348
|
-
!reserve?.liquidity.
|
|
1353
|
+
!reserve?.liquidity.totalAvailableAmount.gten(MIN_INITIAL_DEPOSIT)
|
|
1349
1354
|
);
|
|
1350
1355
|
}
|
|
1351
1356
|
|
|
@@ -17,6 +17,7 @@ import { TOKEN_2022_PROGRAM_ADDRESS } from '@solana-program/token-2022';
|
|
|
17
17
|
import { getAssociatedTokenAddress } from '../lib';
|
|
18
18
|
import { PoolState, UnstakeTicket } from '../@codegen/unstaking_pool/accounts';
|
|
19
19
|
import {
|
|
20
|
+
createAssociatedTokenAccountIdempotentInstruction,
|
|
20
21
|
createLookupTableIx,
|
|
21
22
|
DEFAULT_PUBLIC_KEY,
|
|
22
23
|
extendLookupTableIxs,
|
|
@@ -49,6 +50,7 @@ import {
|
|
|
49
50
|
Rpc,
|
|
50
51
|
SolanaRpcApi,
|
|
51
52
|
TransactionSigner,
|
|
53
|
+
getBase58Decoder,
|
|
52
54
|
} from '@solana/kit';
|
|
53
55
|
import { getCreateAccountInstruction, SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system';
|
|
54
56
|
import { SYSVAR_CLOCK_ADDRESS, SYSVAR_INSTRUCTIONS_ADDRESS, SYSVAR_RENT_ADDRESS } from '@solana/sysvars';
|
|
@@ -62,16 +64,29 @@ const STAKE_HISTORY_PROGRAM_ID: Address = address('SysvarStakeHistory11111111111
|
|
|
62
64
|
const STAKE_ACCOUNT_SIZE: number = 200;
|
|
63
65
|
export const STAKE_POOL_SIZE: number = 611;
|
|
64
66
|
const addressEncoder = getAddressEncoder();
|
|
67
|
+
const base58Decoder = getBase58Decoder();
|
|
65
68
|
|
|
66
69
|
/**
|
|
67
70
|
* Unstaking sol mint seed
|
|
68
71
|
*/
|
|
69
72
|
export const UNSTAKING_SOL_MINT_SEED = Buffer.from('unstaking_sol_mint');
|
|
70
73
|
|
|
74
|
+
/**
|
|
75
|
+
* Unstaking sol mint seed
|
|
76
|
+
*/
|
|
77
|
+
export const UNSTAKING_SOL_WSOL_VAULT_SEED = Buffer.from('wsol_vault');
|
|
78
|
+
|
|
71
79
|
/**
|
|
72
80
|
* Unstaking sol pool base authority seed
|
|
73
81
|
*/
|
|
74
|
-
export const BASE_POOL_AUTHORITY_SEED = Buffer.from('
|
|
82
|
+
export const BASE_POOL_AUTHORITY_SEED = Buffer.from('base_authority');
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Unstaking sol pool lending market authority seed
|
|
86
|
+
*/
|
|
87
|
+
export const UNSTAKING_POOL_AUTHORITY_SEED = Buffer.from('upa');
|
|
88
|
+
|
|
89
|
+
/**
|
|
75
90
|
|
|
76
91
|
/**
|
|
77
92
|
* KaminoPoolClient is a class that provides a high-level interface to interact with the Kamino Pool program.
|
|
@@ -112,8 +127,8 @@ export class UnstakingPoolClient {
|
|
|
112
127
|
});
|
|
113
128
|
|
|
114
129
|
const unstakingSolMint = (await unstakingPoolMintPda(poolState.address))[0];
|
|
115
|
-
const basePoolAuthority = (await
|
|
116
|
-
const wsolVault = await
|
|
130
|
+
const basePoolAuthority = (await unstakingPoolBaseAuthorityPda(poolState.address))[0];
|
|
131
|
+
const wsolVault = (await unstakingPoolWsolVaultPda(poolState.address))[0];
|
|
117
132
|
|
|
118
133
|
const initPoolAccounts: InitializePoolAccounts = {
|
|
119
134
|
admin: poolConfig.admin,
|
|
@@ -276,6 +291,7 @@ export class UnstakingPoolClient {
|
|
|
276
291
|
* @param stakedSolMint - staked sol mint
|
|
277
292
|
* @param stakedSolToDeposit - staked sol to convert to USOL (at the pool ratio)
|
|
278
293
|
* @param minSharesToReceive - parameter to control slippage
|
|
294
|
+
* @param initUsolAta - pass if you want the usol ata initialized
|
|
279
295
|
* @returns burn instruction
|
|
280
296
|
*/
|
|
281
297
|
async mintIx(
|
|
@@ -285,7 +301,8 @@ export class UnstakingPoolClient {
|
|
|
285
301
|
unstakeTicket: TransactionSigner,
|
|
286
302
|
stakedSolMint: Address,
|
|
287
303
|
stakedSolToDeposit: BN,
|
|
288
|
-
minSharesToReceive: BN
|
|
304
|
+
minSharesToReceive: BN,
|
|
305
|
+
initUsolAta: boolean
|
|
289
306
|
): Promise<MintIxs> {
|
|
290
307
|
const pool = await poolState.getState(this.getConnection());
|
|
291
308
|
// Create unstake ticket ix
|
|
@@ -340,7 +357,17 @@ export class UnstakingPoolClient {
|
|
|
340
357
|
accounts: ixAccounts.concat(remainingAccounts),
|
|
341
358
|
data: ix.data,
|
|
342
359
|
};
|
|
343
|
-
|
|
360
|
+
const ixs = [createUnstakeTicketIx, mintIx];
|
|
361
|
+
if (initUsolAta) {
|
|
362
|
+
const [_, createAtaIx] = await createAssociatedTokenAccountIdempotentInstruction(
|
|
363
|
+
user,
|
|
364
|
+
pool.unstakingSolMint,
|
|
365
|
+
user.address,
|
|
366
|
+
TOKEN_PROGRAM_ADDRESS
|
|
367
|
+
);
|
|
368
|
+
ixs.splice(1, 0, createAtaIx);
|
|
369
|
+
}
|
|
370
|
+
return { mintIxs: ixs, additionalSigners: remainingSigners };
|
|
344
371
|
}
|
|
345
372
|
|
|
346
373
|
/**
|
|
@@ -467,6 +494,46 @@ export class UnstakingPool {
|
|
|
467
494
|
}
|
|
468
495
|
}
|
|
469
496
|
|
|
497
|
+
export async function getAllTicketsForUser(
|
|
498
|
+
rpc: Rpc<GetProgramAccountsApi>,
|
|
499
|
+
user: Address,
|
|
500
|
+
programId: Address = UNSTAKING_POOL_ID
|
|
501
|
+
): Promise<Array<UnstakeTicketInfo>> {
|
|
502
|
+
const results = await rpc
|
|
503
|
+
.getProgramAccounts(programId, {
|
|
504
|
+
filters: [
|
|
505
|
+
{
|
|
506
|
+
dataSize: BigInt(UnstakeTicket.layout.span + 8),
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
memcmp: {
|
|
510
|
+
offset: 0n,
|
|
511
|
+
bytes: base58Decoder.decode(UnstakeTicket.discriminator) as Base58EncodedBytes,
|
|
512
|
+
encoding: 'base58',
|
|
513
|
+
},
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
memcmp: {
|
|
517
|
+
offset: 8n,
|
|
518
|
+
bytes: user.toString() as Base58EncodedBytes,
|
|
519
|
+
encoding: 'base58',
|
|
520
|
+
},
|
|
521
|
+
},
|
|
522
|
+
],
|
|
523
|
+
encoding: 'base64',
|
|
524
|
+
})
|
|
525
|
+
.send();
|
|
526
|
+
|
|
527
|
+
return results.map((result) => {
|
|
528
|
+
return { state: UnstakeTicket.decode(Buffer.from(result.account.data[0], 'base64')), pk: result.pubkey };
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
export type UnstakeTicketInfo = {
|
|
533
|
+
pk: Address;
|
|
534
|
+
state: UnstakeTicket;
|
|
535
|
+
};
|
|
536
|
+
|
|
470
537
|
export type StakeAccountInfo = {
|
|
471
538
|
pk: Address;
|
|
472
539
|
stakeAccount: StakeAccount;
|
|
@@ -493,7 +560,17 @@ export function unstakingPoolMintPda(
|
|
|
493
560
|
});
|
|
494
561
|
}
|
|
495
562
|
|
|
496
|
-
export function
|
|
563
|
+
export function unstakingPoolWsolVaultPda(
|
|
564
|
+
pool: Address,
|
|
565
|
+
programId: Address = UNSTAKING_POOL_ID
|
|
566
|
+
): Promise<ProgramDerivedAddress> {
|
|
567
|
+
return getProgramDerivedAddress({
|
|
568
|
+
seeds: [UNSTAKING_SOL_WSOL_VAULT_SEED, addressEncoder.encode(pool)],
|
|
569
|
+
programAddress: programId,
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
export function unstakingPoolBaseAuthorityPda(
|
|
497
574
|
pool: Address,
|
|
498
575
|
programId: Address = UNSTAKING_POOL_ID
|
|
499
576
|
): Promise<ProgramDerivedAddress> {
|