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 interface IDataServiceInterface extends utils.Interface {
    functions: {
        "acceptProvisionPendingParameters(address,bytes)": FunctionFragment;
        "collect(address,uint8,bytes)": FunctionFragment;
        "getDelegationRatio()": FunctionFragment;
        "getProvisionTokensRange()": FunctionFragment;
        "getThawingPeriodRange()": FunctionFragment;
        "getVerifierCutRange()": FunctionFragment;
        "register(address,bytes)": FunctionFragment;
        "slash(address,bytes)": FunctionFragment;
        "startService(address,bytes)": FunctionFragment;
        "stopService(address,bytes)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "acceptProvisionPendingParameters" | "collect" | "getDelegationRatio" | "getProvisionTokensRange" | "getThawingPeriodRange" | "getVerifierCutRange" | "register" | "slash" | "startService" | "stopService"): FunctionFragment;
    encodeFunctionData(functionFragment: "acceptProvisionPendingParameters", values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "collect", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: "getDelegationRatio", values?: undefined): string;
    encodeFunctionData(functionFragment: "getProvisionTokensRange", values?: undefined): string;
    encodeFunctionData(functionFragment: "getThawingPeriodRange", values?: undefined): string;
    encodeFunctionData(functionFragment: "getVerifierCutRange", values?: undefined): string;
    encodeFunctionData(functionFragment: "register", values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "slash", values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "startService", values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "stopService", values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    decodeFunctionResult(functionFragment: "acceptProvisionPendingParameters", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "collect", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getDelegationRatio", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getProvisionTokensRange", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getThawingPeriodRange", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getVerifierCutRange", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "register", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "slash", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "startService", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stopService", data: BytesLike): Result;
    events: {
        "ProvisionPendingParametersAccepted(address)": EventFragment;
        "ServicePaymentCollected(address,uint8,uint256)": EventFragment;
        "ServiceProviderRegistered(address,bytes)": EventFragment;
        "ServiceProviderSlashed(address,uint256)": EventFragment;
        "ServiceStarted(address,bytes)": EventFragment;
        "ServiceStopped(address,bytes)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ProvisionPendingParametersAccepted"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ServicePaymentCollected"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ServiceProviderRegistered"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ServiceProviderSlashed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ServiceStarted"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ServiceStopped"): EventFragment;
}
export interface ProvisionPendingParametersAcceptedEventObject {
    serviceProvider: string;
}
export type ProvisionPendingParametersAcceptedEvent = TypedEvent<[
    string
], ProvisionPendingParametersAcceptedEventObject>;
export type ProvisionPendingParametersAcceptedEventFilter = TypedEventFilter<ProvisionPendingParametersAcceptedEvent>;
export interface ServicePaymentCollectedEventObject {
    serviceProvider: string;
    feeType: number;
    tokens: BigNumber;
}
export type ServicePaymentCollectedEvent = TypedEvent<[
    string,
    number,
    BigNumber
], ServicePaymentCollectedEventObject>;
export type ServicePaymentCollectedEventFilter = TypedEventFilter<ServicePaymentCollectedEvent>;
export interface ServiceProviderRegisteredEventObject {
    serviceProvider: string;
    data: string;
}
export type ServiceProviderRegisteredEvent = TypedEvent<[
    string,
    string
], ServiceProviderRegisteredEventObject>;
export type ServiceProviderRegisteredEventFilter = TypedEventFilter<ServiceProviderRegisteredEvent>;
export interface ServiceProviderSlashedEventObject {
    serviceProvider: string;
    tokens: BigNumber;
}
export type ServiceProviderSlashedEvent = TypedEvent<[
    string,
    BigNumber
], ServiceProviderSlashedEventObject>;
export type ServiceProviderSlashedEventFilter = TypedEventFilter<ServiceProviderSlashedEvent>;
export interface ServiceStartedEventObject {
    serviceProvider: string;
    data: string;
}
export type ServiceStartedEvent = TypedEvent<[
    string,
    string
], ServiceStartedEventObject>;
export type ServiceStartedEventFilter = TypedEventFilter<ServiceStartedEvent>;
export interface ServiceStoppedEventObject {
    serviceProvider: string;
    data: string;
}
export type ServiceStoppedEvent = TypedEvent<[
    string,
    string
], ServiceStoppedEventObject>;
export type ServiceStoppedEventFilter = TypedEventFilter<ServiceStoppedEvent>;
export interface IDataService extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IDataServiceInterface;
    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: {
        acceptProvisionPendingParameters(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        collect(serviceProvider: PromiseOrValue<string>, feeType: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getDelegationRatio(overrides?: CallOverrides): Promise<[number]>;
        getProvisionTokensRange(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        getThawingPeriodRange(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        getVerifierCutRange(overrides?: CallOverrides): Promise<[number, number]>;
        register(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        slash(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        startService(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        stopService(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    acceptProvisionPendingParameters(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    collect(serviceProvider: PromiseOrValue<string>, feeType: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getDelegationRatio(overrides?: CallOverrides): Promise<number>;
    getProvisionTokensRange(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    getThawingPeriodRange(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    getVerifierCutRange(overrides?: CallOverrides): Promise<[number, number]>;
    register(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    slash(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    startService(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    stopService(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        acceptProvisionPendingParameters(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        collect(serviceProvider: PromiseOrValue<string>, feeType: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        getDelegationRatio(overrides?: CallOverrides): Promise<number>;
        getProvisionTokensRange(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        getThawingPeriodRange(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        getVerifierCutRange(overrides?: CallOverrides): Promise<[number, number]>;
        register(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        slash(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        startService(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        stopService(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "ProvisionPendingParametersAccepted(address)"(serviceProvider?: PromiseOrValue<string> | null): ProvisionPendingParametersAcceptedEventFilter;
        ProvisionPendingParametersAccepted(serviceProvider?: PromiseOrValue<string> | null): ProvisionPendingParametersAcceptedEventFilter;
        "ServicePaymentCollected(address,uint8,uint256)"(serviceProvider?: PromiseOrValue<string> | null, feeType?: PromiseOrValue<BigNumberish> | null, tokens?: null): ServicePaymentCollectedEventFilter;
        ServicePaymentCollected(serviceProvider?: PromiseOrValue<string> | null, feeType?: PromiseOrValue<BigNumberish> | null, tokens?: null): ServicePaymentCollectedEventFilter;
        "ServiceProviderRegistered(address,bytes)"(serviceProvider?: PromiseOrValue<string> | null, data?: null): ServiceProviderRegisteredEventFilter;
        ServiceProviderRegistered(serviceProvider?: PromiseOrValue<string> | null, data?: null): ServiceProviderRegisteredEventFilter;
        "ServiceProviderSlashed(address,uint256)"(serviceProvider?: PromiseOrValue<string> | null, tokens?: null): ServiceProviderSlashedEventFilter;
        ServiceProviderSlashed(serviceProvider?: PromiseOrValue<string> | null, tokens?: null): ServiceProviderSlashedEventFilter;
        "ServiceStarted(address,bytes)"(serviceProvider?: PromiseOrValue<string> | null, data?: null): ServiceStartedEventFilter;
        ServiceStarted(serviceProvider?: PromiseOrValue<string> | null, data?: null): ServiceStartedEventFilter;
        "ServiceStopped(address,bytes)"(serviceProvider?: PromiseOrValue<string> | null, data?: null): ServiceStoppedEventFilter;
        ServiceStopped(serviceProvider?: PromiseOrValue<string> | null, data?: null): ServiceStoppedEventFilter;
    };
    estimateGas: {
        acceptProvisionPendingParameters(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        collect(serviceProvider: PromiseOrValue<string>, feeType: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getDelegationRatio(overrides?: CallOverrides): Promise<BigNumber>;
        getProvisionTokensRange(overrides?: CallOverrides): Promise<BigNumber>;
        getThawingPeriodRange(overrides?: CallOverrides): Promise<BigNumber>;
        getVerifierCutRange(overrides?: CallOverrides): Promise<BigNumber>;
        register(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        slash(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        startService(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        stopService(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        acceptProvisionPendingParameters(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        collect(serviceProvider: PromiseOrValue<string>, feeType: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getDelegationRatio(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getProvisionTokensRange(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getThawingPeriodRange(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getVerifierCutRange(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        register(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        slash(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        startService(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        stopService(serviceProvider: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
//# sourceMappingURL=IDataService.d.ts.map