import { PublicKey } from '@solana/web3.js';
export interface AllAccounts {
    collectionInfos: CollectionInfoView[];
    deposits: DepositView[];
    timeBasedLiquidityPools: TimeBasedLiquidityPoolView[];
    priceBasedLiquidityPools: PriceBasedLiquidityPoolView[];
    loans: LoanView[];
    liquidationLots: LiquidationLotView[];
    lotTickets: LotTicketView[];
    nftAttempts: NftAttemptView[];
    lendingStake: LendingStakeView[];
}
export interface LendingStakeView {
    lendingStakePubkey: string;
    stakeType: string;
    loan: string;
    stakeContract: string;
    stakeConstractOptional: string;
    stakeState: string;
    identity: string;
    dataA: string;
    dataB: string;
    dataC: string;
    dataD: string;
    totalHarvested: number;
    totalHarvestedOptional: number;
    lastTime: number;
}
export declare function decodedLendingStake(decodedLendingStake: any, address: PublicKey): LendingStakeView;
export interface CollectionInfoView {
    collectionInfoPubkey: string;
    creator: string;
    liquidityPool: string;
    pricingLookupAddress: string;
    royaltyAddress: string;
    royaltyFeeTime: number;
    royaltyFeePrice: number;
    loanToValue: number;
    collaterizationRate: number;
    availableLoanTypes: string;
    expirationTime: number;
}
export declare function decodedCollectionInfo(decodedCollection: any, address: PublicKey): CollectionInfoView;
export interface TimeBasedLiquidityPoolView {
    liquidityPoolPubkey: string;
    id: number;
    rewardInterestRateTime: number;
    feeInterestRateTime: number;
    rewardInterestRatePrice: number;
    feeInterestRatePrice: number;
    liquidityAmount: number;
    liqOwner: string;
    amountOfStaked: number;
    userRewardsAmount: number;
    apr: number;
    cumulative: number;
    lastTime: number;
    oldCumulative: number;
    period: number;
}
export declare function decodedTimeBasedLiquidityPool(decodedLiquidityPool: any, address: PublicKey): TimeBasedLiquidityPoolView;
export interface PriceBasedLiquidityPoolView {
    liquidityPoolPubkey: string;
    id: number;
    baseBorrowRate: number;
    variableSlope1: number;
    variableSlope2: number;
    utilizationRateOptimal: number;
    reserveFactor: number;
    reserveAmount: string;
    liquidityAmount: number;
    liqOwner: string;
    amountOfStaked: number;
    depositApr: number;
    borrowApr: number;
    borrowCumulative: number;
    depositCumulative: number;
    lastTime: number;
    depositCommission: number;
    borrowCommission: number;
}
export declare function decodedPriceBasedLiquidityPool(decodedLiquidityPool: any, address: PublicKey): PriceBasedLiquidityPoolView;
export interface DepositView {
    depositPubkey: string;
    liquidityPool: string;
    user: string;
    amount: number;
    stakedAt: number;
    stakedAtCumulative: number;
}
export declare function decodedDeposit(decodedDeposit: any, address: PublicKey): DepositView;
export interface LoanView {
    loanPubkey: string;
    user: string;
    nftMint: string;
    nftUserTokenAccount: string;
    liquidityPool: string;
    collectionInfo: string;
    startedAt: number;
    expiredAt: number;
    finishedAt: number;
    originalPrice: number;
    amountToGet: number;
    rewardAmount: number;
    feeAmount: number;
    royaltyAmount: number;
    borrowedAtCumulative: number;
    alreadyPaidBack: number;
    loanStatus: string;
    loanType: string;
}
export interface LotTicketView {
    liquidationLot: string;
    user: string;
    usedNftAttempts: string;
    ticketState: string;
    publicKey: string;
}
export interface NftAttemptView {
    nftMint: string;
    blockedUntil: number;
    attempts: number;
    cycleStartedAt: number;
    lastTriedAt: number;
    publicKey: string;
}
export interface LiquidationLotView {
    loan: string;
    nftMint: string;
    vaultNftTokenAccount: string;
    lotNoFeesPrice: number;
    winningChanceInBasePoints: number;
    startedAt: number;
    endingAt: number;
    lotState: string;
    ticketsCount: number;
    gracePeriod: number;
    graceFee: number;
    publicKey: string;
}
export declare function decodedLoan(decodedLoan: any, address: PublicKey): LoanView;
export interface TokenView {
    tokenAccountPubkey: string;
    mint: string;
    owner: string;
    amount: number;
    amountBN: any;
    delegateOption: boolean;
    delegate: string;
    state: boolean;
    isNativeOption: boolean;
    isNative: number;
    delegatedAmount: number;
    closeAuthorityOption: boolean;
    closeAuthority: string;
}
export declare function decodedTokenBuffersToUI(decodedTokenState: any, tokenAddress: PublicKey): TokenView;
