import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common";
export declare namespace IonicFlywheelLensRouter {
    type RewardsInfoStruct = {
        rewardSpeedPerSecondPerToken: BigNumberish;
        rewardTokenPrice: BigNumberish;
        formattedAPR: BigNumberish;
        flywheel: string;
        rewardToken: string;
    };
    type RewardsInfoStructOutput = [
        BigNumber,
        BigNumber,
        BigNumber,
        string,
        string
    ] & {
        rewardSpeedPerSecondPerToken: BigNumber;
        rewardTokenPrice: BigNumber;
        formattedAPR: BigNumber;
        flywheel: string;
        rewardToken: string;
    };
    type MarketRewardsInfoStruct = {
        underlyingPrice: BigNumberish;
        market: string;
        rewardsInfo: IonicFlywheelLensRouter.RewardsInfoStruct[];
    };
    type MarketRewardsInfoStructOutput = [
        BigNumber,
        string,
        IonicFlywheelLensRouter.RewardsInfoStructOutput[]
    ] & {
        underlyingPrice: BigNumber;
        market: string;
        rewardsInfo: IonicFlywheelLensRouter.RewardsInfoStructOutput[];
    };
}
export interface IonicFlywheelLensRouterInterface extends utils.Interface {
    functions: {
        "claimAllRewardTokens(address)": FunctionFragment;
        "claimRewardsForMarket(address,address,address[],bool[])": FunctionFragment;
        "claimRewardsForMarkets(address,address[],address[],bool[])": FunctionFragment;
        "claimRewardsForPool(address,address)": FunctionFragment;
        "claimRewardsOfRewardToken(address,address)": FunctionFragment;
        "fpd()": FunctionFragment;
        "getAllRewardTokens()": FunctionFragment;
        "getMarketRewardsInfo(address[])": FunctionFragment;
        "getPoolMarketRewardsInfo(address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "claimAllRewardTokens" | "claimRewardsForMarket" | "claimRewardsForMarkets" | "claimRewardsForPool" | "claimRewardsOfRewardToken" | "fpd" | "getAllRewardTokens" | "getMarketRewardsInfo" | "getPoolMarketRewardsInfo"): FunctionFragment;
    encodeFunctionData(functionFragment: "claimAllRewardTokens", values: [string]): string;
    encodeFunctionData(functionFragment: "claimRewardsForMarket", values: [string, string, string[], boolean[]]): string;
    encodeFunctionData(functionFragment: "claimRewardsForMarkets", values: [string, string[], string[], boolean[]]): string;
    encodeFunctionData(functionFragment: "claimRewardsForPool", values: [string, string]): string;
    encodeFunctionData(functionFragment: "claimRewardsOfRewardToken", values: [string, string]): string;
    encodeFunctionData(functionFragment: "fpd", values?: undefined): string;
    encodeFunctionData(functionFragment: "getAllRewardTokens", values?: undefined): string;
    encodeFunctionData(functionFragment: "getMarketRewardsInfo", values: [string[]]): string;
    encodeFunctionData(functionFragment: "getPoolMarketRewardsInfo", values: [string]): string;
    decodeFunctionResult(functionFragment: "claimAllRewardTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimRewardsForMarket", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimRewardsForMarkets", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimRewardsForPool", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimRewardsOfRewardToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "fpd", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAllRewardTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getMarketRewardsInfo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPoolMarketRewardsInfo", data: BytesLike): Result;
    events: {};
}
export interface IonicFlywheelLensRouter extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IonicFlywheelLensRouterInterface;
    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: {
        claimAllRewardTokens(user: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        claimRewardsForMarket(user: string, market: string, flywheels: string[], accrue: boolean[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        claimRewardsForMarkets(user: string, markets: string[], flywheels: string[], accrue: boolean[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        claimRewardsForPool(user: string, comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        claimRewardsOfRewardToken(user: string, rewardToken: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        fpd(overrides?: CallOverrides): Promise<[string]>;
        getAllRewardTokens(overrides?: CallOverrides): Promise<[string[]] & {
            uniqueRewardTokens: string[];
        }>;
        getMarketRewardsInfo(markets: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getPoolMarketRewardsInfo(comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    claimAllRewardTokens(user: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    claimRewardsForMarket(user: string, market: string, flywheels: string[], accrue: boolean[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    claimRewardsForMarkets(user: string, markets: string[], flywheels: string[], accrue: boolean[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    claimRewardsForPool(user: string, comptroller: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    claimRewardsOfRewardToken(user: string, rewardToken: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    fpd(overrides?: CallOverrides): Promise<string>;
    getAllRewardTokens(overrides?: CallOverrides): Promise<string[]>;
    getMarketRewardsInfo(markets: string[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getPoolMarketRewardsInfo(comptroller: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        claimAllRewardTokens(user: string, overrides?: CallOverrides): Promise<[string[], BigNumber[]]>;
        claimRewardsForMarket(user: string, market: string, flywheels: string[], accrue: boolean[], overrides?: CallOverrides): Promise<[
            string[],
            string[],
            BigNumber[]
        ] & {
            rewardTokens: string[];
            rewards: BigNumber[];
        }>;
        claimRewardsForMarkets(user: string, markets: string[], flywheels: string[], accrue: boolean[], overrides?: CallOverrides): Promise<[
            string[],
            string[],
            BigNumber[]
        ] & {
            rewardTokens: string[];
            rewards: BigNumber[];
        }>;
        claimRewardsForPool(user: string, comptroller: string, overrides?: CallOverrides): Promise<[string[], string[], BigNumber[]]>;
        claimRewardsOfRewardToken(user: string, rewardToken: string, overrides?: CallOverrides): Promise<BigNumber>;
        fpd(overrides?: CallOverrides): Promise<string>;
        getAllRewardTokens(overrides?: CallOverrides): Promise<string[]>;
        getMarketRewardsInfo(markets: string[], overrides?: CallOverrides): Promise<IonicFlywheelLensRouter.MarketRewardsInfoStructOutput[]>;
        getPoolMarketRewardsInfo(comptroller: string, overrides?: CallOverrides): Promise<IonicFlywheelLensRouter.MarketRewardsInfoStructOutput[]>;
    };
    filters: {};
    estimateGas: {
        claimAllRewardTokens(user: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        claimRewardsForMarket(user: string, market: string, flywheels: string[], accrue: boolean[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        claimRewardsForMarkets(user: string, markets: string[], flywheels: string[], accrue: boolean[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        claimRewardsForPool(user: string, comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        claimRewardsOfRewardToken(user: string, rewardToken: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        fpd(overrides?: CallOverrides): Promise<BigNumber>;
        getAllRewardTokens(overrides?: CallOverrides): Promise<BigNumber>;
        getMarketRewardsInfo(markets: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getPoolMarketRewardsInfo(comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        claimAllRewardTokens(user: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        claimRewardsForMarket(user: string, market: string, flywheels: string[], accrue: boolean[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        claimRewardsForMarkets(user: string, markets: string[], flywheels: string[], accrue: boolean[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        claimRewardsForPool(user: string, comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        claimRewardsOfRewardToken(user: string, rewardToken: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        fpd(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAllRewardTokens(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getMarketRewardsInfo(markets: string[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getPoolMarketRewardsInfo(comptroller: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}
