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 ISomaStaking {
    type StakingConfigStruct = {
        unstakeDuration: PromiseOrValue<BigNumberish>;
        claimDuration: PromiseOrValue<BigNumberish>;
        earlyUnstakeFee: PromiseOrValue<BigNumberish>;
        earlyClaimFee: PromiseOrValue<BigNumberish>;
    };
    type StakingConfigStructOutput = [
        BigNumber,
        BigNumber,
        number,
        number
    ] & {
        unstakeDuration: BigNumber;
        claimDuration: BigNumber;
        earlyUnstakeFee: number;
        earlyClaimFee: number;
    };
    type RequestStruct = {
        hash: PromiseOrValue<BytesLike>;
        timestamp: PromiseOrValue<BigNumberish>;
        amount: PromiseOrValue<BigNumberish>;
    };
    type RequestStructOutput = [string, BigNumber, BigNumber] & {
        hash: string;
        timestamp: BigNumber;
        amount: BigNumber;
    };
    type StrategyStruct = {
        startDate: PromiseOrValue<BigNumberish>;
        endDate: PromiseOrValue<BigNumberish>;
        rewardToken: PromiseOrValue<string>;
        rewardsLocked: PromiseOrValue<BigNumberish>;
        rewardsUnlocked: PromiseOrValue<BigNumberish>;
    };
    type StrategyStructOutput = [
        number,
        number,
        string,
        BigNumber,
        BigNumber
    ] & {
        startDate: number;
        endDate: number;
        rewardToken: string;
        rewardsLocked: BigNumber;
        rewardsUnlocked: BigNumber;
    };
}
export interface ISomaStakingInterface extends utils.Interface {
    functions: {
        "GLOBAL_ADMIN_ROLE()": FunctionFragment;
        "GLOBAL_SEIZE_ROLE()": FunctionFragment;
        "LOCAL_ADMIN_ROLE()": FunctionFragment;
        "LOCAL_SEIZE_ROLE()": FunctionFragment;
        "addRewardToken(address)": FunctionFragment;
        "adminClaim(address,address)": FunctionFragment;
        "adminClaimable(address)": FunctionFragment;
        "cancelClaimRequests(address[],uint256[][])": FunctionFragment;
        "cancelUnstakeRequests(uint256[])": FunctionFragment;
        "claim(address[],uint256[][])": FunctionFragment;
        "claimImmediate(address[],uint256[])": FunctionFragment;
        "claimRequest(address,address,uint256)": FunctionFragment;
        "claimable(address,address)": FunctionFragment;
        "config()": FunctionFragment;
        "createClaimRequests(address[])": FunctionFragment;
        "createStrategy(uint256,uint256,address,uint256)": FunctionFragment;
        "createUnstakeRequest(uint256)": FunctionFragment;
        "currentTPS(address)": FunctionFragment;
        "debt(address,address)": FunctionFragment;
        "initialize(address,address[])": FunctionFragment;
        "pendingStrategy(uint256)": FunctionFragment;
        "rewardToken(uint256)": FunctionFragment;
        "seize(address)": FunctionFragment;
        "stake(uint256)": FunctionFragment;
        "stakeOf(address)": FunctionFragment;
        "stakingToken()": FunctionFragment;
        "strategy(uint256)": FunctionFragment;
        "totalPendingStrategies()": FunctionFragment;
        "totalPendingUnstake()": FunctionFragment;
        "totalRewardTokens()": FunctionFragment;
        "totalStaked()": FunctionFragment;
        "totalStrategies()": FunctionFragment;
        "tps(address)": FunctionFragment;
        "unstake(uint256[])": FunctionFragment;
        "unstakeImmediate(uint256)": FunctionFragment;
        "unstakeRequest(address,uint256)": FunctionFragment;
        "updateConfig(uint64,uint64,uint16,uint16)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "GLOBAL_ADMIN_ROLE" | "GLOBAL_SEIZE_ROLE" | "LOCAL_ADMIN_ROLE" | "LOCAL_SEIZE_ROLE" | "addRewardToken" | "adminClaim" | "adminClaimable" | "cancelClaimRequests" | "cancelUnstakeRequests" | "claim" | "claimImmediate" | "claimRequest" | "claimable" | "config" | "createClaimRequests" | "createStrategy" | "createUnstakeRequest" | "currentTPS" | "debt" | "initialize" | "pendingStrategy" | "rewardToken" | "seize" | "stake" | "stakeOf" | "stakingToken" | "strategy" | "totalPendingStrategies" | "totalPendingUnstake" | "totalRewardTokens" | "totalStaked" | "totalStrategies" | "tps" | "unstake" | "unstakeImmediate" | "unstakeRequest" | "updateConfig"): FunctionFragment;
    encodeFunctionData(functionFragment: "GLOBAL_ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "GLOBAL_SEIZE_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "LOCAL_ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "LOCAL_SEIZE_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "addRewardToken", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "adminClaim", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "adminClaimable", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "cancelClaimRequests", values: [PromiseOrValue<string>[], PromiseOrValue<BigNumberish>[][]]): string;
    encodeFunctionData(functionFragment: "cancelUnstakeRequests", values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: "claim", values: [PromiseOrValue<string>[], PromiseOrValue<BigNumberish>[][]]): string;
    encodeFunctionData(functionFragment: "claimImmediate", values: [PromiseOrValue<string>[], PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: "claimRequest", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "claimable", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "config", values?: undefined): string;
    encodeFunctionData(functionFragment: "createClaimRequests", values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "createStrategy", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "createUnstakeRequest", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "currentTPS", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "debt", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "initialize", values: [PromiseOrValue<string>, PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "pendingStrategy", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "rewardToken", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "seize", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "stake", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "stakeOf", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "stakingToken", values?: undefined): string;
    encodeFunctionData(functionFragment: "strategy", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "totalPendingStrategies", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalPendingUnstake", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalRewardTokens", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalStaked", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalStrategies", values?: undefined): string;
    encodeFunctionData(functionFragment: "tps", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "unstake", values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: "unstakeImmediate", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "unstakeRequest", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "updateConfig", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    decodeFunctionResult(functionFragment: "GLOBAL_ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "GLOBAL_SEIZE_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "LOCAL_ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "LOCAL_SEIZE_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addRewardToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "adminClaim", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "adminClaimable", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "cancelClaimRequests", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "cancelUnstakeRequests", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimImmediate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimRequest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimable", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "config", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "createClaimRequests", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "createStrategy", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "createUnstakeRequest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "currentTPS", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "debt", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingStrategy", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rewardToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "seize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stake", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakeOf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakingToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "strategy", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalPendingStrategies", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalPendingUnstake", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalRewardTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalStaked", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalStrategies", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "tps", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unstake", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unstakeImmediate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unstakeRequest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "updateConfig", data: BytesLike): Result;
    events: {
        "AdminClaimed(address,uint256,address,address)": EventFragment;
        "Claimed(address,uint256,address)": EventFragment;
        "ClaimedImmediate(address,uint256,uint256,address)": EventFragment;
        "RequestCancelled(uint256)": EventFragment;
        "RequestCreated(uint256,address,uint256,address,uint8)": EventFragment;
        "RequestFulfilled(uint256)": EventFragment;
        "RewardTokenAdded(address,address)": EventFragment;
        "Seized(address,address,uint256,uint256[],address)": EventFragment;
        "Staked(uint256,address)": EventFragment;
        "StakingConfigUpdated(tuple,tuple,address)": EventFragment;
        "StrategyCreated(address,uint256,uint256,uint256,address)": EventFragment;
        "Unstaked(uint256,address)": EventFragment;
        "UnstakedImmediate(uint256,uint256,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "AdminClaimed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Claimed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ClaimedImmediate"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RequestCancelled"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RequestCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RequestFulfilled"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RewardTokenAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Seized"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Staked"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "StakingConfigUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "StrategyCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Unstaked"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "UnstakedImmediate"): EventFragment;
}
export interface AdminClaimedEventObject {
    asset: string;
    amount: BigNumber;
    to: string;
    sender: string;
}
export declare type AdminClaimedEvent = TypedEvent<[
    string,
    BigNumber,
    string,
    string
], AdminClaimedEventObject>;
export declare type AdminClaimedEventFilter = TypedEventFilter<AdminClaimedEvent>;
export interface ClaimedEventObject {
    asset: string;
    amount: BigNumber;
    sender: string;
}
export declare type ClaimedEvent = TypedEvent<[
    string,
    BigNumber,
    string
], ClaimedEventObject>;
export declare type ClaimedEventFilter = TypedEventFilter<ClaimedEvent>;
export interface ClaimedImmediateEventObject {
    asset: string;
    amount: BigNumber;
    fee: BigNumber;
    sender: string;
}
export declare type ClaimedImmediateEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    string
], ClaimedImmediateEventObject>;
export declare type ClaimedImmediateEventFilter = TypedEventFilter<ClaimedImmediateEvent>;
export interface RequestCancelledEventObject {
    id: BigNumber;
}
export declare type RequestCancelledEvent = TypedEvent<[
    BigNumber
], RequestCancelledEventObject>;
export declare type RequestCancelledEventFilter = TypedEventFilter<RequestCancelledEvent>;
export interface RequestCreatedEventObject {
    id: BigNumber;
    asset: string;
    amount: BigNumber;
    sender: string;
    requestType: number;
}
export declare type RequestCreatedEvent = TypedEvent<[
    BigNumber,
    string,
    BigNumber,
    string,
    number
], RequestCreatedEventObject>;
export declare type RequestCreatedEventFilter = TypedEventFilter<RequestCreatedEvent>;
export interface RequestFulfilledEventObject {
    id: BigNumber;
}
export declare type RequestFulfilledEvent = TypedEvent<[
    BigNumber
], RequestFulfilledEventObject>;
export declare type RequestFulfilledEventFilter = TypedEventFilter<RequestFulfilledEvent>;
export interface RewardTokenAddedEventObject {
    token: string;
    sender: string;
}
export declare type RewardTokenAddedEvent = TypedEvent<[
    string,
    string
], RewardTokenAddedEventObject>;
export declare type RewardTokenAddedEventFilter = TypedEventFilter<RewardTokenAddedEvent>;
export interface SeizedEventObject {
    from: string;
    to: string;
    amount: BigNumber;
    seizedRewards: BigNumber[];
    sender: string;
}
export declare type SeizedEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber[],
    string
], SeizedEventObject>;
export declare type SeizedEventFilter = TypedEventFilter<SeizedEvent>;
export interface StakedEventObject {
    amount: BigNumber;
    sender: string;
}
export declare type StakedEvent = TypedEvent<[BigNumber, string], StakedEventObject>;
export declare type StakedEventFilter = TypedEventFilter<StakedEvent>;
export interface StakingConfigUpdatedEventObject {
    prevConfig: ISomaStaking.StakingConfigStructOutput;
    newConfig: ISomaStaking.StakingConfigStructOutput;
    sender: string;
}
export declare type StakingConfigUpdatedEvent = TypedEvent<[
    ISomaStaking.StakingConfigStructOutput,
    ISomaStaking.StakingConfigStructOutput,
    string
], StakingConfigUpdatedEventObject>;
export declare type StakingConfigUpdatedEventFilter = TypedEventFilter<StakingConfigUpdatedEvent>;
export interface StrategyCreatedEventObject {
    rewardToken: string;
    amount: BigNumber;
    startDate: BigNumber;
    endDate: BigNumber;
    sender: string;
}
export declare type StrategyCreatedEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    string
], StrategyCreatedEventObject>;
export declare type StrategyCreatedEventFilter = TypedEventFilter<StrategyCreatedEvent>;
export interface UnstakedEventObject {
    amount: BigNumber;
    sender: string;
}
export declare type UnstakedEvent = TypedEvent<[
    BigNumber,
    string
], UnstakedEventObject>;
export declare type UnstakedEventFilter = TypedEventFilter<UnstakedEvent>;
export interface UnstakedImmediateEventObject {
    amount: BigNumber;
    fee: BigNumber;
    sender: string;
}
export declare type UnstakedImmediateEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    string
], UnstakedImmediateEventObject>;
export declare type UnstakedImmediateEventFilter = TypedEventFilter<UnstakedImmediateEvent>;
export interface ISomaStaking extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ISomaStakingInterface;
    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: {
        GLOBAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        GLOBAL_SEIZE_ROLE(overrides?: CallOverrides): Promise<[string]>;
        LOCAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        LOCAL_SEIZE_ROLE(overrides?: CallOverrides): Promise<[string]>;
        addRewardToken(_asset: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        adminClaim(_asset: PromiseOrValue<string>, _to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        adminClaimable(_asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        cancelClaimRequests(_assets: PromiseOrValue<string>[], _ids: PromiseOrValue<BigNumberish>[][], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        cancelUnstakeRequests(_ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claim(_assets: PromiseOrValue<string>[], _ids: PromiseOrValue<BigNumberish>[][], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claimImmediate(_assets: PromiseOrValue<string>[], _amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claimRequest(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, _id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[ISomaStaking.RequestStructOutput]>;
        claimable(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        config(overrides?: CallOverrides): Promise<[ISomaStaking.StakingConfigStructOutput]>;
        createClaimRequests(_assets: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        createStrategy(_startDate: PromiseOrValue<BigNumberish>, _endDate: PromiseOrValue<BigNumberish>, _rewardToken: PromiseOrValue<string>, _rewardAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        createUnstakeRequest(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        currentTPS(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber] & {
            tps_: BigNumber;
        }>;
        debt(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        initialize(stakingToken_: PromiseOrValue<string>, rewardTokens_: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        pendingStrategy(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[ISomaStaking.StrategyStructOutput]>;
        rewardToken(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        seize(from: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        stake(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        stakeOf(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        stakingToken(overrides?: CallOverrides): Promise<[string]>;
        strategy(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[ISomaStaking.StrategyStructOutput]>;
        totalPendingStrategies(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalPendingUnstake(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalRewardTokens(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalStaked(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalStrategies(overrides?: CallOverrides): Promise<[BigNumber]>;
        tps(_asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        unstake(_ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unstakeImmediate(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unstakeRequest(_account: PromiseOrValue<string>, _id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[ISomaStaking.RequestStructOutput]>;
        updateConfig(_unstakeDuration: PromiseOrValue<BigNumberish>, _claimDuration: PromiseOrValue<BigNumberish>, _earlyUnstakeFee: PromiseOrValue<BigNumberish>, _earlyClaimFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    GLOBAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    GLOBAL_SEIZE_ROLE(overrides?: CallOverrides): Promise<string>;
    LOCAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    LOCAL_SEIZE_ROLE(overrides?: CallOverrides): Promise<string>;
    addRewardToken(_asset: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    adminClaim(_asset: PromiseOrValue<string>, _to: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    adminClaimable(_asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    cancelClaimRequests(_assets: PromiseOrValue<string>[], _ids: PromiseOrValue<BigNumberish>[][], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    cancelUnstakeRequests(_ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claim(_assets: PromiseOrValue<string>[], _ids: PromiseOrValue<BigNumberish>[][], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claimImmediate(_assets: PromiseOrValue<string>[], _amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claimRequest(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, _id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ISomaStaking.RequestStructOutput>;
    claimable(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    config(overrides?: CallOverrides): Promise<ISomaStaking.StakingConfigStructOutput>;
    createClaimRequests(_assets: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    createStrategy(_startDate: PromiseOrValue<BigNumberish>, _endDate: PromiseOrValue<BigNumberish>, _rewardToken: PromiseOrValue<string>, _rewardAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    createUnstakeRequest(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    currentTPS(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    debt(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    initialize(stakingToken_: PromiseOrValue<string>, rewardTokens_: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    pendingStrategy(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ISomaStaking.StrategyStructOutput>;
    rewardToken(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    seize(from: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    stake(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    stakeOf(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    stakingToken(overrides?: CallOverrides): Promise<string>;
    strategy(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ISomaStaking.StrategyStructOutput>;
    totalPendingStrategies(overrides?: CallOverrides): Promise<BigNumber>;
    totalPendingUnstake(overrides?: CallOverrides): Promise<BigNumber>;
    totalRewardTokens(overrides?: CallOverrides): Promise<BigNumber>;
    totalStaked(overrides?: CallOverrides): Promise<BigNumber>;
    totalStrategies(overrides?: CallOverrides): Promise<BigNumber>;
    tps(_asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    unstake(_ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unstakeImmediate(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unstakeRequest(_account: PromiseOrValue<string>, _id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ISomaStaking.RequestStructOutput>;
    updateConfig(_unstakeDuration: PromiseOrValue<BigNumberish>, _claimDuration: PromiseOrValue<BigNumberish>, _earlyUnstakeFee: PromiseOrValue<BigNumberish>, _earlyClaimFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        GLOBAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        GLOBAL_SEIZE_ROLE(overrides?: CallOverrides): Promise<string>;
        LOCAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        LOCAL_SEIZE_ROLE(overrides?: CallOverrides): Promise<string>;
        addRewardToken(_asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        adminClaim(_asset: PromiseOrValue<string>, _to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        adminClaimable(_asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        cancelClaimRequests(_assets: PromiseOrValue<string>[], _ids: PromiseOrValue<BigNumberish>[][], overrides?: CallOverrides): Promise<void>;
        cancelUnstakeRequests(_ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        claim(_assets: PromiseOrValue<string>[], _ids: PromiseOrValue<BigNumberish>[][], overrides?: CallOverrides): Promise<void>;
        claimImmediate(_assets: PromiseOrValue<string>[], _amounts: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        claimRequest(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, _id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ISomaStaking.RequestStructOutput>;
        claimable(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        config(overrides?: CallOverrides): Promise<ISomaStaking.StakingConfigStructOutput>;
        createClaimRequests(_assets: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<BigNumber[]>;
        createStrategy(_startDate: PromiseOrValue<BigNumberish>, _endDate: PromiseOrValue<BigNumberish>, _rewardToken: PromiseOrValue<string>, _rewardAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        createUnstakeRequest(_amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        currentTPS(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        debt(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(stakingToken_: PromiseOrValue<string>, rewardTokens_: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        pendingStrategy(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ISomaStaking.StrategyStructOutput>;
        rewardToken(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        seize(from: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        stake(_amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        stakeOf(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        stakingToken(overrides?: CallOverrides): Promise<string>;
        strategy(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ISomaStaking.StrategyStructOutput>;
        totalPendingStrategies(overrides?: CallOverrides): Promise<BigNumber>;
        totalPendingUnstake(overrides?: CallOverrides): Promise<BigNumber>;
        totalRewardTokens(overrides?: CallOverrides): Promise<BigNumber>;
        totalStaked(overrides?: CallOverrides): Promise<BigNumber>;
        totalStrategies(overrides?: CallOverrides): Promise<BigNumber>;
        tps(_asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        unstake(_ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        unstakeImmediate(_amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        unstakeRequest(_account: PromiseOrValue<string>, _id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ISomaStaking.RequestStructOutput>;
        updateConfig(_unstakeDuration: PromiseOrValue<BigNumberish>, _claimDuration: PromiseOrValue<BigNumberish>, _earlyUnstakeFee: PromiseOrValue<BigNumberish>, _earlyClaimFee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "AdminClaimed(address,uint256,address,address)"(asset?: PromiseOrValue<string> | null, amount?: null, to?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): AdminClaimedEventFilter;
        AdminClaimed(asset?: PromiseOrValue<string> | null, amount?: null, to?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): AdminClaimedEventFilter;
        "Claimed(address,uint256,address)"(asset?: PromiseOrValue<string> | null, amount?: null, sender?: PromiseOrValue<string> | null): ClaimedEventFilter;
        Claimed(asset?: PromiseOrValue<string> | null, amount?: null, sender?: PromiseOrValue<string> | null): ClaimedEventFilter;
        "ClaimedImmediate(address,uint256,uint256,address)"(asset?: PromiseOrValue<string> | null, amount?: null, fee?: null, sender?: PromiseOrValue<string> | null): ClaimedImmediateEventFilter;
        ClaimedImmediate(asset?: PromiseOrValue<string> | null, amount?: null, fee?: null, sender?: PromiseOrValue<string> | null): ClaimedImmediateEventFilter;
        "RequestCancelled(uint256)"(id?: PromiseOrValue<BigNumberish> | null): RequestCancelledEventFilter;
        RequestCancelled(id?: PromiseOrValue<BigNumberish> | null): RequestCancelledEventFilter;
        "RequestCreated(uint256,address,uint256,address,uint8)"(id?: PromiseOrValue<BigNumberish> | null, asset?: PromiseOrValue<string> | null, amount?: null, sender?: PromiseOrValue<string> | null, requestType?: null): RequestCreatedEventFilter;
        RequestCreated(id?: PromiseOrValue<BigNumberish> | null, asset?: PromiseOrValue<string> | null, amount?: null, sender?: PromiseOrValue<string> | null, requestType?: null): RequestCreatedEventFilter;
        "RequestFulfilled(uint256)"(id?: PromiseOrValue<BigNumberish> | null): RequestFulfilledEventFilter;
        RequestFulfilled(id?: PromiseOrValue<BigNumberish> | null): RequestFulfilledEventFilter;
        "RewardTokenAdded(address,address)"(token?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RewardTokenAddedEventFilter;
        RewardTokenAdded(token?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RewardTokenAddedEventFilter;
        "Seized(address,address,uint256,uint256[],address)"(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, amount?: null, seizedRewards?: null, sender?: PromiseOrValue<string> | null): SeizedEventFilter;
        Seized(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, amount?: null, seizedRewards?: null, sender?: PromiseOrValue<string> | null): SeizedEventFilter;
        "Staked(uint256,address)"(amount?: null, sender?: PromiseOrValue<string> | null): StakedEventFilter;
        Staked(amount?: null, sender?: PromiseOrValue<string> | null): StakedEventFilter;
        "StakingConfigUpdated(tuple,tuple,address)"(prevConfig?: null, newConfig?: null, sender?: PromiseOrValue<string> | null): StakingConfigUpdatedEventFilter;
        StakingConfigUpdated(prevConfig?: null, newConfig?: null, sender?: PromiseOrValue<string> | null): StakingConfigUpdatedEventFilter;
        "StrategyCreated(address,uint256,uint256,uint256,address)"(rewardToken?: PromiseOrValue<string> | null, amount?: null, startDate?: null, endDate?: null, sender?: PromiseOrValue<string> | null): StrategyCreatedEventFilter;
        StrategyCreated(rewardToken?: PromiseOrValue<string> | null, amount?: null, startDate?: null, endDate?: null, sender?: PromiseOrValue<string> | null): StrategyCreatedEventFilter;
        "Unstaked(uint256,address)"(amount?: null, sender?: PromiseOrValue<string> | null): UnstakedEventFilter;
        Unstaked(amount?: null, sender?: PromiseOrValue<string> | null): UnstakedEventFilter;
        "UnstakedImmediate(uint256,uint256,address)"(amount?: null, fee?: null, sender?: PromiseOrValue<string> | null): UnstakedImmediateEventFilter;
        UnstakedImmediate(amount?: null, fee?: null, sender?: PromiseOrValue<string> | null): UnstakedImmediateEventFilter;
    };
    estimateGas: {
        GLOBAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        GLOBAL_SEIZE_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        LOCAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        LOCAL_SEIZE_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        addRewardToken(_asset: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        adminClaim(_asset: PromiseOrValue<string>, _to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        adminClaimable(_asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        cancelClaimRequests(_assets: PromiseOrValue<string>[], _ids: PromiseOrValue<BigNumberish>[][], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        cancelUnstakeRequests(_ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claim(_assets: PromiseOrValue<string>[], _ids: PromiseOrValue<BigNumberish>[][], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claimImmediate(_assets: PromiseOrValue<string>[], _amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claimRequest(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, _id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        claimable(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        config(overrides?: CallOverrides): Promise<BigNumber>;
        createClaimRequests(_assets: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        createStrategy(_startDate: PromiseOrValue<BigNumberish>, _endDate: PromiseOrValue<BigNumberish>, _rewardToken: PromiseOrValue<string>, _rewardAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        createUnstakeRequest(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        currentTPS(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        debt(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(stakingToken_: PromiseOrValue<string>, rewardTokens_: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        pendingStrategy(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        rewardToken(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        seize(from: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        stake(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        stakeOf(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        stakingToken(overrides?: CallOverrides): Promise<BigNumber>;
        strategy(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        totalPendingStrategies(overrides?: CallOverrides): Promise<BigNumber>;
        totalPendingUnstake(overrides?: CallOverrides): Promise<BigNumber>;
        totalRewardTokens(overrides?: CallOverrides): Promise<BigNumber>;
        totalStaked(overrides?: CallOverrides): Promise<BigNumber>;
        totalStrategies(overrides?: CallOverrides): Promise<BigNumber>;
        tps(_asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        unstake(_ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unstakeImmediate(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unstakeRequest(_account: PromiseOrValue<string>, _id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        updateConfig(_unstakeDuration: PromiseOrValue<BigNumberish>, _claimDuration: PromiseOrValue<BigNumberish>, _earlyUnstakeFee: PromiseOrValue<BigNumberish>, _earlyClaimFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        GLOBAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        GLOBAL_SEIZE_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        LOCAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        LOCAL_SEIZE_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        addRewardToken(_asset: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        adminClaim(_asset: PromiseOrValue<string>, _to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        adminClaimable(_asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        cancelClaimRequests(_assets: PromiseOrValue<string>[], _ids: PromiseOrValue<BigNumberish>[][], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        cancelUnstakeRequests(_ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claim(_assets: PromiseOrValue<string>[], _ids: PromiseOrValue<BigNumberish>[][], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claimImmediate(_assets: PromiseOrValue<string>[], _amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claimRequest(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, _id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        claimable(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        config(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        createClaimRequests(_assets: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        createStrategy(_startDate: PromiseOrValue<BigNumberish>, _endDate: PromiseOrValue<BigNumberish>, _rewardToken: PromiseOrValue<string>, _rewardAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        createUnstakeRequest(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        currentTPS(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        debt(_account: PromiseOrValue<string>, _asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(stakingToken_: PromiseOrValue<string>, rewardTokens_: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        pendingStrategy(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardToken(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        seize(from: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        stake(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        stakeOf(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        stakingToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        strategy(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalPendingStrategies(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalPendingUnstake(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalRewardTokens(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalStaked(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalStrategies(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tps(_asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        unstake(_ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unstakeImmediate(_amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unstakeRequest(_account: PromiseOrValue<string>, _id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        updateConfig(_unstakeDuration: PromiseOrValue<BigNumberish>, _claimDuration: PromiseOrValue<BigNumberish>, _earlyUnstakeFee: PromiseOrValue<BigNumberish>, _earlyClaimFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
//# sourceMappingURL=ISomaStaking.d.ts.map