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, PromiseOrValue } from './common';
export declare type VaultInitializableStruct = {
    name: PromiseOrValue<string>;
    owner: PromiseOrValue<string>;
    fee: PromiseOrValue<BigNumberish>;
    strategies: PromiseOrValue<string>[];
    proportions: PromiseOrValue<BigNumberish>[];
};
export declare type VaultInitializableStructOutput = [string, string, number, string[], BigNumber[]] & {
    name: string;
    owner: string;
    fee: number;
    strategies: string[];
    proportions: BigNumber[];
};
export declare type SwapDataStruct = {
    slippage: PromiseOrValue<BigNumberish>;
    path: PromiseOrValue<BytesLike>;
};
export declare type SwapDataStructOutput = [BigNumber, string] & {
    slippage: BigNumber;
    path: string;
};
export declare type FastWithdrawParamsStruct = {
    doExecuteWithdraw: PromiseOrValue<boolean>;
    slippages: PromiseOrValue<BigNumberish>[][];
    swapData: SwapDataStruct[][];
};
export declare type FastWithdrawParamsStructOutput = [boolean, BigNumber[][], SwapDataStructOutput[][]] & {
    doExecuteWithdraw: boolean;
    slippages: BigNumber[][];
    swapData: SwapDataStructOutput[][];
};
export interface SpoolVaultInterface extends utils.Interface {
    functions: {
        'addToken(address,uint32,uint256)': FunctionFragment;
        'claim(bool,address[],bool)': FunctionFragment;
        'claimFinishedRewards(address,uint256)': FunctionFragment;
        'controller()': FunctionFragment;
        'deposit(address[],uint128,bool)': FunctionFragment;
        'earned(address,address)': FunctionFragment;
        'forceRemoveReward(address)': FunctionFragment;
        'getActiveRewards(address)': FunctionFragment;
        'getRewardForDuration(address)': FunctionFragment;
        'getRewards(address[])': FunctionFragment;
        'getUpdatedUser(address[])': FunctionFragment;
        'getUpdatedVault(address[])': FunctionFragment;
        'initialize((string,address,uint16,address[],uint256[]))': FunctionFragment;
        'lastIndexInteracted()': FunctionFragment;
        'lastTimeRewardApplicable(address)': FunctionFragment;
        'lowerVaultFee(uint16)': FunctionFragment;
        'name()': FunctionFragment;
        'notifyRewardAmount(address,uint256,uint32)': FunctionFragment;
        'notifyStrategyRemoved(address[],uint256)': FunctionFragment;
        'payFees(uint256)': FunctionFragment;
        'proportions()': FunctionFragment;
        'reallocate(address[],uint256,uint256,uint24)': FunctionFragment;
        'reallocationIndex()': FunctionFragment;
        'redeemUser()': FunctionFragment;
        'redeemVaultAndUser(address[])': FunctionFragment;
        'redeemVaultStrategies(address[])': FunctionFragment;
        'redeems(uint256)': FunctionFragment;
        'removeReward(address)': FunctionFragment;
        'rewardConfiguration(address)': FunctionFragment;
        'rewardPerToken(address)': FunctionFragment;
        'rewardTokens(uint256)': FunctionFragment;
        'rewardTokensCount()': FunctionFragment;
        'strategiesHash()': FunctionFragment;
        'tokenBlacklist(address)': FunctionFragment;
        'totalInstantDeposit()': FunctionFragment;
        'totalShares()': FunctionFragment;
        'transferVaultOwner(address)': FunctionFragment;
        'updateName(string)': FunctionFragment;
        'updatePeriodFinish(address,uint32)': FunctionFragment;
        'userIndexAction(address,uint256)': FunctionFragment;
        'userLastInteractions(address)': FunctionFragment;
        'users(address)': FunctionFragment;
        'vaultFee()': FunctionFragment;
        'vaultIndexAction(uint256)': FunctionFragment;
        'vaultOwner()': FunctionFragment;
        'withdraw(address[],uint128,bool)': FunctionFragment;
        'withdrawFast(address[],uint128,bool,(bool,uint256[][],tuple[][]))': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'addToken' | 'claim' | 'claimFinishedRewards' | 'controller' | 'deposit' | 'earned' | 'forceRemoveReward' | 'getActiveRewards' | 'getRewardForDuration' | 'getRewards' | 'getUpdatedUser' | 'getUpdatedVault' | 'initialize' | 'lastIndexInteracted' | 'lastTimeRewardApplicable' | 'lowerVaultFee' | 'name' | 'notifyRewardAmount' | 'notifyStrategyRemoved' | 'payFees' | 'proportions' | 'reallocate' | 'reallocationIndex' | 'redeemUser' | 'redeemVaultAndUser' | 'redeemVaultStrategies' | 'redeems' | 'removeReward' | 'rewardConfiguration' | 'rewardPerToken' | 'rewardTokens' | 'rewardTokensCount' | 'strategiesHash' | 'tokenBlacklist' | 'totalInstantDeposit' | 'totalShares' | 'transferVaultOwner' | 'updateName' | 'updatePeriodFinish' | 'userIndexAction' | 'userLastInteractions' | 'users' | 'vaultFee' | 'vaultIndexAction' | 'vaultOwner' | 'withdraw' | 'withdrawFast'): FunctionFragment;
    encodeFunctionData(functionFragment: 'addToken', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'claim', values: [PromiseOrValue<boolean>, PromiseOrValue<string>[], PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'claimFinishedRewards', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'controller', values?: undefined): string;
    encodeFunctionData(functionFragment: 'deposit', values: [PromiseOrValue<string>[], PromiseOrValue<BigNumberish>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'earned', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'forceRemoveReward', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getActiveRewards', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getRewardForDuration', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getRewards', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'getUpdatedUser', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'getUpdatedVault', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'initialize', values: [VaultInitializableStruct]): string;
    encodeFunctionData(functionFragment: 'lastIndexInteracted', values?: undefined): string;
    encodeFunctionData(functionFragment: 'lastTimeRewardApplicable', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'lowerVaultFee', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'name', values?: undefined): string;
    encodeFunctionData(functionFragment: 'notifyRewardAmount', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'notifyStrategyRemoved', values: [PromiseOrValue<string>[], PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'payFees', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'proportions', values?: undefined): string;
    encodeFunctionData(functionFragment: 'reallocate', values: [
        PromiseOrValue<string>[],
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'reallocationIndex', values?: undefined): string;
    encodeFunctionData(functionFragment: 'redeemUser', values?: undefined): string;
    encodeFunctionData(functionFragment: 'redeemVaultAndUser', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'redeemVaultStrategies', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'redeems', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'removeReward', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'rewardConfiguration', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'rewardPerToken', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'rewardTokens', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'rewardTokensCount', values?: undefined): string;
    encodeFunctionData(functionFragment: 'strategiesHash', values?: undefined): string;
    encodeFunctionData(functionFragment: 'tokenBlacklist', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'totalInstantDeposit', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalShares', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transferVaultOwner', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'updateName', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'updatePeriodFinish', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'userIndexAction', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'userLastInteractions', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'users', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'vaultFee', values?: undefined): string;
    encodeFunctionData(functionFragment: 'vaultIndexAction', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'vaultOwner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'withdraw', values: [PromiseOrValue<string>[], PromiseOrValue<BigNumberish>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'withdrawFast', values: [PromiseOrValue<string>[], PromiseOrValue<BigNumberish>, PromiseOrValue<boolean>, FastWithdrawParamsStruct]): string;
    decodeFunctionResult(functionFragment: 'addToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claim', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimFinishedRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'controller', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'earned', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'forceRemoveReward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getActiveRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRewardForDuration', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getUpdatedUser', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getUpdatedVault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lastIndexInteracted', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lastTimeRewardApplicable', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lowerVaultFee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'notifyRewardAmount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'notifyStrategyRemoved', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'payFees', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'proportions', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'reallocate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'reallocationIndex', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeemUser', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeemVaultAndUser', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeemVaultStrategies', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeems', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'removeReward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardConfiguration', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardPerToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardTokens', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardTokensCount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'strategiesHash', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'tokenBlacklist', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalInstantDeposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalShares', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferVaultOwner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updateName', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updatePeriodFinish', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'userIndexAction', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'userLastInteractions', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'users', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'vaultFee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'vaultIndexAction', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'vaultOwner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawFast', data: BytesLike): Result;
    events: {
        'Claimed(address,uint256)': EventFragment;
        'Deposit(address,uint256,uint256)': EventFragment;
        'LowerVaultFee(uint16)': EventFragment;
        'PeriodFinishUpdated(address,uint32)': EventFragment;
        'Reallocate(uint24,uint256)': EventFragment;
        'RewardAdded(address,uint256,uint256)': EventFragment;
        'RewardExtended(address,uint256,uint256,uint256,uint32)': EventFragment;
        'RewardPaid(address,address,uint256)': EventFragment;
        'RewardRemoved(address)': EventFragment;
        'StrategyRemoved(uint256,address)': EventFragment;
        'TransferVaultOwner(address)': EventFragment;
        'UpdateName(string)': EventFragment;
        'UserRedeem(address,uint256)': EventFragment;
        'VaultRedeem(uint256)': EventFragment;
        'Withdraw(address,uint256,uint256)': EventFragment;
        'WithdrawFast(address,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'Claimed'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LowerVaultFee'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PeriodFinishUpdated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Reallocate'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RewardAdded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RewardExtended'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RewardPaid'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RewardRemoved'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'StrategyRemoved'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'TransferVaultOwner'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpdateName'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UserRedeem'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'VaultRedeem'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Withdraw'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'WithdrawFast'): EventFragment;
}
export interface ClaimedEventObject {
    member: string;
    claimAmount: BigNumber;
}
export declare type ClaimedEvent = TypedEvent<[string, BigNumber], ClaimedEventObject>;
export declare type ClaimedEventFilter = TypedEventFilter<ClaimedEvent>;
export interface DepositEventObject {
    member: string;
    index: BigNumber;
    amount: BigNumber;
}
export declare type DepositEvent = TypedEvent<[string, BigNumber, BigNumber], DepositEventObject>;
export declare type DepositEventFilter = TypedEventFilter<DepositEvent>;
export interface LowerVaultFeeEventObject {
    fee: number;
}
export declare type LowerVaultFeeEvent = TypedEvent<[number], LowerVaultFeeEventObject>;
export declare type LowerVaultFeeEventFilter = TypedEventFilter<LowerVaultFeeEvent>;
export interface PeriodFinishUpdatedEventObject {
    token: string;
    periodFinish: number;
}
export declare type PeriodFinishUpdatedEvent = TypedEvent<[string, number], PeriodFinishUpdatedEventObject>;
export declare type PeriodFinishUpdatedEventFilter = TypedEventFilter<PeriodFinishUpdatedEvent>;
export interface ReallocateEventObject {
    index: number;
    newProportions: BigNumber;
}
export declare type ReallocateEvent = TypedEvent<[number, BigNumber], ReallocateEventObject>;
export declare type ReallocateEventFilter = TypedEventFilter<ReallocateEvent>;
export interface RewardAddedEventObject {
    token: string;
    amount: BigNumber;
    duration: BigNumber;
}
export declare type RewardAddedEvent = TypedEvent<[string, BigNumber, BigNumber], RewardAddedEventObject>;
export declare type RewardAddedEventFilter = TypedEventFilter<RewardAddedEvent>;
export interface RewardExtendedEventObject {
    token: string;
    amount: BigNumber;
    leftover: BigNumber;
    duration: BigNumber;
    periodFinish: number;
}
export declare type RewardExtendedEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    number
], RewardExtendedEventObject>;
export declare type RewardExtendedEventFilter = TypedEventFilter<RewardExtendedEvent>;
export interface RewardPaidEventObject {
    token: string;
    user: string;
    reward: BigNumber;
}
export declare type RewardPaidEvent = TypedEvent<[string, string, BigNumber], RewardPaidEventObject>;
export declare type RewardPaidEventFilter = TypedEventFilter<RewardPaidEvent>;
export interface RewardRemovedEventObject {
    token: string;
}
export declare type RewardRemovedEvent = TypedEvent<[string], RewardRemovedEventObject>;
export declare type RewardRemovedEventFilter = TypedEventFilter<RewardRemovedEvent>;
export interface StrategyRemovedEventObject {
    i: BigNumber;
    strategy: string;
}
export declare type StrategyRemovedEvent = TypedEvent<[BigNumber, string], StrategyRemovedEventObject>;
export declare type StrategyRemovedEventFilter = TypedEventFilter<StrategyRemovedEvent>;
export interface TransferVaultOwnerEventObject {
    owner: string;
}
export declare type TransferVaultOwnerEvent = TypedEvent<[string], TransferVaultOwnerEventObject>;
export declare type TransferVaultOwnerEventFilter = TypedEventFilter<TransferVaultOwnerEvent>;
export interface UpdateNameEventObject {
    name: string;
}
export declare type UpdateNameEvent = TypedEvent<[string], UpdateNameEventObject>;
export declare type UpdateNameEventFilter = TypedEventFilter<UpdateNameEvent>;
export interface UserRedeemEventObject {
    member: string;
    globalIndex: BigNumber;
}
export declare type UserRedeemEvent = TypedEvent<[string, BigNumber], UserRedeemEventObject>;
export declare type UserRedeemEventFilter = TypedEventFilter<UserRedeemEvent>;
export interface VaultRedeemEventObject {
    globalIndex: BigNumber;
}
export declare type VaultRedeemEvent = TypedEvent<[BigNumber], VaultRedeemEventObject>;
export declare type VaultRedeemEventFilter = TypedEventFilter<VaultRedeemEvent>;
export interface WithdrawEventObject {
    member: string;
    index: BigNumber;
    shares: BigNumber;
}
export declare type WithdrawEvent = TypedEvent<[string, BigNumber, BigNumber], WithdrawEventObject>;
export declare type WithdrawEventFilter = TypedEventFilter<WithdrawEvent>;
export interface WithdrawFastEventObject {
    member: string;
    shares: BigNumber;
}
export declare type WithdrawFastEvent = TypedEvent<[string, BigNumber], WithdrawFastEventObject>;
export declare type WithdrawFastEventFilter = TypedEventFilter<WithdrawFastEvent>;
export interface SpoolVault extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: SpoolVaultInterface;
    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: {
        addToken(token: PromiseOrValue<string>, rewardsDuration: PromiseOrValue<BigNumberish>, reward: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claim(doRedeemVault: PromiseOrValue<boolean>, vaultStrategies: PromiseOrValue<string>[], doRedeemUser: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claimFinishedRewards(token: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        controller(overrides?: CallOverrides): Promise<[string]>;
        deposit(vaultStrategies: PromiseOrValue<string>[], amount: PromiseOrValue<BigNumberish>, transferFromVault: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        earned(token: PromiseOrValue<string>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        forceRemoveReward(token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getActiveRewards(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getRewardForDuration(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getRewards(tokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getUpdatedUser(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getUpdatedVault(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        initialize(vaultInitializable: VaultInitializableStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        lastIndexInteracted(overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            index1: BigNumber;
            index2: BigNumber;
        }>;
        lastTimeRewardApplicable(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number]>;
        lowerVaultFee(_vaultFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        name(overrides?: CallOverrides): Promise<[string]>;
        notifyRewardAmount(token: PromiseOrValue<string>, reward: PromiseOrValue<BigNumberish>, rewardsDuration: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        notifyStrategyRemoved(vaultStrategies: PromiseOrValue<string>[], i: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        payFees(profit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        proportions(overrides?: CallOverrides): Promise<[BigNumber]>;
        reallocate(vaultStrategies: PromiseOrValue<string>[], newVaultProportions: PromiseOrValue<BigNumberish>, finishedIndex: PromiseOrValue<BigNumberish>, activeIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        reallocationIndex(overrides?: CallOverrides): Promise<[number]>;
        redeemUser(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        redeemVaultAndUser(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        redeemVaultStrategies(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        redeems(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            depositShares: BigNumber;
            withdrawnAmount: BigNumber;
        }>;
        removeReward(token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        rewardConfiguration(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            number,
            number,
            BigNumber,
            number,
            BigNumber
        ] & {
            rewardsDuration: number;
            periodFinish: number;
            rewardRate: BigNumber;
            lastUpdateTime: number;
            rewardPerTokenStored: BigNumber;
        }>;
        rewardPerToken(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        rewardTokens(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        rewardTokensCount(overrides?: CallOverrides): Promise<[number]>;
        strategiesHash(overrides?: CallOverrides): Promise<[string]>;
        tokenBlacklist(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        totalInstantDeposit(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalShares(overrides?: CallOverrides): Promise<[BigNumber]>;
        transferVaultOwner(_vaultOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updateName(_name: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updatePeriodFinish(token: PromiseOrValue<string>, timestamp: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        userIndexAction(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            depositAmount: BigNumber;
            withdrawShares: BigNumber;
        }>;
        userLastInteractions(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            index1: BigNumber;
            index2: BigNumber;
        }>;
        users(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            instantDeposit: BigNumber;
            activeDeposit: BigNumber;
            owed: BigNumber;
            withdrawnDeposits: BigNumber;
            shares: BigNumber;
        }>;
        vaultFee(overrides?: CallOverrides): Promise<[number]>;
        vaultIndexAction(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            depositAmount: BigNumber;
            withdrawShares: BigNumber;
        }>;
        vaultOwner(overrides?: CallOverrides): Promise<[string]>;
        withdraw(vaultStrategies: PromiseOrValue<string>[], sharesToWithdraw: PromiseOrValue<BigNumberish>, withdrawAll: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawFast(vaultStrategies: PromiseOrValue<string>[], sharesToWithdraw: PromiseOrValue<BigNumberish>, withdrawAll: PromiseOrValue<boolean>, fastWithdrawParams: FastWithdrawParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    addToken(token: PromiseOrValue<string>, rewardsDuration: PromiseOrValue<BigNumberish>, reward: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claim(doRedeemVault: PromiseOrValue<boolean>, vaultStrategies: PromiseOrValue<string>[], doRedeemUser: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claimFinishedRewards(token: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    controller(overrides?: CallOverrides): Promise<string>;
    deposit(vaultStrategies: PromiseOrValue<string>[], amount: PromiseOrValue<BigNumberish>, transferFromVault: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    earned(token: PromiseOrValue<string>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    forceRemoveReward(token: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getActiveRewards(account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getRewardForDuration(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    getRewards(tokens: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getUpdatedUser(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getUpdatedVault(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    initialize(vaultInitializable: VaultInitializableStruct, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    lastIndexInteracted(overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
        index1: BigNumber;
        index2: BigNumber;
    }>;
    lastTimeRewardApplicable(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
    lowerVaultFee(_vaultFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    name(overrides?: CallOverrides): Promise<string>;
    notifyRewardAmount(token: PromiseOrValue<string>, reward: PromiseOrValue<BigNumberish>, rewardsDuration: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    notifyStrategyRemoved(vaultStrategies: PromiseOrValue<string>[], i: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    payFees(profit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    proportions(overrides?: CallOverrides): Promise<BigNumber>;
    reallocate(vaultStrategies: PromiseOrValue<string>[], newVaultProportions: PromiseOrValue<BigNumberish>, finishedIndex: PromiseOrValue<BigNumberish>, activeIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    reallocationIndex(overrides?: CallOverrides): Promise<number>;
    redeemUser(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    redeemVaultAndUser(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    redeemVaultStrategies(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    redeems(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        depositShares: BigNumber;
        withdrawnAmount: BigNumber;
    }>;
    removeReward(token: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    rewardConfiguration(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        number,
        number,
        BigNumber,
        number,
        BigNumber
    ] & {
        rewardsDuration: number;
        periodFinish: number;
        rewardRate: BigNumber;
        lastUpdateTime: number;
        rewardPerTokenStored: BigNumber;
    }>;
    rewardPerToken(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    rewardTokens(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    rewardTokensCount(overrides?: CallOverrides): Promise<number>;
    strategiesHash(overrides?: CallOverrides): Promise<string>;
    tokenBlacklist(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    totalInstantDeposit(overrides?: CallOverrides): Promise<BigNumber>;
    totalShares(overrides?: CallOverrides): Promise<BigNumber>;
    transferVaultOwner(_vaultOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updateName(_name: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updatePeriodFinish(token: PromiseOrValue<string>, timestamp: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    userIndexAction(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        depositAmount: BigNumber;
        withdrawShares: BigNumber;
    }>;
    userLastInteractions(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
        index1: BigNumber;
        index2: BigNumber;
    }>;
    users(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        instantDeposit: BigNumber;
        activeDeposit: BigNumber;
        owed: BigNumber;
        withdrawnDeposits: BigNumber;
        shares: BigNumber;
    }>;
    vaultFee(overrides?: CallOverrides): Promise<number>;
    vaultIndexAction(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        depositAmount: BigNumber;
        withdrawShares: BigNumber;
    }>;
    vaultOwner(overrides?: CallOverrides): Promise<string>;
    withdraw(vaultStrategies: PromiseOrValue<string>[], sharesToWithdraw: PromiseOrValue<BigNumberish>, withdrawAll: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawFast(vaultStrategies: PromiseOrValue<string>[], sharesToWithdraw: PromiseOrValue<BigNumberish>, withdrawAll: PromiseOrValue<boolean>, fastWithdrawParams: FastWithdrawParamsStruct, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        addToken(token: PromiseOrValue<string>, rewardsDuration: PromiseOrValue<BigNumberish>, reward: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        claim(doRedeemVault: PromiseOrValue<boolean>, vaultStrategies: PromiseOrValue<string>[], doRedeemUser: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<BigNumber>;
        claimFinishedRewards(token: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        controller(overrides?: CallOverrides): Promise<string>;
        deposit(vaultStrategies: PromiseOrValue<string>[], amount: PromiseOrValue<BigNumberish>, transferFromVault: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        earned(token: PromiseOrValue<string>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        forceRemoveReward(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        getActiveRewards(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        getRewardForDuration(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getRewards(tokens: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        getUpdatedUser(vaultStrategies: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber]>;
        getUpdatedVault(vaultStrategies: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber]>;
        initialize(vaultInitializable: VaultInitializableStruct, overrides?: CallOverrides): Promise<void>;
        lastIndexInteracted(overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            index1: BigNumber;
            index2: BigNumber;
        }>;
        lastTimeRewardApplicable(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
        lowerVaultFee(_vaultFee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        name(overrides?: CallOverrides): Promise<string>;
        notifyRewardAmount(token: PromiseOrValue<string>, reward: PromiseOrValue<BigNumberish>, rewardsDuration: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        notifyStrategyRemoved(vaultStrategies: PromiseOrValue<string>[], i: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        payFees(profit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        proportions(overrides?: CallOverrides): Promise<BigNumber>;
        reallocate(vaultStrategies: PromiseOrValue<string>[], newVaultProportions: PromiseOrValue<BigNumberish>, finishedIndex: PromiseOrValue<BigNumberish>, activeIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber[],
            BigNumber
        ] & {
            withdrawProportionsArray: BigNumber[];
            newDepositProportions: BigNumber;
        }>;
        reallocationIndex(overrides?: CallOverrides): Promise<number>;
        redeemUser(overrides?: CallOverrides): Promise<void>;
        redeemVaultAndUser(vaultStrategies: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        redeemVaultStrategies(vaultStrategies: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        redeems(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            depositShares: BigNumber;
            withdrawnAmount: BigNumber;
        }>;
        removeReward(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        rewardConfiguration(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            number,
            number,
            BigNumber,
            number,
            BigNumber
        ] & {
            rewardsDuration: number;
            periodFinish: number;
            rewardRate: BigNumber;
            lastUpdateTime: number;
            rewardPerTokenStored: BigNumber;
        }>;
        rewardPerToken(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        rewardTokens(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        rewardTokensCount(overrides?: CallOverrides): Promise<number>;
        strategiesHash(overrides?: CallOverrides): Promise<string>;
        tokenBlacklist(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        totalInstantDeposit(overrides?: CallOverrides): Promise<BigNumber>;
        totalShares(overrides?: CallOverrides): Promise<BigNumber>;
        transferVaultOwner(_vaultOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        updateName(_name: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        updatePeriodFinish(token: PromiseOrValue<string>, timestamp: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        userIndexAction(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            depositAmount: BigNumber;
            withdrawShares: BigNumber;
        }>;
        userLastInteractions(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            index1: BigNumber;
            index2: BigNumber;
        }>;
        users(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            instantDeposit: BigNumber;
            activeDeposit: BigNumber;
            owed: BigNumber;
            withdrawnDeposits: BigNumber;
            shares: BigNumber;
        }>;
        vaultFee(overrides?: CallOverrides): Promise<number>;
        vaultIndexAction(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            depositAmount: BigNumber;
            withdrawShares: BigNumber;
        }>;
        vaultOwner(overrides?: CallOverrides): Promise<string>;
        withdraw(vaultStrategies: PromiseOrValue<string>[], sharesToWithdraw: PromiseOrValue<BigNumberish>, withdrawAll: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        withdrawFast(vaultStrategies: PromiseOrValue<string>[], sharesToWithdraw: PromiseOrValue<BigNumberish>, withdrawAll: PromiseOrValue<boolean>, fastWithdrawParams: FastWithdrawParamsStruct, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        'Claimed(address,uint256)'(member?: PromiseOrValue<string> | null, claimAmount?: null): ClaimedEventFilter;
        Claimed(member?: PromiseOrValue<string> | null, claimAmount?: null): ClaimedEventFilter;
        'Deposit(address,uint256,uint256)'(member?: PromiseOrValue<string> | null, index?: PromiseOrValue<BigNumberish> | null, amount?: null): DepositEventFilter;
        Deposit(member?: PromiseOrValue<string> | null, index?: PromiseOrValue<BigNumberish> | null, amount?: null): DepositEventFilter;
        'LowerVaultFee(uint16)'(fee?: null): LowerVaultFeeEventFilter;
        LowerVaultFee(fee?: null): LowerVaultFeeEventFilter;
        'PeriodFinishUpdated(address,uint32)'(token?: PromiseOrValue<string> | null, periodFinish?: null): PeriodFinishUpdatedEventFilter;
        PeriodFinishUpdated(token?: PromiseOrValue<string> | null, periodFinish?: null): PeriodFinishUpdatedEventFilter;
        'Reallocate(uint24,uint256)'(index?: PromiseOrValue<BigNumberish> | null, newProportions?: null): ReallocateEventFilter;
        Reallocate(index?: PromiseOrValue<BigNumberish> | null, newProportions?: null): ReallocateEventFilter;
        'RewardAdded(address,uint256,uint256)'(token?: PromiseOrValue<string> | null, amount?: null, duration?: null): RewardAddedEventFilter;
        RewardAdded(token?: PromiseOrValue<string> | null, amount?: null, duration?: null): RewardAddedEventFilter;
        'RewardExtended(address,uint256,uint256,uint256,uint32)'(token?: PromiseOrValue<string> | null, amount?: null, leftover?: null, duration?: null, periodFinish?: null): RewardExtendedEventFilter;
        RewardExtended(token?: PromiseOrValue<string> | null, amount?: null, leftover?: null, duration?: null, periodFinish?: null): RewardExtendedEventFilter;
        'RewardPaid(address,address,uint256)'(token?: null, user?: PromiseOrValue<string> | null, reward?: null): RewardPaidEventFilter;
        RewardPaid(token?: null, user?: PromiseOrValue<string> | null, reward?: null): RewardPaidEventFilter;
        'RewardRemoved(address)'(token?: PromiseOrValue<string> | null): RewardRemovedEventFilter;
        RewardRemoved(token?: PromiseOrValue<string> | null): RewardRemovedEventFilter;
        'StrategyRemoved(uint256,address)'(i?: null, strategy?: null): StrategyRemovedEventFilter;
        StrategyRemoved(i?: null, strategy?: null): StrategyRemovedEventFilter;
        'TransferVaultOwner(address)'(owner?: null): TransferVaultOwnerEventFilter;
        TransferVaultOwner(owner?: null): TransferVaultOwnerEventFilter;
        'UpdateName(string)'(name?: null): UpdateNameEventFilter;
        UpdateName(name?: null): UpdateNameEventFilter;
        'UserRedeem(address,uint256)'(member?: PromiseOrValue<string> | null, globalIndex?: PromiseOrValue<BigNumberish> | null): UserRedeemEventFilter;
        UserRedeem(member?: PromiseOrValue<string> | null, globalIndex?: PromiseOrValue<BigNumberish> | null): UserRedeemEventFilter;
        'VaultRedeem(uint256)'(globalIndex?: PromiseOrValue<BigNumberish> | null): VaultRedeemEventFilter;
        VaultRedeem(globalIndex?: PromiseOrValue<BigNumberish> | null): VaultRedeemEventFilter;
        'Withdraw(address,uint256,uint256)'(member?: PromiseOrValue<string> | null, index?: PromiseOrValue<BigNumberish> | null, shares?: null): WithdrawEventFilter;
        Withdraw(member?: PromiseOrValue<string> | null, index?: PromiseOrValue<BigNumberish> | null, shares?: null): WithdrawEventFilter;
        'WithdrawFast(address,uint256)'(member?: PromiseOrValue<string> | null, shares?: null): WithdrawFastEventFilter;
        WithdrawFast(member?: PromiseOrValue<string> | null, shares?: null): WithdrawFastEventFilter;
    };
    estimateGas: {
        addToken(token: PromiseOrValue<string>, rewardsDuration: PromiseOrValue<BigNumberish>, reward: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claim(doRedeemVault: PromiseOrValue<boolean>, vaultStrategies: PromiseOrValue<string>[], doRedeemUser: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claimFinishedRewards(token: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        controller(overrides?: CallOverrides): Promise<BigNumber>;
        deposit(vaultStrategies: PromiseOrValue<string>[], amount: PromiseOrValue<BigNumberish>, transferFromVault: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        earned(token: PromiseOrValue<string>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        forceRemoveReward(token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getActiveRewards(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getRewardForDuration(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getRewards(tokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getUpdatedUser(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getUpdatedVault(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        initialize(vaultInitializable: VaultInitializableStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        lastIndexInteracted(overrides?: CallOverrides): Promise<BigNumber>;
        lastTimeRewardApplicable(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        lowerVaultFee(_vaultFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        notifyRewardAmount(token: PromiseOrValue<string>, reward: PromiseOrValue<BigNumberish>, rewardsDuration: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        notifyStrategyRemoved(vaultStrategies: PromiseOrValue<string>[], i: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        payFees(profit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        proportions(overrides?: CallOverrides): Promise<BigNumber>;
        reallocate(vaultStrategies: PromiseOrValue<string>[], newVaultProportions: PromiseOrValue<BigNumberish>, finishedIndex: PromiseOrValue<BigNumberish>, activeIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        reallocationIndex(overrides?: CallOverrides): Promise<BigNumber>;
        redeemUser(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        redeemVaultAndUser(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        redeemVaultStrategies(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        redeems(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        removeReward(token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        rewardConfiguration(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        rewardPerToken(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        rewardTokens(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        rewardTokensCount(overrides?: CallOverrides): Promise<BigNumber>;
        strategiesHash(overrides?: CallOverrides): Promise<BigNumber>;
        tokenBlacklist(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        totalInstantDeposit(overrides?: CallOverrides): Promise<BigNumber>;
        totalShares(overrides?: CallOverrides): Promise<BigNumber>;
        transferVaultOwner(_vaultOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updateName(_name: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updatePeriodFinish(token: PromiseOrValue<string>, timestamp: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        userIndexAction(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        userLastInteractions(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        users(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        vaultFee(overrides?: CallOverrides): Promise<BigNumber>;
        vaultIndexAction(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        vaultOwner(overrides?: CallOverrides): Promise<BigNumber>;
        withdraw(vaultStrategies: PromiseOrValue<string>[], sharesToWithdraw: PromiseOrValue<BigNumberish>, withdrawAll: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawFast(vaultStrategies: PromiseOrValue<string>[], sharesToWithdraw: PromiseOrValue<BigNumberish>, withdrawAll: PromiseOrValue<boolean>, fastWithdrawParams: FastWithdrawParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        addToken(token: PromiseOrValue<string>, rewardsDuration: PromiseOrValue<BigNumberish>, reward: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claim(doRedeemVault: PromiseOrValue<boolean>, vaultStrategies: PromiseOrValue<string>[], doRedeemUser: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claimFinishedRewards(token: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        controller(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deposit(vaultStrategies: PromiseOrValue<string>[], amount: PromiseOrValue<BigNumberish>, transferFromVault: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        earned(token: PromiseOrValue<string>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        forceRemoveReward(token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getActiveRewards(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getRewardForDuration(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRewards(tokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getUpdatedUser(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getUpdatedVault(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        initialize(vaultInitializable: VaultInitializableStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        lastIndexInteracted(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lastTimeRewardApplicable(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lowerVaultFee(_vaultFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        notifyRewardAmount(token: PromiseOrValue<string>, reward: PromiseOrValue<BigNumberish>, rewardsDuration: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        notifyStrategyRemoved(vaultStrategies: PromiseOrValue<string>[], i: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        payFees(profit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        proportions(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        reallocate(vaultStrategies: PromiseOrValue<string>[], newVaultProportions: PromiseOrValue<BigNumberish>, finishedIndex: PromiseOrValue<BigNumberish>, activeIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        reallocationIndex(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        redeemUser(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        redeemVaultAndUser(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        redeemVaultStrategies(vaultStrategies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        redeems(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        removeReward(token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        rewardConfiguration(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardPerToken(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardTokens(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardTokensCount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        strategiesHash(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tokenBlacklist(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalInstantDeposit(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalShares(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferVaultOwner(_vaultOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updateName(_name: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updatePeriodFinish(token: PromiseOrValue<string>, timestamp: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        userIndexAction(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        userLastInteractions(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        users(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        vaultFee(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        vaultIndexAction(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        vaultOwner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdraw(vaultStrategies: PromiseOrValue<string>[], sharesToWithdraw: PromiseOrValue<BigNumberish>, withdrawAll: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawFast(vaultStrategies: PromiseOrValue<string>[], sharesToWithdraw: PromiseOrValue<BigNumberish>, withdrawAll: PromiseOrValue<boolean>, fastWithdrawParams: FastWithdrawParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
