import type { BaseContract, BigNumber, BigNumberish, 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 PoolLens {
    type PoolAssetStruct = {
        cToken: string;
        underlyingToken: string;
        underlyingName: string;
        underlyingSymbol: string;
        underlyingDecimals: BigNumberish;
        underlyingBalance: BigNumberish;
        supplyRatePerBlock: BigNumberish;
        borrowRatePerBlock: BigNumberish;
        totalSupply: BigNumberish;
        totalBorrow: BigNumberish;
        supplyBalance: BigNumberish;
        borrowBalance: BigNumberish;
        liquidity: BigNumberish;
        membership: boolean;
        exchangeRate: BigNumberish;
        underlyingPrice: BigNumberish;
        oracle: string;
        collateralFactor: BigNumberish;
        reserveFactor: BigNumberish;
        adminFee: BigNumberish;
        ionicFee: BigNumberish;
        borrowGuardianPaused: boolean;
        mintGuardianPaused: boolean;
    };
    type PoolAssetStructOutput = [
        string,
        string,
        string,
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        boolean,
        BigNumber,
        BigNumber,
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        boolean,
        boolean
    ] & {
        cToken: string;
        underlyingToken: string;
        underlyingName: string;
        underlyingSymbol: string;
        underlyingDecimals: BigNumber;
        underlyingBalance: BigNumber;
        supplyRatePerBlock: BigNumber;
        borrowRatePerBlock: BigNumber;
        totalSupply: BigNumber;
        totalBorrow: BigNumber;
        supplyBalance: BigNumber;
        borrowBalance: BigNumber;
        liquidity: BigNumber;
        membership: boolean;
        exchangeRate: BigNumber;
        underlyingPrice: BigNumber;
        oracle: string;
        collateralFactor: BigNumber;
        reserveFactor: BigNumber;
        adminFee: BigNumber;
        ionicFee: BigNumber;
        borrowGuardianPaused: boolean;
        mintGuardianPaused: boolean;
    };
    type IonicPoolDataStruct = {
        totalSupply: BigNumberish;
        totalBorrow: BigNumberish;
        underlyingTokens: string[];
        underlyingSymbols: string[];
        whitelistedAdmin: boolean;
    };
    type IonicPoolDataStructOutput = [
        BigNumber,
        BigNumber,
        string[],
        string[],
        boolean
    ] & {
        totalSupply: BigNumber;
        totalBorrow: BigNumber;
        underlyingTokens: string[];
        underlyingSymbols: string[];
        whitelistedAdmin: boolean;
    };
}
export declare namespace PoolDirectory {
    type PoolStruct = {
        name: string;
        creator: string;
        comptroller: string;
        blockPosted: BigNumberish;
        timestampPosted: BigNumberish;
    };
    type PoolStructOutput = [
        string,
        string,
        string,
        BigNumber,
        BigNumber
    ] & {
        name: string;
        creator: string;
        comptroller: string;
        blockPosted: BigNumber;
        timestampPosted: BigNumber;
    };
}
export interface PoolLensInterface extends utils.Interface {
    functions: {
        "directory()": FunctionFragment;
        "getBorrowCapsDataForAsset(address)": FunctionFragment;
        "getBorrowCapsForAsset(address)": FunctionFragment;
        "getHealthFactor(address,address)": FunctionFragment;
        "getPoolAssetsByUser(address,address)": FunctionFragment;
        "getPoolAssetsWithData(address)": FunctionFragment;
        "getPoolSummary(address)": FunctionFragment;
        "getPoolsByAccountWithData(address)": FunctionFragment;
        "getPoolsOIonicrWithData(address)": FunctionFragment;
        "getPublicPoolsByVerificationWithData(bool)": FunctionFragment;
        "getPublicPoolsWithData()": FunctionFragment;
        "getSupplyCapsDataForPool(address)": FunctionFragment;
        "getSupplyCapsForPool(address)": FunctionFragment;
        "getWhitelistedPoolsByAccount(address)": FunctionFragment;
        "getWhitelistedPoolsByAccountWithData(address)": FunctionFragment;
        "initialize(address,string,string,address[],string[],string[],string[],string[],string[])": FunctionFragment;
        "name()": FunctionFragment;
        "symbol()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "directory" | "getBorrowCapsDataForAsset" | "getBorrowCapsForAsset" | "getHealthFactor" | "getPoolAssetsByUser" | "getPoolAssetsWithData" | "getPoolSummary" | "getPoolsByAccountWithData" | "getPoolsOIonicrWithData" | "getPublicPoolsByVerificationWithData" | "getPublicPoolsWithData" | "getSupplyCapsDataForPool" | "getSupplyCapsForPool" | "getWhitelistedPoolsByAccount" | "getWhitelistedPoolsByAccountWithData" | "initialize" | "name" | "symbol"): FunctionFragment;
    encodeFunctionData(functionFragment: "directory", values?: undefined): string;
    encodeFunctionData(functionFragment: "getBorrowCapsDataForAsset", values: [string]): string;
    encodeFunctionData(functionFragment: "getBorrowCapsForAsset", values: [string]): string;
    encodeFunctionData(functionFragment: "getHealthFactor", values: [string, string]): string;
    encodeFunctionData(functionFragment: "getPoolAssetsByUser", values: [string, string]): string;
    encodeFunctionData(functionFragment: "getPoolAssetsWithData", values: [string]): string;
    encodeFunctionData(functionFragment: "getPoolSummary", values: [string]): string;
    encodeFunctionData(functionFragment: "getPoolsByAccountWithData", values: [string]): string;
    encodeFunctionData(functionFragment: "getPoolsOIonicrWithData", values: [string]): string;
    encodeFunctionData(functionFragment: "getPublicPoolsByVerificationWithData", values: [boolean]): string;
    encodeFunctionData(functionFragment: "getPublicPoolsWithData", values?: undefined): string;
    encodeFunctionData(functionFragment: "getSupplyCapsDataForPool", values: [string]): string;
    encodeFunctionData(functionFragment: "getSupplyCapsForPool", values: [string]): string;
    encodeFunctionData(functionFragment: "getWhitelistedPoolsByAccount", values: [string]): string;
    encodeFunctionData(functionFragment: "getWhitelistedPoolsByAccountWithData", values: [string]): string;
    encodeFunctionData(functionFragment: "initialize", values: [
        string,
        string,
        string,
        string[],
        string[],
        string[],
        string[],
        string[],
        string[]
    ]): string;
    encodeFunctionData(functionFragment: "name", values?: undefined): string;
    encodeFunctionData(functionFragment: "symbol", values?: undefined): string;
    decodeFunctionResult(functionFragment: "directory", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getBorrowCapsDataForAsset", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getBorrowCapsForAsset", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getHealthFactor", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPoolAssetsByUser", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPoolAssetsWithData", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPoolSummary", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPoolsByAccountWithData", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPoolsOIonicrWithData", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPublicPoolsByVerificationWithData", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPublicPoolsWithData", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getSupplyCapsDataForPool", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getSupplyCapsForPool", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getWhitelistedPoolsByAccount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getWhitelistedPoolsByAccountWithData", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "symbol", 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 PoolLens extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: PoolLensInterface;
    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]>;
        getBorrowCapsDataForAsset(asset: string, overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            boolean[],
            BigNumber,
            BigNumber
        ] & {
            collateral: string[];
            borrowCapsPerCollateral: BigNumber[];
            collateralBlacklisted: boolean[];
            totalBorrowCap: BigNumber;
            nonWhitelistedTotalBorrows: BigNumber;
        }>;
        getBorrowCapsForAsset(asset: string, overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            boolean[],
            BigNumber
        ] & {
            collateral: string[];
            borrowCapsPerCollateral: BigNumber[];
            collateralBlacklisted: boolean[];
            totalBorrowCap: BigNumber;
        }>;
        getHealthFactor(user: string, pool: string, overrides?: CallOverrides): Promise<[BigNumber]>;
        getPoolAssetsByUser(comptroller: string, user: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getPoolAssetsWithData(comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getPoolSummary(comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getPoolsByAccountWithData(account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getPoolsOIonicrWithData(user: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getPublicPoolsByVerificationWithData(whitelistedAdmin: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getPublicPoolsWithData(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getSupplyCapsDataForPool(comptroller: string, overrides?: CallOverrides): Promise<[string[], BigNumber[], BigNumber[]]>;
        getSupplyCapsForPool(comptroller: string, overrides?: CallOverrides): Promise<[string[], BigNumber[]]>;
        getWhitelistedPoolsByAccount(account: string, overrides?: CallOverrides): Promise<[BigNumber[], PoolDirectory.PoolStructOutput[]]>;
        getWhitelistedPoolsByAccountWithData(account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        initialize(_directory: string, _name: string, _symbol: string, _hardcodedAddresses: string[], _hardcodedNames: string[], _hardcodedSymbols: string[], _uniswapLPTokenNames: string[], _uniswapLPTokenSymbols: string[], _uniswapLPTokenDisplayNames: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        name(overrides?: CallOverrides): Promise<[string]>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
    };
    directory(overrides?: CallOverrides): Promise<string>;
    getBorrowCapsDataForAsset(asset: string, overrides?: CallOverrides): Promise<[
        string[],
        BigNumber[],
        boolean[],
        BigNumber,
        BigNumber
    ] & {
        collateral: string[];
        borrowCapsPerCollateral: BigNumber[];
        collateralBlacklisted: boolean[];
        totalBorrowCap: BigNumber;
        nonWhitelistedTotalBorrows: BigNumber;
    }>;
    getBorrowCapsForAsset(asset: string, overrides?: CallOverrides): Promise<[
        string[],
        BigNumber[],
        boolean[],
        BigNumber
    ] & {
        collateral: string[];
        borrowCapsPerCollateral: BigNumber[];
        collateralBlacklisted: boolean[];
        totalBorrowCap: BigNumber;
    }>;
    getHealthFactor(user: string, pool: string, overrides?: CallOverrides): Promise<BigNumber>;
    getPoolAssetsByUser(comptroller: string, user: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getPoolAssetsWithData(comptroller: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getPoolSummary(comptroller: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getPoolsByAccountWithData(account: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getPoolsOIonicrWithData(user: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getPublicPoolsByVerificationWithData(whitelistedAdmin: boolean, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getPublicPoolsWithData(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getSupplyCapsDataForPool(comptroller: string, overrides?: CallOverrides): Promise<[string[], BigNumber[], BigNumber[]]>;
    getSupplyCapsForPool(comptroller: string, overrides?: CallOverrides): Promise<[string[], BigNumber[]]>;
    getWhitelistedPoolsByAccount(account: string, overrides?: CallOverrides): Promise<[BigNumber[], PoolDirectory.PoolStructOutput[]]>;
    getWhitelistedPoolsByAccountWithData(account: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    initialize(_directory: string, _name: string, _symbol: string, _hardcodedAddresses: string[], _hardcodedNames: string[], _hardcodedSymbols: string[], _uniswapLPTokenNames: string[], _uniswapLPTokenSymbols: string[], _uniswapLPTokenDisplayNames: string[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    name(overrides?: CallOverrides): Promise<string>;
    symbol(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        directory(overrides?: CallOverrides): Promise<string>;
        getBorrowCapsDataForAsset(asset: string, overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            boolean[],
            BigNumber,
            BigNumber
        ] & {
            collateral: string[];
            borrowCapsPerCollateral: BigNumber[];
            collateralBlacklisted: boolean[];
            totalBorrowCap: BigNumber;
            nonWhitelistedTotalBorrows: BigNumber;
        }>;
        getBorrowCapsForAsset(asset: string, overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            boolean[],
            BigNumber
        ] & {
            collateral: string[];
            borrowCapsPerCollateral: BigNumber[];
            collateralBlacklisted: boolean[];
            totalBorrowCap: BigNumber;
        }>;
        getHealthFactor(user: string, pool: string, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolAssetsByUser(comptroller: string, user: string, overrides?: CallOverrides): Promise<PoolLens.PoolAssetStructOutput[]>;
        getPoolAssetsWithData(comptroller: string, overrides?: CallOverrides): Promise<PoolLens.PoolAssetStructOutput[]>;
        getPoolSummary(comptroller: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, string[], string[], boolean]>;
        getPoolsByAccountWithData(account: string, overrides?: CallOverrides): Promise<[
            BigNumber[],
            PoolDirectory.PoolStructOutput[],
            PoolLens.IonicPoolDataStructOutput[],
            boolean[]
        ]>;
        getPoolsOIonicrWithData(user: string, overrides?: CallOverrides): Promise<[
            BigNumber[],
            PoolDirectory.PoolStructOutput[],
            PoolLens.IonicPoolDataStructOutput[],
            boolean[]
        ]>;
        getPublicPoolsByVerificationWithData(whitelistedAdmin: boolean, overrides?: CallOverrides): Promise<[
            BigNumber[],
            PoolDirectory.PoolStructOutput[],
            PoolLens.IonicPoolDataStructOutput[],
            boolean[]
        ]>;
        getPublicPoolsWithData(overrides?: CallOverrides): Promise<[
            BigNumber[],
            PoolDirectory.PoolStructOutput[],
            PoolLens.IonicPoolDataStructOutput[],
            boolean[]
        ]>;
        getSupplyCapsDataForPool(comptroller: string, overrides?: CallOverrides): Promise<[string[], BigNumber[], BigNumber[]]>;
        getSupplyCapsForPool(comptroller: string, overrides?: CallOverrides): Promise<[string[], BigNumber[]]>;
        getWhitelistedPoolsByAccount(account: string, overrides?: CallOverrides): Promise<[BigNumber[], PoolDirectory.PoolStructOutput[]]>;
        getWhitelistedPoolsByAccountWithData(account: string, overrides?: CallOverrides): Promise<[
            BigNumber[],
            PoolDirectory.PoolStructOutput[],
            PoolLens.IonicPoolDataStructOutput[],
            boolean[]
        ]>;
        initialize(_directory: string, _name: string, _symbol: string, _hardcodedAddresses: string[], _hardcodedNames: string[], _hardcodedSymbols: string[], _uniswapLPTokenNames: string[], _uniswapLPTokenSymbols: string[], _uniswapLPTokenDisplayNames: string[], overrides?: CallOverrides): Promise<void>;
        name(overrides?: CallOverrides): Promise<string>;
        symbol(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "Initialized(uint8)"(version?: null): InitializedEventFilter;
        Initialized(version?: null): InitializedEventFilter;
    };
    estimateGas: {
        directory(overrides?: CallOverrides): Promise<BigNumber>;
        getBorrowCapsDataForAsset(asset: string, overrides?: CallOverrides): Promise<BigNumber>;
        getBorrowCapsForAsset(asset: string, overrides?: CallOverrides): Promise<BigNumber>;
        getHealthFactor(user: string, pool: string, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolAssetsByUser(comptroller: string, user: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getPoolAssetsWithData(comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getPoolSummary(comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getPoolsByAccountWithData(account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getPoolsOIonicrWithData(user: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getPublicPoolsByVerificationWithData(whitelistedAdmin: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getPublicPoolsWithData(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getSupplyCapsDataForPool(comptroller: string, overrides?: CallOverrides): Promise<BigNumber>;
        getSupplyCapsForPool(comptroller: string, overrides?: CallOverrides): Promise<BigNumber>;
        getWhitelistedPoolsByAccount(account: string, overrides?: CallOverrides): Promise<BigNumber>;
        getWhitelistedPoolsByAccountWithData(account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        initialize(_directory: string, _name: string, _symbol: string, _hardcodedAddresses: string[], _hardcodedNames: string[], _hardcodedSymbols: string[], _uniswapLPTokenNames: string[], _uniswapLPTokenSymbols: string[], _uniswapLPTokenDisplayNames: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        directory(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getBorrowCapsDataForAsset(asset: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getBorrowCapsForAsset(asset: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getHealthFactor(user: string, pool: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPoolAssetsByUser(comptroller: string, user: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getPoolAssetsWithData(comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getPoolSummary(comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getPoolsByAccountWithData(account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getPoolsOIonicrWithData(user: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getPublicPoolsByVerificationWithData(whitelistedAdmin: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getPublicPoolsWithData(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getSupplyCapsDataForPool(comptroller: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getSupplyCapsForPool(comptroller: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getWhitelistedPoolsByAccount(account: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getWhitelistedPoolsByAccountWithData(account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        initialize(_directory: string, _name: string, _symbol: string, _hardcodedAddresses: string[], _hardcodedNames: string[], _hardcodedSymbols: string[], _uniswapLPTokenNames: string[], _uniswapLPTokenSymbols: string[], _uniswapLPTokenDisplayNames: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
