import { Address } from "@solana/kit";
import BN from "bn.js";
import * as types from "../types";
export interface ReserveConfigFields {
    status: number;
    assetTier: number;
    hostFixedInterestRateBps: number;
    minDeleveragingBonusBps: number;
    blockCtokenUsage: number;
    reserved1: Array<number>;
    protocolOrderExecutionFeePct: number;
    protocolTakeRatePct: number;
    protocolLiquidationFeePct: number;
    loanToValuePct: number;
    liquidationThresholdPct: number;
    minLiquidationBonusBps: number;
    maxLiquidationBonusBps: number;
    badDebtLiquidationBonusBps: number;
    deleveragingMarginCallPeriodSecs: BN;
    deleveragingThresholdDecreaseBpsPerDay: BN;
    fees: types.ReserveFeesFields;
    borrowRateCurve: types.BorrowRateCurveFields;
    borrowFactorPct: BN;
    depositLimit: BN;
    borrowLimit: BN;
    tokenInfo: types.TokenInfoFields;
    depositWithdrawalCap: types.WithdrawalCapsFields;
    debtWithdrawalCap: types.WithdrawalCapsFields;
    elevationGroups: Array<number>;
    disableUsageAsCollOutsideEmode: number;
    utilizationLimitBlockBorrowingAbovePct: number;
    autodeleverageEnabled: number;
    proposerAuthorityLocked: number;
    borrowLimitOutsideElevationGroup: BN;
    borrowLimitAgainstThisCollateralInElevationGroup: Array<BN>;
    deleveragingBonusIncreaseBpsPerDay: BN;
}
export interface ReserveConfigJSON {
    status: number;
    assetTier: number;
    hostFixedInterestRateBps: number;
    minDeleveragingBonusBps: number;
    blockCtokenUsage: number;
    reserved1: Array<number>;
    protocolOrderExecutionFeePct: number;
    protocolTakeRatePct: number;
    protocolLiquidationFeePct: number;
    loanToValuePct: number;
    liquidationThresholdPct: number;
    minLiquidationBonusBps: number;
    maxLiquidationBonusBps: number;
    badDebtLiquidationBonusBps: number;
    deleveragingMarginCallPeriodSecs: string;
    deleveragingThresholdDecreaseBpsPerDay: string;
    fees: types.ReserveFeesJSON;
    borrowRateCurve: types.BorrowRateCurveJSON;
    borrowFactorPct: string;
    depositLimit: string;
    borrowLimit: string;
    tokenInfo: types.TokenInfoJSON;
    depositWithdrawalCap: types.WithdrawalCapsJSON;
    debtWithdrawalCap: types.WithdrawalCapsJSON;
    elevationGroups: Array<number>;
    disableUsageAsCollOutsideEmode: number;
    utilizationLimitBlockBorrowingAbovePct: number;
    autodeleverageEnabled: number;
    proposerAuthorityLocked: number;
    borrowLimitOutsideElevationGroup: string;
    borrowLimitAgainstThisCollateralInElevationGroup: Array<string>;
    deleveragingBonusIncreaseBpsPerDay: string;
}
export declare class ReserveConfig {
    readonly status: number;
    readonly assetTier: number;
    readonly hostFixedInterestRateBps: number;
    readonly minDeleveragingBonusBps: number;
    readonly blockCtokenUsage: number;
    readonly reserved1: Array<number>;
    readonly protocolOrderExecutionFeePct: number;
    readonly protocolTakeRatePct: number;
    readonly protocolLiquidationFeePct: number;
    readonly loanToValuePct: number;
    readonly liquidationThresholdPct: number;
    readonly minLiquidationBonusBps: number;
    readonly maxLiquidationBonusBps: number;
    readonly badDebtLiquidationBonusBps: number;
    readonly deleveragingMarginCallPeriodSecs: BN;
    readonly deleveragingThresholdDecreaseBpsPerDay: BN;
    readonly fees: types.ReserveFees;
    readonly borrowRateCurve: types.BorrowRateCurve;
    readonly borrowFactorPct: BN;
    readonly depositLimit: BN;
    readonly borrowLimit: BN;
    readonly tokenInfo: types.TokenInfo;
    readonly depositWithdrawalCap: types.WithdrawalCaps;
    readonly debtWithdrawalCap: types.WithdrawalCaps;
    readonly elevationGroups: Array<number>;
    readonly disableUsageAsCollOutsideEmode: number;
    readonly utilizationLimitBlockBorrowingAbovePct: number;
    readonly autodeleverageEnabled: number;
    readonly proposerAuthorityLocked: number;
    readonly borrowLimitOutsideElevationGroup: BN;
    readonly borrowLimitAgainstThisCollateralInElevationGroup: Array<BN>;
    readonly deleveragingBonusIncreaseBpsPerDay: BN;
    constructor(fields: ReserveConfigFields);
    static layout(property?: string): import("buffer-layout").Layout<unknown>;
    static fromDecoded(obj: any): types.ReserveConfig;
    static toEncodable(fields: ReserveConfigFields): {
        status: number;
        assetTier: number;
        hostFixedInterestRateBps: number;
        minDeleveragingBonusBps: number;
        blockCtokenUsage: number;
        reserved1: number[];
        protocolOrderExecutionFeePct: number;
        protocolTakeRatePct: number;
        protocolLiquidationFeePct: number;
        loanToValuePct: number;
        liquidationThresholdPct: number;
        minLiquidationBonusBps: number;
        maxLiquidationBonusBps: number;
        badDebtLiquidationBonusBps: number;
        deleveragingMarginCallPeriodSecs: BN;
        deleveragingThresholdDecreaseBpsPerDay: BN;
        fees: {
            originationFeeSf: BN;
            flashLoanFeeSf: BN;
            padding: number[];
        };
        borrowRateCurve: {
            points: {
                utilizationRateBps: number;
                borrowRateBps: number;
            }[];
        };
        borrowFactorPct: BN;
        depositLimit: BN;
        borrowLimit: BN;
        tokenInfo: {
            name: number[];
            heuristic: {
                lower: BN;
                upper: BN;
                exp: BN;
            };
            maxTwapDivergenceBps: BN;
            maxAgePriceSeconds: BN;
            maxAgeTwapSeconds: BN;
            scopeConfiguration: {
                priceFeed: Address;
                priceChain: number[];
                twapChain: number[];
            };
            switchboardConfiguration: {
                priceAggregator: Address;
                twapAggregator: Address;
            };
            pythConfiguration: {
                price: Address;
            };
            blockPriceUsage: number;
            reserved: number[];
            padding: BN[];
        };
        depositWithdrawalCap: {
            configCapacity: BN;
            currentTotal: BN;
            lastIntervalStartTimestamp: BN;
            configIntervalLengthSeconds: BN;
        };
        debtWithdrawalCap: {
            configCapacity: BN;
            currentTotal: BN;
            lastIntervalStartTimestamp: BN;
            configIntervalLengthSeconds: BN;
        };
        elevationGroups: number[];
        disableUsageAsCollOutsideEmode: number;
        utilizationLimitBlockBorrowingAbovePct: number;
        autodeleverageEnabled: number;
        proposerAuthorityLocked: number;
        borrowLimitOutsideElevationGroup: BN;
        borrowLimitAgainstThisCollateralInElevationGroup: BN[];
        deleveragingBonusIncreaseBpsPerDay: BN;
    };
    toJSON(): ReserveConfigJSON;
    static fromJSON(obj: ReserveConfigJSON): ReserveConfig;
    toEncodable(): {
        status: number;
        assetTier: number;
        hostFixedInterestRateBps: number;
        minDeleveragingBonusBps: number;
        blockCtokenUsage: number;
        reserved1: number[];
        protocolOrderExecutionFeePct: number;
        protocolTakeRatePct: number;
        protocolLiquidationFeePct: number;
        loanToValuePct: number;
        liquidationThresholdPct: number;
        minLiquidationBonusBps: number;
        maxLiquidationBonusBps: number;
        badDebtLiquidationBonusBps: number;
        deleveragingMarginCallPeriodSecs: BN;
        deleveragingThresholdDecreaseBpsPerDay: BN;
        fees: {
            originationFeeSf: BN;
            flashLoanFeeSf: BN;
            padding: number[];
        };
        borrowRateCurve: {
            points: {
                utilizationRateBps: number;
                borrowRateBps: number;
            }[];
        };
        borrowFactorPct: BN;
        depositLimit: BN;
        borrowLimit: BN;
        tokenInfo: {
            name: number[];
            heuristic: {
                lower: BN;
                upper: BN;
                exp: BN;
            };
            maxTwapDivergenceBps: BN;
            maxAgePriceSeconds: BN;
            maxAgeTwapSeconds: BN;
            scopeConfiguration: {
                priceFeed: Address;
                priceChain: number[];
                twapChain: number[];
            };
            switchboardConfiguration: {
                priceAggregator: Address;
                twapAggregator: Address;
            };
            pythConfiguration: {
                price: Address;
            };
            blockPriceUsage: number;
            reserved: number[];
            padding: BN[];
        };
        depositWithdrawalCap: {
            configCapacity: BN;
            currentTotal: BN;
            lastIntervalStartTimestamp: BN;
            configIntervalLengthSeconds: BN;
        };
        debtWithdrawalCap: {
            configCapacity: BN;
            currentTotal: BN;
            lastIntervalStartTimestamp: BN;
            configIntervalLengthSeconds: BN;
        };
        elevationGroups: number[];
        disableUsageAsCollOutsideEmode: number;
        utilizationLimitBlockBorrowingAbovePct: number;
        autodeleverageEnabled: number;
        proposerAuthorityLocked: number;
        borrowLimitOutsideElevationGroup: BN;
        borrowLimitAgainstThisCollateralInElevationGroup: BN[];
        deleveragingBonusIncreaseBpsPerDay: BN;
    };
}
//# sourceMappingURL=ReserveConfig.d.ts.map