import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result, EventFragment } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common.js";
export interface Meltdown03Interface extends utils.Interface {
    functions: {
        "DEFAULT_ADMIN_ROLE()": FunctionFragment;
        "claimRewards()": FunctionFragment;
        "contractType()": FunctionFragment;
        "contractURI()": FunctionFragment;
        "contractVersion()": FunctionFragment;
        "depositRewardTokens(uint256)": FunctionFragment;
        "getRewardTokenBalance()": FunctionFragment;
        "getRewardsPerUnitTime()": FunctionFragment;
        "getRoleAdmin(bytes32)": FunctionFragment;
        "getRoleMember(bytes32,uint256)": FunctionFragment;
        "getRoleMemberCount(bytes32)": FunctionFragment;
        "getStakeInfo(address)": FunctionFragment;
        "getTimeUnit()": FunctionFragment;
        "grantRole(bytes32,address)": FunctionFragment;
        "hasRole(bytes32,address)": FunctionFragment;
        "hasRoleWithSwitch(bytes32,address)": FunctionFragment;
        "indexedTokens(uint256)": FunctionFragment;
        "initialize(address,string,address[],address,address,uint256,uint256)": FunctionFragment;
        "isIndexed(uint256)": FunctionFragment;
        "isTrustedForwarder(address)": FunctionFragment;
        "multicall(bytes[])": FunctionFragment;
        "onERC721Received(address,address,uint256,bytes)": FunctionFragment;
        "renounceRole(bytes32,address)": FunctionFragment;
        "revokeRole(bytes32,address)": FunctionFragment;
        "rewardToken()": FunctionFragment;
        "setContractURI(string)": FunctionFragment;
        "setRewardsPerUnitTime(uint256)": FunctionFragment;
        "setTimeUnit(uint256)": FunctionFragment;
        "stake(uint256[])": FunctionFragment;
        "stakerAddress(uint256)": FunctionFragment;
        "stakers(address)": FunctionFragment;
        "stakersArray(uint256)": FunctionFragment;
        "stakingToken()": FunctionFragment;
        "supportsInterface(bytes4)": FunctionFragment;
        "withdraw(uint256[])": FunctionFragment;
        "withdrawRewardTokens(uint256)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "DEFAULT_ADMIN_ROLE" | "claimRewards" | "contractType" | "contractURI" | "contractVersion" | "depositRewardTokens" | "getRewardTokenBalance" | "getRewardsPerUnitTime" | "getRoleAdmin" | "getRoleMember" | "getRoleMemberCount" | "getStakeInfo" | "getTimeUnit" | "grantRole" | "hasRole" | "hasRoleWithSwitch" | "indexedTokens" | "initialize" | "isIndexed" | "isTrustedForwarder" | "multicall" | "onERC721Received" | "renounceRole" | "revokeRole" | "rewardToken" | "setContractURI" | "setRewardsPerUnitTime" | "setTimeUnit" | "stake" | "stakerAddress" | "stakers" | "stakersArray" | "stakingToken" | "supportsInterface" | "withdraw" | "withdrawRewardTokens"): FunctionFragment;
    encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "claimRewards", values?: undefined): string;
    encodeFunctionData(functionFragment: "contractType", values?: undefined): string;
    encodeFunctionData(functionFragment: "contractURI", values?: undefined): string;
    encodeFunctionData(functionFragment: "contractVersion", values?: undefined): string;
    encodeFunctionData(functionFragment: "depositRewardTokens", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "getRewardTokenBalance", values?: undefined): string;
    encodeFunctionData(functionFragment: "getRewardsPerUnitTime", values?: undefined): string;
    encodeFunctionData(functionFragment: "getRoleAdmin", values: [BytesLike]): string;
    encodeFunctionData(functionFragment: "getRoleMember", values: [BytesLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getRoleMemberCount", values: [BytesLike]): string;
    encodeFunctionData(functionFragment: "getStakeInfo", values: [string]): string;
    encodeFunctionData(functionFragment: "getTimeUnit", values?: undefined): string;
    encodeFunctionData(functionFragment: "grantRole", values: [BytesLike, string]): string;
    encodeFunctionData(functionFragment: "hasRole", values: [BytesLike, string]): string;
    encodeFunctionData(functionFragment: "hasRoleWithSwitch", values: [BytesLike, string]): string;
    encodeFunctionData(functionFragment: "indexedTokens", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "initialize", values: [
        string,
        string,
        string[],
        string,
        string,
        BigNumberish,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "isIndexed", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "isTrustedForwarder", values: [string]): string;
    encodeFunctionData(functionFragment: "multicall", values: [BytesLike[]]): string;
    encodeFunctionData(functionFragment: "onERC721Received", values: [string, string, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "renounceRole", values: [BytesLike, string]): string;
    encodeFunctionData(functionFragment: "revokeRole", values: [BytesLike, string]): string;
    encodeFunctionData(functionFragment: "rewardToken", values?: undefined): string;
    encodeFunctionData(functionFragment: "setContractURI", values: [string]): string;
    encodeFunctionData(functionFragment: "setRewardsPerUnitTime", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "setTimeUnit", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "stake", values: [BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "stakerAddress", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "stakers", values: [string]): string;
    encodeFunctionData(functionFragment: "stakersArray", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "stakingToken", values?: undefined): string;
    encodeFunctionData(functionFragment: "supportsInterface", values: [BytesLike]): string;
    encodeFunctionData(functionFragment: "withdraw", values: [BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "withdrawRewardTokens", values: [BigNumberish]): string;
    decodeFunctionResult(functionFragment: "DEFAULT_ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimRewards", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "contractType", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "contractURI", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "contractVersion", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "depositRewardTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRewardTokenBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRewardsPerUnitTime", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRoleAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRoleMember", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRoleMemberCount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getStakeInfo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTimeUnit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hasRoleWithSwitch", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "indexedTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isIndexed", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isTrustedForwarder", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "onERC721Received", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rewardToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setContractURI", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setRewardsPerUnitTime", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setTimeUnit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stake", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakerAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakers", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakersArray", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakingToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supportsInterface", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawRewardTokens", data: BytesLike): Result;
    events: {
        "ContractURIUpdated(string,string)": EventFragment;
        "Initialized(uint8)": EventFragment;
        "RewardTokensDepositedByAdmin(uint256)": EventFragment;
        "RewardTokensWithdrawnByAdmin(uint256)": EventFragment;
        "RewardsClaimed(address,uint256)": EventFragment;
        "RoleAdminChanged(bytes32,bytes32,bytes32)": EventFragment;
        "RoleGranted(bytes32,address,address)": EventFragment;
        "RoleRevoked(bytes32,address,address)": EventFragment;
        "TokensStaked(address,uint256[])": EventFragment;
        "TokensWithdrawn(address,uint256[])": EventFragment;
        "UpdatedRewardsPerUnitTime(uint256,uint256)": EventFragment;
        "UpdatedTimeUnit(uint256,uint256)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ContractURIUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RewardTokensDepositedByAdmin"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RewardTokensWithdrawnByAdmin"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RewardsClaimed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RoleAdminChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RoleGranted"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RoleRevoked"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TokensStaked"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TokensWithdrawn"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "UpdatedRewardsPerUnitTime"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "UpdatedTimeUnit"): EventFragment;
}
export interface ContractURIUpdatedEventObject {
    prevURI: string;
    newURI: string;
}
export type ContractURIUpdatedEvent = TypedEvent<[
    string,
    string
], ContractURIUpdatedEventObject>;
export type ContractURIUpdatedEventFilter = TypedEventFilter<ContractURIUpdatedEvent>;
export interface InitializedEventObject {
    version: number;
}
export type InitializedEvent = TypedEvent<[number], InitializedEventObject>;
export type InitializedEventFilter = TypedEventFilter<InitializedEvent>;
export interface RewardTokensDepositedByAdminEventObject {
    _amount: BigNumber;
}
export type RewardTokensDepositedByAdminEvent = TypedEvent<[
    BigNumber
], RewardTokensDepositedByAdminEventObject>;
export type RewardTokensDepositedByAdminEventFilter = TypedEventFilter<RewardTokensDepositedByAdminEvent>;
export interface RewardTokensWithdrawnByAdminEventObject {
    _amount: BigNumber;
}
export type RewardTokensWithdrawnByAdminEvent = TypedEvent<[
    BigNumber
], RewardTokensWithdrawnByAdminEventObject>;
export type RewardTokensWithdrawnByAdminEventFilter = TypedEventFilter<RewardTokensWithdrawnByAdminEvent>;
export interface RewardsClaimedEventObject {
    staker: string;
    rewardAmount: BigNumber;
}
export type RewardsClaimedEvent = TypedEvent<[
    string,
    BigNumber
], RewardsClaimedEventObject>;
export type RewardsClaimedEventFilter = TypedEventFilter<RewardsClaimedEvent>;
export interface RoleAdminChangedEventObject {
    role: string;
    previousAdminRole: string;
    newAdminRole: string;
}
export type RoleAdminChangedEvent = TypedEvent<[
    string,
    string,
    string
], RoleAdminChangedEventObject>;
export type RoleAdminChangedEventFilter = TypedEventFilter<RoleAdminChangedEvent>;
export interface RoleGrantedEventObject {
    role: string;
    account: string;
    sender: string;
}
export type RoleGrantedEvent = TypedEvent<[
    string,
    string,
    string
], RoleGrantedEventObject>;
export type RoleGrantedEventFilter = TypedEventFilter<RoleGrantedEvent>;
export interface RoleRevokedEventObject {
    role: string;
    account: string;
    sender: string;
}
export type RoleRevokedEvent = TypedEvent<[
    string,
    string,
    string
], RoleRevokedEventObject>;
export type RoleRevokedEventFilter = TypedEventFilter<RoleRevokedEvent>;
export interface TokensStakedEventObject {
    staker: string;
    tokenIds: BigNumber[];
}
export type TokensStakedEvent = TypedEvent<[
    string,
    BigNumber[]
], TokensStakedEventObject>;
export type TokensStakedEventFilter = TypedEventFilter<TokensStakedEvent>;
export interface TokensWithdrawnEventObject {
    staker: string;
    tokenIds: BigNumber[];
}
export type TokensWithdrawnEvent = TypedEvent<[
    string,
    BigNumber[]
], TokensWithdrawnEventObject>;
export type TokensWithdrawnEventFilter = TypedEventFilter<TokensWithdrawnEvent>;
export interface UpdatedRewardsPerUnitTimeEventObject {
    oldRewardsPerUnitTime: BigNumber;
    newRewardsPerUnitTime: BigNumber;
}
export type UpdatedRewardsPerUnitTimeEvent = TypedEvent<[
    BigNumber,
    BigNumber
], UpdatedRewardsPerUnitTimeEventObject>;
export type UpdatedRewardsPerUnitTimeEventFilter = TypedEventFilter<UpdatedRewardsPerUnitTimeEvent>;
export interface UpdatedTimeUnitEventObject {
    oldTimeUnit: BigNumber;
    newTimeUnit: BigNumber;
}
export type UpdatedTimeUnitEvent = TypedEvent<[
    BigNumber,
    BigNumber
], UpdatedTimeUnitEventObject>;
export type UpdatedTimeUnitEventFilter = TypedEventFilter<UpdatedTimeUnitEvent>;
export interface Meltdown03 extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: Meltdown03Interface;
    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: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        claimRewards(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        contractType(overrides?: CallOverrides): Promise<[string]>;
        contractURI(overrides?: CallOverrides): Promise<[string]>;
        contractVersion(overrides?: CallOverrides): Promise<[number]>;
        depositRewardTokens(_amount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getRewardTokenBalance(overrides?: CallOverrides): Promise<[BigNumber]>;
        getRewardsPerUnitTime(overrides?: CallOverrides): Promise<[BigNumber] & {
            _rewardsPerUnitTime: BigNumber;
        }>;
        getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise<[string]>;
        getRoleMember(role: BytesLike, index: BigNumberish, overrides?: CallOverrides): Promise<[string] & {
            member: string;
        }>;
        getRoleMemberCount(role: BytesLike, overrides?: CallOverrides): Promise<[BigNumber] & {
            count: BigNumber;
        }>;
        getStakeInfo(_staker: string, overrides?: CallOverrides): Promise<[
            BigNumber[],
            BigNumber
        ] & {
            _tokensStaked: BigNumber[];
            _rewards: BigNumber;
        }>;
        getTimeUnit(overrides?: CallOverrides): Promise<[BigNumber] & {
            _timeUnit: BigNumber;
        }>;
        grantRole(role: BytesLike, account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        hasRole(role: BytesLike, account: string, overrides?: CallOverrides): Promise<[boolean]>;
        hasRoleWithSwitch(role: BytesLike, account: string, overrides?: CallOverrides): Promise<[boolean]>;
        indexedTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        initialize(_defaultAdmin: string, _contractURI: string, _trustedForwarders: string[], _rewardToken: string, _stakingToken: string, _timeUnit: BigNumberish, _rewardsPerUnitTime: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        isIndexed(arg0: BigNumberish, overrides?: CallOverrides): Promise<[boolean]>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<[boolean]>;
        multicall(data: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        onERC721Received(arg0: string, arg1: string, arg2: BigNumberish, arg3: BytesLike, overrides?: CallOverrides): Promise<[string]>;
        renounceRole(role: BytesLike, account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        revokeRole(role: BytesLike, account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        rewardToken(overrides?: CallOverrides): Promise<[string]>;
        setContractURI(_uri: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        setRewardsPerUnitTime(_rewardsPerUnitTime: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        setTimeUnit(_timeUnit: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        stake(_tokenIds: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        stakerAddress(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        stakers(arg0: string, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            amountStaked: BigNumber;
            timeOfLastUpdate: BigNumber;
            unclaimedRewards: BigNumber;
            conditionIdOflastUpdate: BigNumber;
        }>;
        stakersArray(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        stakingToken(overrides?: CallOverrides): Promise<[string]>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<[boolean]>;
        withdraw(_tokenIds: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        withdrawRewardTokens(_amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    claimRewards(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    contractType(overrides?: CallOverrides): Promise<string>;
    contractURI(overrides?: CallOverrides): Promise<string>;
    contractVersion(overrides?: CallOverrides): Promise<number>;
    depositRewardTokens(_amount: BigNumberish, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getRewardTokenBalance(overrides?: CallOverrides): Promise<BigNumber>;
    getRewardsPerUnitTime(overrides?: CallOverrides): Promise<BigNumber>;
    getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise<string>;
    getRoleMember(role: BytesLike, index: BigNumberish, overrides?: CallOverrides): Promise<string>;
    getRoleMemberCount(role: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
    getStakeInfo(_staker: string, overrides?: CallOverrides): Promise<[
        BigNumber[],
        BigNumber
    ] & {
        _tokensStaked: BigNumber[];
        _rewards: BigNumber;
    }>;
    getTimeUnit(overrides?: CallOverrides): Promise<BigNumber>;
    grantRole(role: BytesLike, account: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    hasRole(role: BytesLike, account: string, overrides?: CallOverrides): Promise<boolean>;
    hasRoleWithSwitch(role: BytesLike, account: string, overrides?: CallOverrides): Promise<boolean>;
    indexedTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    initialize(_defaultAdmin: string, _contractURI: string, _trustedForwarders: string[], _rewardToken: string, _stakingToken: string, _timeUnit: BigNumberish, _rewardsPerUnitTime: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    isIndexed(arg0: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
    isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
    multicall(data: BytesLike[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    onERC721Received(arg0: string, arg1: string, arg2: BigNumberish, arg3: BytesLike, overrides?: CallOverrides): Promise<string>;
    renounceRole(role: BytesLike, account: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    revokeRole(role: BytesLike, account: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    rewardToken(overrides?: CallOverrides): Promise<string>;
    setContractURI(_uri: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    setRewardsPerUnitTime(_rewardsPerUnitTime: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    setTimeUnit(_timeUnit: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    stake(_tokenIds: BigNumberish[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    stakerAddress(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
    stakers(arg0: string, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        amountStaked: BigNumber;
        timeOfLastUpdate: BigNumber;
        unclaimedRewards: BigNumber;
        conditionIdOflastUpdate: BigNumber;
    }>;
    stakersArray(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
    stakingToken(overrides?: CallOverrides): Promise<string>;
    supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<boolean>;
    withdraw(_tokenIds: BigNumberish[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    withdrawRewardTokens(_amount: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        claimRewards(overrides?: CallOverrides): Promise<void>;
        contractType(overrides?: CallOverrides): Promise<string>;
        contractURI(overrides?: CallOverrides): Promise<string>;
        contractVersion(overrides?: CallOverrides): Promise<number>;
        depositRewardTokens(_amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        getRewardTokenBalance(overrides?: CallOverrides): Promise<BigNumber>;
        getRewardsPerUnitTime(overrides?: CallOverrides): Promise<BigNumber>;
        getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise<string>;
        getRoleMember(role: BytesLike, index: BigNumberish, overrides?: CallOverrides): Promise<string>;
        getRoleMemberCount(role: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        getStakeInfo(_staker: string, overrides?: CallOverrides): Promise<[
            BigNumber[],
            BigNumber
        ] & {
            _tokensStaked: BigNumber[];
            _rewards: BigNumber;
        }>;
        getTimeUnit(overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: BytesLike, account: string, overrides?: CallOverrides): Promise<void>;
        hasRole(role: BytesLike, account: string, overrides?: CallOverrides): Promise<boolean>;
        hasRoleWithSwitch(role: BytesLike, account: string, overrides?: CallOverrides): Promise<boolean>;
        indexedTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_defaultAdmin: string, _contractURI: string, _trustedForwarders: string[], _rewardToken: string, _stakingToken: string, _timeUnit: BigNumberish, _rewardsPerUnitTime: BigNumberish, overrides?: CallOverrides): Promise<void>;
        isIndexed(arg0: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<boolean>;
        multicall(data: BytesLike[], overrides?: CallOverrides): Promise<string[]>;
        onERC721Received(arg0: string, arg1: string, arg2: BigNumberish, arg3: BytesLike, overrides?: CallOverrides): Promise<string>;
        renounceRole(role: BytesLike, account: string, overrides?: CallOverrides): Promise<void>;
        revokeRole(role: BytesLike, account: string, overrides?: CallOverrides): Promise<void>;
        rewardToken(overrides?: CallOverrides): Promise<string>;
        setContractURI(_uri: string, overrides?: CallOverrides): Promise<void>;
        setRewardsPerUnitTime(_rewardsPerUnitTime: BigNumberish, overrides?: CallOverrides): Promise<void>;
        setTimeUnit(_timeUnit: BigNumberish, overrides?: CallOverrides): Promise<void>;
        stake(_tokenIds: BigNumberish[], overrides?: CallOverrides): Promise<void>;
        stakerAddress(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
        stakers(arg0: string, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            amountStaked: BigNumber;
            timeOfLastUpdate: BigNumber;
            unclaimedRewards: BigNumber;
            conditionIdOflastUpdate: BigNumber;
        }>;
        stakersArray(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
        stakingToken(overrides?: CallOverrides): Promise<string>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<boolean>;
        withdraw(_tokenIds: BigNumberish[], overrides?: CallOverrides): Promise<void>;
        withdrawRewardTokens(_amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "ContractURIUpdated(string,string)"(prevURI?: null, newURI?: null): ContractURIUpdatedEventFilter;
        ContractURIUpdated(prevURI?: null, newURI?: null): ContractURIUpdatedEventFilter;
        "Initialized(uint8)"(version?: null): InitializedEventFilter;
        Initialized(version?: null): InitializedEventFilter;
        "RewardTokensDepositedByAdmin(uint256)"(_amount?: null): RewardTokensDepositedByAdminEventFilter;
        RewardTokensDepositedByAdmin(_amount?: null): RewardTokensDepositedByAdminEventFilter;
        "RewardTokensWithdrawnByAdmin(uint256)"(_amount?: null): RewardTokensWithdrawnByAdminEventFilter;
        RewardTokensWithdrawnByAdmin(_amount?: null): RewardTokensWithdrawnByAdminEventFilter;
        "RewardsClaimed(address,uint256)"(staker?: string | null, rewardAmount?: null): RewardsClaimedEventFilter;
        RewardsClaimed(staker?: string | null, rewardAmount?: null): RewardsClaimedEventFilter;
        "RoleAdminChanged(bytes32,bytes32,bytes32)"(role?: BytesLike | null, previousAdminRole?: BytesLike | null, newAdminRole?: BytesLike | null): RoleAdminChangedEventFilter;
        RoleAdminChanged(role?: BytesLike | null, previousAdminRole?: BytesLike | null, newAdminRole?: BytesLike | null): RoleAdminChangedEventFilter;
        "RoleGranted(bytes32,address,address)"(role?: BytesLike | null, account?: string | null, sender?: string | null): RoleGrantedEventFilter;
        RoleGranted(role?: BytesLike | null, account?: string | null, sender?: string | null): RoleGrantedEventFilter;
        "RoleRevoked(bytes32,address,address)"(role?: BytesLike | null, account?: string | null, sender?: string | null): RoleRevokedEventFilter;
        RoleRevoked(role?: BytesLike | null, account?: string | null, sender?: string | null): RoleRevokedEventFilter;
        "TokensStaked(address,uint256[])"(staker?: string | null, tokenIds?: BigNumberish[] | null): TokensStakedEventFilter;
        TokensStaked(staker?: string | null, tokenIds?: BigNumberish[] | null): TokensStakedEventFilter;
        "TokensWithdrawn(address,uint256[])"(staker?: string | null, tokenIds?: BigNumberish[] | null): TokensWithdrawnEventFilter;
        TokensWithdrawn(staker?: string | null, tokenIds?: BigNumberish[] | null): TokensWithdrawnEventFilter;
        "UpdatedRewardsPerUnitTime(uint256,uint256)"(oldRewardsPerUnitTime?: null, newRewardsPerUnitTime?: null): UpdatedRewardsPerUnitTimeEventFilter;
        UpdatedRewardsPerUnitTime(oldRewardsPerUnitTime?: null, newRewardsPerUnitTime?: null): UpdatedRewardsPerUnitTimeEventFilter;
        "UpdatedTimeUnit(uint256,uint256)"(oldTimeUnit?: null, newTimeUnit?: null): UpdatedTimeUnitEventFilter;
        UpdatedTimeUnit(oldTimeUnit?: null, newTimeUnit?: null): UpdatedTimeUnitEventFilter;
    };
    estimateGas: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        claimRewards(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        contractType(overrides?: CallOverrides): Promise<BigNumber>;
        contractURI(overrides?: CallOverrides): Promise<BigNumber>;
        contractVersion(overrides?: CallOverrides): Promise<BigNumber>;
        depositRewardTokens(_amount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        getRewardTokenBalance(overrides?: CallOverrides): Promise<BigNumber>;
        getRewardsPerUnitTime(overrides?: CallOverrides): Promise<BigNumber>;
        getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        getRoleMember(role: BytesLike, index: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getRoleMemberCount(role: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        getStakeInfo(_staker: string, overrides?: CallOverrides): Promise<BigNumber>;
        getTimeUnit(overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: BytesLike, account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        hasRole(role: BytesLike, account: string, overrides?: CallOverrides): Promise<BigNumber>;
        hasRoleWithSwitch(role: BytesLike, account: string, overrides?: CallOverrides): Promise<BigNumber>;
        indexedTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_defaultAdmin: string, _contractURI: string, _trustedForwarders: string[], _rewardToken: string, _stakingToken: string, _timeUnit: BigNumberish, _rewardsPerUnitTime: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        isIndexed(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<BigNumber>;
        multicall(data: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        onERC721Received(arg0: string, arg1: string, arg2: BigNumberish, arg3: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        renounceRole(role: BytesLike, account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        revokeRole(role: BytesLike, account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        rewardToken(overrides?: CallOverrides): Promise<BigNumber>;
        setContractURI(_uri: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        setRewardsPerUnitTime(_rewardsPerUnitTime: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        setTimeUnit(_timeUnit: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        stake(_tokenIds: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        stakerAddress(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        stakers(arg0: string, overrides?: CallOverrides): Promise<BigNumber>;
        stakersArray(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        stakingToken(overrides?: CallOverrides): Promise<BigNumber>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        withdraw(_tokenIds: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        withdrawRewardTokens(_amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        claimRewards(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        contractType(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        contractURI(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        contractVersion(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        depositRewardTokens(_amount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getRewardTokenBalance(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRewardsPerUnitTime(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRoleAdmin(role: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRoleMember(role: BytesLike, index: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRoleMemberCount(role: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getStakeInfo(_staker: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTimeUnit(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        grantRole(role: BytesLike, account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        hasRole(role: BytesLike, account: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        hasRoleWithSwitch(role: BytesLike, account: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        indexedTokens(arg0: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_defaultAdmin: string, _contractURI: string, _trustedForwarders: string[], _rewardToken: string, _stakingToken: string, _timeUnit: BigNumberish, _rewardsPerUnitTime: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        isIndexed(arg0: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isTrustedForwarder(forwarder: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        multicall(data: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        onERC721Received(arg0: string, arg1: string, arg2: BigNumberish, arg3: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceRole(role: BytesLike, account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        revokeRole(role: BytesLike, account: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        rewardToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setContractURI(_uri: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setRewardsPerUnitTime(_rewardsPerUnitTime: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setTimeUnit(_timeUnit: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        stake(_tokenIds: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        stakerAddress(arg0: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        stakers(arg0: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        stakersArray(arg0: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        stakingToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdraw(_tokenIds: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        withdrawRewardTokens(_amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}
