import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "./common";
export declare namespace IMemberPool {
    type StakeDelegateStruct = {
        subnetID: BigNumberish;
        user: AddressLike;
        assetAmount: BigNumberish;
        sig: BytesLike;
        sigTimestamp: BigNumberish;
        sigNonce: BigNumberish;
    };
    type StakeDelegateStructOutput = [
        subnetID: bigint,
        user: string,
        assetAmount: bigint,
        sig: string,
        sigTimestamp: bigint,
        sigNonce: bigint
    ] & {
        subnetID: bigint;
        user: string;
        assetAmount: bigint;
        sig: string;
        sigTimestamp: bigint;
        sigNonce: bigint;
    };
}
export interface MemberPoolInterface extends Interface {
    getFunction(nameOrSignature: "ADMIN_ROLE" | "BATCH_ROLE" | "DEFAULT_ADMIN_ROLE" | "REWARD_ROLE" | "SUBNET_ROLE" | "daoToken" | "distributeReward" | "getRoleAdmin" | "getUserAssetAmounts" | "grantRole" | "hasRole" | "initialize" | "maxAssetAmountPerSubnet" | "maxUserAssetAmount" | "maxUserAssetAmountPerSubnet" | "previewReward" | "previewRewardForSubnets" | "renounceRole" | "revokeRole" | "rewardPerDay" | "rewardPerSubnetX10000" | "settleAndReserveReward" | "settleReward" | "settleRewardBatch" | "setup" | "setupRewardPerDay" | "setupRewardPerSubnetX10000" | "setupSubnetParams" | "signatureVerifierContract" | "stakeDelegate" | "stakeDelegateBatch" | "stakerRewardEarned" | "subnetAssetAmount" | "subnetRewardAmount" | "subnetRewardBalance" | "subnetRewardBalanceReserved" | "subnetRewardDistroStakerX10000" | "subnetRewardSettlementTs" | "supportsInterface" | "totalAssetAmount" | "totalRewardPerSubnetX10000" | "totalStakeReward" | "unstakeUndelegate" | "unstakeUndelegateBatch" | "userAssetAmount" | "userRewardBalance" | "userRewardDebt" | "voterRewardEarned"): FunctionFragment;
    getEvent(nameOrSignatureOrTopic: "Deposit" | "Initialized" | "RewardDistributed" | "RewardSettled" | "RoleAdminChanged" | "RoleGranted" | "RoleRevoked" | "StakeDelegateBatchFail" | "StakeDelegateBatchSuccess" | "UnstakeUndelegateBatchFail" | "UnstakeUndelegateBatchSuccess" | "Withdraw"): EventFragment;
    encodeFunctionData(functionFragment: "ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "BATCH_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "REWARD_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "SUBNET_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "daoToken", values?: undefined): string;
    encodeFunctionData(functionFragment: "distributeReward", values: [BigNumberish, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getRoleAdmin", values: [BytesLike]): string;
    encodeFunctionData(functionFragment: "getUserAssetAmounts", values: [AddressLike[], BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "grantRole", values: [BytesLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "hasRole", values: [BytesLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "initialize", values: [AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "maxAssetAmountPerSubnet", values?: undefined): string;
    encodeFunctionData(functionFragment: "maxUserAssetAmount", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "maxUserAssetAmountPerSubnet", values?: undefined): string;
    encodeFunctionData(functionFragment: "previewReward", values: [BigNumberish, AddressLike]): string;
    encodeFunctionData(functionFragment: "previewRewardForSubnets", values: [BigNumberish[], AddressLike]): string;
    encodeFunctionData(functionFragment: "renounceRole", values: [BytesLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "revokeRole", values: [BytesLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "rewardPerDay", values?: undefined): string;
    encodeFunctionData(functionFragment: "rewardPerSubnetX10000", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "settleAndReserveReward", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "settleReward", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "settleRewardBatch", values: [BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "setup", values: [AddressLike, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "setupRewardPerDay", values: [BigNumberish[], BigNumberish]): string;
    encodeFunctionData(functionFragment: "setupRewardPerSubnetX10000", values: [BigNumberish[], BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "setupSubnetParams", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "signatureVerifierContract", values?: undefined): string;
    encodeFunctionData(functionFragment: "stakeDelegate", values: [
        BigNumberish,
        AddressLike,
        BigNumberish,
        BytesLike,
        BigNumberish,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "stakeDelegateBatch", values: [IMemberPool.StakeDelegateStruct[]]): string;
    encodeFunctionData(functionFragment: "stakerRewardEarned", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "subnetAssetAmount", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "subnetRewardAmount", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "subnetRewardBalance", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "subnetRewardBalanceReserved", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "subnetRewardDistroStakerX10000", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "subnetRewardSettlementTs", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "supportsInterface", values: [BytesLike]): string;
    encodeFunctionData(functionFragment: "totalAssetAmount", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalRewardPerSubnetX10000", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalStakeReward", values: [BigNumberish, AddressLike]): string;
    encodeFunctionData(functionFragment: "unstakeUndelegate", values: [
        BigNumberish,
        AddressLike,
        BigNumberish,
        BytesLike,
        BigNumberish,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "unstakeUndelegateBatch", values: [IMemberPool.StakeDelegateStruct[]]): string;
    encodeFunctionData(functionFragment: "userAssetAmount", values: [BigNumberish, AddressLike]): string;
    encodeFunctionData(functionFragment: "userRewardBalance", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "userRewardDebt", values: [BigNumberish, AddressLike]): string;
    encodeFunctionData(functionFragment: "voterRewardEarned", values: [AddressLike, BigNumberish]): string;
    decodeFunctionResult(functionFragment: "ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "BATCH_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "DEFAULT_ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "REWARD_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "SUBNET_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "daoToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "distributeReward", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRoleAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getUserAssetAmounts", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "maxAssetAmountPerSubnet", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "maxUserAssetAmount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "maxUserAssetAmountPerSubnet", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "previewReward", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "previewRewardForSubnets", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rewardPerDay", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rewardPerSubnetX10000", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "settleAndReserveReward", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "settleReward", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "settleRewardBatch", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setup", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setupRewardPerDay", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setupRewardPerSubnetX10000", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setupSubnetParams", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "signatureVerifierContract", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakeDelegate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakeDelegateBatch", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakerRewardEarned", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "subnetAssetAmount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "subnetRewardAmount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "subnetRewardBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "subnetRewardBalanceReserved", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "subnetRewardDistroStakerX10000", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "subnetRewardSettlementTs", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supportsInterface", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalAssetAmount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalRewardPerSubnetX10000", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalStakeReward", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unstakeUndelegate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unstakeUndelegateBatch", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "userAssetAmount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "userRewardBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "userRewardDebt", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "voterRewardEarned", data: BytesLike): Result;
}
export declare namespace DepositEvent {
    type InputTuple = [
        subnetID: BigNumberish,
        user: AddressLike,
        assetAmount: BigNumberish
    ];
    type OutputTuple = [
        subnetID: bigint,
        user: string,
        assetAmount: bigint
    ];
    interface OutputObject {
        subnetID: bigint;
        user: string;
        assetAmount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace InitializedEvent {
    type InputTuple = [version: BigNumberish];
    type OutputTuple = [version: bigint];
    interface OutputObject {
        version: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RewardDistributedEvent {
    type InputTuple = [
        subnetID: BigNumberish,
        receiver: AddressLike,
        rewardAmount: BigNumberish
    ];
    type OutputTuple = [
        subnetID: bigint,
        receiver: string,
        rewardAmount: bigint
    ];
    interface OutputObject {
        subnetID: bigint;
        receiver: string;
        rewardAmount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RewardSettledEvent {
    type InputTuple = [
        tsFrom: BigNumberish,
        tsTo: BigNumberish,
        subnetID: BigNumberish,
        stakerRewardAmount: BigNumberish,
        subnetRewardAmount: BigNumberish
    ];
    type OutputTuple = [
        tsFrom: bigint,
        tsTo: bigint,
        subnetID: bigint,
        stakerRewardAmount: bigint,
        subnetRewardAmount: bigint
    ];
    interface OutputObject {
        tsFrom: bigint;
        tsTo: bigint;
        subnetID: bigint;
        stakerRewardAmount: bigint;
        subnetRewardAmount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RoleAdminChangedEvent {
    type InputTuple = [
        role: BytesLike,
        previousAdminRole: BytesLike,
        newAdminRole: BytesLike
    ];
    type OutputTuple = [
        role: string,
        previousAdminRole: string,
        newAdminRole: string
    ];
    interface OutputObject {
        role: string;
        previousAdminRole: string;
        newAdminRole: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RoleGrantedEvent {
    type InputTuple = [
        role: BytesLike,
        account: AddressLike,
        sender: AddressLike
    ];
    type OutputTuple = [role: string, account: string, sender: string];
    interface OutputObject {
        role: string;
        account: string;
        sender: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RoleRevokedEvent {
    type InputTuple = [
        role: BytesLike,
        account: AddressLike,
        sender: AddressLike
    ];
    type OutputTuple = [role: string, account: string, sender: string];
    interface OutputObject {
        role: string;
        account: string;
        sender: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace StakeDelegateBatchFailEvent {
    type InputTuple = [
        subnetID: BigNumberish,
        user: AddressLike,
        assetAmount: BigNumberish,
        sigTimestamp: BigNumberish,
        sigNonce: BigNumberish,
        contractID: BytesLike,
        errorCode: BigNumberish,
        error: BytesLike
    ];
    type OutputTuple = [
        subnetID: bigint,
        user: string,
        assetAmount: bigint,
        sigTimestamp: bigint,
        sigNonce: bigint,
        contractID: string,
        errorCode: bigint,
        error: string
    ];
    interface OutputObject {
        subnetID: bigint;
        user: string;
        assetAmount: bigint;
        sigTimestamp: bigint;
        sigNonce: bigint;
        contractID: string;
        errorCode: bigint;
        error: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace StakeDelegateBatchSuccessEvent {
    type InputTuple = [
        subnetID: BigNumberish,
        user: AddressLike,
        assetAmount: BigNumberish,
        sigTimestamp: BigNumberish,
        sigNonce: BigNumberish
    ];
    type OutputTuple = [
        subnetID: bigint,
        user: string,
        assetAmount: bigint,
        sigTimestamp: bigint,
        sigNonce: bigint
    ];
    interface OutputObject {
        subnetID: bigint;
        user: string;
        assetAmount: bigint;
        sigTimestamp: bigint;
        sigNonce: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace UnstakeUndelegateBatchFailEvent {
    type InputTuple = [
        subnetID: BigNumberish,
        user: AddressLike,
        assetAmount: BigNumberish,
        sigTimestamp: BigNumberish,
        sigNonce: BigNumberish,
        contractID: BytesLike,
        errorCode: BigNumberish,
        error: BytesLike
    ];
    type OutputTuple = [
        subnetID: bigint,
        user: string,
        assetAmount: bigint,
        sigTimestamp: bigint,
        sigNonce: bigint,
        contractID: string,
        errorCode: bigint,
        error: string
    ];
    interface OutputObject {
        subnetID: bigint;
        user: string;
        assetAmount: bigint;
        sigTimestamp: bigint;
        sigNonce: bigint;
        contractID: string;
        errorCode: bigint;
        error: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace UnstakeUndelegateBatchSuccessEvent {
    type InputTuple = [
        subnetID: BigNumberish,
        user: AddressLike,
        assetAmount: BigNumberish,
        sigTimestamp: BigNumberish,
        sigNonce: BigNumberish
    ];
    type OutputTuple = [
        subnetID: bigint,
        user: string,
        assetAmount: bigint,
        sigTimestamp: bigint,
        sigNonce: bigint
    ];
    interface OutputObject {
        subnetID: bigint;
        user: string;
        assetAmount: bigint;
        sigTimestamp: bigint;
        sigNonce: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace WithdrawEvent {
    type InputTuple = [
        subnetID: BigNumberish,
        user: AddressLike,
        assetAmount: BigNumberish,
        rewardAmount: BigNumberish
    ];
    type OutputTuple = [
        subnetID: bigint,
        user: string,
        assetAmount: bigint,
        rewardAmount: bigint
    ];
    interface OutputObject {
        subnetID: bigint;
        user: string;
        assetAmount: bigint;
        rewardAmount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export interface MemberPool extends BaseContract {
    connect(runner?: ContractRunner | null): MemberPool;
    waitForDeployment(): Promise<this>;
    interface: MemberPoolInterface;
    queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
    listeners(eventName?: string): Promise<Array<Listener>>;
    removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
    ADMIN_ROLE: TypedContractMethod<[], [string], "view">;
    BATCH_ROLE: TypedContractMethod<[], [string], "view">;
    DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">;
    REWARD_ROLE: TypedContractMethod<[], [string], "view">;
    SUBNET_ROLE: TypedContractMethod<[], [string], "view">;
    daoToken: TypedContractMethod<[], [string], "view">;
    distributeReward: TypedContractMethod<[
        subnetID: BigNumberish,
        receiver: AddressLike,
        rewardAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">;
    getUserAssetAmounts: TypedContractMethod<[
        users: AddressLike[],
        subnetIDs: BigNumberish[]
    ], [
        bigint[][]
    ], "view">;
    grantRole: TypedContractMethod<[
        role: BytesLike,
        account: AddressLike
    ], [
        void
    ], "nonpayable">;
    hasRole: TypedContractMethod<[
        role: BytesLike,
        account: AddressLike
    ], [
        boolean
    ], "view">;
    initialize: TypedContractMethod<[
        _owner: AddressLike,
        _daoToken: AddressLike
    ], [
        void
    ], "nonpayable">;
    maxAssetAmountPerSubnet: TypedContractMethod<[], [bigint], "view">;
    maxUserAssetAmount: TypedContractMethod<[
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    maxUserAssetAmountPerSubnet: TypedContractMethod<[], [bigint], "view">;
    previewReward: TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike
    ], [
        bigint
    ], "view">;
    previewRewardForSubnets: TypedContractMethod<[
        subnetIDs: BigNumberish[],
        user: AddressLike
    ], [
        bigint
    ], "view">;
    renounceRole: TypedContractMethod<[
        role: BytesLike,
        callerConfirmation: AddressLike
    ], [
        void
    ], "nonpayable">;
    revokeRole: TypedContractMethod<[
        role: BytesLike,
        account: AddressLike
    ], [
        void
    ], "nonpayable">;
    rewardPerDay: TypedContractMethod<[], [bigint], "view">;
    rewardPerSubnetX10000: TypedContractMethod<[
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    settleAndReserveReward: TypedContractMethod<[
        subnetID: BigNumberish
    ], [
        bigint
    ], "nonpayable">;
    settleReward: TypedContractMethod<[
        subnetID: BigNumberish
    ], [
        void
    ], "nonpayable">;
    settleRewardBatch: TypedContractMethod<[
        subnetIDs: BigNumberish[]
    ], [
        void
    ], "nonpayable">;
    setup: TypedContractMethod<[
        _signatureVerifier: AddressLike,
        _maxAssetAmountPerSubnet: BigNumberish,
        _maxUserAssetAmountPerSubnet: BigNumberish
    ], [
        void
    ], "nonpayable">;
    setupRewardPerDay: TypedContractMethod<[
        subnetIDs: BigNumberish[],
        _emissionPerDay: BigNumberish
    ], [
        void
    ], "nonpayable">;
    setupRewardPerSubnetX10000: TypedContractMethod<[
        subnetIDs: BigNumberish[],
        x10000: BigNumberish[]
    ], [
        void
    ], "nonpayable">;
    setupSubnetParams: TypedContractMethod<[
        subnetID: BigNumberish,
        stakerDistroX10000: BigNumberish
    ], [
        void
    ], "nonpayable">;
    signatureVerifierContract: TypedContractMethod<[], [string], "view">;
    stakeDelegate: TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike,
        assetAmount: BigNumberish,
        sig: BytesLike,
        sigTimestamp: BigNumberish,
        sigNonce: BigNumberish
    ], [
        bigint
    ], "nonpayable">;
    stakeDelegateBatch: TypedContractMethod<[
        requests: IMemberPool.StakeDelegateStruct[]
    ], [
        void
    ], "nonpayable">;
    stakerRewardEarned: TypedContractMethod<[
        wallet: AddressLike,
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    subnetAssetAmount: TypedContractMethod<[
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    subnetRewardAmount: TypedContractMethod<[
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    subnetRewardBalance: TypedContractMethod<[
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    subnetRewardBalanceReserved: TypedContractMethod<[
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    subnetRewardDistroStakerX10000: TypedContractMethod<[
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    subnetRewardSettlementTs: TypedContractMethod<[
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    supportsInterface: TypedContractMethod<[
        interfaceId: BytesLike
    ], [
        boolean
    ], "view">;
    totalAssetAmount: TypedContractMethod<[], [bigint], "view">;
    totalRewardPerSubnetX10000: TypedContractMethod<[], [bigint], "view">;
    totalStakeReward: TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike
    ], [
        bigint
    ], "view">;
    unstakeUndelegate: TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike,
        assetAmount: BigNumberish,
        sig: BytesLike,
        sigTimestamp: BigNumberish,
        sigNonce: BigNumberish
    ], [
        bigint
    ], "nonpayable">;
    unstakeUndelegateBatch: TypedContractMethod<[
        requests: IMemberPool.StakeDelegateStruct[]
    ], [
        void
    ], "nonpayable">;
    userAssetAmount: TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike
    ], [
        bigint
    ], "view">;
    userRewardBalance: TypedContractMethod<[
        wallet: AddressLike
    ], [
        bigint
    ], "view">;
    userRewardDebt: TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike
    ], [
        bigint
    ], "view">;
    voterRewardEarned: TypedContractMethod<[
        wallet: AddressLike,
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "ADMIN_ROLE"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "BATCH_ROLE"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "REWARD_ROLE"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "SUBNET_ROLE"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "daoToken"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "distributeReward"): TypedContractMethod<[
        subnetID: BigNumberish,
        receiver: AddressLike,
        rewardAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "getRoleAdmin"): TypedContractMethod<[role: BytesLike], [string], "view">;
    getFunction(nameOrSignature: "getUserAssetAmounts"): TypedContractMethod<[
        users: AddressLike[],
        subnetIDs: BigNumberish[]
    ], [
        bigint[][]
    ], "view">;
    getFunction(nameOrSignature: "grantRole"): TypedContractMethod<[
        role: BytesLike,
        account: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "hasRole"): TypedContractMethod<[
        role: BytesLike,
        account: AddressLike
    ], [
        boolean
    ], "view">;
    getFunction(nameOrSignature: "initialize"): TypedContractMethod<[
        _owner: AddressLike,
        _daoToken: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "maxAssetAmountPerSubnet"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "maxUserAssetAmount"): TypedContractMethod<[subnetID: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "maxUserAssetAmountPerSubnet"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "previewReward"): TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "previewRewardForSubnets"): TypedContractMethod<[
        subnetIDs: BigNumberish[],
        user: AddressLike
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "renounceRole"): TypedContractMethod<[
        role: BytesLike,
        callerConfirmation: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "revokeRole"): TypedContractMethod<[
        role: BytesLike,
        account: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "rewardPerDay"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "rewardPerSubnetX10000"): TypedContractMethod<[subnetID: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "settleAndReserveReward"): TypedContractMethod<[subnetID: BigNumberish], [bigint], "nonpayable">;
    getFunction(nameOrSignature: "settleReward"): TypedContractMethod<[subnetID: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "settleRewardBatch"): TypedContractMethod<[subnetIDs: BigNumberish[]], [void], "nonpayable">;
    getFunction(nameOrSignature: "setup"): TypedContractMethod<[
        _signatureVerifier: AddressLike,
        _maxAssetAmountPerSubnet: BigNumberish,
        _maxUserAssetAmountPerSubnet: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setupRewardPerDay"): TypedContractMethod<[
        subnetIDs: BigNumberish[],
        _emissionPerDay: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setupRewardPerSubnetX10000"): TypedContractMethod<[
        subnetIDs: BigNumberish[],
        x10000: BigNumberish[]
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setupSubnetParams"): TypedContractMethod<[
        subnetID: BigNumberish,
        stakerDistroX10000: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "signatureVerifierContract"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "stakeDelegate"): TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike,
        assetAmount: BigNumberish,
        sig: BytesLike,
        sigTimestamp: BigNumberish,
        sigNonce: BigNumberish
    ], [
        bigint
    ], "nonpayable">;
    getFunction(nameOrSignature: "stakeDelegateBatch"): TypedContractMethod<[
        requests: IMemberPool.StakeDelegateStruct[]
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "stakerRewardEarned"): TypedContractMethod<[
        wallet: AddressLike,
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "subnetAssetAmount"): TypedContractMethod<[subnetID: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "subnetRewardAmount"): TypedContractMethod<[subnetID: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "subnetRewardBalance"): TypedContractMethod<[subnetID: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "subnetRewardBalanceReserved"): TypedContractMethod<[subnetID: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "subnetRewardDistroStakerX10000"): TypedContractMethod<[subnetID: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "subnetRewardSettlementTs"): TypedContractMethod<[subnetID: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "supportsInterface"): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">;
    getFunction(nameOrSignature: "totalAssetAmount"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "totalRewardPerSubnetX10000"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "totalStakeReward"): TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "unstakeUndelegate"): TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike,
        assetAmount: BigNumberish,
        sig: BytesLike,
        sigTimestamp: BigNumberish,
        sigNonce: BigNumberish
    ], [
        bigint
    ], "nonpayable">;
    getFunction(nameOrSignature: "unstakeUndelegateBatch"): TypedContractMethod<[
        requests: IMemberPool.StakeDelegateStruct[]
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "userAssetAmount"): TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "userRewardBalance"): TypedContractMethod<[wallet: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "userRewardDebt"): TypedContractMethod<[
        subnetID: BigNumberish,
        user: AddressLike
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "voterRewardEarned"): TypedContractMethod<[
        wallet: AddressLike,
        subnetID: BigNumberish
    ], [
        bigint
    ], "view">;
    getEvent(key: "Deposit"): TypedContractEvent<DepositEvent.InputTuple, DepositEvent.OutputTuple, DepositEvent.OutputObject>;
    getEvent(key: "Initialized"): TypedContractEvent<InitializedEvent.InputTuple, InitializedEvent.OutputTuple, InitializedEvent.OutputObject>;
    getEvent(key: "RewardDistributed"): TypedContractEvent<RewardDistributedEvent.InputTuple, RewardDistributedEvent.OutputTuple, RewardDistributedEvent.OutputObject>;
    getEvent(key: "RewardSettled"): TypedContractEvent<RewardSettledEvent.InputTuple, RewardSettledEvent.OutputTuple, RewardSettledEvent.OutputObject>;
    getEvent(key: "RoleAdminChanged"): TypedContractEvent<RoleAdminChangedEvent.InputTuple, RoleAdminChangedEvent.OutputTuple, RoleAdminChangedEvent.OutputObject>;
    getEvent(key: "RoleGranted"): TypedContractEvent<RoleGrantedEvent.InputTuple, RoleGrantedEvent.OutputTuple, RoleGrantedEvent.OutputObject>;
    getEvent(key: "RoleRevoked"): TypedContractEvent<RoleRevokedEvent.InputTuple, RoleRevokedEvent.OutputTuple, RoleRevokedEvent.OutputObject>;
    getEvent(key: "StakeDelegateBatchFail"): TypedContractEvent<StakeDelegateBatchFailEvent.InputTuple, StakeDelegateBatchFailEvent.OutputTuple, StakeDelegateBatchFailEvent.OutputObject>;
    getEvent(key: "StakeDelegateBatchSuccess"): TypedContractEvent<StakeDelegateBatchSuccessEvent.InputTuple, StakeDelegateBatchSuccessEvent.OutputTuple, StakeDelegateBatchSuccessEvent.OutputObject>;
    getEvent(key: "UnstakeUndelegateBatchFail"): TypedContractEvent<UnstakeUndelegateBatchFailEvent.InputTuple, UnstakeUndelegateBatchFailEvent.OutputTuple, UnstakeUndelegateBatchFailEvent.OutputObject>;
    getEvent(key: "UnstakeUndelegateBatchSuccess"): TypedContractEvent<UnstakeUndelegateBatchSuccessEvent.InputTuple, UnstakeUndelegateBatchSuccessEvent.OutputTuple, UnstakeUndelegateBatchSuccessEvent.OutputObject>;
    getEvent(key: "Withdraw"): TypedContractEvent<WithdrawEvent.InputTuple, WithdrawEvent.OutputTuple, WithdrawEvent.OutputObject>;
    filters: {
        "Deposit(uint256,address,uint256)": TypedContractEvent<DepositEvent.InputTuple, DepositEvent.OutputTuple, DepositEvent.OutputObject>;
        Deposit: TypedContractEvent<DepositEvent.InputTuple, DepositEvent.OutputTuple, DepositEvent.OutputObject>;
        "Initialized(uint64)": TypedContractEvent<InitializedEvent.InputTuple, InitializedEvent.OutputTuple, InitializedEvent.OutputObject>;
        Initialized: TypedContractEvent<InitializedEvent.InputTuple, InitializedEvent.OutputTuple, InitializedEvent.OutputObject>;
        "RewardDistributed(uint256,address,uint256)": TypedContractEvent<RewardDistributedEvent.InputTuple, RewardDistributedEvent.OutputTuple, RewardDistributedEvent.OutputObject>;
        RewardDistributed: TypedContractEvent<RewardDistributedEvent.InputTuple, RewardDistributedEvent.OutputTuple, RewardDistributedEvent.OutputObject>;
        "RewardSettled(uint256,uint256,uint256,uint256,uint256)": TypedContractEvent<RewardSettledEvent.InputTuple, RewardSettledEvent.OutputTuple, RewardSettledEvent.OutputObject>;
        RewardSettled: TypedContractEvent<RewardSettledEvent.InputTuple, RewardSettledEvent.OutputTuple, RewardSettledEvent.OutputObject>;
        "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent<RoleAdminChangedEvent.InputTuple, RoleAdminChangedEvent.OutputTuple, RoleAdminChangedEvent.OutputObject>;
        RoleAdminChanged: TypedContractEvent<RoleAdminChangedEvent.InputTuple, RoleAdminChangedEvent.OutputTuple, RoleAdminChangedEvent.OutputObject>;
        "RoleGranted(bytes32,address,address)": TypedContractEvent<RoleGrantedEvent.InputTuple, RoleGrantedEvent.OutputTuple, RoleGrantedEvent.OutputObject>;
        RoleGranted: TypedContractEvent<RoleGrantedEvent.InputTuple, RoleGrantedEvent.OutputTuple, RoleGrantedEvent.OutputObject>;
        "RoleRevoked(bytes32,address,address)": TypedContractEvent<RoleRevokedEvent.InputTuple, RoleRevokedEvent.OutputTuple, RoleRevokedEvent.OutputObject>;
        RoleRevoked: TypedContractEvent<RoleRevokedEvent.InputTuple, RoleRevokedEvent.OutputTuple, RoleRevokedEvent.OutputObject>;
        "StakeDelegateBatchFail(uint256,address,uint256,uint256,uint256,bytes32,uint16,bytes)": TypedContractEvent<StakeDelegateBatchFailEvent.InputTuple, StakeDelegateBatchFailEvent.OutputTuple, StakeDelegateBatchFailEvent.OutputObject>;
        StakeDelegateBatchFail: TypedContractEvent<StakeDelegateBatchFailEvent.InputTuple, StakeDelegateBatchFailEvent.OutputTuple, StakeDelegateBatchFailEvent.OutputObject>;
        "StakeDelegateBatchSuccess(uint256,address,uint256,uint256,uint256)": TypedContractEvent<StakeDelegateBatchSuccessEvent.InputTuple, StakeDelegateBatchSuccessEvent.OutputTuple, StakeDelegateBatchSuccessEvent.OutputObject>;
        StakeDelegateBatchSuccess: TypedContractEvent<StakeDelegateBatchSuccessEvent.InputTuple, StakeDelegateBatchSuccessEvent.OutputTuple, StakeDelegateBatchSuccessEvent.OutputObject>;
        "UnstakeUndelegateBatchFail(uint256,address,uint256,uint256,uint256,bytes32,uint16,bytes)": TypedContractEvent<UnstakeUndelegateBatchFailEvent.InputTuple, UnstakeUndelegateBatchFailEvent.OutputTuple, UnstakeUndelegateBatchFailEvent.OutputObject>;
        UnstakeUndelegateBatchFail: TypedContractEvent<UnstakeUndelegateBatchFailEvent.InputTuple, UnstakeUndelegateBatchFailEvent.OutputTuple, UnstakeUndelegateBatchFailEvent.OutputObject>;
        "UnstakeUndelegateBatchSuccess(uint256,address,uint256,uint256,uint256)": TypedContractEvent<UnstakeUndelegateBatchSuccessEvent.InputTuple, UnstakeUndelegateBatchSuccessEvent.OutputTuple, UnstakeUndelegateBatchSuccessEvent.OutputObject>;
        UnstakeUndelegateBatchSuccess: TypedContractEvent<UnstakeUndelegateBatchSuccessEvent.InputTuple, UnstakeUndelegateBatchSuccessEvent.OutputTuple, UnstakeUndelegateBatchSuccessEvent.OutputObject>;
        "Withdraw(uint256,address,uint256,uint256)": TypedContractEvent<WithdrawEvent.InputTuple, WithdrawEvent.OutputTuple, WithdrawEvent.OutputObject>;
        Withdraw: TypedContractEvent<WithdrawEvent.InputTuple, WithdrawEvent.OutputTuple, WithdrawEvent.OutputObject>;
    };
}
