import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from "../../common";
import type { FunctionFragment, Result, EventFragment } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, PopulatedTransaction, Signer, utils } from "ethers";
export interface LiquidatorInterface extends utils.Interface {
    functions: {
        "acceptOwnership()": FunctionFragment;
        "accessControlManager()": FunctionFragment;
        "addToAllowlist(address,address)": FunctionFragment;
        "allowedLiquidatorsByAccount(address,address)": FunctionFragment;
        "comptroller()": FunctionFragment;
        "forceVAILiquidate()": FunctionFragment;
        "initialize(uint256,address,address)": FunctionFragment;
        "liquidateBorrow(address,address,uint256,address)": FunctionFragment;
        "liquidationRestricted(address)": FunctionFragment;
        "minLiquidatableVAI()": FunctionFragment;
        "owner()": FunctionFragment;
        "pauseForceVAILiquidate()": FunctionFragment;
        "pendingOwner()": FunctionFragment;
        "pendingRedeem(uint256)": FunctionFragment;
        "protocolShareReserve()": FunctionFragment;
        "reduceReserves()": FunctionFragment;
        "removeFromAllowlist(address,address)": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "restrictLiquidation(address)": FunctionFragment;
        "resumeForceVAILiquidate()": FunctionFragment;
        "setAccessControlManager(address)": FunctionFragment;
        "setMinLiquidatableVAI(uint256)": FunctionFragment;
        "setPendingRedeemChunkLength(uint256)": FunctionFragment;
        "setProtocolShareReserve(address)": FunctionFragment;
        "setTreasuryPercent(uint256)": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
        "treasuryPercentMantissa()": FunctionFragment;
        "unrestrictLiquidation(address)": FunctionFragment;
        "vBnb()": FunctionFragment;
        "vaiController()": FunctionFragment;
        "wBNB()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "acceptOwnership" | "accessControlManager" | "addToAllowlist" | "allowedLiquidatorsByAccount" | "comptroller" | "forceVAILiquidate" | "initialize" | "liquidateBorrow" | "liquidationRestricted" | "minLiquidatableVAI" | "owner" | "pauseForceVAILiquidate" | "pendingOwner" | "pendingRedeem" | "protocolShareReserve" | "reduceReserves" | "removeFromAllowlist" | "renounceOwnership" | "restrictLiquidation" | "resumeForceVAILiquidate" | "setAccessControlManager" | "setMinLiquidatableVAI" | "setPendingRedeemChunkLength" | "setProtocolShareReserve" | "setTreasuryPercent" | "transferOwnership" | "treasuryPercentMantissa" | "unrestrictLiquidation" | "vBnb" | "vaiController" | "wBNB"): FunctionFragment;
    encodeFunctionData(functionFragment: "acceptOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "accessControlManager", values?: undefined): string;
    encodeFunctionData(functionFragment: "addToAllowlist", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "allowedLiquidatorsByAccount", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "comptroller", values?: undefined): string;
    encodeFunctionData(functionFragment: "forceVAILiquidate", values?: undefined): string;
    encodeFunctionData(functionFragment: "initialize", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: "liquidateBorrow", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: "liquidationRestricted", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "minLiquidatableVAI", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "pauseForceVAILiquidate", values?: undefined): string;
    encodeFunctionData(functionFragment: "pendingOwner", values?: undefined): string;
    encodeFunctionData(functionFragment: "pendingRedeem", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "protocolShareReserve", values?: undefined): string;
    encodeFunctionData(functionFragment: "reduceReserves", values?: undefined): string;
    encodeFunctionData(functionFragment: "removeFromAllowlist", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "restrictLiquidation", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "resumeForceVAILiquidate", values?: undefined): string;
    encodeFunctionData(functionFragment: "setAccessControlManager", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setMinLiquidatableVAI", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "setPendingRedeemChunkLength", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "setProtocolShareReserve", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setTreasuryPercent", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "treasuryPercentMantissa", values?: undefined): string;
    encodeFunctionData(functionFragment: "unrestrictLiquidation", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "vBnb", values?: undefined): string;
    encodeFunctionData(functionFragment: "vaiController", values?: undefined): string;
    encodeFunctionData(functionFragment: "wBNB", values?: undefined): string;
    decodeFunctionResult(functionFragment: "acceptOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "accessControlManager", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addToAllowlist", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "allowedLiquidatorsByAccount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "comptroller", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "forceVAILiquidate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "liquidateBorrow", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "liquidationRestricted", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "minLiquidatableVAI", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pauseForceVAILiquidate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingOwner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingRedeem", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "protocolShareReserve", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "reduceReserves", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeFromAllowlist", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "restrictLiquidation", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "resumeForceVAILiquidate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setAccessControlManager", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setMinLiquidatableVAI", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setPendingRedeemChunkLength", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setProtocolShareReserve", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setTreasuryPercent", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "treasuryPercentMantissa", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unrestrictLiquidation", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vBnb", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vaiController", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "wBNB", data: BytesLike): Result;
    events: {
        "AllowlistEntryAdded(address,address)": EventFragment;
        "AllowlistEntryRemoved(address,address)": EventFragment;
        "ForceVAILiquidationPaused(address)": EventFragment;
        "ForceVAILiquidationResumed(address)": EventFragment;
        "Initialized(uint8)": EventFragment;
        "LiquidateBorrowedTokens(address,address,uint256,address,address,uint256,uint256)": EventFragment;
        "LiquidationRestricted(address)": EventFragment;
        "LiquidationRestrictionsDisabled(address)": EventFragment;
        "NewAccessControlManager(address,address)": EventFragment;
        "NewLiquidationTreasuryPercent(uint256,uint256)": EventFragment;
        "NewMinLiquidatableVAI(uint256,uint256)": EventFragment;
        "NewPendingRedeemChunkLength(uint256,uint256)": EventFragment;
        "NewProtocolShareReserve(address,address)": EventFragment;
        "OwnershipTransferStarted(address,address)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "ProtocolLiquidationIncentiveTransferred(address,address,uint256)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "AllowlistEntryAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "AllowlistEntryRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ForceVAILiquidationPaused"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ForceVAILiquidationResumed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LiquidateBorrowedTokens"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LiquidationRestricted"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LiquidationRestrictionsDisabled"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewAccessControlManager"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewLiquidationTreasuryPercent"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewMinLiquidatableVAI"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewPendingRedeemChunkLength"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewProtocolShareReserve"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferStarted"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ProtocolLiquidationIncentiveTransferred"): EventFragment;
}
export interface AllowlistEntryAddedEventObject {
    borrower: string;
    liquidator: string;
}
export type AllowlistEntryAddedEvent = TypedEvent<[
    string,
    string
], AllowlistEntryAddedEventObject>;
export type AllowlistEntryAddedEventFilter = TypedEventFilter<AllowlistEntryAddedEvent>;
export interface AllowlistEntryRemovedEventObject {
    borrower: string;
    liquidator: string;
}
export type AllowlistEntryRemovedEvent = TypedEvent<[
    string,
    string
], AllowlistEntryRemovedEventObject>;
export type AllowlistEntryRemovedEventFilter = TypedEventFilter<AllowlistEntryRemovedEvent>;
export interface ForceVAILiquidationPausedEventObject {
    sender: string;
}
export type ForceVAILiquidationPausedEvent = TypedEvent<[
    string
], ForceVAILiquidationPausedEventObject>;
export type ForceVAILiquidationPausedEventFilter = TypedEventFilter<ForceVAILiquidationPausedEvent>;
export interface ForceVAILiquidationResumedEventObject {
    sender: string;
}
export type ForceVAILiquidationResumedEvent = TypedEvent<[
    string
], ForceVAILiquidationResumedEventObject>;
export type ForceVAILiquidationResumedEventFilter = TypedEventFilter<ForceVAILiquidationResumedEvent>;
export interface InitializedEventObject {
    version: number;
}
export type InitializedEvent = TypedEvent<[number], InitializedEventObject>;
export type InitializedEventFilter = TypedEventFilter<InitializedEvent>;
export interface LiquidateBorrowedTokensEventObject {
    liquidator: string;
    borrower: string;
    repayAmount: BigNumber;
    vTokenBorrowed: string;
    vTokenCollateral: string;
    seizeTokensForTreasury: BigNumber;
    seizeTokensForLiquidator: BigNumber;
}
export type LiquidateBorrowedTokensEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    string,
    string,
    BigNumber,
    BigNumber
], LiquidateBorrowedTokensEventObject>;
export type LiquidateBorrowedTokensEventFilter = TypedEventFilter<LiquidateBorrowedTokensEvent>;
export interface LiquidationRestrictedEventObject {
    borrower: string;
}
export type LiquidationRestrictedEvent = TypedEvent<[
    string
], LiquidationRestrictedEventObject>;
export type LiquidationRestrictedEventFilter = TypedEventFilter<LiquidationRestrictedEvent>;
export interface LiquidationRestrictionsDisabledEventObject {
    borrower: string;
}
export type LiquidationRestrictionsDisabledEvent = TypedEvent<[
    string
], LiquidationRestrictionsDisabledEventObject>;
export type LiquidationRestrictionsDisabledEventFilter = TypedEventFilter<LiquidationRestrictionsDisabledEvent>;
export interface NewAccessControlManagerEventObject {
    oldAccessControlManager: string;
    newAccessControlManager: string;
}
export type NewAccessControlManagerEvent = TypedEvent<[
    string,
    string
], NewAccessControlManagerEventObject>;
export type NewAccessControlManagerEventFilter = TypedEventFilter<NewAccessControlManagerEvent>;
export interface NewLiquidationTreasuryPercentEventObject {
    oldPercent: BigNumber;
    newPercent: BigNumber;
}
export type NewLiquidationTreasuryPercentEvent = TypedEvent<[
    BigNumber,
    BigNumber
], NewLiquidationTreasuryPercentEventObject>;
export type NewLiquidationTreasuryPercentEventFilter = TypedEventFilter<NewLiquidationTreasuryPercentEvent>;
export interface NewMinLiquidatableVAIEventObject {
    oldMinLiquidatableVAI: BigNumber;
    newMinLiquidatableVAI: BigNumber;
}
export type NewMinLiquidatableVAIEvent = TypedEvent<[
    BigNumber,
    BigNumber
], NewMinLiquidatableVAIEventObject>;
export type NewMinLiquidatableVAIEventFilter = TypedEventFilter<NewMinLiquidatableVAIEvent>;
export interface NewPendingRedeemChunkLengthEventObject {
    oldPendingRedeemChunkLength: BigNumber;
    newPendingRedeemChunkLength: BigNumber;
}
export type NewPendingRedeemChunkLengthEvent = TypedEvent<[
    BigNumber,
    BigNumber
], NewPendingRedeemChunkLengthEventObject>;
export type NewPendingRedeemChunkLengthEventFilter = TypedEventFilter<NewPendingRedeemChunkLengthEvent>;
export interface NewProtocolShareReserveEventObject {
    oldProtocolShareReserve: string;
    newProtocolShareReserves: string;
}
export type NewProtocolShareReserveEvent = TypedEvent<[
    string,
    string
], NewProtocolShareReserveEventObject>;
export type NewProtocolShareReserveEventFilter = TypedEventFilter<NewProtocolShareReserveEvent>;
export interface OwnershipTransferStartedEventObject {
    previousOwner: string;
    newOwner: string;
}
export type OwnershipTransferStartedEvent = TypedEvent<[
    string,
    string
], OwnershipTransferStartedEventObject>;
export type OwnershipTransferStartedEventFilter = TypedEventFilter<OwnershipTransferStartedEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export type OwnershipTransferredEvent = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject>;
export type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface ProtocolLiquidationIncentiveTransferredEventObject {
    sender: string;
    token: string;
    reducedAmount: BigNumber;
}
export type ProtocolLiquidationIncentiveTransferredEvent = TypedEvent<[
    string,
    string,
    BigNumber
], ProtocolLiquidationIncentiveTransferredEventObject>;
export type ProtocolLiquidationIncentiveTransferredEventFilter = TypedEventFilter<ProtocolLiquidationIncentiveTransferredEvent>;
export interface Liquidator extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: LiquidatorInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        accessControlManager(overrides?: CallOverrides): Promise<[string]>;
        addToAllowlist(borrower: PromiseOrValue<string>, liquidator: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        allowedLiquidatorsByAccount(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        comptroller(overrides?: CallOverrides): Promise<[string]>;
        forceVAILiquidate(overrides?: CallOverrides): Promise<[boolean]>;
        initialize(treasuryPercentMantissa_: PromiseOrValue<BigNumberish>, accessControlManager_: PromiseOrValue<string>, protocolShareReserve_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        liquidateBorrow(vToken: PromiseOrValue<string>, borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, vTokenCollateral: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        liquidationRestricted(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        minLiquidatableVAI(overrides?: CallOverrides): Promise<[BigNumber]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        pauseForceVAILiquidate(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        pendingOwner(overrides?: CallOverrides): Promise<[string]>;
        pendingRedeem(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        protocolShareReserve(overrides?: CallOverrides): Promise<[string]>;
        reduceReserves(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeFromAllowlist(borrower: PromiseOrValue<string>, liquidator: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        restrictLiquidation(borrower: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        resumeForceVAILiquidate(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setAccessControlManager(accessControlManager_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setMinLiquidatableVAI(minLiquidatableVAI_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setPendingRedeemChunkLength(newLength_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setProtocolShareReserve(protocolShareReserve_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setTreasuryPercent(newTreasuryPercentMantissa: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        treasuryPercentMantissa(overrides?: CallOverrides): Promise<[BigNumber]>;
        unrestrictLiquidation(borrower: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        vBnb(overrides?: CallOverrides): Promise<[string]>;
        vaiController(overrides?: CallOverrides): Promise<[string]>;
        wBNB(overrides?: CallOverrides): Promise<[string]>;
    };
    acceptOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    accessControlManager(overrides?: CallOverrides): Promise<string>;
    addToAllowlist(borrower: PromiseOrValue<string>, liquidator: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    allowedLiquidatorsByAccount(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    comptroller(overrides?: CallOverrides): Promise<string>;
    forceVAILiquidate(overrides?: CallOverrides): Promise<boolean>;
    initialize(treasuryPercentMantissa_: PromiseOrValue<BigNumberish>, accessControlManager_: PromiseOrValue<string>, protocolShareReserve_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    liquidateBorrow(vToken: PromiseOrValue<string>, borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, vTokenCollateral: PromiseOrValue<string>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    liquidationRestricted(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    minLiquidatableVAI(overrides?: CallOverrides): Promise<BigNumber>;
    owner(overrides?: CallOverrides): Promise<string>;
    pauseForceVAILiquidate(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    pendingOwner(overrides?: CallOverrides): Promise<string>;
    pendingRedeem(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    protocolShareReserve(overrides?: CallOverrides): Promise<string>;
    reduceReserves(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeFromAllowlist(borrower: PromiseOrValue<string>, liquidator: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    restrictLiquidation(borrower: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    resumeForceVAILiquidate(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setAccessControlManager(accessControlManager_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setMinLiquidatableVAI(minLiquidatableVAI_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setPendingRedeemChunkLength(newLength_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setProtocolShareReserve(protocolShareReserve_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setTreasuryPercent(newTreasuryPercentMantissa: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    treasuryPercentMantissa(overrides?: CallOverrides): Promise<BigNumber>;
    unrestrictLiquidation(borrower: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    vBnb(overrides?: CallOverrides): Promise<string>;
    vaiController(overrides?: CallOverrides): Promise<string>;
    wBNB(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        acceptOwnership(overrides?: CallOverrides): Promise<void>;
        accessControlManager(overrides?: CallOverrides): Promise<string>;
        addToAllowlist(borrower: PromiseOrValue<string>, liquidator: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        allowedLiquidatorsByAccount(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        comptroller(overrides?: CallOverrides): Promise<string>;
        forceVAILiquidate(overrides?: CallOverrides): Promise<boolean>;
        initialize(treasuryPercentMantissa_: PromiseOrValue<BigNumberish>, accessControlManager_: PromiseOrValue<string>, protocolShareReserve_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        liquidateBorrow(vToken: PromiseOrValue<string>, borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, vTokenCollateral: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        liquidationRestricted(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        minLiquidatableVAI(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<string>;
        pauseForceVAILiquidate(overrides?: CallOverrides): Promise<void>;
        pendingOwner(overrides?: CallOverrides): Promise<string>;
        pendingRedeem(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        protocolShareReserve(overrides?: CallOverrides): Promise<string>;
        reduceReserves(overrides?: CallOverrides): Promise<void>;
        removeFromAllowlist(borrower: PromiseOrValue<string>, liquidator: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        restrictLiquidation(borrower: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        resumeForceVAILiquidate(overrides?: CallOverrides): Promise<void>;
        setAccessControlManager(accessControlManager_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setMinLiquidatableVAI(minLiquidatableVAI_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setPendingRedeemChunkLength(newLength_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setProtocolShareReserve(protocolShareReserve_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setTreasuryPercent(newTreasuryPercentMantissa: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        treasuryPercentMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        unrestrictLiquidation(borrower: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        vBnb(overrides?: CallOverrides): Promise<string>;
        vaiController(overrides?: CallOverrides): Promise<string>;
        wBNB(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "AllowlistEntryAdded(address,address)"(borrower?: PromiseOrValue<string> | null, liquidator?: PromiseOrValue<string> | null): AllowlistEntryAddedEventFilter;
        AllowlistEntryAdded(borrower?: PromiseOrValue<string> | null, liquidator?: PromiseOrValue<string> | null): AllowlistEntryAddedEventFilter;
        "AllowlistEntryRemoved(address,address)"(borrower?: PromiseOrValue<string> | null, liquidator?: PromiseOrValue<string> | null): AllowlistEntryRemovedEventFilter;
        AllowlistEntryRemoved(borrower?: PromiseOrValue<string> | null, liquidator?: PromiseOrValue<string> | null): AllowlistEntryRemovedEventFilter;
        "ForceVAILiquidationPaused(address)"(sender?: PromiseOrValue<string> | null): ForceVAILiquidationPausedEventFilter;
        ForceVAILiquidationPaused(sender?: PromiseOrValue<string> | null): ForceVAILiquidationPausedEventFilter;
        "ForceVAILiquidationResumed(address)"(sender?: PromiseOrValue<string> | null): ForceVAILiquidationResumedEventFilter;
        ForceVAILiquidationResumed(sender?: PromiseOrValue<string> | null): ForceVAILiquidationResumedEventFilter;
        "Initialized(uint8)"(version?: null): InitializedEventFilter;
        Initialized(version?: null): InitializedEventFilter;
        "LiquidateBorrowedTokens(address,address,uint256,address,address,uint256,uint256)"(liquidator?: PromiseOrValue<string> | null, borrower?: PromiseOrValue<string> | null, repayAmount?: null, vTokenBorrowed?: null, vTokenCollateral?: PromiseOrValue<string> | null, seizeTokensForTreasury?: null, seizeTokensForLiquidator?: null): LiquidateBorrowedTokensEventFilter;
        LiquidateBorrowedTokens(liquidator?: PromiseOrValue<string> | null, borrower?: PromiseOrValue<string> | null, repayAmount?: null, vTokenBorrowed?: null, vTokenCollateral?: PromiseOrValue<string> | null, seizeTokensForTreasury?: null, seizeTokensForLiquidator?: null): LiquidateBorrowedTokensEventFilter;
        "LiquidationRestricted(address)"(borrower?: PromiseOrValue<string> | null): LiquidationRestrictedEventFilter;
        LiquidationRestricted(borrower?: PromiseOrValue<string> | null): LiquidationRestrictedEventFilter;
        "LiquidationRestrictionsDisabled(address)"(borrower?: PromiseOrValue<string> | null): LiquidationRestrictionsDisabledEventFilter;
        LiquidationRestrictionsDisabled(borrower?: PromiseOrValue<string> | null): LiquidationRestrictionsDisabledEventFilter;
        "NewAccessControlManager(address,address)"(oldAccessControlManager?: null, newAccessControlManager?: null): NewAccessControlManagerEventFilter;
        NewAccessControlManager(oldAccessControlManager?: null, newAccessControlManager?: null): NewAccessControlManagerEventFilter;
        "NewLiquidationTreasuryPercent(uint256,uint256)"(oldPercent?: null, newPercent?: null): NewLiquidationTreasuryPercentEventFilter;
        NewLiquidationTreasuryPercent(oldPercent?: null, newPercent?: null): NewLiquidationTreasuryPercentEventFilter;
        "NewMinLiquidatableVAI(uint256,uint256)"(oldMinLiquidatableVAI?: null, newMinLiquidatableVAI?: null): NewMinLiquidatableVAIEventFilter;
        NewMinLiquidatableVAI(oldMinLiquidatableVAI?: null, newMinLiquidatableVAI?: null): NewMinLiquidatableVAIEventFilter;
        "NewPendingRedeemChunkLength(uint256,uint256)"(oldPendingRedeemChunkLength?: null, newPendingRedeemChunkLength?: null): NewPendingRedeemChunkLengthEventFilter;
        NewPendingRedeemChunkLength(oldPendingRedeemChunkLength?: null, newPendingRedeemChunkLength?: null): NewPendingRedeemChunkLengthEventFilter;
        "NewProtocolShareReserve(address,address)"(oldProtocolShareReserve?: PromiseOrValue<string> | null, newProtocolShareReserves?: PromiseOrValue<string> | null): NewProtocolShareReserveEventFilter;
        NewProtocolShareReserve(oldProtocolShareReserve?: PromiseOrValue<string> | null, newProtocolShareReserves?: PromiseOrValue<string> | null): NewProtocolShareReserveEventFilter;
        "OwnershipTransferStarted(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferStartedEventFilter;
        OwnershipTransferStarted(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferStartedEventFilter;
        "OwnershipTransferred(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        "ProtocolLiquidationIncentiveTransferred(address,address,uint256)"(sender?: PromiseOrValue<string> | null, token?: PromiseOrValue<string> | null, reducedAmount?: null): ProtocolLiquidationIncentiveTransferredEventFilter;
        ProtocolLiquidationIncentiveTransferred(sender?: PromiseOrValue<string> | null, token?: PromiseOrValue<string> | null, reducedAmount?: null): ProtocolLiquidationIncentiveTransferredEventFilter;
    };
    estimateGas: {
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        accessControlManager(overrides?: CallOverrides): Promise<BigNumber>;
        addToAllowlist(borrower: PromiseOrValue<string>, liquidator: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        allowedLiquidatorsByAccount(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        comptroller(overrides?: CallOverrides): Promise<BigNumber>;
        forceVAILiquidate(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(treasuryPercentMantissa_: PromiseOrValue<BigNumberish>, accessControlManager_: PromiseOrValue<string>, protocolShareReserve_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        liquidateBorrow(vToken: PromiseOrValue<string>, borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, vTokenCollateral: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        liquidationRestricted(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        minLiquidatableVAI(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        pauseForceVAILiquidate(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        pendingOwner(overrides?: CallOverrides): Promise<BigNumber>;
        pendingRedeem(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        protocolShareReserve(overrides?: CallOverrides): Promise<BigNumber>;
        reduceReserves(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeFromAllowlist(borrower: PromiseOrValue<string>, liquidator: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        restrictLiquidation(borrower: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        resumeForceVAILiquidate(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setAccessControlManager(accessControlManager_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setMinLiquidatableVAI(minLiquidatableVAI_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setPendingRedeemChunkLength(newLength_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setProtocolShareReserve(protocolShareReserve_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setTreasuryPercent(newTreasuryPercentMantissa: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        treasuryPercentMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        unrestrictLiquidation(borrower: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        vBnb(overrides?: CallOverrides): Promise<BigNumber>;
        vaiController(overrides?: CallOverrides): Promise<BigNumber>;
        wBNB(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        accessControlManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        addToAllowlist(borrower: PromiseOrValue<string>, liquidator: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        allowedLiquidatorsByAccount(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        comptroller(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        forceVAILiquidate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(treasuryPercentMantissa_: PromiseOrValue<BigNumberish>, accessControlManager_: PromiseOrValue<string>, protocolShareReserve_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        liquidateBorrow(vToken: PromiseOrValue<string>, borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, vTokenCollateral: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        liquidationRestricted(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        minLiquidatableVAI(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pauseForceVAILiquidate(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        pendingOwner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingRedeem(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        protocolShareReserve(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        reduceReserves(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeFromAllowlist(borrower: PromiseOrValue<string>, liquidator: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        restrictLiquidation(borrower: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        resumeForceVAILiquidate(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setAccessControlManager(accessControlManager_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setMinLiquidatableVAI(minLiquidatableVAI_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setPendingRedeemChunkLength(newLength_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setProtocolShareReserve(protocolShareReserve_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setTreasuryPercent(newTreasuryPercentMantissa: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        treasuryPercentMantissa(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        unrestrictLiquidation(borrower: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        vBnb(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        vaiController(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        wBNB(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
