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 namespace MultiFeeDistribution {
    type RewardDataStruct = {
        token: PromiseOrValue<string>;
        amount: PromiseOrValue<BigNumberish>;
    };
    type RewardDataStructOutput = [string, BigNumber] & {
        token: string;
        amount: BigNumber;
    };
    type LockedBalanceStruct = {
        amount: PromiseOrValue<BigNumberish>;
        unlockTime: PromiseOrValue<BigNumberish>;
    };
    type LockedBalanceStructOutput = [BigNumber, BigNumber] & {
        amount: BigNumber;
        unlockTime: BigNumber;
    };
}
export interface UwuLendStakingV1Interface extends utils.Interface {
    functions: {
        'addReward(address)': FunctionFragment;
        'claimableRewards(address)': FunctionFragment;
        'delegateExit(address)': FunctionFragment;
        'earnedBalances(address)': FunctionFragment;
        'exitDelegatee(address)': FunctionFragment;
        'exitEarly(address)': FunctionFragment;
        'getReward(address[])': FunctionFragment;
        'incentivesController()': FunctionFragment;
        'lastTimeRewardApplicable(address)': FunctionFragment;
        'lock(uint256,address)': FunctionFragment;
        'lockDuration()': FunctionFragment;
        'lockedBalances(address)': FunctionFragment;
        'lockedSupply()': FunctionFragment;
        'mint(address,uint256)': FunctionFragment;
        'minters(address)': FunctionFragment;
        'mintersAreSet()': FunctionFragment;
        'owner()': FunctionFragment;
        'renounceOwnership()': FunctionFragment;
        'rewardData(address)': FunctionFragment;
        'rewardLookback()': FunctionFragment;
        'rewardToken()': FunctionFragment;
        'rewardTokenVault()': FunctionFragment;
        'rewardTokens(uint256)': FunctionFragment;
        'rewards(address,address)': FunctionFragment;
        'rewardsDuration()': FunctionFragment;
        'setIncentivesController(address)': FunctionFragment;
        'setMinters(address[])': FunctionFragment;
        'setStakingRewards(address)': FunctionFragment;
        'setTeamRewardFee(uint256)': FunctionFragment;
        'setTeamRewardVault(address)': FunctionFragment;
        'stakingRewards()': FunctionFragment;
        'stakingRewardsAreSet()': FunctionFragment;
        'stakingToken()': FunctionFragment;
        'teamRewardFee()': FunctionFragment;
        'teamRewardVault()': FunctionFragment;
        'transferOwnership(address)': FunctionFragment;
        'userRewardPerTokenPaid(address,address)': FunctionFragment;
        'vestingDuration()': FunctionFragment;
        'withdraw()': FunctionFragment;
        'withdrawExpiredLocks()': FunctionFragment;
        'withdrawableBalance(address)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'addReward' | 'claimableRewards' | 'delegateExit' | 'earnedBalances' | 'exitDelegatee' | 'exitEarly' | 'getReward' | 'incentivesController' | 'lastTimeRewardApplicable' | 'lock' | 'lockDuration' | 'lockedBalances' | 'lockedSupply' | 'mint' | 'minters' | 'mintersAreSet' | 'owner' | 'renounceOwnership' | 'rewardData' | 'rewardLookback' | 'rewardToken' | 'rewardTokenVault' | 'rewardTokens' | 'rewards' | 'rewardsDuration' | 'setIncentivesController' | 'setMinters' | 'setStakingRewards' | 'setTeamRewardFee' | 'setTeamRewardVault' | 'stakingRewards' | 'stakingRewardsAreSet' | 'stakingToken' | 'teamRewardFee' | 'teamRewardVault' | 'transferOwnership' | 'userRewardPerTokenPaid' | 'vestingDuration' | 'withdraw' | 'withdrawExpiredLocks' | 'withdrawableBalance'): FunctionFragment;
    encodeFunctionData(functionFragment: 'addReward', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'claimableRewards', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'delegateExit', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'earnedBalances', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'exitDelegatee', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'exitEarly', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getReward', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'incentivesController', values?: undefined): string;
    encodeFunctionData(functionFragment: 'lastTimeRewardApplicable', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'lock', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'lockDuration', values?: undefined): string;
    encodeFunctionData(functionFragment: 'lockedBalances', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'lockedSupply', values?: undefined): string;
    encodeFunctionData(functionFragment: 'mint', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'minters', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'mintersAreSet', values?: undefined): string;
    encodeFunctionData(functionFragment: 'owner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rewardData', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'rewardLookback', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rewardToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rewardTokenVault', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rewardTokens', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'rewards', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'rewardsDuration', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setIncentivesController', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setMinters', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'setStakingRewards', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setTeamRewardFee', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setTeamRewardVault', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'stakingRewards', values?: undefined): string;
    encodeFunctionData(functionFragment: 'stakingRewardsAreSet', values?: undefined): string;
    encodeFunctionData(functionFragment: 'stakingToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'teamRewardFee', values?: undefined): string;
    encodeFunctionData(functionFragment: 'teamRewardVault', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transferOwnership', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'userRewardPerTokenPaid', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'vestingDuration', values?: undefined): string;
    encodeFunctionData(functionFragment: 'withdraw', values?: undefined): string;
    encodeFunctionData(functionFragment: 'withdrawExpiredLocks', values?: undefined): string;
    encodeFunctionData(functionFragment: 'withdrawableBalance', values: [PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: 'addReward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimableRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'delegateExit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'earnedBalances', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'exitDelegatee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'exitEarly', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getReward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'incentivesController', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lastTimeRewardApplicable', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lock', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lockDuration', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lockedBalances', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lockedSupply', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'mint', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'minters', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'mintersAreSet', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardData', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardLookback', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardTokenVault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardTokens', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardsDuration', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setIncentivesController', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setMinters', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setStakingRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setTeamRewardFee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setTeamRewardVault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stakingRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stakingRewardsAreSet', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stakingToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'teamRewardFee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'teamRewardVault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'userRewardPerTokenPaid', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'vestingDuration', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawExpiredLocks', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawableBalance', data: BytesLike): Result;
    events: {
        'ExitedEarly(address,uint256,uint256)': EventFragment;
        'Locked(address,uint256)': EventFragment;
        'Minted(address,uint256)': EventFragment;
        'OwnershipTransferred(address,address)': EventFragment;
        'RewardPaid(address,address,uint256)': EventFragment;
        'Withdrawn(address,uint256)': EventFragment;
        'WithdrawnExpiredLocks(address,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'ExitedEarly'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Locked'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Minted'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RewardPaid'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Withdrawn'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'WithdrawnExpiredLocks'): EventFragment;
}
export interface ExitedEarlyEventObject {
    user: string;
    amount: BigNumber;
    penaltyAmount: BigNumber;
}
export declare type ExitedEarlyEvent = TypedEvent<[string, BigNumber, BigNumber], ExitedEarlyEventObject>;
export declare type ExitedEarlyEventFilter = TypedEventFilter<ExitedEarlyEvent>;
export interface LockedEventObject {
    user: string;
    amount: BigNumber;
}
export declare type LockedEvent = TypedEvent<[string, BigNumber], LockedEventObject>;
export declare type LockedEventFilter = TypedEventFilter<LockedEvent>;
export interface MintedEventObject {
    user: string;
    amount: BigNumber;
}
export declare type MintedEvent = TypedEvent<[string, BigNumber], MintedEventObject>;
export declare type MintedEventFilter = TypedEventFilter<MintedEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export declare type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>;
export declare type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface RewardPaidEventObject {
    user: string;
    rewardsToken: string;
    reward: BigNumber;
}
export declare type RewardPaidEvent = TypedEvent<[string, string, BigNumber], RewardPaidEventObject>;
export declare type RewardPaidEventFilter = TypedEventFilter<RewardPaidEvent>;
export interface WithdrawnEventObject {
    user: string;
    amount: BigNumber;
}
export declare type WithdrawnEvent = TypedEvent<[string, BigNumber], WithdrawnEventObject>;
export declare type WithdrawnEventFilter = TypedEventFilter<WithdrawnEvent>;
export interface WithdrawnExpiredLocksEventObject {
    user: string;
    amount: BigNumber;
}
export declare type WithdrawnExpiredLocksEvent = TypedEvent<[string, BigNumber], WithdrawnExpiredLocksEventObject>;
export declare type WithdrawnExpiredLocksEventFilter = TypedEventFilter<WithdrawnExpiredLocksEvent>;
export interface UwuLendStakingV1 extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: UwuLendStakingV1Interface;
    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: {
        addReward(_rewardsToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claimableRewards(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            MultiFeeDistribution.RewardDataStructOutput[]
        ] & {
            rewards: MultiFeeDistribution.RewardDataStructOutput[];
        }>;
        delegateExit(delegatee: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        earnedBalances(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            MultiFeeDistribution.LockedBalanceStructOutput[]
        ] & {
            total: BigNumber;
            earningsData: MultiFeeDistribution.LockedBalanceStructOutput[];
        }>;
        exitDelegatee(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        exitEarly(onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getReward(_rewardTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        incentivesController(overrides?: CallOverrides): Promise<[string]>;
        lastTimeRewardApplicable(_rewardsToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        lock(amount: PromiseOrValue<BigNumberish>, onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        lockDuration(overrides?: CallOverrides): Promise<[BigNumber]>;
        lockedBalances(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            MultiFeeDistribution.LockedBalanceStructOutput[]
        ] & {
            total: BigNumber;
            unlockable: BigNumber;
            locked: BigNumber;
            lockData: MultiFeeDistribution.LockedBalanceStructOutput[];
        }>;
        lockedSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        mint(user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        minters(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        mintersAreSet(overrides?: CallOverrides): Promise<[boolean]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        rewardData(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            periodFinish: BigNumber;
            rewardRate: BigNumber;
            lastUpdateTime: BigNumber;
            rewardPerTokenStored: BigNumber;
            balance: BigNumber;
        }>;
        rewardLookback(overrides?: CallOverrides): Promise<[BigNumber]>;
        rewardToken(overrides?: CallOverrides): Promise<[string]>;
        rewardTokenVault(overrides?: CallOverrides): Promise<[string]>;
        rewardTokens(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        rewards(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        rewardsDuration(overrides?: CallOverrides): Promise<[BigNumber]>;
        setIncentivesController(_controller: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setMinters(_minters: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setStakingRewards(_stakingRewards: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setTeamRewardFee(fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setTeamRewardVault(vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        stakingRewards(overrides?: CallOverrides): Promise<[string]>;
        stakingRewardsAreSet(overrides?: CallOverrides): Promise<[boolean]>;
        stakingToken(overrides?: CallOverrides): Promise<[string]>;
        teamRewardFee(overrides?: CallOverrides): Promise<[BigNumber]>;
        teamRewardVault(overrides?: CallOverrides): Promise<[string]>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        userRewardPerTokenPaid(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        vestingDuration(overrides?: CallOverrides): Promise<[BigNumber]>;
        withdraw(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawExpiredLocks(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawableBalance(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            amount: BigNumber;
            penaltyAmount: BigNumber;
            amountWithoutPenalty: BigNumber;
        }>;
    };
    addReward(_rewardsToken: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claimableRewards(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<MultiFeeDistribution.RewardDataStructOutput[]>;
    delegateExit(delegatee: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    earnedBalances(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        MultiFeeDistribution.LockedBalanceStructOutput[]
    ] & {
        total: BigNumber;
        earningsData: MultiFeeDistribution.LockedBalanceStructOutput[];
    }>;
    exitDelegatee(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    exitEarly(onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getReward(_rewardTokens: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    incentivesController(overrides?: CallOverrides): Promise<string>;
    lastTimeRewardApplicable(_rewardsToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    lock(amount: PromiseOrValue<BigNumberish>, onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    lockDuration(overrides?: CallOverrides): Promise<BigNumber>;
    lockedBalances(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        MultiFeeDistribution.LockedBalanceStructOutput[]
    ] & {
        total: BigNumber;
        unlockable: BigNumber;
        locked: BigNumber;
        lockData: MultiFeeDistribution.LockedBalanceStructOutput[];
    }>;
    lockedSupply(overrides?: CallOverrides): Promise<BigNumber>;
    mint(user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    minters(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    mintersAreSet(overrides?: CallOverrides): Promise<boolean>;
    owner(overrides?: CallOverrides): Promise<string>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    rewardData(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        periodFinish: BigNumber;
        rewardRate: BigNumber;
        lastUpdateTime: BigNumber;
        rewardPerTokenStored: BigNumber;
        balance: BigNumber;
    }>;
    rewardLookback(overrides?: CallOverrides): Promise<BigNumber>;
    rewardToken(overrides?: CallOverrides): Promise<string>;
    rewardTokenVault(overrides?: CallOverrides): Promise<string>;
    rewardTokens(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    rewards(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    rewardsDuration(overrides?: CallOverrides): Promise<BigNumber>;
    setIncentivesController(_controller: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setMinters(_minters: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setStakingRewards(_stakingRewards: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setTeamRewardFee(fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setTeamRewardVault(vault: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    stakingRewards(overrides?: CallOverrides): Promise<string>;
    stakingRewardsAreSet(overrides?: CallOverrides): Promise<boolean>;
    stakingToken(overrides?: CallOverrides): Promise<string>;
    teamRewardFee(overrides?: CallOverrides): Promise<BigNumber>;
    teamRewardVault(overrides?: CallOverrides): Promise<string>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    userRewardPerTokenPaid(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    vestingDuration(overrides?: CallOverrides): Promise<BigNumber>;
    withdraw(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawExpiredLocks(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawableBalance(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        amount: BigNumber;
        penaltyAmount: BigNumber;
        amountWithoutPenalty: BigNumber;
    }>;
    callStatic: {
        addReward(_rewardsToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        claimableRewards(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<MultiFeeDistribution.RewardDataStructOutput[]>;
        delegateExit(delegatee: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        earnedBalances(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            MultiFeeDistribution.LockedBalanceStructOutput[]
        ] & {
            total: BigNumber;
            earningsData: MultiFeeDistribution.LockedBalanceStructOutput[];
        }>;
        exitDelegatee(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        exitEarly(onBehalfOf: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        getReward(_rewardTokens: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        incentivesController(overrides?: CallOverrides): Promise<string>;
        lastTimeRewardApplicable(_rewardsToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        lock(amount: PromiseOrValue<BigNumberish>, onBehalfOf: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        lockDuration(overrides?: CallOverrides): Promise<BigNumber>;
        lockedBalances(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            MultiFeeDistribution.LockedBalanceStructOutput[]
        ] & {
            total: BigNumber;
            unlockable: BigNumber;
            locked: BigNumber;
            lockData: MultiFeeDistribution.LockedBalanceStructOutput[];
        }>;
        lockedSupply(overrides?: CallOverrides): Promise<BigNumber>;
        mint(user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        minters(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        mintersAreSet(overrides?: CallOverrides): Promise<boolean>;
        owner(overrides?: CallOverrides): Promise<string>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        rewardData(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            periodFinish: BigNumber;
            rewardRate: BigNumber;
            lastUpdateTime: BigNumber;
            rewardPerTokenStored: BigNumber;
            balance: BigNumber;
        }>;
        rewardLookback(overrides?: CallOverrides): Promise<BigNumber>;
        rewardToken(overrides?: CallOverrides): Promise<string>;
        rewardTokenVault(overrides?: CallOverrides): Promise<string>;
        rewardTokens(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        rewards(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        rewardsDuration(overrides?: CallOverrides): Promise<BigNumber>;
        setIncentivesController(_controller: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setMinters(_minters: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        setStakingRewards(_stakingRewards: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setTeamRewardFee(fee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setTeamRewardVault(vault: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        stakingRewards(overrides?: CallOverrides): Promise<string>;
        stakingRewardsAreSet(overrides?: CallOverrides): Promise<boolean>;
        stakingToken(overrides?: CallOverrides): Promise<string>;
        teamRewardFee(overrides?: CallOverrides): Promise<BigNumber>;
        teamRewardVault(overrides?: CallOverrides): Promise<string>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        userRewardPerTokenPaid(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        vestingDuration(overrides?: CallOverrides): Promise<BigNumber>;
        withdraw(overrides?: CallOverrides): Promise<void>;
        withdrawExpiredLocks(overrides?: CallOverrides): Promise<void>;
        withdrawableBalance(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            amount: BigNumber;
            penaltyAmount: BigNumber;
            amountWithoutPenalty: BigNumber;
        }>;
    };
    filters: {
        'ExitedEarly(address,uint256,uint256)'(user?: PromiseOrValue<string> | null, amount?: null, penaltyAmount?: null): ExitedEarlyEventFilter;
        ExitedEarly(user?: PromiseOrValue<string> | null, amount?: null, penaltyAmount?: null): ExitedEarlyEventFilter;
        'Locked(address,uint256)'(user?: PromiseOrValue<string> | null, amount?: null): LockedEventFilter;
        Locked(user?: PromiseOrValue<string> | null, amount?: null): LockedEventFilter;
        'Minted(address,uint256)'(user?: PromiseOrValue<string> | null, amount?: null): MintedEventFilter;
        Minted(user?: PromiseOrValue<string> | null, amount?: null): MintedEventFilter;
        'OwnershipTransferred(address,address)'(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        'RewardPaid(address,address,uint256)'(user?: PromiseOrValue<string> | null, rewardsToken?: PromiseOrValue<string> | null, reward?: null): RewardPaidEventFilter;
        RewardPaid(user?: PromiseOrValue<string> | null, rewardsToken?: PromiseOrValue<string> | null, reward?: null): RewardPaidEventFilter;
        'Withdrawn(address,uint256)'(user?: PromiseOrValue<string> | null, amount?: null): WithdrawnEventFilter;
        Withdrawn(user?: PromiseOrValue<string> | null, amount?: null): WithdrawnEventFilter;
        'WithdrawnExpiredLocks(address,uint256)'(user?: PromiseOrValue<string> | null, amount?: null): WithdrawnExpiredLocksEventFilter;
        WithdrawnExpiredLocks(user?: PromiseOrValue<string> | null, amount?: null): WithdrawnExpiredLocksEventFilter;
    };
    estimateGas: {
        addReward(_rewardsToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claimableRewards(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        delegateExit(delegatee: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        earnedBalances(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        exitDelegatee(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        exitEarly(onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getReward(_rewardTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        incentivesController(overrides?: CallOverrides): Promise<BigNumber>;
        lastTimeRewardApplicable(_rewardsToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        lock(amount: PromiseOrValue<BigNumberish>, onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        lockDuration(overrides?: CallOverrides): Promise<BigNumber>;
        lockedBalances(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        lockedSupply(overrides?: CallOverrides): Promise<BigNumber>;
        mint(user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        minters(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        mintersAreSet(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        rewardData(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        rewardLookback(overrides?: CallOverrides): Promise<BigNumber>;
        rewardToken(overrides?: CallOverrides): Promise<BigNumber>;
        rewardTokenVault(overrides?: CallOverrides): Promise<BigNumber>;
        rewardTokens(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        rewards(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        rewardsDuration(overrides?: CallOverrides): Promise<BigNumber>;
        setIncentivesController(_controller: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setMinters(_minters: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setStakingRewards(_stakingRewards: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setTeamRewardFee(fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setTeamRewardVault(vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        stakingRewards(overrides?: CallOverrides): Promise<BigNumber>;
        stakingRewardsAreSet(overrides?: CallOverrides): Promise<BigNumber>;
        stakingToken(overrides?: CallOverrides): Promise<BigNumber>;
        teamRewardFee(overrides?: CallOverrides): Promise<BigNumber>;
        teamRewardVault(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        userRewardPerTokenPaid(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        vestingDuration(overrides?: CallOverrides): Promise<BigNumber>;
        withdraw(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawExpiredLocks(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawableBalance(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        addReward(_rewardsToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claimableRewards(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        delegateExit(delegatee: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        earnedBalances(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        exitDelegatee(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        exitEarly(onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getReward(_rewardTokens: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        incentivesController(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lastTimeRewardApplicable(_rewardsToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lock(amount: PromiseOrValue<BigNumberish>, onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        lockDuration(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lockedBalances(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lockedSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        mint(user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        minters(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        mintersAreSet(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        rewardData(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardLookback(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardTokenVault(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardTokens(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewards(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardsDuration(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setIncentivesController(_controller: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setMinters(_minters: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setStakingRewards(_stakingRewards: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setTeamRewardFee(fee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setTeamRewardVault(vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        stakingRewards(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        stakingRewardsAreSet(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        stakingToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        teamRewardFee(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        teamRewardVault(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        userRewardPerTokenPaid(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        vestingDuration(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdraw(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawExpiredLocks(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawableBalance(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
