import { Address } from "@solana/kit";
import BN from "bn.js";
import * as types from "../types";
export interface ObligationLiquidityFields {
    /** Reserve liquidity is borrowed from */
    borrowReserve: Address;
    /** Borrow rate used for calculating interest (big scaled fraction) */
    cumulativeBorrowRateBsf: types.BigFractionBytesFields;
    /**
     * The timestamp at which this debt was taken.
     * More specifically: when the *first* borrow operation from this reserve happened.
     * This means that:
     * - adding debt of the same reserve does *not* change this timestamp,
     * - repaying the entire debt of this reserve *does* reset this timestamp.
     *
     * Note: this field is *not* only metadata: it is used in the logic, e.g. for enforcing the
     * fixed-term borrows (i.e. those induced by [ReserveConfig::debt_term_seconds]).
     */
    firstBorrowedAtTimestamp: BN;
    /** Amount of liquidity borrowed plus interest (scaled fraction) */
    borrowedAmountSf: BN;
    /** Liquidity market value in quote currency (scaled fraction) */
    marketValueSf: BN;
    /** Risk adjusted liquidity market value in quote currency - DEBUG ONLY - use market_value instead */
    borrowFactorAdjustedMarketValueSf: BN;
    /** Amount of liquidity borrowed outside of an elevation group */
    borrowedAmountOutsideElevationGroups: BN;
    padding2: Array<BN>;
}
export interface ObligationLiquidityJSON {
    /** Reserve liquidity is borrowed from */
    borrowReserve: string;
    /** Borrow rate used for calculating interest (big scaled fraction) */
    cumulativeBorrowRateBsf: types.BigFractionBytesJSON;
    /**
     * The timestamp at which this debt was taken.
     * More specifically: when the *first* borrow operation from this reserve happened.
     * This means that:
     * - adding debt of the same reserve does *not* change this timestamp,
     * - repaying the entire debt of this reserve *does* reset this timestamp.
     *
     * Note: this field is *not* only metadata: it is used in the logic, e.g. for enforcing the
     * fixed-term borrows (i.e. those induced by [ReserveConfig::debt_term_seconds]).
     */
    firstBorrowedAtTimestamp: string;
    /** Amount of liquidity borrowed plus interest (scaled fraction) */
    borrowedAmountSf: string;
    /** Liquidity market value in quote currency (scaled fraction) */
    marketValueSf: string;
    /** Risk adjusted liquidity market value in quote currency - DEBUG ONLY - use market_value instead */
    borrowFactorAdjustedMarketValueSf: string;
    /** Amount of liquidity borrowed outside of an elevation group */
    borrowedAmountOutsideElevationGroups: string;
    padding2: Array<string>;
}
/** Obligation liquidity state */
export declare class ObligationLiquidity {
    /** Reserve liquidity is borrowed from */
    readonly borrowReserve: Address;
    /** Borrow rate used for calculating interest (big scaled fraction) */
    readonly cumulativeBorrowRateBsf: types.BigFractionBytes;
    /**
     * The timestamp at which this debt was taken.
     * More specifically: when the *first* borrow operation from this reserve happened.
     * This means that:
     * - adding debt of the same reserve does *not* change this timestamp,
     * - repaying the entire debt of this reserve *does* reset this timestamp.
     *
     * Note: this field is *not* only metadata: it is used in the logic, e.g. for enforcing the
     * fixed-term borrows (i.e. those induced by [ReserveConfig::debt_term_seconds]).
     */
    readonly firstBorrowedAtTimestamp: BN;
    /** Amount of liquidity borrowed plus interest (scaled fraction) */
    readonly borrowedAmountSf: BN;
    /** Liquidity market value in quote currency (scaled fraction) */
    readonly marketValueSf: BN;
    /** Risk adjusted liquidity market value in quote currency - DEBUG ONLY - use market_value instead */
    readonly borrowFactorAdjustedMarketValueSf: BN;
    /** Amount of liquidity borrowed outside of an elevation group */
    readonly borrowedAmountOutsideElevationGroups: BN;
    readonly padding2: Array<BN>;
    constructor(fields: ObligationLiquidityFields);
    static layout(property?: string): import("buffer-layout").Layout<unknown>;
    static fromDecoded(obj: any): types.ObligationLiquidity;
    static toEncodable(fields: ObligationLiquidityFields): {
        borrowReserve: Address;
        cumulativeBorrowRateBsf: {
            value: BN[];
            padding: BN[];
        };
        firstBorrowedAtTimestamp: BN;
        borrowedAmountSf: BN;
        marketValueSf: BN;
        borrowFactorAdjustedMarketValueSf: BN;
        borrowedAmountOutsideElevationGroups: BN;
        padding2: BN[];
    };
    toJSON(): ObligationLiquidityJSON;
    static fromJSON(obj: ObligationLiquidityJSON): ObligationLiquidity;
    toEncodable(): {
        borrowReserve: Address;
        cumulativeBorrowRateBsf: {
            value: BN[];
            padding: BN[];
        };
        firstBorrowedAtTimestamp: BN;
        borrowedAmountSf: BN;
        marketValueSf: BN;
        borrowFactorAdjustedMarketValueSf: BN;
        borrowedAmountOutsideElevationGroups: BN;
        padding2: BN[];
    };
}
//# sourceMappingURL=ObligationLiquidity.d.ts.map