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 } from "./common";
export declare namespace PoolLensSecondary {
    type CTokenOwnershipStruct = {
        cToken: string;
        admin: string;
        adminHasRights: boolean;
        ionicAdminHasRights: boolean;
    };
    type CTokenOwnershipStructOutput = [
        string,
        string,
        boolean,
        boolean
    ] & {
        cToken: string;
        admin: string;
        adminHasRights: boolean;
        ionicAdminHasRights: boolean;
    };
}
export interface PoolLensSecondaryInterface extends utils.Interface {
    functions: {
        "directory()": FunctionFragment;
        "getFlywheelsToClaim(address)": FunctionFragment;
        "getMaxBorrow(address,address)": FunctionFragment;
        "getMaxRedeem(address,address)": FunctionFragment;
        "getPoolOwnership(address)": FunctionFragment;
        "getRewardSpeedsByPool(address)": FunctionFragment;
        "getRewardSpeedsByPools(address[])": FunctionFragment;
        "getRewardsDistributorsBySupplier(address)": FunctionFragment;
        "getUnclaimedRewardsByDistributors(address,address[])": FunctionFragment;
        "initialize(address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "directory" | "getFlywheelsToClaim" | "getMaxBorrow" | "getMaxRedeem" | "getPoolOwnership" | "getRewardSpeedsByPool" | "getRewardSpeedsByPools" | "getRewardsDistributorsBySupplier" | "getUnclaimedRewardsByDistributors" | "initialize"): FunctionFragment;
    encodeFunctionData(functionFragment: "directory", values?: undefined): string;
    encodeFunctionData(functionFragment: "getFlywheelsToClaim", values: [string]): string;
    encodeFunctionData(functionFragment: "getMaxBorrow", values: [string, string]): string;
    encodeFunctionData(functionFragment: "getMaxRedeem", values: [string, string]): string;
    encodeFunctionData(functionFragment: "getPoolOwnership", values: [string]): string;
    encodeFunctionData(functionFragment: "getRewardSpeedsByPool", values: [string]): string;
    encodeFunctionData(functionFragment: "getRewardSpeedsByPools", values: [string[]]): string;
    encodeFunctionData(functionFragment: "getRewardsDistributorsBySupplier", values: [string]): string;
    encodeFunctionData(functionFragment: "getUnclaimedRewardsByDistributors", values: [string, string[]]): string;
    encodeFunctionData(functionFragment: "initialize", values: [string]): string;
    decodeFunctionResult(functionFragment: "directory", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getFlywheelsToClaim", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getMaxBorrow", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getMaxRedeem", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPoolOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRewardSpeedsByPool", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRewardSpeedsByPools", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRewardsDistributorsBySupplier", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getUnclaimedRewardsByDistributors", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    events: {
        "Initialized(uint8)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
}
export interface InitializedEventObject {
    version: number;
}
export type InitializedEvent = TypedEvent<[number], InitializedEventObject>;
export type InitializedEventFilter = TypedEventFilter<InitializedEvent>;
export interface PoolLensSecondary extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: PoolLensSecondaryInterface;
    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: {
        directory(overrides?: CallOverrides): Promise<[string]>;
        getFlywheelsToClaim(user: string, overrides?: CallOverrides): Promise<[BigNumber[], string[], string[][]]>;
        getMaxBorrow(account: string, cTokenModify: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getMaxRedeem(account: string, cTokenModify: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getPoolOwnership(comptroller: string, overrides?: CallOverrides): Promise<[
            string,
            boolean,
            boolean,
            PoolLensSecondary.CTokenOwnershipStructOutput[]
        ]>;
        getRewardSpeedsByPool(comptroller: string, overrides?: CallOverrides): Promise<[string[], string[], string[], BigNumber[][], BigNumber[][]]>;
        getRewardSpeedsByPools(comptrollers: string[], overrides?: CallOverrides): Promise<[
            string[][],
            string[][],
            string[][],
            BigNumber[][][],
            BigNumber[][][]
        ]>;
        getRewardsDistributorsBySupplier(supplier: string, overrides?: CallOverrides): Promise<[BigNumber[], string[], string[][]]>;
        getUnclaimedRewardsByDistributors(holder: string, distributors: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        initialize(_directory: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    directory(overrides?: CallOverrides): Promise<string>;
    getFlywheelsToClaim(user: string, overrides?: CallOverrides): Promise<[BigNumber[], string[], string[][]]>;
    getMaxBorrow(account: string, cTokenModify: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getMaxRedeem(account: string, cTokenModify: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getPoolOwnership(comptroller: string, overrides?: CallOverrides): Promise<[
        string,
        boolean,
        boolean,
        PoolLensSecondary.CTokenOwnershipStructOutput[]
    ]>;
    getRewardSpeedsByPool(comptroller: string, overrides?: CallOverrides): Promise<[string[], string[], string[], BigNumber[][], BigNumber[][]]>;
    getRewardSpeedsByPools(comptrollers: string[], overrides?: CallOverrides): Promise<[
        string[][],
        string[][],
        string[][],
        BigNumber[][][],
        BigNumber[][][]
    ]>;
    getRewardsDistributorsBySupplier(supplier: string, overrides?: CallOverrides): Promise<[BigNumber[], string[], string[][]]>;
    getUnclaimedRewardsByDistributors(holder: string, distributors: string[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    initialize(_directory: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        directory(overrides?: CallOverrides): Promise<string>;
        getFlywheelsToClaim(user: string, overrides?: CallOverrides): Promise<[BigNumber[], string[], string[][]]>;
        getMaxBorrow(account: string, cTokenModify: string, overrides?: CallOverrides): Promise<BigNumber>;
        getMaxRedeem(account: string, cTokenModify: string, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolOwnership(comptroller: string, overrides?: CallOverrides): Promise<[
            string,
            boolean,
            boolean,
            PoolLensSecondary.CTokenOwnershipStructOutput[]
        ]>;
        getRewardSpeedsByPool(comptroller: string, overrides?: CallOverrides): Promise<[string[], string[], string[], BigNumber[][], BigNumber[][]]>;
        getRewardSpeedsByPools(comptrollers: string[], overrides?: CallOverrides): Promise<[
            string[][],
            string[][],
            string[][],
            BigNumber[][][],
            BigNumber[][][]
        ]>;
        getRewardsDistributorsBySupplier(supplier: string, overrides?: CallOverrides): Promise<[BigNumber[], string[], string[][]]>;
        getUnclaimedRewardsByDistributors(holder: string, distributors: string[], overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            string[][],
            [
                BigNumber,
                BigNumber
            ][][],
            BigNumber[]
        ]>;
        initialize(_directory: string, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "Initialized(uint8)"(version?: null): InitializedEventFilter;
        Initialized(version?: null): InitializedEventFilter;
    };
    estimateGas: {
        directory(overrides?: CallOverrides): Promise<BigNumber>;
        getFlywheelsToClaim(user: string, overrides?: CallOverrides): Promise<BigNumber>;
        getMaxBorrow(account: string, cTokenModify: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getMaxRedeem(account: string, cTokenModify: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getPoolOwnership(comptroller: string, overrides?: CallOverrides): Promise<BigNumber>;
        getRewardSpeedsByPool(comptroller: string, overrides?: CallOverrides): Promise<BigNumber>;
        getRewardSpeedsByPools(comptrollers: string[], overrides?: CallOverrides): Promise<BigNumber>;
        getRewardsDistributorsBySupplier(supplier: string, overrides?: CallOverrides): Promise<BigNumber>;
        getUnclaimedRewardsByDistributors(holder: string, distributors: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        initialize(_directory: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        directory(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getFlywheelsToClaim(user: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getMaxBorrow(account: string, cTokenModify: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getMaxRedeem(account: string, cTokenModify: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getPoolOwnership(comptroller: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRewardSpeedsByPool(comptroller: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRewardSpeedsByPools(comptrollers: string[], overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRewardsDistributorsBySupplier(supplier: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getUnclaimedRewardsByDistributors(holder: string, distributors: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        initialize(_directory: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}
