import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, 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, PromiseOrValue } from './common';
export interface ConvexCvxCrvStakingUtilitiesInterface extends utils.Interface {
    functions: {
        'accountExtraRewardRates(address)': FunctionFragment;
        'accountRewardRates(address)': FunctionFragment;
        'apr(uint256,uint256,uint256)': FunctionFragment;
        'convexProxy()': FunctionFragment;
        'crv()': FunctionFragment;
        'cvx()': FunctionFragment;
        'cvxCrvStaking()': FunctionFragment;
        'cvxMining()': FunctionFragment;
        'externalRewardContracts()': FunctionFragment;
        'extraRewardRates()': FunctionFragment;
        'mainRewardRates()': FunctionFragment;
        'singleRewardRate(address)': FunctionFragment;
        'stkcvxcrv()': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'accountExtraRewardRates' | 'accountRewardRates' | 'apr' | 'convexProxy' | 'crv' | 'cvx' | 'cvxCrvStaking' | 'cvxMining' | 'externalRewardContracts' | 'extraRewardRates' | 'mainRewardRates' | 'singleRewardRate' | 'stkcvxcrv'): FunctionFragment;
    encodeFunctionData(functionFragment: 'accountExtraRewardRates', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'accountRewardRates', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'apr', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'convexProxy', values?: undefined): string;
    encodeFunctionData(functionFragment: 'crv', values?: undefined): string;
    encodeFunctionData(functionFragment: 'cvx', values?: undefined): string;
    encodeFunctionData(functionFragment: 'cvxCrvStaking', values?: undefined): string;
    encodeFunctionData(functionFragment: 'cvxMining', values?: undefined): string;
    encodeFunctionData(functionFragment: 'externalRewardContracts', values?: undefined): string;
    encodeFunctionData(functionFragment: 'extraRewardRates', values?: undefined): string;
    encodeFunctionData(functionFragment: 'mainRewardRates', values?: undefined): string;
    encodeFunctionData(functionFragment: 'singleRewardRate', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'stkcvxcrv', values?: undefined): string;
    decodeFunctionResult(functionFragment: 'accountExtraRewardRates', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'accountRewardRates', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'apr', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'convexProxy', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'crv', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'cvx', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'cvxCrvStaking', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'cvxMining', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'externalRewardContracts', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'extraRewardRates', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'mainRewardRates', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'singleRewardRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stkcvxcrv', data: BytesLike): Result;
    events: {};
}
export interface ConvexCvxCrvStakingUtilities extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ConvexCvxCrvStakingUtilitiesInterface;
    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: {
        accountExtraRewardRates(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            BigNumber[]
        ] & {
            tokens: string[];
            rates: BigNumber[];
            groups: BigNumber[];
        }>;
        accountRewardRates(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            BigNumber[]
        ] & {
            tokens: string[];
            rates: BigNumber[];
            groups: BigNumber[];
        }>;
        apr(_rate: PromiseOrValue<BigNumberish>, _priceOfReward: PromiseOrValue<BigNumberish>, _priceOfDeposit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            _apr: BigNumber;
        }>;
        convexProxy(overrides?: CallOverrides): Promise<[string]>;
        crv(overrides?: CallOverrides): Promise<[string]>;
        cvx(overrides?: CallOverrides): Promise<[string]>;
        cvxCrvStaking(overrides?: CallOverrides): Promise<[string]>;
        cvxMining(overrides?: CallOverrides): Promise<[string]>;
        externalRewardContracts(overrides?: CallOverrides): Promise<[string[]] & {
            rewardContracts: string[];
        }>;
        extraRewardRates(overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            BigNumber[]
        ] & {
            tokens: string[];
            rates: BigNumber[];
            groups: BigNumber[];
        }>;
        mainRewardRates(overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            BigNumber[]
        ] & {
            tokens: string[];
            rates: BigNumber[];
            groups: BigNumber[];
        }>;
        singleRewardRate(_rewardContract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string, BigNumber] & {
            token: string;
            rate: BigNumber;
        }>;
        stkcvxcrv(overrides?: CallOverrides): Promise<[string]>;
    };
    accountExtraRewardRates(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        string[],
        BigNumber[],
        BigNumber[]
    ] & {
        tokens: string[];
        rates: BigNumber[];
        groups: BigNumber[];
    }>;
    accountRewardRates(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        string[],
        BigNumber[],
        BigNumber[]
    ] & {
        tokens: string[];
        rates: BigNumber[];
        groups: BigNumber[];
    }>;
    apr(_rate: PromiseOrValue<BigNumberish>, _priceOfReward: PromiseOrValue<BigNumberish>, _priceOfDeposit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    convexProxy(overrides?: CallOverrides): Promise<string>;
    crv(overrides?: CallOverrides): Promise<string>;
    cvx(overrides?: CallOverrides): Promise<string>;
    cvxCrvStaking(overrides?: CallOverrides): Promise<string>;
    cvxMining(overrides?: CallOverrides): Promise<string>;
    externalRewardContracts(overrides?: CallOverrides): Promise<string[]>;
    extraRewardRates(overrides?: CallOverrides): Promise<[
        string[],
        BigNumber[],
        BigNumber[]
    ] & {
        tokens: string[];
        rates: BigNumber[];
        groups: BigNumber[];
    }>;
    mainRewardRates(overrides?: CallOverrides): Promise<[
        string[],
        BigNumber[],
        BigNumber[]
    ] & {
        tokens: string[];
        rates: BigNumber[];
        groups: BigNumber[];
    }>;
    singleRewardRate(_rewardContract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string, BigNumber] & {
        token: string;
        rate: BigNumber;
    }>;
    stkcvxcrv(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        accountExtraRewardRates(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            BigNumber[]
        ] & {
            tokens: string[];
            rates: BigNumber[];
            groups: BigNumber[];
        }>;
        accountRewardRates(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            BigNumber[]
        ] & {
            tokens: string[];
            rates: BigNumber[];
            groups: BigNumber[];
        }>;
        apr(_rate: PromiseOrValue<BigNumberish>, _priceOfReward: PromiseOrValue<BigNumberish>, _priceOfDeposit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        convexProxy(overrides?: CallOverrides): Promise<string>;
        crv(overrides?: CallOverrides): Promise<string>;
        cvx(overrides?: CallOverrides): Promise<string>;
        cvxCrvStaking(overrides?: CallOverrides): Promise<string>;
        cvxMining(overrides?: CallOverrides): Promise<string>;
        externalRewardContracts(overrides?: CallOverrides): Promise<string[]>;
        extraRewardRates(overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            BigNumber[]
        ] & {
            tokens: string[];
            rates: BigNumber[];
            groups: BigNumber[];
        }>;
        mainRewardRates(overrides?: CallOverrides): Promise<[
            string[],
            BigNumber[],
            BigNumber[]
        ] & {
            tokens: string[];
            rates: BigNumber[];
            groups: BigNumber[];
        }>;
        singleRewardRate(_rewardContract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string, BigNumber] & {
            token: string;
            rate: BigNumber;
        }>;
        stkcvxcrv(overrides?: CallOverrides): Promise<string>;
    };
    filters: {};
    estimateGas: {
        accountExtraRewardRates(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        accountRewardRates(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        apr(_rate: PromiseOrValue<BigNumberish>, _priceOfReward: PromiseOrValue<BigNumberish>, _priceOfDeposit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        convexProxy(overrides?: CallOverrides): Promise<BigNumber>;
        crv(overrides?: CallOverrides): Promise<BigNumber>;
        cvx(overrides?: CallOverrides): Promise<BigNumber>;
        cvxCrvStaking(overrides?: CallOverrides): Promise<BigNumber>;
        cvxMining(overrides?: CallOverrides): Promise<BigNumber>;
        externalRewardContracts(overrides?: CallOverrides): Promise<BigNumber>;
        extraRewardRates(overrides?: CallOverrides): Promise<BigNumber>;
        mainRewardRates(overrides?: CallOverrides): Promise<BigNumber>;
        singleRewardRate(_rewardContract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        stkcvxcrv(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        accountExtraRewardRates(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        accountRewardRates(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        apr(_rate: PromiseOrValue<BigNumberish>, _priceOfReward: PromiseOrValue<BigNumberish>, _priceOfDeposit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        convexProxy(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        crv(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        cvx(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        cvxCrvStaking(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        cvxMining(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        externalRewardContracts(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        extraRewardRates(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        mainRewardRates(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        singleRewardRate(_rewardContract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        stkcvxcrv(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
