import { PublicKey, Connection, AccountMeta } from '@solana/web3.js';
import BN from 'bn.js';

/**
 * Lending market authority seed
 */
declare const LENDING_MARKET_AUTH_SEED = "lma";
declare function getLendingMarketAuthority(lendingMarket: PublicKey, programId: PublicKey): [PublicKey, number];
declare function getGammaPoolDestinationCollateral(poolAddress: PublicKey, tokenMint: PublicKey, gammaId: PublicKey): PublicKey;
interface KaminoReserve {
    address: PublicKey;
    state: KaminoReserveAccount;
}
interface KaminoReserveAccount {
    version: BN;
    lendingMarket: PublicKey;
    farmCollateral: PublicKey;
    farmDebt: PublicKey;
    liquidity: ReserveLiquidity;
    collateral: ReserveCollateral;
}
interface ReserveLiquidity {
    mintPubkey: PublicKey;
    supplyVault: PublicKey;
    feeVault: PublicKey;
}
interface ReserveCollateral {
    mintPubkey: PublicKey;
    supplyVault: PublicKey;
}
declare function getReservesForMarket(connection: Connection, marketAddress?: PublicKey, kaminoProgram?: PublicKey): Promise<Map<string, KaminoReserve>>;
declare function getReserveAccountsForWithdraw(pool: PublicKey, reserveA: KaminoReserve | undefined, reserveB: KaminoReserve | undefined, maxSharedTokenA: BN, maxSharedTokenB: BN, gammaProgram: PublicKey, kaminoProgram?: PublicKey): AccountMeta[];

export { KaminoReserve, LENDING_MARKET_AUTH_SEED, getGammaPoolDestinationCollateral, getLendingMarketAuthority, getReserveAccountsForWithdraw, getReservesForMarket };
