import type { BaseContract, BigNumber, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from 'ethers';
import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common';
export interface BProtocolCompoundComptrollerInterface extends utils.Interface {
    functions: {
        'b2c(address)': FunctionFragment;
        'c2b(address)': FunctionFragment;
        'claimComp(address,address[])': FunctionFragment;
        'claimComp(address[],address[],bool,bool)': FunctionFragment;
        'claimComp(address)': FunctionFragment;
        'comptroller()': FunctionFragment;
        'enterMarket(address)': FunctionFragment;
        'enterMarketOnAvatar(address,address)': FunctionFragment;
        'enterMarkets(address[])': FunctionFragment;
        'enterMarketsOnAvatar(address,address[])': FunctionFragment;
        'exitMarket(address)': FunctionFragment;
        'exitMarketOnAvatar(address,address)': FunctionFragment;
        'getAccountLiquidity(address)': FunctionFragment;
        'getAllMarkets()': FunctionFragment;
        'isBToken(address)': FunctionFragment;
        'newBToken(address)': FunctionFragment;
        'oracle()': FunctionFragment;
        'registry()': FunctionFragment;
        'setRegistry(address)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'b2c' | 'c2b' | 'claimComp(address,address[])' | 'claimComp(address[],address[],bool,bool)' | 'claimComp(address)' | 'comptroller' | 'enterMarket' | 'enterMarketOnAvatar' | 'enterMarkets' | 'enterMarketsOnAvatar' | 'exitMarket' | 'exitMarketOnAvatar' | 'getAccountLiquidity' | 'getAllMarkets' | 'isBToken' | 'newBToken' | 'oracle' | 'registry' | 'setRegistry'): FunctionFragment;
    encodeFunctionData(functionFragment: 'b2c', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'c2b', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'claimComp(address,address[])', values: [PromiseOrValue<string>, PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'claimComp(address[],address[],bool,bool)', values: [PromiseOrValue<string>[], PromiseOrValue<string>[], PromiseOrValue<boolean>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'claimComp(address)', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'comptroller', values?: undefined): string;
    encodeFunctionData(functionFragment: 'enterMarket', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'enterMarketOnAvatar', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'enterMarkets', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'enterMarketsOnAvatar', values: [PromiseOrValue<string>, PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'exitMarket', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'exitMarketOnAvatar', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getAccountLiquidity', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getAllMarkets', values?: undefined): string;
    encodeFunctionData(functionFragment: 'isBToken', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'newBToken', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'oracle', values?: undefined): string;
    encodeFunctionData(functionFragment: 'registry', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setRegistry', values: [PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: 'b2c', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'c2b', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimComp(address,address[])', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimComp(address[],address[],bool,bool)', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimComp(address)', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'comptroller', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'enterMarket', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'enterMarketOnAvatar', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'enterMarkets', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'enterMarketsOnAvatar', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'exitMarket', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'exitMarketOnAvatar', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getAccountLiquidity', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getAllMarkets', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isBToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'newBToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'oracle', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'registry', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setRegistry', data: BytesLike): Result;
    events: {
        'NewBToken(address,address)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'NewBToken'): EventFragment;
}
export interface NewBTokenEventObject {
    cToken: string;
    bToken: string;
}
export declare type NewBTokenEvent = TypedEvent<[string, string], NewBTokenEventObject>;
export declare type NewBTokenEventFilter = TypedEventFilter<NewBTokenEvent>;
export interface BProtocolCompoundComptroller extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: BProtocolCompoundComptrollerInterface;
    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: {
        b2c(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        c2b(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        'claimComp(address,address[])'(holder: PromiseOrValue<string>, bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'claimComp(address[],address[],bool,bool)'(holders: PromiseOrValue<string>[], bTokens: PromiseOrValue<string>[], borrowers: PromiseOrValue<boolean>, suppliers: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'claimComp(address)'(holder: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        comptroller(overrides?: CallOverrides): Promise<[string]>;
        enterMarket(bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        enterMarketOnAvatar(avatar: PromiseOrValue<string>, bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        enterMarkets(bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        enterMarketsOnAvatar(avatar: PromiseOrValue<string>, bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        exitMarket(bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        exitMarketOnAvatar(avatar: PromiseOrValue<string>, bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getAccountLiquidity(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            err: BigNumber;
            liquidity: BigNumber;
            shortFall: BigNumber;
        }>;
        getAllMarkets(overrides?: CallOverrides): Promise<[string[]]>;
        isBToken(bToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        newBToken(cToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        oracle(overrides?: CallOverrides): Promise<[string]>;
        registry(overrides?: CallOverrides): Promise<[string]>;
        setRegistry(_registry: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    b2c(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    c2b(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    'claimComp(address,address[])'(holder: PromiseOrValue<string>, bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'claimComp(address[],address[],bool,bool)'(holders: PromiseOrValue<string>[], bTokens: PromiseOrValue<string>[], borrowers: PromiseOrValue<boolean>, suppliers: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'claimComp(address)'(holder: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    comptroller(overrides?: CallOverrides): Promise<string>;
    enterMarket(bToken: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    enterMarketOnAvatar(avatar: PromiseOrValue<string>, bToken: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    enterMarkets(bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    enterMarketsOnAvatar(avatar: PromiseOrValue<string>, bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    exitMarket(bToken: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    exitMarketOnAvatar(avatar: PromiseOrValue<string>, bToken: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getAccountLiquidity(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        err: BigNumber;
        liquidity: BigNumber;
        shortFall: BigNumber;
    }>;
    getAllMarkets(overrides?: CallOverrides): Promise<string[]>;
    isBToken(bToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    newBToken(cToken: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    oracle(overrides?: CallOverrides): Promise<string>;
    registry(overrides?: CallOverrides): Promise<string>;
    setRegistry(_registry: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        b2c(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        c2b(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        'claimComp(address,address[])'(holder: PromiseOrValue<string>, bTokens: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        'claimComp(address[],address[],bool,bool)'(holders: PromiseOrValue<string>[], bTokens: PromiseOrValue<string>[], borrowers: PromiseOrValue<boolean>, suppliers: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        'claimComp(address)'(holder: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        comptroller(overrides?: CallOverrides): Promise<string>;
        enterMarket(bToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        enterMarketOnAvatar(avatar: PromiseOrValue<string>, bToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        enterMarkets(bTokens: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<BigNumber[]>;
        enterMarketsOnAvatar(avatar: PromiseOrValue<string>, bTokens: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<BigNumber[]>;
        exitMarket(bToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        exitMarketOnAvatar(avatar: PromiseOrValue<string>, bToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getAccountLiquidity(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            err: BigNumber;
            liquidity: BigNumber;
            shortFall: BigNumber;
        }>;
        getAllMarkets(overrides?: CallOverrides): Promise<string[]>;
        isBToken(bToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        newBToken(cToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        oracle(overrides?: CallOverrides): Promise<string>;
        registry(overrides?: CallOverrides): Promise<string>;
        setRegistry(_registry: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        'NewBToken(address,address)'(cToken?: PromiseOrValue<string> | null, bToken?: null): NewBTokenEventFilter;
        NewBToken(cToken?: PromiseOrValue<string> | null, bToken?: null): NewBTokenEventFilter;
    };
    estimateGas: {
        b2c(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        c2b(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        'claimComp(address,address[])'(holder: PromiseOrValue<string>, bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'claimComp(address[],address[],bool,bool)'(holders: PromiseOrValue<string>[], bTokens: PromiseOrValue<string>[], borrowers: PromiseOrValue<boolean>, suppliers: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'claimComp(address)'(holder: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        comptroller(overrides?: CallOverrides): Promise<BigNumber>;
        enterMarket(bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        enterMarketOnAvatar(avatar: PromiseOrValue<string>, bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        enterMarkets(bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        enterMarketsOnAvatar(avatar: PromiseOrValue<string>, bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        exitMarket(bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        exitMarketOnAvatar(avatar: PromiseOrValue<string>, bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getAccountLiquidity(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getAllMarkets(overrides?: CallOverrides): Promise<BigNumber>;
        isBToken(bToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        newBToken(cToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        oracle(overrides?: CallOverrides): Promise<BigNumber>;
        registry(overrides?: CallOverrides): Promise<BigNumber>;
        setRegistry(_registry: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        b2c(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        c2b(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        'claimComp(address,address[])'(holder: PromiseOrValue<string>, bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'claimComp(address[],address[],bool,bool)'(holders: PromiseOrValue<string>[], bTokens: PromiseOrValue<string>[], borrowers: PromiseOrValue<boolean>, suppliers: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'claimComp(address)'(holder: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        comptroller(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        enterMarket(bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        enterMarketOnAvatar(avatar: PromiseOrValue<string>, bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        enterMarkets(bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        enterMarketsOnAvatar(avatar: PromiseOrValue<string>, bTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        exitMarket(bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        exitMarketOnAvatar(avatar: PromiseOrValue<string>, bToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getAccountLiquidity(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAllMarkets(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isBToken(bToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        newBToken(cToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        oracle(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        registry(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setRegistry(_registry: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
