import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, 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 StandardizedYieldInterface extends utils.Interface {
    functions: {
        'accruedRewards(address)': FunctionFragment;
        'allowance(address,address)': FunctionFragment;
        'approve(address,uint256)': FunctionFragment;
        'assetInfo()': FunctionFragment;
        'balanceOf(address)': FunctionFragment;
        'claimRewards(address)': FunctionFragment;
        'decimals()': FunctionFragment;
        'deposit(address,address,uint256,uint256)': FunctionFragment;
        'exchangeRate()': FunctionFragment;
        'getRewardTokens()': FunctionFragment;
        'getTokensIn()': FunctionFragment;
        'getTokensOut()': FunctionFragment;
        'isValidTokenIn(address)': FunctionFragment;
        'isValidTokenOut(address)': FunctionFragment;
        'name()': FunctionFragment;
        'previewDeposit(address,uint256)': FunctionFragment;
        'previewRedeem(address,uint256)': FunctionFragment;
        'redeem(address,uint256,address,uint256,bool)': FunctionFragment;
        'rewardIndexesCurrent()': FunctionFragment;
        'rewardIndexesStored()': FunctionFragment;
        'symbol()': FunctionFragment;
        'totalSupply()': FunctionFragment;
        'transfer(address,uint256)': FunctionFragment;
        'transferFrom(address,address,uint256)': FunctionFragment;
        'yieldToken()': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'accruedRewards' | 'allowance' | 'approve' | 'assetInfo' | 'balanceOf' | 'claimRewards' | 'decimals' | 'deposit' | 'exchangeRate' | 'getRewardTokens' | 'getTokensIn' | 'getTokensOut' | 'isValidTokenIn' | 'isValidTokenOut' | 'name' | 'previewDeposit' | 'previewRedeem' | 'redeem' | 'rewardIndexesCurrent' | 'rewardIndexesStored' | 'symbol' | 'totalSupply' | 'transfer' | 'transferFrom' | 'yieldToken'): FunctionFragment;
    encodeFunctionData(functionFragment: 'accruedRewards', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'allowance', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'approve', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'assetInfo', values?: undefined): string;
    encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'claimRewards', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'decimals', values?: undefined): string;
    encodeFunctionData(functionFragment: 'deposit', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'exchangeRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getRewardTokens', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getTokensIn', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getTokensOut', values?: undefined): string;
    encodeFunctionData(functionFragment: 'isValidTokenIn', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'isValidTokenOut', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'name', values?: undefined): string;
    encodeFunctionData(functionFragment: 'previewDeposit', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'previewRedeem', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'redeem', values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<boolean>
    ]): string;
    encodeFunctionData(functionFragment: 'rewardIndexesCurrent', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rewardIndexesStored', values?: undefined): string;
    encodeFunctionData(functionFragment: 'symbol', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transfer', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'transferFrom', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'yieldToken', values?: undefined): string;
    decodeFunctionResult(functionFragment: 'accruedRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'assetInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'exchangeRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRewardTokens', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getTokensIn', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getTokensOut', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isValidTokenIn', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isValidTokenOut', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'previewDeposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'previewRedeem', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeem', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardIndexesCurrent', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardIndexesStored', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'yieldToken', data: BytesLike): Result;
    events: {
        'Approval(address,address,uint256)': EventFragment;
        'ClaimRewards(address,address[],uint256[])': EventFragment;
        'Deposit(address,address,address,uint256,uint256)': EventFragment;
        'Redeem(address,address,address,uint256,uint256)': EventFragment;
        'Transfer(address,address,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ClaimRewards'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Redeem'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment;
}
export interface ApprovalEventObject {
    owner: string;
    spender: string;
    value: BigNumber;
}
export declare type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>;
export declare type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
export interface ClaimRewardsEventObject {
    user: string;
    rewardTokens: string[];
    rewardAmounts: BigNumber[];
}
export declare type ClaimRewardsEvent = TypedEvent<[string, string[], BigNumber[]], ClaimRewardsEventObject>;
export declare type ClaimRewardsEventFilter = TypedEventFilter<ClaimRewardsEvent>;
export interface DepositEventObject {
    caller: string;
    receiver: string;
    tokenIn: string;
    amountDeposited: BigNumber;
    amountSyOut: BigNumber;
}
export declare type DepositEvent = TypedEvent<[string, string, string, BigNumber, BigNumber], DepositEventObject>;
export declare type DepositEventFilter = TypedEventFilter<DepositEvent>;
export interface RedeemEventObject {
    caller: string;
    receiver: string;
    tokenOut: string;
    amountSyToRedeem: BigNumber;
    amountTokenOut: BigNumber;
}
export declare type RedeemEvent = TypedEvent<[string, string, string, BigNumber, BigNumber], RedeemEventObject>;
export declare type RedeemEventFilter = TypedEventFilter<RedeemEvent>;
export interface TransferEventObject {
    from: string;
    to: string;
    value: BigNumber;
}
export declare type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>;
export declare type TransferEventFilter = TypedEventFilter<TransferEvent>;
export interface StandardizedYield extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: StandardizedYieldInterface;
    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: {
        accruedRewards(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber[]] & {
            rewardAmounts: BigNumber[];
        }>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        assetInfo(overrides?: CallOverrides): Promise<[
            number,
            string,
            number
        ] & {
            assetType: number;
            assetAddress: string;
            assetDecimals: number;
        }>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        claimRewards(user: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        decimals(overrides?: CallOverrides): Promise<[number]>;
        deposit(receiver: PromiseOrValue<string>, tokenIn: PromiseOrValue<string>, amountTokenToDeposit: PromiseOrValue<BigNumberish>, minSharesOut: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        exchangeRate(overrides?: CallOverrides): Promise<[BigNumber] & {
            res: BigNumber;
        }>;
        getRewardTokens(overrides?: CallOverrides): Promise<[string[]]>;
        getTokensIn(overrides?: CallOverrides): Promise<[string[]] & {
            res: string[];
        }>;
        getTokensOut(overrides?: CallOverrides): Promise<[string[]] & {
            res: string[];
        }>;
        isValidTokenIn(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        isValidTokenOut(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        name(overrides?: CallOverrides): Promise<[string]>;
        previewDeposit(tokenIn: PromiseOrValue<string>, amountTokenToDeposit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            amountSharesOut: BigNumber;
        }>;
        previewRedeem(tokenOut: PromiseOrValue<string>, amountSharesToRedeem: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            amountTokenOut: BigNumber;
        }>;
        redeem(receiver: PromiseOrValue<string>, amountSharesToRedeem: PromiseOrValue<BigNumberish>, tokenOut: PromiseOrValue<string>, minTokenOut: PromiseOrValue<BigNumberish>, burnFromInternalBalance: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        rewardIndexesCurrent(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        rewardIndexesStored(overrides?: CallOverrides): Promise<[BigNumber[]] & {
            indexes: BigNumber[];
        }>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        yieldToken(overrides?: CallOverrides): Promise<[string]>;
    };
    accruedRewards(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
    allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    assetInfo(overrides?: CallOverrides): Promise<[
        number,
        string,
        number
    ] & {
        assetType: number;
        assetAddress: string;
        assetDecimals: number;
    }>;
    balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    claimRewards(user: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    decimals(overrides?: CallOverrides): Promise<number>;
    deposit(receiver: PromiseOrValue<string>, tokenIn: PromiseOrValue<string>, amountTokenToDeposit: PromiseOrValue<BigNumberish>, minSharesOut: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    exchangeRate(overrides?: CallOverrides): Promise<BigNumber>;
    getRewardTokens(overrides?: CallOverrides): Promise<string[]>;
    getTokensIn(overrides?: CallOverrides): Promise<string[]>;
    getTokensOut(overrides?: CallOverrides): Promise<string[]>;
    isValidTokenIn(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    isValidTokenOut(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    name(overrides?: CallOverrides): Promise<string>;
    previewDeposit(tokenIn: PromiseOrValue<string>, amountTokenToDeposit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    previewRedeem(tokenOut: PromiseOrValue<string>, amountSharesToRedeem: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    redeem(receiver: PromiseOrValue<string>, amountSharesToRedeem: PromiseOrValue<BigNumberish>, tokenOut: PromiseOrValue<string>, minTokenOut: PromiseOrValue<BigNumberish>, burnFromInternalBalance: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    rewardIndexesCurrent(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    rewardIndexesStored(overrides?: CallOverrides): Promise<BigNumber[]>;
    symbol(overrides?: CallOverrides): Promise<string>;
    totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
    transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    yieldToken(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        accruedRewards(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        assetInfo(overrides?: CallOverrides): Promise<[
            number,
            string,
            number
        ] & {
            assetType: number;
            assetAddress: string;
            assetDecimals: number;
        }>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        claimRewards(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
        decimals(overrides?: CallOverrides): Promise<number>;
        deposit(receiver: PromiseOrValue<string>, tokenIn: PromiseOrValue<string>, amountTokenToDeposit: PromiseOrValue<BigNumberish>, minSharesOut: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        exchangeRate(overrides?: CallOverrides): Promise<BigNumber>;
        getRewardTokens(overrides?: CallOverrides): Promise<string[]>;
        getTokensIn(overrides?: CallOverrides): Promise<string[]>;
        getTokensOut(overrides?: CallOverrides): Promise<string[]>;
        isValidTokenIn(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        isValidTokenOut(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        name(overrides?: CallOverrides): Promise<string>;
        previewDeposit(tokenIn: PromiseOrValue<string>, amountTokenToDeposit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        previewRedeem(tokenOut: PromiseOrValue<string>, amountSharesToRedeem: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        redeem(receiver: PromiseOrValue<string>, amountSharesToRedeem: PromiseOrValue<BigNumberish>, tokenOut: PromiseOrValue<string>, minTokenOut: PromiseOrValue<BigNumberish>, burnFromInternalBalance: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<BigNumber>;
        rewardIndexesCurrent(overrides?: CallOverrides): Promise<BigNumber[]>;
        rewardIndexesStored(overrides?: CallOverrides): Promise<BigNumber[]>;
        symbol(overrides?: CallOverrides): Promise<string>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        yieldToken(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        'Approval(address,address,uint256)'(owner?: PromiseOrValue<string> | null, spender?: PromiseOrValue<string> | null, value?: null): ApprovalEventFilter;
        Approval(owner?: PromiseOrValue<string> | null, spender?: PromiseOrValue<string> | null, value?: null): ApprovalEventFilter;
        'ClaimRewards(address,address[],uint256[])'(user?: PromiseOrValue<string> | null, rewardTokens?: null, rewardAmounts?: null): ClaimRewardsEventFilter;
        ClaimRewards(user?: PromiseOrValue<string> | null, rewardTokens?: null, rewardAmounts?: null): ClaimRewardsEventFilter;
        'Deposit(address,address,address,uint256,uint256)'(caller?: PromiseOrValue<string> | null, receiver?: PromiseOrValue<string> | null, tokenIn?: PromiseOrValue<string> | null, amountDeposited?: null, amountSyOut?: null): DepositEventFilter;
        Deposit(caller?: PromiseOrValue<string> | null, receiver?: PromiseOrValue<string> | null, tokenIn?: PromiseOrValue<string> | null, amountDeposited?: null, amountSyOut?: null): DepositEventFilter;
        'Redeem(address,address,address,uint256,uint256)'(caller?: PromiseOrValue<string> | null, receiver?: PromiseOrValue<string> | null, tokenOut?: PromiseOrValue<string> | null, amountSyToRedeem?: null, amountTokenOut?: null): RedeemEventFilter;
        Redeem(caller?: PromiseOrValue<string> | null, receiver?: PromiseOrValue<string> | null, tokenOut?: PromiseOrValue<string> | null, amountSyToRedeem?: null, amountTokenOut?: null): RedeemEventFilter;
        'Transfer(address,address,uint256)'(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, value?: null): TransferEventFilter;
        Transfer(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, value?: null): TransferEventFilter;
    };
    estimateGas: {
        accruedRewards(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        assetInfo(overrides?: CallOverrides): Promise<BigNumber>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        claimRewards(user: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<BigNumber>;
        deposit(receiver: PromiseOrValue<string>, tokenIn: PromiseOrValue<string>, amountTokenToDeposit: PromiseOrValue<BigNumberish>, minSharesOut: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        exchangeRate(overrides?: CallOverrides): Promise<BigNumber>;
        getRewardTokens(overrides?: CallOverrides): Promise<BigNumber>;
        getTokensIn(overrides?: CallOverrides): Promise<BigNumber>;
        getTokensOut(overrides?: CallOverrides): Promise<BigNumber>;
        isValidTokenIn(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isValidTokenOut(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        previewDeposit(tokenIn: PromiseOrValue<string>, amountTokenToDeposit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        previewRedeem(tokenOut: PromiseOrValue<string>, amountSharesToRedeem: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        redeem(receiver: PromiseOrValue<string>, amountSharesToRedeem: PromiseOrValue<BigNumberish>, tokenOut: PromiseOrValue<string>, minTokenOut: PromiseOrValue<BigNumberish>, burnFromInternalBalance: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        rewardIndexesCurrent(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        rewardIndexesStored(overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        yieldToken(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        accruedRewards(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        assetInfo(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        claimRewards(user: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        decimals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deposit(receiver: PromiseOrValue<string>, tokenIn: PromiseOrValue<string>, amountTokenToDeposit: PromiseOrValue<BigNumberish>, minSharesOut: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        exchangeRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRewardTokens(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTokensIn(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTokensOut(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isValidTokenIn(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isValidTokenOut(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        previewDeposit(tokenIn: PromiseOrValue<string>, amountTokenToDeposit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        previewRedeem(tokenOut: PromiseOrValue<string>, amountSharesToRedeem: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        redeem(receiver: PromiseOrValue<string>, amountSharesToRedeem: PromiseOrValue<BigNumberish>, tokenOut: PromiseOrValue<string>, minTokenOut: PromiseOrValue<BigNumberish>, burnFromInternalBalance: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        rewardIndexesCurrent(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        rewardIndexesStored(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        yieldToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
