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 } from "./common.js";
export interface RevenueInterface extends utils.Interface {
    functions: {
        "ADMIN_ROLE()": FunctionFragment;
        "MAINTAINER_ROLE()": FunctionFragment;
        "claim(uint256)": FunctionFragment;
        "claim(uint256,address)": FunctionFragment;
        "claimFromDealer(uint256,address)": FunctionFragment;
        "closeBlock()": FunctionFragment;
        "dealerInfo(address)": FunctionFragment;
        "dealers(uint256)": FunctionFragment;
        "delegate()": FunctionFragment;
        "delistedDealers(uint256)": FunctionFragment;
        "deposit(uint256,address,uint256)": FunctionFragment;
        "deposit(uint256,uint256)": FunctionFragment;
        "maxPid()": FunctionFragment;
        "owner()": FunctionFragment;
        "pendingRewards(uint256,address,address)": FunctionFragment;
        "poolInfo(uint256)": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "setCloseBlock(uint256)": FunctionFragment;
        "setDelegateAddress(address)": FunctionFragment;
        "setStartBlock(uint256)": FunctionFragment;
        "setTokenAddress(address)": FunctionFragment;
        "setTokenPerBlock(address,uint256,uint256)": FunctionFragment;
        "setTokenPerBlock(address,uint256)": FunctionFragment;
        "setTokenPerBlock(address,uint256,uint256,uint256)": FunctionFragment;
        "startBlock()": FunctionFragment;
        "token()": FunctionFragment;
        "tokenPerBlock()": FunctionFragment;
        "totalPoolShare()": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
        "updateDealers()": FunctionFragment;
        "userInfo(uint256,address)": FunctionFragment;
        "withdraw(uint256,uint256)": FunctionFragment;
        "withdrawRemaining()": FunctionFragment;
        "withdrawRemaining(address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "ADMIN_ROLE" | "MAINTAINER_ROLE" | "claim(uint256)" | "claim(uint256,address)" | "claimFromDealer" | "closeBlock" | "dealerInfo" | "dealers" | "delegate" | "delistedDealers" | "deposit(uint256,address,uint256)" | "deposit(uint256,uint256)" | "maxPid" | "owner" | "pendingRewards" | "poolInfo" | "renounceOwnership" | "setCloseBlock" | "setDelegateAddress" | "setStartBlock" | "setTokenAddress" | "setTokenPerBlock(address,uint256,uint256)" | "setTokenPerBlock(address,uint256)" | "setTokenPerBlock(address,uint256,uint256,uint256)" | "startBlock" | "token" | "tokenPerBlock" | "totalPoolShare" | "transferOwnership" | "updateDealers" | "userInfo" | "withdraw" | "withdrawRemaining()" | "withdrawRemaining(address)"): FunctionFragment;
    encodeFunctionData(functionFragment: "ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "MAINTAINER_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "claim(uint256)", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "claim(uint256,address)", values: [BigNumberish, string]): string;
    encodeFunctionData(functionFragment: "claimFromDealer", values: [BigNumberish, string]): string;
    encodeFunctionData(functionFragment: "closeBlock", values?: undefined): string;
    encodeFunctionData(functionFragment: "dealerInfo", values: [string]): string;
    encodeFunctionData(functionFragment: "dealers", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "delegate", values?: undefined): string;
    encodeFunctionData(functionFragment: "delistedDealers", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "deposit(uint256,address,uint256)", values: [BigNumberish, string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "deposit(uint256,uint256)", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "maxPid", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "pendingRewards", values: [BigNumberish, string, string]): string;
    encodeFunctionData(functionFragment: "poolInfo", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "setCloseBlock", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "setDelegateAddress", values: [string]): string;
    encodeFunctionData(functionFragment: "setStartBlock", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "setTokenAddress", values: [string]): string;
    encodeFunctionData(functionFragment: "setTokenPerBlock(address,uint256,uint256)", values: [string, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "setTokenPerBlock(address,uint256)", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "setTokenPerBlock(address,uint256,uint256,uint256)", values: [string, BigNumberish, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "startBlock", values?: undefined): string;
    encodeFunctionData(functionFragment: "token", values?: undefined): string;
    encodeFunctionData(functionFragment: "tokenPerBlock", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalPoolShare", values?: undefined): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [string]): string;
    encodeFunctionData(functionFragment: "updateDealers", values?: undefined): string;
    encodeFunctionData(functionFragment: "userInfo", values: [BigNumberish, string]): string;
    encodeFunctionData(functionFragment: "withdraw", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "withdrawRemaining()", values?: undefined): string;
    encodeFunctionData(functionFragment: "withdrawRemaining(address)", values: [string]): string;
    decodeFunctionResult(functionFragment: "ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "MAINTAINER_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claim(uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claim(uint256,address)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimFromDealer", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "closeBlock", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "dealerInfo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "dealers", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "delegate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "delistedDealers", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deposit(uint256,address,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deposit(uint256,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "maxPid", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingRewards", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "poolInfo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setCloseBlock", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setDelegateAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setStartBlock", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setTokenAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setTokenPerBlock(address,uint256,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setTokenPerBlock(address,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setTokenPerBlock(address,uint256,uint256,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "startBlock", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "token", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "tokenPerBlock", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalPoolShare", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "updateDealers", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "userInfo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawRemaining()", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawRemaining(address)", data: BytesLike): Result;
    events: {
        "CloseBlockChanged(uint256)": EventFragment;
        "DelegateAddressChanged(address)": EventFragment;
        "Deposited(address,uint256,address,uint256)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "PoolAdded(uint256,uint256,uint256)": EventFragment;
        "StartBlockChanged(uint256)": EventFragment;
        "TokenAddressChanged(address)": EventFragment;
        "TokenDealerChanged(address,address)": EventFragment;
        "Withdrawn(address,uint256,address,uint256)": EventFragment;
        "WithdrawnRemain(address,uint256,address,uint256)": EventFragment;
        "WithdrawnReward(address,uint256,address,uint256)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "CloseBlockChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "DelegateAddressChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Deposited"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PoolAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "StartBlockChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TokenAddressChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TokenDealerChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "WithdrawnRemain"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "WithdrawnReward"): EventFragment;
}
export interface CloseBlockChangedEventObject {
    block: BigNumber;
}
export type CloseBlockChangedEvent = TypedEvent<[
    BigNumber
], CloseBlockChangedEventObject>;
export type CloseBlockChangedEventFilter = TypedEventFilter<CloseBlockChangedEvent>;
export interface DelegateAddressChangedEventObject {
    addr: string;
}
export type DelegateAddressChangedEvent = TypedEvent<[
    string
], DelegateAddressChangedEventObject>;
export type DelegateAddressChangedEventFilter = TypedEventFilter<DelegateAddressChangedEvent>;
export interface DepositedEventObject {
    user: string;
    pid: BigNumber;
    token: string;
    amount: BigNumber;
}
export type DepositedEvent = TypedEvent<[
    string,
    BigNumber,
    string,
    BigNumber
], DepositedEventObject>;
export type DepositedEventFilter = TypedEventFilter<DepositedEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export type OwnershipTransferredEvent = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject>;
export type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface PoolAddedEventObject {
    share: BigNumber;
    timer: BigNumber;
    limit: BigNumber;
}
export type PoolAddedEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber
], PoolAddedEventObject>;
export type PoolAddedEventFilter = TypedEventFilter<PoolAddedEvent>;
export interface StartBlockChangedEventObject {
    block: BigNumber;
}
export type StartBlockChangedEvent = TypedEvent<[
    BigNumber
], StartBlockChangedEventObject>;
export type StartBlockChangedEventFilter = TypedEventFilter<StartBlockChangedEvent>;
export interface TokenAddressChangedEventObject {
    token: string;
}
export type TokenAddressChangedEvent = TypedEvent<[
    string
], TokenAddressChangedEventObject>;
export type TokenAddressChangedEventFilter = TypedEventFilter<TokenAddressChangedEvent>;
export interface TokenDealerChangedEventObject {
    token: string;
    dealer: string;
}
export type TokenDealerChangedEvent = TypedEvent<[
    string,
    string
], TokenDealerChangedEventObject>;
export type TokenDealerChangedEventFilter = TypedEventFilter<TokenDealerChangedEvent>;
export interface WithdrawnEventObject {
    user: string;
    pid: BigNumber;
    token: string;
    amount: BigNumber;
}
export type WithdrawnEvent = TypedEvent<[
    string,
    BigNumber,
    string,
    BigNumber
], WithdrawnEventObject>;
export type WithdrawnEventFilter = TypedEventFilter<WithdrawnEvent>;
export interface WithdrawnRemainEventObject {
    user: string;
    pid: BigNumber;
    token: string;
    amount: BigNumber;
}
export type WithdrawnRemainEvent = TypedEvent<[
    string,
    BigNumber,
    string,
    BigNumber
], WithdrawnRemainEventObject>;
export type WithdrawnRemainEventFilter = TypedEventFilter<WithdrawnRemainEvent>;
export interface WithdrawnRewardEventObject {
    user: string;
    pid: BigNumber;
    token: string;
    amount: BigNumber;
}
export type WithdrawnRewardEvent = TypedEvent<[
    string,
    BigNumber,
    string,
    BigNumber
], WithdrawnRewardEventObject>;
export type WithdrawnRewardEventFilter = TypedEventFilter<WithdrawnRewardEvent>;
export interface Revenue extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: RevenueInterface;
    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: {
        ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        MAINTAINER_ROLE(overrides?: CallOverrides): Promise<[string]>;
        "claim(uint256)"(pid: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        "claim(uint256,address)"(pid: BigNumberish, asset: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        claimFromDealer(pid: BigNumberish, addr: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        closeBlock(overrides?: CallOverrides): Promise<[BigNumber]>;
        dealerInfo(arg0: string, overrides?: CallOverrides): Promise<[string]>;
        dealers(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        delegate(overrides?: CallOverrides): Promise<[string]>;
        delistedDealers(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>;
        "deposit(uint256,address,uint256)"(pid: BigNumberish, addr: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        "deposit(uint256,uint256)"(pid: BigNumberish, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        maxPid(overrides?: CallOverrides): Promise<[BigNumber]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        pendingRewards(pid: BigNumberish, addr: string, asset: string, overrides?: CallOverrides): Promise<[BigNumber]>;
        poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            poolShare: BigNumber;
            lastBlock: BigNumber;
            tokenPerShare: BigNumber;
            tokenRealStaked: BigNumber;
            tokenReceived: BigNumber;
            tokenRewarded: BigNumber;
            tokenTotalLimit: BigNumber;
            lockupTimerange: BigNumber;
        }>;
        renounceOwnership(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        setCloseBlock(_closeBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        setDelegateAddress(_delegate: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        setStartBlock(_startBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        setTokenAddress(_token: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        "setTokenPerBlock(address,uint256,uint256)"(_token: string, _tokenPerBlock: BigNumberish, _blockRange: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        "setTokenPerBlock(address,uint256)"(_token: string, _tokenPerBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        "setTokenPerBlock(address,uint256,uint256,uint256)"(_token: string, _tokenPerBlock: BigNumberish, _startBlock: BigNumberish, _closeBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        startBlock(overrides?: CallOverrides): Promise<[BigNumber]>;
        token(overrides?: CallOverrides): Promise<[string]>;
        tokenPerBlock(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalPoolShare(overrides?: CallOverrides): Promise<[BigNumber]>;
        transferOwnership(newOwner: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        updateDealers(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        userInfo(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            amount: BigNumber;
            rewardDebt: BigNumber;
            pendingRewards: BigNumber;
            lockedTimestamp: BigNumber;
            lockupTimestamp: BigNumber;
        }>;
        withdraw(pid: BigNumberish, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        "withdrawRemaining()"(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        "withdrawRemaining(address)"(asset: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    MAINTAINER_ROLE(overrides?: CallOverrides): Promise<string>;
    "claim(uint256)"(pid: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    "claim(uint256,address)"(pid: BigNumberish, asset: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    claimFromDealer(pid: BigNumberish, addr: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    closeBlock(overrides?: CallOverrides): Promise<BigNumber>;
    dealerInfo(arg0: string, overrides?: CallOverrides): Promise<string>;
    dealers(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
    delegate(overrides?: CallOverrides): Promise<string>;
    delistedDealers(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
    "deposit(uint256,address,uint256)"(pid: BigNumberish, addr: string, amount: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    "deposit(uint256,uint256)"(pid: BigNumberish, amount: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    maxPid(overrides?: CallOverrides): Promise<BigNumber>;
    owner(overrides?: CallOverrides): Promise<string>;
    pendingRewards(pid: BigNumberish, addr: string, asset: string, overrides?: CallOverrides): Promise<BigNumber>;
    poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        poolShare: BigNumber;
        lastBlock: BigNumber;
        tokenPerShare: BigNumber;
        tokenRealStaked: BigNumber;
        tokenReceived: BigNumber;
        tokenRewarded: BigNumber;
        tokenTotalLimit: BigNumber;
        lockupTimerange: BigNumber;
    }>;
    renounceOwnership(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    setCloseBlock(_closeBlock: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    setDelegateAddress(_delegate: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    setStartBlock(_startBlock: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    setTokenAddress(_token: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    "setTokenPerBlock(address,uint256,uint256)"(_token: string, _tokenPerBlock: BigNumberish, _blockRange: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    "setTokenPerBlock(address,uint256)"(_token: string, _tokenPerBlock: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    "setTokenPerBlock(address,uint256,uint256,uint256)"(_token: string, _tokenPerBlock: BigNumberish, _startBlock: BigNumberish, _closeBlock: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    startBlock(overrides?: CallOverrides): Promise<BigNumber>;
    token(overrides?: CallOverrides): Promise<string>;
    tokenPerBlock(overrides?: CallOverrides): Promise<BigNumber>;
    totalPoolShare(overrides?: CallOverrides): Promise<BigNumber>;
    transferOwnership(newOwner: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    updateDealers(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    userInfo(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        amount: BigNumber;
        rewardDebt: BigNumber;
        pendingRewards: BigNumber;
        lockedTimestamp: BigNumber;
        lockupTimestamp: BigNumber;
    }>;
    withdraw(pid: BigNumberish, amount: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    "withdrawRemaining()"(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    "withdrawRemaining(address)"(asset: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        MAINTAINER_ROLE(overrides?: CallOverrides): Promise<string>;
        "claim(uint256)"(pid: BigNumberish, overrides?: CallOverrides): Promise<void>;
        "claim(uint256,address)"(pid: BigNumberish, asset: string, overrides?: CallOverrides): Promise<void>;
        claimFromDealer(pid: BigNumberish, addr: string, overrides?: CallOverrides): Promise<void>;
        closeBlock(overrides?: CallOverrides): Promise<BigNumber>;
        dealerInfo(arg0: string, overrides?: CallOverrides): Promise<string>;
        dealers(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
        delegate(overrides?: CallOverrides): Promise<string>;
        delistedDealers(arg0: BigNumberish, overrides?: CallOverrides): Promise<string>;
        "deposit(uint256,address,uint256)"(pid: BigNumberish, addr: string, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        "deposit(uint256,uint256)"(pid: BigNumberish, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        maxPid(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<string>;
        pendingRewards(pid: BigNumberish, addr: string, asset: string, overrides?: CallOverrides): Promise<BigNumber>;
        poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            poolShare: BigNumber;
            lastBlock: BigNumber;
            tokenPerShare: BigNumber;
            tokenRealStaked: BigNumber;
            tokenReceived: BigNumber;
            tokenRewarded: BigNumber;
            tokenTotalLimit: BigNumber;
            lockupTimerange: BigNumber;
        }>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        setCloseBlock(_closeBlock: BigNumberish, overrides?: CallOverrides): Promise<void>;
        setDelegateAddress(_delegate: string, overrides?: CallOverrides): Promise<void>;
        setStartBlock(_startBlock: BigNumberish, overrides?: CallOverrides): Promise<void>;
        setTokenAddress(_token: string, overrides?: CallOverrides): Promise<void>;
        "setTokenPerBlock(address,uint256,uint256)"(_token: string, _tokenPerBlock: BigNumberish, _blockRange: BigNumberish, overrides?: CallOverrides): Promise<void>;
        "setTokenPerBlock(address,uint256)"(_token: string, _tokenPerBlock: BigNumberish, overrides?: CallOverrides): Promise<void>;
        "setTokenPerBlock(address,uint256,uint256,uint256)"(_token: string, _tokenPerBlock: BigNumberish, _startBlock: BigNumberish, _closeBlock: BigNumberish, overrides?: CallOverrides): Promise<void>;
        startBlock(overrides?: CallOverrides): Promise<BigNumber>;
        token(overrides?: CallOverrides): Promise<string>;
        tokenPerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        totalPoolShare(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: string, overrides?: CallOverrides): Promise<void>;
        updateDealers(overrides?: CallOverrides): Promise<void>;
        userInfo(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            amount: BigNumber;
            rewardDebt: BigNumber;
            pendingRewards: BigNumber;
            lockedTimestamp: BigNumber;
            lockupTimestamp: BigNumber;
        }>;
        withdraw(pid: BigNumberish, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        "withdrawRemaining()"(overrides?: CallOverrides): Promise<void>;
        "withdrawRemaining(address)"(asset: string, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "CloseBlockChanged(uint256)"(block?: null): CloseBlockChangedEventFilter;
        CloseBlockChanged(block?: null): CloseBlockChangedEventFilter;
        "DelegateAddressChanged(address)"(addr?: string | null): DelegateAddressChangedEventFilter;
        DelegateAddressChanged(addr?: string | null): DelegateAddressChangedEventFilter;
        "Deposited(address,uint256,address,uint256)"(user?: string | null, pid?: BigNumberish | null, token?: string | null, amount?: null): DepositedEventFilter;
        Deposited(user?: string | null, pid?: BigNumberish | null, token?: string | null, amount?: null): DepositedEventFilter;
        "OwnershipTransferred(address,address)"(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter;
        "PoolAdded(uint256,uint256,uint256)"(share?: null, timer?: null, limit?: null): PoolAddedEventFilter;
        PoolAdded(share?: null, timer?: null, limit?: null): PoolAddedEventFilter;
        "StartBlockChanged(uint256)"(block?: null): StartBlockChangedEventFilter;
        StartBlockChanged(block?: null): StartBlockChangedEventFilter;
        "TokenAddressChanged(address)"(token?: string | null): TokenAddressChangedEventFilter;
        TokenAddressChanged(token?: string | null): TokenAddressChangedEventFilter;
        "TokenDealerChanged(address,address)"(token?: string | null, dealer?: string | null): TokenDealerChangedEventFilter;
        TokenDealerChanged(token?: string | null, dealer?: string | null): TokenDealerChangedEventFilter;
        "Withdrawn(address,uint256,address,uint256)"(user?: string | null, pid?: BigNumberish | null, token?: string | null, amount?: null): WithdrawnEventFilter;
        Withdrawn(user?: string | null, pid?: BigNumberish | null, token?: string | null, amount?: null): WithdrawnEventFilter;
        "WithdrawnRemain(address,uint256,address,uint256)"(user?: string | null, pid?: BigNumberish | null, token?: string | null, amount?: null): WithdrawnRemainEventFilter;
        WithdrawnRemain(user?: string | null, pid?: BigNumberish | null, token?: string | null, amount?: null): WithdrawnRemainEventFilter;
        "WithdrawnReward(address,uint256,address,uint256)"(user?: string | null, pid?: BigNumberish | null, token?: string | null, amount?: null): WithdrawnRewardEventFilter;
        WithdrawnReward(user?: string | null, pid?: BigNumberish | null, token?: string | null, amount?: null): WithdrawnRewardEventFilter;
    };
    estimateGas: {
        ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        MAINTAINER_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        "claim(uint256)"(pid: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        "claim(uint256,address)"(pid: BigNumberish, asset: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        claimFromDealer(pid: BigNumberish, addr: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        closeBlock(overrides?: CallOverrides): Promise<BigNumber>;
        dealerInfo(arg0: string, overrides?: CallOverrides): Promise<BigNumber>;
        dealers(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        delegate(overrides?: CallOverrides): Promise<BigNumber>;
        delistedDealers(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        "deposit(uint256,address,uint256)"(pid: BigNumberish, addr: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        "deposit(uint256,uint256)"(pid: BigNumberish, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        maxPid(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        pendingRewards(pid: BigNumberish, addr: string, asset: string, overrides?: CallOverrides): Promise<BigNumber>;
        poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        setCloseBlock(_closeBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        setDelegateAddress(_delegate: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        setStartBlock(_startBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        setTokenAddress(_token: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        "setTokenPerBlock(address,uint256,uint256)"(_token: string, _tokenPerBlock: BigNumberish, _blockRange: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        "setTokenPerBlock(address,uint256)"(_token: string, _tokenPerBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        "setTokenPerBlock(address,uint256,uint256,uint256)"(_token: string, _tokenPerBlock: BigNumberish, _startBlock: BigNumberish, _closeBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        startBlock(overrides?: CallOverrides): Promise<BigNumber>;
        token(overrides?: CallOverrides): Promise<BigNumber>;
        tokenPerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        totalPoolShare(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        updateDealers(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        userInfo(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise<BigNumber>;
        withdraw(pid: BigNumberish, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        "withdrawRemaining()"(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        "withdrawRemaining(address)"(asset: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MAINTAINER_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        "claim(uint256)"(pid: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        "claim(uint256,address)"(pid: BigNumberish, asset: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        claimFromDealer(pid: BigNumberish, addr: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        closeBlock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        dealerInfo(arg0: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        dealers(arg0: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        delegate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        delistedDealers(arg0: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        "deposit(uint256,address,uint256)"(pid: BigNumberish, addr: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        "deposit(uint256,uint256)"(pid: BigNumberish, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        maxPid(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingRewards(pid: BigNumberish, addr: string, asset: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolInfo(arg0: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setCloseBlock(_closeBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setDelegateAddress(_delegate: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setStartBlock(_startBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setTokenAddress(_token: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        "setTokenPerBlock(address,uint256,uint256)"(_token: string, _tokenPerBlock: BigNumberish, _blockRange: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        "setTokenPerBlock(address,uint256)"(_token: string, _tokenPerBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        "setTokenPerBlock(address,uint256,uint256,uint256)"(_token: string, _tokenPerBlock: BigNumberish, _startBlock: BigNumberish, _closeBlock: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        startBlock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        token(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tokenPerBlock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalPoolShare(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        updateDealers(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        userInfo(arg0: BigNumberish, arg1: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdraw(pid: BigNumberish, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        "withdrawRemaining()"(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        "withdrawRemaining(address)"(asset: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}
