import { Address, GetAccountInfoApi, GetMultipleAccountsApi, Rpc } from "@solana/kit";
import BN from "bn.js";
import * as types from "../types";
export interface ObligationFields {
    tag: BN;
    lastUpdate: types.LastUpdateFields;
    lendingMarket: Address;
    owner: Address;
    deposits: Array<types.ObligationCollateralFields>;
    lowestReserveDepositLiquidationLtv: BN;
    depositedValueSf: BN;
    borrows: Array<types.ObligationLiquidityFields>;
    borrowFactorAdjustedDebtValueSf: BN;
    borrowedAssetsMarketValueSf: BN;
    allowedBorrowValueSf: BN;
    unhealthyBorrowValueSf: BN;
    paddingDeprecatedAssetTiers: Array<number>;
    elevationGroup: number;
    numOfObsoleteDepositReserves: number;
    hasDebt: number;
    referrer: Address;
    borrowingDisabled: number;
    autodeleverageTargetLtvPct: number;
    lowestReserveDepositMaxLtvPct: number;
    numOfObsoleteBorrowReserves: number;
    ownershipTransferState: number;
    reserved: Array<number>;
    highestBorrowFactorPct: BN;
    autodeleverageMarginCallStartedTimestamp: BN;
    obligationOrders: Array<types.ObligationOrderFields>;
    borrowOrder: types.BorrowOrderFields;
    pendingOwner: Address;
    padding3: Array<BN>;
}
export interface ObligationJSON {
    tag: string;
    lastUpdate: types.LastUpdateJSON;
    lendingMarket: string;
    owner: string;
    deposits: Array<types.ObligationCollateralJSON>;
    lowestReserveDepositLiquidationLtv: string;
    depositedValueSf: string;
    borrows: Array<types.ObligationLiquidityJSON>;
    borrowFactorAdjustedDebtValueSf: string;
    borrowedAssetsMarketValueSf: string;
    allowedBorrowValueSf: string;
    unhealthyBorrowValueSf: string;
    paddingDeprecatedAssetTiers: Array<number>;
    elevationGroup: number;
    numOfObsoleteDepositReserves: number;
    hasDebt: number;
    referrer: string;
    borrowingDisabled: number;
    autodeleverageTargetLtvPct: number;
    lowestReserveDepositMaxLtvPct: number;
    numOfObsoleteBorrowReserves: number;
    ownershipTransferState: number;
    reserved: Array<number>;
    highestBorrowFactorPct: string;
    autodeleverageMarginCallStartedTimestamp: string;
    obligationOrders: Array<types.ObligationOrderJSON>;
    borrowOrder: types.BorrowOrderJSON;
    pendingOwner: string;
    padding3: Array<string>;
}
export declare class Obligation {
    readonly tag: BN;
    readonly lastUpdate: types.LastUpdate;
    readonly lendingMarket: Address;
    readonly owner: Address;
    readonly deposits: Array<types.ObligationCollateral>;
    readonly lowestReserveDepositLiquidationLtv: BN;
    readonly depositedValueSf: BN;
    readonly borrows: Array<types.ObligationLiquidity>;
    readonly borrowFactorAdjustedDebtValueSf: BN;
    readonly borrowedAssetsMarketValueSf: BN;
    readonly allowedBorrowValueSf: BN;
    readonly unhealthyBorrowValueSf: BN;
    readonly paddingDeprecatedAssetTiers: Array<number>;
    readonly elevationGroup: number;
    readonly numOfObsoleteDepositReserves: number;
    readonly hasDebt: number;
    readonly referrer: Address;
    readonly borrowingDisabled: number;
    readonly autodeleverageTargetLtvPct: number;
    readonly lowestReserveDepositMaxLtvPct: number;
    readonly numOfObsoleteBorrowReserves: number;
    readonly ownershipTransferState: number;
    readonly reserved: Array<number>;
    readonly highestBorrowFactorPct: BN;
    readonly autodeleverageMarginCallStartedTimestamp: BN;
    readonly obligationOrders: Array<types.ObligationOrder>;
    readonly borrowOrder: types.BorrowOrder;
    readonly pendingOwner: Address;
    readonly padding3: Array<BN>;
    static readonly discriminator: Buffer<ArrayBuffer>;
    static readonly layout: import("buffer-layout").Layout<Obligation>;
    constructor(fields: ObligationFields);
    static fetch(rpc: Rpc<GetAccountInfoApi>, address: Address, programId?: Address): Promise<Obligation | null>;
    static fetchMultiple(rpc: Rpc<GetMultipleAccountsApi>, addresses: Address[], programId?: Address): Promise<Array<Obligation | null>>;
    static decode(data: Buffer): Obligation;
    toJSON(): ObligationJSON;
    static fromJSON(obj: ObligationJSON): Obligation;
}
//# sourceMappingURL=Obligation.d.ts.map