import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result, EventFragment } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from "./common";
export declare namespace IRelayHub {
    type RelayHubConfigStruct = {
        maxWorkerCount: PromiseOrValue<BigNumberish>;
        gasReserve: PromiseOrValue<BigNumberish>;
        postOverhead: PromiseOrValue<BigNumberish>;
        gasOverhead: PromiseOrValue<BigNumberish>;
        maximumRecipientDeposit: PromiseOrValue<BigNumberish>;
        minimumUnstakeDelay: PromiseOrValue<BigNumberish>;
        minimumStake: PromiseOrValue<BigNumberish>;
        dataGasCostPerByte: PromiseOrValue<BigNumberish>;
        externalCallDataCostOverhead: PromiseOrValue<BigNumberish>;
    };
    type RelayHubConfigStructOutput = [
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        maxWorkerCount: BigNumber;
        gasReserve: BigNumber;
        postOverhead: BigNumber;
        gasOverhead: BigNumber;
        maximumRecipientDeposit: BigNumber;
        minimumUnstakeDelay: BigNumber;
        minimumStake: BigNumber;
        dataGasCostPerByte: BigNumber;
        externalCallDataCostOverhead: BigNumber;
    };
}
export declare namespace IForwarder {
    type ForwardRequestStruct = {
        from: PromiseOrValue<string>;
        to: PromiseOrValue<string>;
        value: PromiseOrValue<BigNumberish>;
        gas: PromiseOrValue<BigNumberish>;
        nonce: PromiseOrValue<BigNumberish>;
        data: PromiseOrValue<BytesLike>;
        validUntil: PromiseOrValue<BigNumberish>;
    };
    type ForwardRequestStructOutput = [
        string,
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        string,
        BigNumber
    ] & {
        from: string;
        to: string;
        value: BigNumber;
        gas: BigNumber;
        nonce: BigNumber;
        data: string;
        validUntil: BigNumber;
    };
}
export declare namespace GsnTypes {
    type RelayDataStruct = {
        gasPrice: PromiseOrValue<BigNumberish>;
        pctRelayFee: PromiseOrValue<BigNumberish>;
        baseRelayFee: PromiseOrValue<BigNumberish>;
        relayWorker: PromiseOrValue<string>;
        paymaster: PromiseOrValue<string>;
        forwarder: PromiseOrValue<string>;
        paymasterData: PromiseOrValue<BytesLike>;
        clientId: PromiseOrValue<BigNumberish>;
    };
    type RelayDataStructOutput = [
        BigNumber,
        BigNumber,
        BigNumber,
        string,
        string,
        string,
        string,
        BigNumber
    ] & {
        gasPrice: BigNumber;
        pctRelayFee: BigNumber;
        baseRelayFee: BigNumber;
        relayWorker: string;
        paymaster: string;
        forwarder: string;
        paymasterData: string;
        clientId: BigNumber;
    };
    type RelayRequestStruct = {
        request: IForwarder.ForwardRequestStruct;
        relayData: GsnTypes.RelayDataStruct;
    };
    type RelayRequestStructOutput = [
        IForwarder.ForwardRequestStructOutput,
        GsnTypes.RelayDataStructOutput
    ] & {
        request: IForwarder.ForwardRequestStructOutput;
        relayData: GsnTypes.RelayDataStructOutput;
    };
}
export interface IRelayHubInterface extends utils.Interface {
    functions: {
        "addRelayWorkers(address[])": FunctionFragment;
        "registerRelayServer(uint256,uint256,string)": FunctionFragment;
        "depositFor(address)": FunctionFragment;
        "withdraw(uint256,address)": FunctionFragment;
        "relayCall(uint256,((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)),bytes,bytes,uint256)": FunctionFragment;
        "penalize(address,address)": FunctionFragment;
        "setConfiguration((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment;
        "deprecateHub(uint256)": FunctionFragment;
        "calculateCharge(uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))": FunctionFragment;
        "getConfiguration()": FunctionFragment;
        "calldataGasCost(uint256)": FunctionFragment;
        "workerToManager(address)": FunctionFragment;
        "workerCount(address)": FunctionFragment;
        "balanceOf(address)": FunctionFragment;
        "stakeManager()": FunctionFragment;
        "penalizer()": FunctionFragment;
        "isRelayManagerStaked(address)": FunctionFragment;
        "isDeprecated()": FunctionFragment;
        "deprecationBlock()": FunctionFragment;
        "versionHub()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "addRelayWorkers" | "registerRelayServer" | "depositFor" | "withdraw" | "relayCall" | "penalize" | "setConfiguration" | "deprecateHub" | "calculateCharge" | "getConfiguration" | "calldataGasCost" | "workerToManager" | "workerCount" | "balanceOf" | "stakeManager" | "penalizer" | "isRelayManagerStaked" | "isDeprecated" | "deprecationBlock" | "versionHub"): FunctionFragment;
    encodeFunctionData(functionFragment: "addRelayWorkers", values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "registerRelayServer", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: "depositFor", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "withdraw", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "relayCall", values: [
        PromiseOrValue<BigNumberish>,
        GsnTypes.RelayRequestStruct,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "penalize", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setConfiguration", values: [IRelayHub.RelayHubConfigStruct]): string;
    encodeFunctionData(functionFragment: "deprecateHub", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "calculateCharge", values: [PromiseOrValue<BigNumberish>, GsnTypes.RelayDataStruct]): string;
    encodeFunctionData(functionFragment: "getConfiguration", values?: undefined): string;
    encodeFunctionData(functionFragment: "calldataGasCost", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "workerToManager", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "workerCount", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "balanceOf", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "stakeManager", values?: undefined): string;
    encodeFunctionData(functionFragment: "penalizer", values?: undefined): string;
    encodeFunctionData(functionFragment: "isRelayManagerStaked", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "isDeprecated", values?: undefined): string;
    encodeFunctionData(functionFragment: "deprecationBlock", values?: undefined): string;
    encodeFunctionData(functionFragment: "versionHub", values?: undefined): string;
    decodeFunctionResult(functionFragment: "addRelayWorkers", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "registerRelayServer", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "depositFor", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "relayCall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "penalize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setConfiguration", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deprecateHub", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "calculateCharge", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getConfiguration", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "calldataGasCost", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "workerToManager", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "workerCount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakeManager", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "penalizer", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isRelayManagerStaked", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isDeprecated", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deprecationBlock", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "versionHub", data: BytesLike): Result;
    events: {
        "Deposited(address,address,uint256)": EventFragment;
        "HubDeprecated(uint256)": EventFragment;
        "RelayHubConfigured(tuple)": EventFragment;
        "RelayServerRegistered(address,uint256,uint256,string)": EventFragment;
        "RelayWorkersAdded(address,address[],uint256)": EventFragment;
        "TransactionRejectedByPaymaster(address,address,address,address,address,bytes4,uint256,bytes)": EventFragment;
        "TransactionRelayed(address,address,address,address,address,bytes4,uint8,uint256)": EventFragment;
        "TransactionResult(uint8,bytes)": EventFragment;
        "Withdrawn(address,address,uint256)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "Deposited"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "HubDeprecated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RelayHubConfigured"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RelayServerRegistered"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RelayWorkersAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TransactionRejectedByPaymaster"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TransactionRelayed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TransactionResult"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment;
}
export interface DepositedEventObject {
    paymaster: string;
    from: string;
    amount: BigNumber;
}
export declare type DepositedEvent = TypedEvent<[
    string,
    string,
    BigNumber
], DepositedEventObject>;
export declare type DepositedEventFilter = TypedEventFilter<DepositedEvent>;
export interface HubDeprecatedEventObject {
    fromBlock: BigNumber;
}
export declare type HubDeprecatedEvent = TypedEvent<[
    BigNumber
], HubDeprecatedEventObject>;
export declare type HubDeprecatedEventFilter = TypedEventFilter<HubDeprecatedEvent>;
export interface RelayHubConfiguredEventObject {
    config: IRelayHub.RelayHubConfigStructOutput;
}
export declare type RelayHubConfiguredEvent = TypedEvent<[
    IRelayHub.RelayHubConfigStructOutput
], RelayHubConfiguredEventObject>;
export declare type RelayHubConfiguredEventFilter = TypedEventFilter<RelayHubConfiguredEvent>;
export interface RelayServerRegisteredEventObject {
    relayManager: string;
    baseRelayFee: BigNumber;
    pctRelayFee: BigNumber;
    relayUrl: string;
}
export declare type RelayServerRegisteredEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    string
], RelayServerRegisteredEventObject>;
export declare type RelayServerRegisteredEventFilter = TypedEventFilter<RelayServerRegisteredEvent>;
export interface RelayWorkersAddedEventObject {
    relayManager: string;
    newRelayWorkers: string[];
    workersCount: BigNumber;
}
export declare type RelayWorkersAddedEvent = TypedEvent<[
    string,
    string[],
    BigNumber
], RelayWorkersAddedEventObject>;
export declare type RelayWorkersAddedEventFilter = TypedEventFilter<RelayWorkersAddedEvent>;
export interface TransactionRejectedByPaymasterEventObject {
    relayManager: string;
    paymaster: string;
    from: string;
    to: string;
    relayWorker: string;
    selector: string;
    innerGasUsed: BigNumber;
    reason: string;
}
export declare type TransactionRejectedByPaymasterEvent = TypedEvent<[
    string,
    string,
    string,
    string,
    string,
    string,
    BigNumber,
    string
], TransactionRejectedByPaymasterEventObject>;
export declare type TransactionRejectedByPaymasterEventFilter = TypedEventFilter<TransactionRejectedByPaymasterEvent>;
export interface TransactionRelayedEventObject {
    relayManager: string;
    relayWorker: string;
    from: string;
    to: string;
    paymaster: string;
    selector: string;
    status: number;
    charge: BigNumber;
}
export declare type TransactionRelayedEvent = TypedEvent<[
    string,
    string,
    string,
    string,
    string,
    string,
    number,
    BigNumber
], TransactionRelayedEventObject>;
export declare type TransactionRelayedEventFilter = TypedEventFilter<TransactionRelayedEvent>;
export interface TransactionResultEventObject {
    status: number;
    returnValue: string;
}
export declare type TransactionResultEvent = TypedEvent<[
    number,
    string
], TransactionResultEventObject>;
export declare type TransactionResultEventFilter = TypedEventFilter<TransactionResultEvent>;
export interface WithdrawnEventObject {
    account: string;
    dest: string;
    amount: BigNumber;
}
export declare type WithdrawnEvent = TypedEvent<[
    string,
    string,
    BigNumber
], WithdrawnEventObject>;
export declare type WithdrawnEventFilter = TypedEventFilter<WithdrawnEvent>;
export interface IRelayHub extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IRelayHubInterface;
    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: {
        addRelayWorkers(newRelayWorkers: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        registerRelayServer(baseRelayFee: PromiseOrValue<BigNumberish>, pctRelayFee: PromiseOrValue<BigNumberish>, url: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        depositFor(target: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdraw(amount: PromiseOrValue<BigNumberish>, dest: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        relayCall(maxAcceptanceBudget: PromiseOrValue<BigNumberish>, relayRequest: GsnTypes.RelayRequestStruct, signature: PromiseOrValue<BytesLike>, approvalData: PromiseOrValue<BytesLike>, externalGasLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        penalize(relayWorker: PromiseOrValue<string>, beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setConfiguration(_config: IRelayHub.RelayHubConfigStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        deprecateHub(fromBlock: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        calculateCharge(gasUsed: PromiseOrValue<BigNumberish>, relayData: GsnTypes.RelayDataStruct, overrides?: CallOverrides): Promise<[BigNumber]>;
        getConfiguration(overrides?: CallOverrides): Promise<[
            IRelayHub.RelayHubConfigStructOutput
        ] & {
            config: IRelayHub.RelayHubConfigStructOutput;
        }>;
        calldataGasCost(length: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        workerToManager(worker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        workerCount(manager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        balanceOf(target: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        stakeManager(overrides?: CallOverrides): Promise<[string]>;
        penalizer(overrides?: CallOverrides): Promise<[string]>;
        isRelayManagerStaked(relayManager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        isDeprecated(overrides?: CallOverrides): Promise<[boolean]>;
        deprecationBlock(overrides?: CallOverrides): Promise<[BigNumber]>;
        versionHub(overrides?: CallOverrides): Promise<[string]>;
    };
    addRelayWorkers(newRelayWorkers: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    registerRelayServer(baseRelayFee: PromiseOrValue<BigNumberish>, pctRelayFee: PromiseOrValue<BigNumberish>, url: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    depositFor(target: PromiseOrValue<string>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdraw(amount: PromiseOrValue<BigNumberish>, dest: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    relayCall(maxAcceptanceBudget: PromiseOrValue<BigNumberish>, relayRequest: GsnTypes.RelayRequestStruct, signature: PromiseOrValue<BytesLike>, approvalData: PromiseOrValue<BytesLike>, externalGasLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    penalize(relayWorker: PromiseOrValue<string>, beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setConfiguration(_config: IRelayHub.RelayHubConfigStruct, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    deprecateHub(fromBlock: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    calculateCharge(gasUsed: PromiseOrValue<BigNumberish>, relayData: GsnTypes.RelayDataStruct, overrides?: CallOverrides): Promise<BigNumber>;
    getConfiguration(overrides?: CallOverrides): Promise<IRelayHub.RelayHubConfigStructOutput>;
    calldataGasCost(length: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    workerToManager(worker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    workerCount(manager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    balanceOf(target: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    stakeManager(overrides?: CallOverrides): Promise<string>;
    penalizer(overrides?: CallOverrides): Promise<string>;
    isRelayManagerStaked(relayManager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    isDeprecated(overrides?: CallOverrides): Promise<boolean>;
    deprecationBlock(overrides?: CallOverrides): Promise<BigNumber>;
    versionHub(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        addRelayWorkers(newRelayWorkers: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        registerRelayServer(baseRelayFee: PromiseOrValue<BigNumberish>, pctRelayFee: PromiseOrValue<BigNumberish>, url: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        depositFor(target: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        withdraw(amount: PromiseOrValue<BigNumberish>, dest: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        relayCall(maxAcceptanceBudget: PromiseOrValue<BigNumberish>, relayRequest: GsnTypes.RelayRequestStruct, signature: PromiseOrValue<BytesLike>, approvalData: PromiseOrValue<BytesLike>, externalGasLimit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            boolean,
            string
        ] & {
            paymasterAccepted: boolean;
            returnValue: string;
        }>;
        penalize(relayWorker: PromiseOrValue<string>, beneficiary: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setConfiguration(_config: IRelayHub.RelayHubConfigStruct, overrides?: CallOverrides): Promise<void>;
        deprecateHub(fromBlock: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        calculateCharge(gasUsed: PromiseOrValue<BigNumberish>, relayData: GsnTypes.RelayDataStruct, overrides?: CallOverrides): Promise<BigNumber>;
        getConfiguration(overrides?: CallOverrides): Promise<IRelayHub.RelayHubConfigStructOutput>;
        calldataGasCost(length: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        workerToManager(worker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        workerCount(manager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        balanceOf(target: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        stakeManager(overrides?: CallOverrides): Promise<string>;
        penalizer(overrides?: CallOverrides): Promise<string>;
        isRelayManagerStaked(relayManager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        isDeprecated(overrides?: CallOverrides): Promise<boolean>;
        deprecationBlock(overrides?: CallOverrides): Promise<BigNumber>;
        versionHub(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "Deposited(address,address,uint256)"(paymaster?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, amount?: null): DepositedEventFilter;
        Deposited(paymaster?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, amount?: null): DepositedEventFilter;
        "HubDeprecated(uint256)"(fromBlock?: null): HubDeprecatedEventFilter;
        HubDeprecated(fromBlock?: null): HubDeprecatedEventFilter;
        "RelayHubConfigured(tuple)"(config?: null): RelayHubConfiguredEventFilter;
        RelayHubConfigured(config?: null): RelayHubConfiguredEventFilter;
        "RelayServerRegistered(address,uint256,uint256,string)"(relayManager?: PromiseOrValue<string> | null, baseRelayFee?: null, pctRelayFee?: null, relayUrl?: null): RelayServerRegisteredEventFilter;
        RelayServerRegistered(relayManager?: PromiseOrValue<string> | null, baseRelayFee?: null, pctRelayFee?: null, relayUrl?: null): RelayServerRegisteredEventFilter;
        "RelayWorkersAdded(address,address[],uint256)"(relayManager?: PromiseOrValue<string> | null, newRelayWorkers?: null, workersCount?: null): RelayWorkersAddedEventFilter;
        RelayWorkersAdded(relayManager?: PromiseOrValue<string> | null, newRelayWorkers?: null, workersCount?: null): RelayWorkersAddedEventFilter;
        "TransactionRejectedByPaymaster(address,address,address,address,address,bytes4,uint256,bytes)"(relayManager?: PromiseOrValue<string> | null, paymaster?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, to?: null, relayWorker?: null, selector?: null, innerGasUsed?: null, reason?: null): TransactionRejectedByPaymasterEventFilter;
        TransactionRejectedByPaymaster(relayManager?: PromiseOrValue<string> | null, paymaster?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, to?: null, relayWorker?: null, selector?: null, innerGasUsed?: null, reason?: null): TransactionRejectedByPaymasterEventFilter;
        "TransactionRelayed(address,address,address,address,address,bytes4,uint8,uint256)"(relayManager?: PromiseOrValue<string> | null, relayWorker?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, to?: null, paymaster?: null, selector?: null, status?: null, charge?: null): TransactionRelayedEventFilter;
        TransactionRelayed(relayManager?: PromiseOrValue<string> | null, relayWorker?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, to?: null, paymaster?: null, selector?: null, status?: null, charge?: null): TransactionRelayedEventFilter;
        "TransactionResult(uint8,bytes)"(status?: null, returnValue?: null): TransactionResultEventFilter;
        TransactionResult(status?: null, returnValue?: null): TransactionResultEventFilter;
        "Withdrawn(address,address,uint256)"(account?: PromiseOrValue<string> | null, dest?: PromiseOrValue<string> | null, amount?: null): WithdrawnEventFilter;
        Withdrawn(account?: PromiseOrValue<string> | null, dest?: PromiseOrValue<string> | null, amount?: null): WithdrawnEventFilter;
    };
    estimateGas: {
        addRelayWorkers(newRelayWorkers: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        registerRelayServer(baseRelayFee: PromiseOrValue<BigNumberish>, pctRelayFee: PromiseOrValue<BigNumberish>, url: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        depositFor(target: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdraw(amount: PromiseOrValue<BigNumberish>, dest: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        relayCall(maxAcceptanceBudget: PromiseOrValue<BigNumberish>, relayRequest: GsnTypes.RelayRequestStruct, signature: PromiseOrValue<BytesLike>, approvalData: PromiseOrValue<BytesLike>, externalGasLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        penalize(relayWorker: PromiseOrValue<string>, beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setConfiguration(_config: IRelayHub.RelayHubConfigStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        deprecateHub(fromBlock: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        calculateCharge(gasUsed: PromiseOrValue<BigNumberish>, relayData: GsnTypes.RelayDataStruct, overrides?: CallOverrides): Promise<BigNumber>;
        getConfiguration(overrides?: CallOverrides): Promise<BigNumber>;
        calldataGasCost(length: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        workerToManager(worker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        workerCount(manager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        balanceOf(target: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        stakeManager(overrides?: CallOverrides): Promise<BigNumber>;
        penalizer(overrides?: CallOverrides): Promise<BigNumber>;
        isRelayManagerStaked(relayManager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isDeprecated(overrides?: CallOverrides): Promise<BigNumber>;
        deprecationBlock(overrides?: CallOverrides): Promise<BigNumber>;
        versionHub(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        addRelayWorkers(newRelayWorkers: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        registerRelayServer(baseRelayFee: PromiseOrValue<BigNumberish>, pctRelayFee: PromiseOrValue<BigNumberish>, url: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        depositFor(target: PromiseOrValue<string>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdraw(amount: PromiseOrValue<BigNumberish>, dest: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        relayCall(maxAcceptanceBudget: PromiseOrValue<BigNumberish>, relayRequest: GsnTypes.RelayRequestStruct, signature: PromiseOrValue<BytesLike>, approvalData: PromiseOrValue<BytesLike>, externalGasLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        penalize(relayWorker: PromiseOrValue<string>, beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setConfiguration(_config: IRelayHub.RelayHubConfigStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        deprecateHub(fromBlock: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        calculateCharge(gasUsed: PromiseOrValue<BigNumberish>, relayData: GsnTypes.RelayDataStruct, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getConfiguration(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        calldataGasCost(length: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        workerToManager(worker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        workerCount(manager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        balanceOf(target: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        stakeManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        penalizer(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isRelayManagerStaked(relayManager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isDeprecated(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deprecationBlock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        versionHub(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
