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 interface RouterGnosisToArbInterface extends Interface {
    getFunction(nameOrSignature: "L2GasBalance" | "amb" | "bridge" | "deposit" | "executeSequencerDelayLimitDecreaseRequest" | "executeSequencerFutureLimitDecreaseRequest" | "route" | "sendSequencerDelayLimit" | "sendSequencerFutureLimit" | "sequencerDelayLimit" | "sequencerDelayLimitDecreaseRequest" | "sequencerFutureLimit" | "sequencerFutureLimitDecreaseRequest" | "updateSequencerDelayLimit" | "updateSequencerFutureLimit" | "veaInboxGnosisToArb" | "veaOutboxGnosisToArb" | "withdraw"): FunctionFragment;
    getEvent(nameOrSignatureOrTopic: "Routed" | "SequencerDelayLimitDecreaseRequested" | "SequencerDelayLimitSent" | "SequencerDelayLimitUpdated" | "SequencerFutureLimitDecreaseRequested" | "SequencerFutureLimitSent" | "SequencerFutureLimitUpdated"): EventFragment;
    encodeFunctionData(functionFragment: "L2GasBalance", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "amb", values?: undefined): string;
    encodeFunctionData(functionFragment: "bridge", values?: undefined): string;
    encodeFunctionData(functionFragment: "deposit", values?: undefined): string;
    encodeFunctionData(functionFragment: "executeSequencerDelayLimitDecreaseRequest", values?: undefined): string;
    encodeFunctionData(functionFragment: "executeSequencerFutureLimitDecreaseRequest", values?: undefined): string;
    encodeFunctionData(functionFragment: "route", values: [
        BigNumberish,
        BytesLike,
        BigNumberish,
        BigNumberish,
        AddressLike,
        BigNumberish,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "sendSequencerDelayLimit", values: [
        BigNumberish,
        BigNumberish,
        AddressLike,
        BigNumberish,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "sendSequencerFutureLimit", values: [
        BigNumberish,
        BigNumberish,
        AddressLike,
        BigNumberish,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "sequencerDelayLimit", values?: undefined): string;
    encodeFunctionData(functionFragment: "sequencerDelayLimitDecreaseRequest", values?: undefined): string;
    encodeFunctionData(functionFragment: "sequencerFutureLimit", values?: undefined): string;
    encodeFunctionData(functionFragment: "sequencerFutureLimitDecreaseRequest", values?: undefined): string;
    encodeFunctionData(functionFragment: "updateSequencerDelayLimit", values?: undefined): string;
    encodeFunctionData(functionFragment: "updateSequencerFutureLimit", values?: undefined): string;
    encodeFunctionData(functionFragment: "veaInboxGnosisToArb", values?: undefined): string;
    encodeFunctionData(functionFragment: "veaOutboxGnosisToArb", values?: undefined): string;
    encodeFunctionData(functionFragment: "withdraw", values: [BigNumberish]): string;
    decodeFunctionResult(functionFragment: "L2GasBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "amb", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "bridge", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "executeSequencerDelayLimitDecreaseRequest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "executeSequencerFutureLimitDecreaseRequest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "route", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sendSequencerDelayLimit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sendSequencerFutureLimit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sequencerDelayLimit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sequencerDelayLimitDecreaseRequest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sequencerFutureLimit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sequencerFutureLimitDecreaseRequest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "updateSequencerDelayLimit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "updateSequencerFutureLimit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "veaInboxGnosisToArb", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "veaOutboxGnosisToArb", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;
}
export declare namespace RoutedEvent {
    type InputTuple = [_epoch: BigNumberish, _ticketID: BigNumberish];
    type OutputTuple = [_epoch: bigint, _ticketID: bigint];
    interface OutputObject {
        _epoch: bigint;
        _ticketID: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace SequencerDelayLimitDecreaseRequestedEvent {
    type InputTuple = [_requestedSequencerDelayLimit: BigNumberish];
    type OutputTuple = [_requestedSequencerDelayLimit: bigint];
    interface OutputObject {
        _requestedSequencerDelayLimit: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace SequencerDelayLimitSentEvent {
    type InputTuple = [_ticketID: BigNumberish];
    type OutputTuple = [_ticketID: bigint];
    interface OutputObject {
        _ticketID: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace SequencerDelayLimitUpdatedEvent {
    type InputTuple = [_newSequencerDelayLimit: BigNumberish];
    type OutputTuple = [_newSequencerDelayLimit: bigint];
    interface OutputObject {
        _newSequencerDelayLimit: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace SequencerFutureLimitDecreaseRequestedEvent {
    type InputTuple = [_requestedSequencerFutureLimit: BigNumberish];
    type OutputTuple = [_requestedSequencerFutureLimit: bigint];
    interface OutputObject {
        _requestedSequencerFutureLimit: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace SequencerFutureLimitSentEvent {
    type InputTuple = [_ticketID: BigNumberish];
    type OutputTuple = [_ticketID: bigint];
    interface OutputObject {
        _ticketID: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace SequencerFutureLimitUpdatedEvent {
    type InputTuple = [_newSequencerFutureLimit: BigNumberish];
    type OutputTuple = [_newSequencerFutureLimit: bigint];
    interface OutputObject {
        _newSequencerFutureLimit: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export interface RouterGnosisToArb extends BaseContract {
    connect(runner?: ContractRunner | null): RouterGnosisToArb;
    waitForDeployment(): Promise<this>;
    interface: RouterGnosisToArbInterface;
    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>;
    L2GasBalance: TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
    amb: TypedContractMethod<[], [string], "view">;
    bridge: TypedContractMethod<[], [string], "view">;
    deposit: TypedContractMethod<[], [void], "payable">;
    executeSequencerDelayLimitDecreaseRequest: TypedContractMethod<[
    ], [
        void
    ], "nonpayable">;
    executeSequencerFutureLimitDecreaseRequest: TypedContractMethod<[
    ], [
        void
    ], "nonpayable">;
    route: TypedContractMethod<[
        _epoch: BigNumberish,
        _stateroot: BytesLike,
        _inboxIndex: BigNumberish,
        _maxSubmissionCost: BigNumberish,
        _excessFeeRefundAddress: AddressLike,
        _gasLimit: BigNumberish,
        _maxFeePerGas: BigNumberish
    ], [
        void
    ], "nonpayable">;
    sendSequencerDelayLimit: TypedContractMethod<[
        _inboxIndex: BigNumberish,
        _maxSubmissionCost: BigNumberish,
        _excessFeeRefundAddress: AddressLike,
        _gasLimit: BigNumberish,
        _maxFeePerGas: BigNumberish
    ], [
        void
    ], "nonpayable">;
    sendSequencerFutureLimit: TypedContractMethod<[
        _inboxIndex: BigNumberish,
        _maxSubmissionCost: BigNumberish,
        _excessFeeRefundAddress: AddressLike,
        _gasLimit: BigNumberish,
        _maxFeePerGas: BigNumberish
    ], [
        void
    ], "nonpayable">;
    sequencerDelayLimit: TypedContractMethod<[], [bigint], "view">;
    sequencerDelayLimitDecreaseRequest: TypedContractMethod<[
    ], [
        [bigint, bigint] & {
            requestedSequencerLimit: bigint;
            timestamp: bigint;
        }
    ], "view">;
    sequencerFutureLimit: TypedContractMethod<[], [bigint], "view">;
    sequencerFutureLimitDecreaseRequest: TypedContractMethod<[
    ], [
        [bigint, bigint] & {
            requestedSequencerLimit: bigint;
            timestamp: bigint;
        }
    ], "view">;
    updateSequencerDelayLimit: TypedContractMethod<[], [void], "nonpayable">;
    updateSequencerFutureLimit: TypedContractMethod<[], [void], "nonpayable">;
    veaInboxGnosisToArb: TypedContractMethod<[], [string], "view">;
    veaOutboxGnosisToArb: TypedContractMethod<[], [string], "view">;
    withdraw: TypedContractMethod<[_amount: BigNumberish], [void], "nonpayable">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "L2GasBalance"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "amb"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "bridge"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "deposit"): TypedContractMethod<[], [void], "payable">;
    getFunction(nameOrSignature: "executeSequencerDelayLimitDecreaseRequest"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "executeSequencerFutureLimitDecreaseRequest"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "route"): TypedContractMethod<[
        _epoch: BigNumberish,
        _stateroot: BytesLike,
        _inboxIndex: BigNumberish,
        _maxSubmissionCost: BigNumberish,
        _excessFeeRefundAddress: AddressLike,
        _gasLimit: BigNumberish,
        _maxFeePerGas: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "sendSequencerDelayLimit"): TypedContractMethod<[
        _inboxIndex: BigNumberish,
        _maxSubmissionCost: BigNumberish,
        _excessFeeRefundAddress: AddressLike,
        _gasLimit: BigNumberish,
        _maxFeePerGas: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "sendSequencerFutureLimit"): TypedContractMethod<[
        _inboxIndex: BigNumberish,
        _maxSubmissionCost: BigNumberish,
        _excessFeeRefundAddress: AddressLike,
        _gasLimit: BigNumberish,
        _maxFeePerGas: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "sequencerDelayLimit"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "sequencerDelayLimitDecreaseRequest"): TypedContractMethod<[
    ], [
        [bigint, bigint] & {
            requestedSequencerLimit: bigint;
            timestamp: bigint;
        }
    ], "view">;
    getFunction(nameOrSignature: "sequencerFutureLimit"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "sequencerFutureLimitDecreaseRequest"): TypedContractMethod<[
    ], [
        [bigint, bigint] & {
            requestedSequencerLimit: bigint;
            timestamp: bigint;
        }
    ], "view">;
    getFunction(nameOrSignature: "updateSequencerDelayLimit"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "updateSequencerFutureLimit"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "veaInboxGnosisToArb"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "veaOutboxGnosisToArb"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "withdraw"): TypedContractMethod<[_amount: BigNumberish], [void], "nonpayable">;
    getEvent(key: "Routed"): TypedContractEvent<RoutedEvent.InputTuple, RoutedEvent.OutputTuple, RoutedEvent.OutputObject>;
    getEvent(key: "SequencerDelayLimitDecreaseRequested"): TypedContractEvent<SequencerDelayLimitDecreaseRequestedEvent.InputTuple, SequencerDelayLimitDecreaseRequestedEvent.OutputTuple, SequencerDelayLimitDecreaseRequestedEvent.OutputObject>;
    getEvent(key: "SequencerDelayLimitSent"): TypedContractEvent<SequencerDelayLimitSentEvent.InputTuple, SequencerDelayLimitSentEvent.OutputTuple, SequencerDelayLimitSentEvent.OutputObject>;
    getEvent(key: "SequencerDelayLimitUpdated"): TypedContractEvent<SequencerDelayLimitUpdatedEvent.InputTuple, SequencerDelayLimitUpdatedEvent.OutputTuple, SequencerDelayLimitUpdatedEvent.OutputObject>;
    getEvent(key: "SequencerFutureLimitDecreaseRequested"): TypedContractEvent<SequencerFutureLimitDecreaseRequestedEvent.InputTuple, SequencerFutureLimitDecreaseRequestedEvent.OutputTuple, SequencerFutureLimitDecreaseRequestedEvent.OutputObject>;
    getEvent(key: "SequencerFutureLimitSent"): TypedContractEvent<SequencerFutureLimitSentEvent.InputTuple, SequencerFutureLimitSentEvent.OutputTuple, SequencerFutureLimitSentEvent.OutputObject>;
    getEvent(key: "SequencerFutureLimitUpdated"): TypedContractEvent<SequencerFutureLimitUpdatedEvent.InputTuple, SequencerFutureLimitUpdatedEvent.OutputTuple, SequencerFutureLimitUpdatedEvent.OutputObject>;
    filters: {
        "Routed(uint256,uint256)": TypedContractEvent<RoutedEvent.InputTuple, RoutedEvent.OutputTuple, RoutedEvent.OutputObject>;
        Routed: TypedContractEvent<RoutedEvent.InputTuple, RoutedEvent.OutputTuple, RoutedEvent.OutputObject>;
        "SequencerDelayLimitDecreaseRequested(uint256)": TypedContractEvent<SequencerDelayLimitDecreaseRequestedEvent.InputTuple, SequencerDelayLimitDecreaseRequestedEvent.OutputTuple, SequencerDelayLimitDecreaseRequestedEvent.OutputObject>;
        SequencerDelayLimitDecreaseRequested: TypedContractEvent<SequencerDelayLimitDecreaseRequestedEvent.InputTuple, SequencerDelayLimitDecreaseRequestedEvent.OutputTuple, SequencerDelayLimitDecreaseRequestedEvent.OutputObject>;
        "SequencerDelayLimitSent(uint256)": TypedContractEvent<SequencerDelayLimitSentEvent.InputTuple, SequencerDelayLimitSentEvent.OutputTuple, SequencerDelayLimitSentEvent.OutputObject>;
        SequencerDelayLimitSent: TypedContractEvent<SequencerDelayLimitSentEvent.InputTuple, SequencerDelayLimitSentEvent.OutputTuple, SequencerDelayLimitSentEvent.OutputObject>;
        "SequencerDelayLimitUpdated(uint256)": TypedContractEvent<SequencerDelayLimitUpdatedEvent.InputTuple, SequencerDelayLimitUpdatedEvent.OutputTuple, SequencerDelayLimitUpdatedEvent.OutputObject>;
        SequencerDelayLimitUpdated: TypedContractEvent<SequencerDelayLimitUpdatedEvent.InputTuple, SequencerDelayLimitUpdatedEvent.OutputTuple, SequencerDelayLimitUpdatedEvent.OutputObject>;
        "SequencerFutureLimitDecreaseRequested(uint256)": TypedContractEvent<SequencerFutureLimitDecreaseRequestedEvent.InputTuple, SequencerFutureLimitDecreaseRequestedEvent.OutputTuple, SequencerFutureLimitDecreaseRequestedEvent.OutputObject>;
        SequencerFutureLimitDecreaseRequested: TypedContractEvent<SequencerFutureLimitDecreaseRequestedEvent.InputTuple, SequencerFutureLimitDecreaseRequestedEvent.OutputTuple, SequencerFutureLimitDecreaseRequestedEvent.OutputObject>;
        "SequencerFutureLimitSent(uint256)": TypedContractEvent<SequencerFutureLimitSentEvent.InputTuple, SequencerFutureLimitSentEvent.OutputTuple, SequencerFutureLimitSentEvent.OutputObject>;
        SequencerFutureLimitSent: TypedContractEvent<SequencerFutureLimitSentEvent.InputTuple, SequencerFutureLimitSentEvent.OutputTuple, SequencerFutureLimitSentEvent.OutputObject>;
        "SequencerFutureLimitUpdated(uint256)": TypedContractEvent<SequencerFutureLimitUpdatedEvent.InputTuple, SequencerFutureLimitUpdatedEvent.OutputTuple, SequencerFutureLimitUpdatedEvent.OutputObject>;
        SequencerFutureLimitUpdated: TypedContractEvent<SequencerFutureLimitUpdatedEvent.InputTuple, SequencerFutureLimitUpdatedEvent.OutputTuple, SequencerFutureLimitUpdatedEvent.OutputObject>;
    };
}
