import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "../../common";
export interface IRewardVaultInterface extends Interface {
    getFunction(nameOrSignature: "addIncentive" | "balanceOf" | "delegateStake" | "delegateWithdraw" | "distributor" | "earned" | "exit" | "getDelegateStake" | "getReward" | "getRewardForDuration" | "getTotalDelegateStaked" | "getWhitelistedTokens" | "getWhitelistedTokensCount" | "initialize" | "lastTimeRewardApplicable" | "lastUpdateTime" | "notifyRewardAmount" | "operator" | "pause" | "periodFinish" | "recoverERC20" | "removeIncentiveToken" | "rewardPerToken" | "rewardPerTokenStored" | "rewardRate" | "rewards" | "rewardsDuration" | "setDistributor" | "setMaxIncentiveTokensCount" | "setOperator" | "setRewardsDuration" | "stake" | "totalSupply" | "undistributedRewards" | "unpause" | "updateIncentiveManager" | "userRewardPerTokenPaid" | "whitelistIncentiveToken" | "withdraw"): FunctionFragment;
    getEvent(nameOrSignatureOrTopic: "DelegateStaked" | "DelegateWithdrawn" | "DistributorSet" | "IncentiveAdded" | "IncentiveManagerChanged" | "IncentiveTokenRemoved" | "IncentiveTokenWhitelisted" | "IncentivesProcessFailed" | "IncentivesProcessed" | "MaxIncentiveTokensCountUpdated" | "OperatorSet" | "Recovered" | "RewardAdded" | "RewardPaid" | "RewardsDurationUpdated" | "Staked" | "Withdrawn"): EventFragment;
    encodeFunctionData(functionFragment: "addIncentive", values: [AddressLike, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "balanceOf", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "delegateStake", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "delegateWithdraw", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "distributor", values?: undefined): string;
    encodeFunctionData(functionFragment: "earned", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "exit", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "getDelegateStake", values: [AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "getReward", values: [AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "getRewardForDuration", values?: undefined): string;
    encodeFunctionData(functionFragment: "getTotalDelegateStaked", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "getWhitelistedTokens", values?: undefined): string;
    encodeFunctionData(functionFragment: "getWhitelistedTokensCount", values?: undefined): string;
    encodeFunctionData(functionFragment: "initialize", values: [AddressLike, AddressLike, AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "lastTimeRewardApplicable", values?: undefined): string;
    encodeFunctionData(functionFragment: "lastUpdateTime", values?: undefined): string;
    encodeFunctionData(functionFragment: "notifyRewardAmount", values: [BytesLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "operator", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "pause", values?: undefined): string;
    encodeFunctionData(functionFragment: "periodFinish", values?: undefined): string;
    encodeFunctionData(functionFragment: "recoverERC20", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "removeIncentiveToken", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "rewardPerToken", values?: undefined): string;
    encodeFunctionData(functionFragment: "rewardPerTokenStored", values?: undefined): string;
    encodeFunctionData(functionFragment: "rewardRate", values?: undefined): string;
    encodeFunctionData(functionFragment: "rewards", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "rewardsDuration", values?: undefined): string;
    encodeFunctionData(functionFragment: "setDistributor", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "setMaxIncentiveTokensCount", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "setOperator", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "setRewardsDuration", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "stake", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "totalSupply", values?: undefined): string;
    encodeFunctionData(functionFragment: "undistributedRewards", values?: undefined): string;
    encodeFunctionData(functionFragment: "unpause", values?: undefined): string;
    encodeFunctionData(functionFragment: "updateIncentiveManager", values: [AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "userRewardPerTokenPaid", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "whitelistIncentiveToken", values: [AddressLike, BigNumberish, AddressLike]): string;
    encodeFunctionData(functionFragment: "withdraw", values: [BigNumberish]): string;
    decodeFunctionResult(functionFragment: "addIncentive", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "delegateStake", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "delegateWithdraw", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "distributor", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "earned", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "exit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getDelegateStake", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getReward", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRewardForDuration", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTotalDelegateStaked", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getWhitelistedTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getWhitelistedTokensCount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lastTimeRewardApplicable", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lastUpdateTime", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "notifyRewardAmount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "operator", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "periodFinish", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "recoverERC20", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeIncentiveToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rewardPerToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rewardPerTokenStored", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rewardRate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rewards", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rewardsDuration", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setDistributor", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setMaxIncentiveTokensCount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setOperator", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setRewardsDuration", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stake", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalSupply", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "undistributedRewards", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "updateIncentiveManager", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "userRewardPerTokenPaid", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "whitelistIncentiveToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;
}
export declare namespace DelegateStakedEvent {
    type InputTuple = [
        account: AddressLike,
        delegate: AddressLike,
        amount: BigNumberish
    ];
    type OutputTuple = [account: string, delegate: string, amount: bigint];
    interface OutputObject {
        account: string;
        delegate: string;
        amount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace DelegateWithdrawnEvent {
    type InputTuple = [
        account: AddressLike,
        delegate: AddressLike,
        amount: BigNumberish
    ];
    type OutputTuple = [account: string, delegate: string, amount: bigint];
    interface OutputObject {
        account: string;
        delegate: string;
        amount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace DistributorSetEvent {
    type InputTuple = [distributor: AddressLike];
    type OutputTuple = [distributor: string];
    interface OutputObject {
        distributor: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace IncentiveAddedEvent {
    type InputTuple = [
        token: AddressLike,
        sender: AddressLike,
        amount: BigNumberish,
        incentiveRate: BigNumberish
    ];
    type OutputTuple = [
        token: string,
        sender: string,
        amount: bigint,
        incentiveRate: bigint
    ];
    interface OutputObject {
        token: string;
        sender: string;
        amount: bigint;
        incentiveRate: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace IncentiveManagerChangedEvent {
    type InputTuple = [
        token: AddressLike,
        newManager: AddressLike,
        oldManager: AddressLike
    ];
    type OutputTuple = [
        token: string,
        newManager: string,
        oldManager: string
    ];
    interface OutputObject {
        token: string;
        newManager: string;
        oldManager: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace IncentiveTokenRemovedEvent {
    type InputTuple = [token: AddressLike];
    type OutputTuple = [token: string];
    interface OutputObject {
        token: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace IncentiveTokenWhitelistedEvent {
    type InputTuple = [
        token: AddressLike,
        minIncentiveRate: BigNumberish,
        manager: AddressLike
    ];
    type OutputTuple = [
        token: string,
        minIncentiveRate: bigint,
        manager: string
    ];
    interface OutputObject {
        token: string;
        minIncentiveRate: bigint;
        manager: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace IncentivesProcessFailedEvent {
    type InputTuple = [
        pubkey: BytesLike,
        token: AddressLike,
        bgtEmitted: BigNumberish,
        amount: BigNumberish
    ];
    type OutputTuple = [
        pubkey: string,
        token: string,
        bgtEmitted: bigint,
        amount: bigint
    ];
    interface OutputObject {
        pubkey: string;
        token: string;
        bgtEmitted: bigint;
        amount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace IncentivesProcessedEvent {
    type InputTuple = [
        pubkey: BytesLike,
        token: AddressLike,
        bgtEmitted: BigNumberish,
        amount: BigNumberish
    ];
    type OutputTuple = [
        pubkey: string,
        token: string,
        bgtEmitted: bigint,
        amount: bigint
    ];
    interface OutputObject {
        pubkey: string;
        token: string;
        bgtEmitted: bigint;
        amount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace MaxIncentiveTokensCountUpdatedEvent {
    type InputTuple = [maxIncentiveTokensCount: BigNumberish];
    type OutputTuple = [maxIncentiveTokensCount: bigint];
    interface OutputObject {
        maxIncentiveTokensCount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace OperatorSetEvent {
    type InputTuple = [account: AddressLike, operator: AddressLike];
    type OutputTuple = [account: string, operator: string];
    interface OutputObject {
        account: string;
        operator: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RecoveredEvent {
    type InputTuple = [token: AddressLike, amount: BigNumberish];
    type OutputTuple = [token: string, amount: bigint];
    interface OutputObject {
        token: string;
        amount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RewardAddedEvent {
    type InputTuple = [reward: BigNumberish];
    type OutputTuple = [reward: bigint];
    interface OutputObject {
        reward: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RewardPaidEvent {
    type InputTuple = [
        account: AddressLike,
        to: AddressLike,
        reward: BigNumberish
    ];
    type OutputTuple = [account: string, to: string, reward: bigint];
    interface OutputObject {
        account: string;
        to: string;
        reward: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RewardsDurationUpdatedEvent {
    type InputTuple = [newDuration: BigNumberish];
    type OutputTuple = [newDuration: bigint];
    interface OutputObject {
        newDuration: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace StakedEvent {
    type InputTuple = [account: AddressLike, amount: BigNumberish];
    type OutputTuple = [account: string, amount: bigint];
    interface OutputObject {
        account: string;
        amount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace WithdrawnEvent {
    type InputTuple = [account: AddressLike, amount: BigNumberish];
    type OutputTuple = [account: string, amount: bigint];
    interface OutputObject {
        account: string;
        amount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export interface IRewardVault extends BaseContract {
    connect(runner?: ContractRunner | null): IRewardVault;
    waitForDeployment(): Promise<this>;
    interface: IRewardVaultInterface;
    queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
    listeners(eventName?: string): Promise<Array<Listener>>;
    removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
    addIncentive: TypedContractMethod<[
        token: AddressLike,
        amount: BigNumberish,
        incentiveRate: BigNumberish
    ], [
        void
    ], "nonpayable">;
    balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">;
    delegateStake: TypedContractMethod<[
        account: AddressLike,
        amount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    delegateWithdraw: TypedContractMethod<[
        account: AddressLike,
        amount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    distributor: TypedContractMethod<[], [string], "view">;
    earned: TypedContractMethod<[account: AddressLike], [bigint], "view">;
    exit: TypedContractMethod<[recipient: AddressLike], [void], "nonpayable">;
    getDelegateStake: TypedContractMethod<[
        account: AddressLike,
        delegate: AddressLike
    ], [
        bigint
    ], "view">;
    getReward: TypedContractMethod<[
        account: AddressLike,
        recipient: AddressLike
    ], [
        bigint
    ], "nonpayable">;
    getRewardForDuration: TypedContractMethod<[], [bigint], "view">;
    getTotalDelegateStaked: TypedContractMethod<[
        account: AddressLike
    ], [
        bigint
    ], "view">;
    getWhitelistedTokens: TypedContractMethod<[], [string[]], "view">;
    getWhitelistedTokensCount: TypedContractMethod<[], [bigint], "view">;
    initialize: TypedContractMethod<[
        _berachef: AddressLike,
        _bgt: AddressLike,
        _distributor: AddressLike,
        _stakingToken: AddressLike
    ], [
        void
    ], "nonpayable">;
    lastTimeRewardApplicable: TypedContractMethod<[], [bigint], "view">;
    lastUpdateTime: TypedContractMethod<[], [bigint], "view">;
    notifyRewardAmount: TypedContractMethod<[
        pubkey: BytesLike,
        reward: BigNumberish
    ], [
        void
    ], "nonpayable">;
    operator: TypedContractMethod<[account: AddressLike], [string], "view">;
    pause: TypedContractMethod<[], [void], "nonpayable">;
    periodFinish: TypedContractMethod<[], [bigint], "view">;
    recoverERC20: TypedContractMethod<[
        tokenAddress: AddressLike,
        tokenAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    removeIncentiveToken: TypedContractMethod<[
        token: AddressLike
    ], [
        void
    ], "nonpayable">;
    rewardPerToken: TypedContractMethod<[], [bigint], "view">;
    rewardPerTokenStored: TypedContractMethod<[], [bigint], "view">;
    rewardRate: TypedContractMethod<[], [bigint], "view">;
    rewards: TypedContractMethod<[account: AddressLike], [bigint], "view">;
    rewardsDuration: TypedContractMethod<[], [bigint], "view">;
    setDistributor: TypedContractMethod<[
        _rewardDistribution: AddressLike
    ], [
        void
    ], "nonpayable">;
    setMaxIncentiveTokensCount: TypedContractMethod<[
        _maxIncentiveTokensCount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    setOperator: TypedContractMethod<[
        _operator: AddressLike
    ], [
        void
    ], "nonpayable">;
    setRewardsDuration: TypedContractMethod<[
        _rewardsDuration: BigNumberish
    ], [
        void
    ], "nonpayable">;
    stake: TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">;
    totalSupply: TypedContractMethod<[], [bigint], "view">;
    undistributedRewards: TypedContractMethod<[], [bigint], "view">;
    unpause: TypedContractMethod<[], [void], "nonpayable">;
    updateIncentiveManager: TypedContractMethod<[
        token: AddressLike,
        newManager: AddressLike
    ], [
        void
    ], "nonpayable">;
    userRewardPerTokenPaid: TypedContractMethod<[
        account: AddressLike
    ], [
        bigint
    ], "view">;
    whitelistIncentiveToken: TypedContractMethod<[
        token: AddressLike,
        minIncentiveRate: BigNumberish,
        manager: AddressLike
    ], [
        void
    ], "nonpayable">;
    withdraw: TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "addIncentive"): TypedContractMethod<[
        token: AddressLike,
        amount: BigNumberish,
        incentiveRate: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "balanceOf"): TypedContractMethod<[account: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "delegateStake"): TypedContractMethod<[
        account: AddressLike,
        amount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "delegateWithdraw"): TypedContractMethod<[
        account: AddressLike,
        amount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "distributor"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "earned"): TypedContractMethod<[account: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "exit"): TypedContractMethod<[recipient: AddressLike], [void], "nonpayable">;
    getFunction(nameOrSignature: "getDelegateStake"): TypedContractMethod<[
        account: AddressLike,
        delegate: AddressLike
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "getReward"): TypedContractMethod<[
        account: AddressLike,
        recipient: AddressLike
    ], [
        bigint
    ], "nonpayable">;
    getFunction(nameOrSignature: "getRewardForDuration"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "getTotalDelegateStaked"): TypedContractMethod<[account: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "getWhitelistedTokens"): TypedContractMethod<[], [string[]], "view">;
    getFunction(nameOrSignature: "getWhitelistedTokensCount"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "initialize"): TypedContractMethod<[
        _berachef: AddressLike,
        _bgt: AddressLike,
        _distributor: AddressLike,
        _stakingToken: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "lastTimeRewardApplicable"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "lastUpdateTime"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "notifyRewardAmount"): TypedContractMethod<[
        pubkey: BytesLike,
        reward: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "operator"): TypedContractMethod<[account: AddressLike], [string], "view">;
    getFunction(nameOrSignature: "pause"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "periodFinish"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "recoverERC20"): TypedContractMethod<[
        tokenAddress: AddressLike,
        tokenAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "removeIncentiveToken"): TypedContractMethod<[token: AddressLike], [void], "nonpayable">;
    getFunction(nameOrSignature: "rewardPerToken"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "rewardPerTokenStored"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "rewardRate"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "rewards"): TypedContractMethod<[account: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "rewardsDuration"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "setDistributor"): TypedContractMethod<[
        _rewardDistribution: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setMaxIncentiveTokensCount"): TypedContractMethod<[
        _maxIncentiveTokensCount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setOperator"): TypedContractMethod<[_operator: AddressLike], [void], "nonpayable">;
    getFunction(nameOrSignature: "setRewardsDuration"): TypedContractMethod<[
        _rewardsDuration: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "stake"): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "totalSupply"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "undistributedRewards"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "unpause"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "updateIncentiveManager"): TypedContractMethod<[
        token: AddressLike,
        newManager: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "userRewardPerTokenPaid"): TypedContractMethod<[account: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "whitelistIncentiveToken"): TypedContractMethod<[
        token: AddressLike,
        minIncentiveRate: BigNumberish,
        manager: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "withdraw"): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">;
    getEvent(key: "DelegateStaked"): TypedContractEvent<DelegateStakedEvent.InputTuple, DelegateStakedEvent.OutputTuple, DelegateStakedEvent.OutputObject>;
    getEvent(key: "DelegateWithdrawn"): TypedContractEvent<DelegateWithdrawnEvent.InputTuple, DelegateWithdrawnEvent.OutputTuple, DelegateWithdrawnEvent.OutputObject>;
    getEvent(key: "DistributorSet"): TypedContractEvent<DistributorSetEvent.InputTuple, DistributorSetEvent.OutputTuple, DistributorSetEvent.OutputObject>;
    getEvent(key: "IncentiveAdded"): TypedContractEvent<IncentiveAddedEvent.InputTuple, IncentiveAddedEvent.OutputTuple, IncentiveAddedEvent.OutputObject>;
    getEvent(key: "IncentiveManagerChanged"): TypedContractEvent<IncentiveManagerChangedEvent.InputTuple, IncentiveManagerChangedEvent.OutputTuple, IncentiveManagerChangedEvent.OutputObject>;
    getEvent(key: "IncentiveTokenRemoved"): TypedContractEvent<IncentiveTokenRemovedEvent.InputTuple, IncentiveTokenRemovedEvent.OutputTuple, IncentiveTokenRemovedEvent.OutputObject>;
    getEvent(key: "IncentiveTokenWhitelisted"): TypedContractEvent<IncentiveTokenWhitelistedEvent.InputTuple, IncentiveTokenWhitelistedEvent.OutputTuple, IncentiveTokenWhitelistedEvent.OutputObject>;
    getEvent(key: "IncentivesProcessFailed"): TypedContractEvent<IncentivesProcessFailedEvent.InputTuple, IncentivesProcessFailedEvent.OutputTuple, IncentivesProcessFailedEvent.OutputObject>;
    getEvent(key: "IncentivesProcessed"): TypedContractEvent<IncentivesProcessedEvent.InputTuple, IncentivesProcessedEvent.OutputTuple, IncentivesProcessedEvent.OutputObject>;
    getEvent(key: "MaxIncentiveTokensCountUpdated"): TypedContractEvent<MaxIncentiveTokensCountUpdatedEvent.InputTuple, MaxIncentiveTokensCountUpdatedEvent.OutputTuple, MaxIncentiveTokensCountUpdatedEvent.OutputObject>;
    getEvent(key: "OperatorSet"): TypedContractEvent<OperatorSetEvent.InputTuple, OperatorSetEvent.OutputTuple, OperatorSetEvent.OutputObject>;
    getEvent(key: "Recovered"): TypedContractEvent<RecoveredEvent.InputTuple, RecoveredEvent.OutputTuple, RecoveredEvent.OutputObject>;
    getEvent(key: "RewardAdded"): TypedContractEvent<RewardAddedEvent.InputTuple, RewardAddedEvent.OutputTuple, RewardAddedEvent.OutputObject>;
    getEvent(key: "RewardPaid"): TypedContractEvent<RewardPaidEvent.InputTuple, RewardPaidEvent.OutputTuple, RewardPaidEvent.OutputObject>;
    getEvent(key: "RewardsDurationUpdated"): TypedContractEvent<RewardsDurationUpdatedEvent.InputTuple, RewardsDurationUpdatedEvent.OutputTuple, RewardsDurationUpdatedEvent.OutputObject>;
    getEvent(key: "Staked"): TypedContractEvent<StakedEvent.InputTuple, StakedEvent.OutputTuple, StakedEvent.OutputObject>;
    getEvent(key: "Withdrawn"): TypedContractEvent<WithdrawnEvent.InputTuple, WithdrawnEvent.OutputTuple, WithdrawnEvent.OutputObject>;
    filters: {
        "DelegateStaked(address,address,uint256)": TypedContractEvent<DelegateStakedEvent.InputTuple, DelegateStakedEvent.OutputTuple, DelegateStakedEvent.OutputObject>;
        DelegateStaked: TypedContractEvent<DelegateStakedEvent.InputTuple, DelegateStakedEvent.OutputTuple, DelegateStakedEvent.OutputObject>;
        "DelegateWithdrawn(address,address,uint256)": TypedContractEvent<DelegateWithdrawnEvent.InputTuple, DelegateWithdrawnEvent.OutputTuple, DelegateWithdrawnEvent.OutputObject>;
        DelegateWithdrawn: TypedContractEvent<DelegateWithdrawnEvent.InputTuple, DelegateWithdrawnEvent.OutputTuple, DelegateWithdrawnEvent.OutputObject>;
        "DistributorSet(address)": TypedContractEvent<DistributorSetEvent.InputTuple, DistributorSetEvent.OutputTuple, DistributorSetEvent.OutputObject>;
        DistributorSet: TypedContractEvent<DistributorSetEvent.InputTuple, DistributorSetEvent.OutputTuple, DistributorSetEvent.OutputObject>;
        "IncentiveAdded(address,address,uint256,uint256)": TypedContractEvent<IncentiveAddedEvent.InputTuple, IncentiveAddedEvent.OutputTuple, IncentiveAddedEvent.OutputObject>;
        IncentiveAdded: TypedContractEvent<IncentiveAddedEvent.InputTuple, IncentiveAddedEvent.OutputTuple, IncentiveAddedEvent.OutputObject>;
        "IncentiveManagerChanged(address,address,address)": TypedContractEvent<IncentiveManagerChangedEvent.InputTuple, IncentiveManagerChangedEvent.OutputTuple, IncentiveManagerChangedEvent.OutputObject>;
        IncentiveManagerChanged: TypedContractEvent<IncentiveManagerChangedEvent.InputTuple, IncentiveManagerChangedEvent.OutputTuple, IncentiveManagerChangedEvent.OutputObject>;
        "IncentiveTokenRemoved(address)": TypedContractEvent<IncentiveTokenRemovedEvent.InputTuple, IncentiveTokenRemovedEvent.OutputTuple, IncentiveTokenRemovedEvent.OutputObject>;
        IncentiveTokenRemoved: TypedContractEvent<IncentiveTokenRemovedEvent.InputTuple, IncentiveTokenRemovedEvent.OutputTuple, IncentiveTokenRemovedEvent.OutputObject>;
        "IncentiveTokenWhitelisted(address,uint256,address)": TypedContractEvent<IncentiveTokenWhitelistedEvent.InputTuple, IncentiveTokenWhitelistedEvent.OutputTuple, IncentiveTokenWhitelistedEvent.OutputObject>;
        IncentiveTokenWhitelisted: TypedContractEvent<IncentiveTokenWhitelistedEvent.InputTuple, IncentiveTokenWhitelistedEvent.OutputTuple, IncentiveTokenWhitelistedEvent.OutputObject>;
        "IncentivesProcessFailed(bytes,address,uint256,uint256)": TypedContractEvent<IncentivesProcessFailedEvent.InputTuple, IncentivesProcessFailedEvent.OutputTuple, IncentivesProcessFailedEvent.OutputObject>;
        IncentivesProcessFailed: TypedContractEvent<IncentivesProcessFailedEvent.InputTuple, IncentivesProcessFailedEvent.OutputTuple, IncentivesProcessFailedEvent.OutputObject>;
        "IncentivesProcessed(bytes,address,uint256,uint256)": TypedContractEvent<IncentivesProcessedEvent.InputTuple, IncentivesProcessedEvent.OutputTuple, IncentivesProcessedEvent.OutputObject>;
        IncentivesProcessed: TypedContractEvent<IncentivesProcessedEvent.InputTuple, IncentivesProcessedEvent.OutputTuple, IncentivesProcessedEvent.OutputObject>;
        "MaxIncentiveTokensCountUpdated(uint8)": TypedContractEvent<MaxIncentiveTokensCountUpdatedEvent.InputTuple, MaxIncentiveTokensCountUpdatedEvent.OutputTuple, MaxIncentiveTokensCountUpdatedEvent.OutputObject>;
        MaxIncentiveTokensCountUpdated: TypedContractEvent<MaxIncentiveTokensCountUpdatedEvent.InputTuple, MaxIncentiveTokensCountUpdatedEvent.OutputTuple, MaxIncentiveTokensCountUpdatedEvent.OutputObject>;
        "OperatorSet(address,address)": TypedContractEvent<OperatorSetEvent.InputTuple, OperatorSetEvent.OutputTuple, OperatorSetEvent.OutputObject>;
        OperatorSet: TypedContractEvent<OperatorSetEvent.InputTuple, OperatorSetEvent.OutputTuple, OperatorSetEvent.OutputObject>;
        "Recovered(address,uint256)": TypedContractEvent<RecoveredEvent.InputTuple, RecoveredEvent.OutputTuple, RecoveredEvent.OutputObject>;
        Recovered: TypedContractEvent<RecoveredEvent.InputTuple, RecoveredEvent.OutputTuple, RecoveredEvent.OutputObject>;
        "RewardAdded(uint256)": TypedContractEvent<RewardAddedEvent.InputTuple, RewardAddedEvent.OutputTuple, RewardAddedEvent.OutputObject>;
        RewardAdded: TypedContractEvent<RewardAddedEvent.InputTuple, RewardAddedEvent.OutputTuple, RewardAddedEvent.OutputObject>;
        "RewardPaid(address,address,uint256)": TypedContractEvent<RewardPaidEvent.InputTuple, RewardPaidEvent.OutputTuple, RewardPaidEvent.OutputObject>;
        RewardPaid: TypedContractEvent<RewardPaidEvent.InputTuple, RewardPaidEvent.OutputTuple, RewardPaidEvent.OutputObject>;
        "RewardsDurationUpdated(uint256)": TypedContractEvent<RewardsDurationUpdatedEvent.InputTuple, RewardsDurationUpdatedEvent.OutputTuple, RewardsDurationUpdatedEvent.OutputObject>;
        RewardsDurationUpdated: TypedContractEvent<RewardsDurationUpdatedEvent.InputTuple, RewardsDurationUpdatedEvent.OutputTuple, RewardsDurationUpdatedEvent.OutputObject>;
        "Staked(address,uint256)": TypedContractEvent<StakedEvent.InputTuple, StakedEvent.OutputTuple, StakedEvent.OutputObject>;
        Staked: TypedContractEvent<StakedEvent.InputTuple, StakedEvent.OutputTuple, StakedEvent.OutputObject>;
        "Withdrawn(address,uint256)": TypedContractEvent<WithdrawnEvent.InputTuple, WithdrawnEvent.OutputTuple, WithdrawnEvent.OutputObject>;
        Withdrawn: TypedContractEvent<WithdrawnEvent.InputTuple, WithdrawnEvent.OutputTuple, WithdrawnEvent.OutputObject>;
    };
}
