///
import { AccountInfo, PublicKey } from "@solana/web3.js";
import Big from "big.js";
import * as BufferLayout from "@solana/buffer-layout";
import { Lamport, Percentage } from "../models/basic";
import { ExchangeRate } from "../models/ExchangeRate";
import { MintId } from "../models/MintId";
import { StakingPoolId } from "../models/staking";
import { TokenAccountId } from "../models/TokenAccountId";
import { SlotInfo } from "./SlotInfo";
import BN from "bn.js";
export interface ReserveData {
version: number;
lastUpdate: SlotInfo;
lendingMarket: PublicKey;
liquidity: ReserveLiquidity;
collateral: ReserveCollateral;
config: ReserveConfig;
}
export interface ReserveLiquidity {
mintPubkey: MintId;
mintDecimals: number;
supplyPubkey: TokenAccountId;
feeReceiver: TokenAccountId;
oracleOption: number;
oraclePubkey: PublicKey;
availableAmount: Lamport;
borrowedAmountWads: Lamport;
cumulativeBorrowRateWads: ExchangeRate;
marketPrice: Big;
}
export interface ReserveCollateral {
mintPubkey: MintId;
mintTotalSupply: Lamport;
supplyPubkey: TokenAccountId;
}
export interface ReserveConfigProto {
optimalUtilizationRate: number;
loanToValueRatio: number;
liquidationBonus: number;
liquidationThreshold: number;
minBorrowRate: number;
optimalBorrowRate: number;
maxBorrowRate: number;
fees: {
borrowFeeWad: BN;
flashLoanFeeWad: BN;
hostFeePercentage: number;
};
stakingPoolOption: number;
stakingPool: PublicKey;
}
export declare const ReserveConfigProtoLayout: (property: string) => BufferLayout.Structure;
export interface ReserveConfig {
optimalUtilizationRate: Percentage;
loanToValueRatio: Percentage;
liquidationBonus: Percentage;
liquidationThreshold: Percentage;
minBorrowRate: Percentage;
optimalBorrowRate: Percentage;
maxBorrowRate: Percentage;
fees: {
borrowFeeWad: Big;
flashLoanFeeWad: Big;
hostFeePercentage: number;
};
stakingPoolId: StakingPoolId | undefined;
}
export declare const ReserveLiquidityLayout: (property: string) => BufferLayout.Structure;
export declare const ReserveCollateralLayout: (property: string) => BufferLayout.Structure;
export declare const ReserveFeesLayout: (property: string) => BufferLayout.Structure;
export declare const ReserveConfigLayout: (property: string) => BufferLayout.Structure;
export declare const ReserveLayout: BufferLayout.Structure;
export declare const isReserve: (info: AccountInfo) => boolean;
export declare const RESERVE_DATA_SIZE: number;
//# sourceMappingURL=ReserveData.d.ts.map