///
import { AccountInfo, PublicKey } from '@solana/web3.js';
import BigNumber from 'bignumber.js';
import { Parser } from '../util';
import { LastUpdate } from './lastUpdate';
export interface Reserve {
version: number;
lastUpdate: LastUpdate;
lendingMarket: PublicKey;
liquidity: ReserveLiquidity;
collateral: ReserveCollateral;
config: ReserveConfig;
}
export interface ReserveLiquidity {
mintPubkey: PublicKey;
mintDecimals: number;
supplyPubkey: PublicKey;
feeReceiver: PublicKey;
oraclePubkey: PublicKey;
availableAmount: bigint;
borrowedAmountWads: BigNumber;
cumulativeBorrowRateWads: BigNumber;
marketPrice: BigNumber;
}
export interface ReserveCollateral {
mintPubkey: PublicKey;
mintTotalSupply: bigint;
supplyPubkey: PublicKey;
}
export interface ReserveConfig {
optimalUtilizationRate: number;
loanToValueRatio: number;
liquidationBonus: number;
liquidationThreshold: number;
minBorrowRate: number;
optimalBorrowRate: number;
maxBorrowRate: number;
fees: ReserveFees;
depositLimit: bigint;
borrowLimit: bigint;
feeReceiver: PublicKey;
}
export interface ReserveFees {
borrowFeeWad: bigint;
flashLoanFeeWad: bigint;
hostFeePercentage: number;
}
export declare const RESERVE_SIZE: number;
export declare const isReserve: (info: AccountInfo) => boolean;
export declare const parseReserve: Parser;