@kamino-finance/klend-sdk
Version:
Typescript SDK for interacting with the Kamino Lending (klend) protocol
165 lines • 8.85 kB
TypeScript
import { PublicKey, Connection } from "@solana/web3.js";
import BN from "bn.js";
import * as types from "../types";
export interface LendingMarketFields {
/** Version of lending market */
version: BN;
/** Bump seed for derived authority address */
bumpSeed: BN;
/** Owner authority which can add new reserves */
lendingMarketOwner: PublicKey;
/** Temporary cache of the lending market owner, used in update_lending_market_owner */
lendingMarketOwnerCached: PublicKey;
/**
* Currency market prices are quoted in
* e.g. "USD" null padded (`*b"USD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"`) or a SPL token mint pubkey
*/
quoteCurrency: Array<number>;
/** Referral fee for the lending market, as bps out of the total protocol fee */
referralFeeBps: number;
emergencyMode: number;
autodeleverageEnabled: number;
borrowDisabled: number;
/**
* Refresh price from oracle only if it's older than this percentage of the price max age.
* e.g. if the max age is set to 100s and this is set to 80%, the price will be refreshed if it's older than 80s.
* Price is always refreshed if this set to 0.
*/
priceRefreshTriggerToMaxAgePct: number;
/** Percentage of the total borrowed value in an obligation available for liquidation */
liquidationMaxDebtCloseFactorPct: number;
/** Minimum acceptable unhealthy LTV before max_debt_close_factor_pct becomes 100% */
insolvencyRiskUnhealthyLtvPct: number;
/** Minimum liquidation value threshold triggering full liquidation for an obligation */
minFullLiquidationValueThreshold: BN;
/** Max allowed liquidation value in one ix call */
maxLiquidatableDebtMarketValueAtOnce: BN;
/** Global maximum unhealthy borrow value allowed for any obligation */
globalUnhealthyBorrowValue: BN;
/** Global maximum allowed borrow value allowed for any obligation */
globalAllowedBorrowValue: BN;
/** The address of the risk council, in charge of making parameter and risk decisions on behalf of the protocol */
riskCouncil: PublicKey;
/** [DEPRECATED] Reward points multiplier per obligation type */
reserved1: Array<number>;
/** Elevation groups are used to group together reserves that have the same risk parameters and can bump the ltv and liquidation threshold */
elevationGroups: Array<types.ElevationGroupFields>;
elevationGroupPadding: Array<BN>;
/** Min net value accepted to be found in a position after any lending action in an obligation (scaled by quote currency decimals) */
minNetValueInObligationSf: BN;
minValueSkipLiquidationLtvBfChecks: BN;
/** Market name, zero-padded. */
name: Array<number>;
padding1: Array<BN>;
}
export interface LendingMarketJSON {
/** Version of lending market */
version: string;
/** Bump seed for derived authority address */
bumpSeed: string;
/** Owner authority which can add new reserves */
lendingMarketOwner: string;
/** Temporary cache of the lending market owner, used in update_lending_market_owner */
lendingMarketOwnerCached: string;
/**
* Currency market prices are quoted in
* e.g. "USD" null padded (`*b"USD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"`) or a SPL token mint pubkey
*/
quoteCurrency: Array<number>;
/** Referral fee for the lending market, as bps out of the total protocol fee */
referralFeeBps: number;
emergencyMode: number;
autodeleverageEnabled: number;
borrowDisabled: number;
/**
* Refresh price from oracle only if it's older than this percentage of the price max age.
* e.g. if the max age is set to 100s and this is set to 80%, the price will be refreshed if it's older than 80s.
* Price is always refreshed if this set to 0.
*/
priceRefreshTriggerToMaxAgePct: number;
/** Percentage of the total borrowed value in an obligation available for liquidation */
liquidationMaxDebtCloseFactorPct: number;
/** Minimum acceptable unhealthy LTV before max_debt_close_factor_pct becomes 100% */
insolvencyRiskUnhealthyLtvPct: number;
/** Minimum liquidation value threshold triggering full liquidation for an obligation */
minFullLiquidationValueThreshold: string;
/** Max allowed liquidation value in one ix call */
maxLiquidatableDebtMarketValueAtOnce: string;
/** Global maximum unhealthy borrow value allowed for any obligation */
globalUnhealthyBorrowValue: string;
/** Global maximum allowed borrow value allowed for any obligation */
globalAllowedBorrowValue: string;
/** The address of the risk council, in charge of making parameter and risk decisions on behalf of the protocol */
riskCouncil: string;
/** [DEPRECATED] Reward points multiplier per obligation type */
reserved1: Array<number>;
/** Elevation groups are used to group together reserves that have the same risk parameters and can bump the ltv and liquidation threshold */
elevationGroups: Array<types.ElevationGroupJSON>;
elevationGroupPadding: Array<string>;
/** Min net value accepted to be found in a position after any lending action in an obligation (scaled by quote currency decimals) */
minNetValueInObligationSf: string;
minValueSkipLiquidationLtvBfChecks: string;
/** Market name, zero-padded. */
name: Array<number>;
padding1: Array<string>;
}
export declare class LendingMarket {
/** Version of lending market */
readonly version: BN;
/** Bump seed for derived authority address */
readonly bumpSeed: BN;
/** Owner authority which can add new reserves */
readonly lendingMarketOwner: PublicKey;
/** Temporary cache of the lending market owner, used in update_lending_market_owner */
readonly lendingMarketOwnerCached: PublicKey;
/**
* Currency market prices are quoted in
* e.g. "USD" null padded (`*b"USD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"`) or a SPL token mint pubkey
*/
readonly quoteCurrency: Array<number>;
/** Referral fee for the lending market, as bps out of the total protocol fee */
readonly referralFeeBps: number;
readonly emergencyMode: number;
readonly autodeleverageEnabled: number;
readonly borrowDisabled: number;
/**
* Refresh price from oracle only if it's older than this percentage of the price max age.
* e.g. if the max age is set to 100s and this is set to 80%, the price will be refreshed if it's older than 80s.
* Price is always refreshed if this set to 0.
*/
readonly priceRefreshTriggerToMaxAgePct: number;
/** Percentage of the total borrowed value in an obligation available for liquidation */
readonly liquidationMaxDebtCloseFactorPct: number;
/** Minimum acceptable unhealthy LTV before max_debt_close_factor_pct becomes 100% */
readonly insolvencyRiskUnhealthyLtvPct: number;
/** Minimum liquidation value threshold triggering full liquidation for an obligation */
readonly minFullLiquidationValueThreshold: BN;
/** Max allowed liquidation value in one ix call */
readonly maxLiquidatableDebtMarketValueAtOnce: BN;
/** Global maximum unhealthy borrow value allowed for any obligation */
readonly globalUnhealthyBorrowValue: BN;
/** Global maximum allowed borrow value allowed for any obligation */
readonly globalAllowedBorrowValue: BN;
/** The address of the risk council, in charge of making parameter and risk decisions on behalf of the protocol */
readonly riskCouncil: PublicKey;
/** [DEPRECATED] Reward points multiplier per obligation type */
readonly reserved1: Array<number>;
/** Elevation groups are used to group together reserves that have the same risk parameters and can bump the ltv and liquidation threshold */
readonly elevationGroups: Array<types.ElevationGroup>;
readonly elevationGroupPadding: Array<BN>;
/** Min net value accepted to be found in a position after any lending action in an obligation (scaled by quote currency decimals) */
readonly minNetValueInObligationSf: BN;
readonly minValueSkipLiquidationLtvBfChecks: BN;
/** Market name, zero-padded. */
readonly name: Array<number>;
readonly padding1: Array<BN>;
static readonly discriminator: Buffer;
static readonly layout: any;
constructor(fields: LendingMarketFields);
static fetch(c: Connection, address: PublicKey, programId?: PublicKey): Promise<LendingMarket | null>;
static fetchMultiple(c: Connection, addresses: PublicKey[], programId?: PublicKey): Promise<Array<LendingMarket | null>>;
static decode(data: Buffer): LendingMarket;
toJSON(): LendingMarketJSON;
static fromJSON(obj: LendingMarketJSON): LendingMarket;
}
//# sourceMappingURL=LendingMarket.d.ts.map