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 } from "./common";
export declare namespace SpokePoolInterface {
    type RelayerRefundLeafStruct = {
        amountToReturn: BigNumberish;
        chainId: BigNumberish;
        refundAmounts: BigNumberish[];
        leafId: BigNumberish;
        l2TokenAddress: string;
        refundAddresses: string[];
    };
    type RelayerRefundLeafStructOutput = [
        BigNumber,
        BigNumber,
        BigNumber[],
        number,
        string,
        string[]
    ] & {
        amountToReturn: BigNumber;
        chainId: BigNumber;
        refundAmounts: BigNumber[];
        leafId: number;
        l2TokenAddress: string;
        refundAddresses: string[];
    };
}
export declare namespace V3SpokePoolInterface {
    type V3RelayDataStruct = {
        depositor: BytesLike;
        recipient: BytesLike;
        exclusiveRelayer: BytesLike;
        inputToken: BytesLike;
        outputToken: BytesLike;
        inputAmount: BigNumberish;
        outputAmount: BigNumberish;
        originChainId: BigNumberish;
        depositId: BigNumberish;
        fillDeadline: BigNumberish;
        exclusivityDeadline: BigNumberish;
        message: BytesLike;
    };
    type V3RelayDataStructOutput = [
        string,
        string,
        string,
        string,
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        number,
        number,
        string
    ] & {
        depositor: string;
        recipient: string;
        exclusiveRelayer: string;
        inputToken: string;
        outputToken: string;
        inputAmount: BigNumber;
        outputAmount: BigNumber;
        originChainId: BigNumber;
        depositId: BigNumber;
        fillDeadline: number;
        exclusivityDeadline: number;
        message: string;
    };
    type V3SlowFillStruct = {
        relayData: V3SpokePoolInterface.V3RelayDataStruct;
        chainId: BigNumberish;
        updatedOutputAmount: BigNumberish;
    };
    type V3SlowFillStructOutput = [
        V3SpokePoolInterface.V3RelayDataStructOutput,
        BigNumber,
        BigNumber
    ] & {
        relayData: V3SpokePoolInterface.V3RelayDataStructOutput;
        chainId: BigNumber;
        updatedOutputAmount: BigNumber;
    };
    type V3RelayDataLegacyStruct = {
        depositor: string;
        recipient: string;
        exclusiveRelayer: string;
        inputToken: string;
        outputToken: string;
        inputAmount: BigNumberish;
        outputAmount: BigNumberish;
        originChainId: BigNumberish;
        depositId: BigNumberish;
        fillDeadline: BigNumberish;
        exclusivityDeadline: BigNumberish;
        message: BytesLike;
    };
    type V3RelayDataLegacyStructOutput = [
        string,
        string,
        string,
        string,
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        number,
        number,
        number,
        string
    ] & {
        depositor: string;
        recipient: string;
        exclusiveRelayer: string;
        inputToken: string;
        outputToken: string;
        inputAmount: BigNumber;
        outputAmount: BigNumber;
        originChainId: BigNumber;
        depositId: number;
        fillDeadline: number;
        exclusivityDeadline: number;
        message: string;
    };
    type V3RelayExecutionEventInfoStruct = {
        updatedRecipient: BytesLike;
        updatedMessageHash: BytesLike;
        updatedOutputAmount: BigNumberish;
        fillType: BigNumberish;
    };
    type V3RelayExecutionEventInfoStructOutput = [
        string,
        string,
        BigNumber,
        number
    ] & {
        updatedRecipient: string;
        updatedMessageHash: string;
        updatedOutputAmount: BigNumber;
        fillType: number;
    };
    type LegacyV3RelayExecutionEventInfoStruct = {
        updatedRecipient: string;
        updatedMessage: BytesLike;
        updatedOutputAmount: BigNumberish;
        fillType: BigNumberish;
    };
    type LegacyV3RelayExecutionEventInfoStructOutput = [
        string,
        string,
        BigNumber,
        number
    ] & {
        updatedRecipient: string;
        updatedMessage: string;
        updatedOutputAmount: BigNumber;
        fillType: number;
    };
}
export interface ISpokePoolInterface extends utils.Interface {
    functions: {
        "chainId()": FunctionFragment;
        "claimRelayerRefund(bytes32,bytes32)": FunctionFragment;
        "deposit(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint32,uint32,uint32,bytes)": FunctionFragment;
        "depositDeprecated_5947912356(address,address,uint256,uint256,int64,uint32,bytes,uint256)": FunctionFragment;
        "depositFor(address,address,address,uint256,uint256,int64,uint32,bytes,uint256)": FunctionFragment;
        "depositNow(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint32,uint32,bytes)": FunctionFragment;
        "depositV3(address,address,address,address,uint256,uint256,uint256,address,uint32,uint32,uint32,bytes)": FunctionFragment;
        "depositV3Now(address,address,address,address,uint256,uint256,uint256,address,uint32,uint32,bytes)": FunctionFragment;
        "emergencyDeleteRootBundle(uint256)": FunctionFragment;
        "executeRelayerRefundLeaf(uint32,(uint256,uint256,uint256[],uint32,address,address[]),bytes32[])": FunctionFragment;
        "executeSlowRelayLeaf(((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,uint256),uint32,bytes32[])": FunctionFragment;
        "fillRelay((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,bytes32)": FunctionFragment;
        "fillRelayWithUpdatedDeposit((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes),uint256,bytes32,uint256,bytes32,bytes,bytes)": FunctionFragment;
        "fillV3Relay((address,address,address,address,address,uint256,uint256,uint256,uint32,uint32,uint32,bytes),uint256)": FunctionFragment;
        "getUnsafeDepositId(address,bytes32,uint256)": FunctionFragment;
        "numberOfDeposits()": FunctionFragment;
        "pauseDeposits(bool)": FunctionFragment;
        "pauseFills(bool)": FunctionFragment;
        "relayRootBundle(bytes32,bytes32)": FunctionFragment;
        "requestSlowFill((bytes32,bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes))": FunctionFragment;
        "setCrossDomainAdmin(address)": FunctionFragment;
        "setWithdrawalRecipient(address)": FunctionFragment;
        "speedUpDeposit(bytes32,uint256,uint256,bytes32,bytes,bytes)": FunctionFragment;
        "speedUpV3Deposit(address,uint256,uint256,address,bytes,bytes)": FunctionFragment;
        "unsafeDeposit(bytes32,bytes32,bytes32,bytes32,uint256,uint256,uint256,bytes32,uint256,uint32,uint32,uint32,bytes)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "chainId" | "claimRelayerRefund" | "deposit" | "depositDeprecated_5947912356" | "depositFor" | "depositNow" | "depositV3" | "depositV3Now" | "emergencyDeleteRootBundle" | "executeRelayerRefundLeaf" | "executeSlowRelayLeaf" | "fillRelay" | "fillRelayWithUpdatedDeposit" | "fillV3Relay" | "getUnsafeDepositId" | "numberOfDeposits" | "pauseDeposits" | "pauseFills" | "relayRootBundle" | "requestSlowFill" | "setCrossDomainAdmin" | "setWithdrawalRecipient" | "speedUpDeposit" | "speedUpV3Deposit" | "unsafeDeposit"): FunctionFragment;
    encodeFunctionData(functionFragment: "chainId", values?: undefined): string;
    encodeFunctionData(functionFragment: "claimRelayerRefund", values: [BytesLike, BytesLike]): string;
    encodeFunctionData(functionFragment: "deposit", values: [
        BytesLike,
        BytesLike,
        BytesLike,
        BytesLike,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BytesLike,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BytesLike
    ]): string;
    encodeFunctionData(functionFragment: "depositDeprecated_5947912356", values: [
        string,
        string,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BytesLike,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "depositFor", values: [
        string,
        string,
        string,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BytesLike,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "depositNow", values: [
        BytesLike,
        BytesLike,
        BytesLike,
        BytesLike,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BytesLike,
        BigNumberish,
        BigNumberish,
        BytesLike
    ]): string;
    encodeFunctionData(functionFragment: "depositV3", values: [
        string,
        string,
        string,
        string,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        string,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BytesLike
    ]): string;
    encodeFunctionData(functionFragment: "depositV3Now", values: [
        string,
        string,
        string,
        string,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        string,
        BigNumberish,
        BigNumberish,
        BytesLike
    ]): string;
    encodeFunctionData(functionFragment: "emergencyDeleteRootBundle", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "executeRelayerRefundLeaf", values: [
        BigNumberish,
        SpokePoolInterface.RelayerRefundLeafStruct,
        BytesLike[]
    ]): string;
    encodeFunctionData(functionFragment: "executeSlowRelayLeaf", values: [V3SpokePoolInterface.V3SlowFillStruct, BigNumberish, BytesLike[]]): string;
    encodeFunctionData(functionFragment: "fillRelay", values: [V3SpokePoolInterface.V3RelayDataStruct, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "fillRelayWithUpdatedDeposit", values: [
        V3SpokePoolInterface.V3RelayDataStruct,
        BigNumberish,
        BytesLike,
        BigNumberish,
        BytesLike,
        BytesLike,
        BytesLike
    ]): string;
    encodeFunctionData(functionFragment: "fillV3Relay", values: [V3SpokePoolInterface.V3RelayDataLegacyStruct, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getUnsafeDepositId", values: [string, BytesLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "numberOfDeposits", values?: undefined): string;
    encodeFunctionData(functionFragment: "pauseDeposits", values: [boolean]): string;
    encodeFunctionData(functionFragment: "pauseFills", values: [boolean]): string;
    encodeFunctionData(functionFragment: "relayRootBundle", values: [BytesLike, BytesLike]): string;
    encodeFunctionData(functionFragment: "requestSlowFill", values: [V3SpokePoolInterface.V3RelayDataStruct]): string;
    encodeFunctionData(functionFragment: "setCrossDomainAdmin", values: [string]): string;
    encodeFunctionData(functionFragment: "setWithdrawalRecipient", values: [string]): string;
    encodeFunctionData(functionFragment: "speedUpDeposit", values: [
        BytesLike,
        BigNumberish,
        BigNumberish,
        BytesLike,
        BytesLike,
        BytesLike
    ]): string;
    encodeFunctionData(functionFragment: "speedUpV3Deposit", values: [string, BigNumberish, BigNumberish, string, BytesLike, BytesLike]): string;
    encodeFunctionData(functionFragment: "unsafeDeposit", values: [
        BytesLike,
        BytesLike,
        BytesLike,
        BytesLike,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BytesLike,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BytesLike
    ]): string;
    decodeFunctionResult(functionFragment: "chainId", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "claimRelayerRefund", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "depositDeprecated_5947912356", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "depositFor", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "depositNow", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "depositV3", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "depositV3Now", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "emergencyDeleteRootBundle", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "executeRelayerRefundLeaf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "executeSlowRelayLeaf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "fillRelay", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "fillRelayWithUpdatedDeposit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "fillV3Relay", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getUnsafeDepositId", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "numberOfDeposits", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pauseDeposits", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pauseFills", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "relayRootBundle", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "requestSlowFill", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setCrossDomainAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setWithdrawalRecipient", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "speedUpDeposit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "speedUpV3Deposit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unsafeDeposit", data: BytesLike): Result;
    events: {
        "ClaimedRelayerRefund(bytes32,bytes32,uint256,address)": EventFragment;
        "FilledRelay(bytes32,bytes32,uint256,uint256,uint256,uint256,uint256,uint32,uint32,bytes32,bytes32,bytes32,bytes32,bytes32,(bytes32,bytes32,uint256,uint8))": EventFragment;
        "FilledV3Relay(address,address,uint256,uint256,uint256,uint256,uint32,uint32,uint32,address,address,address,address,bytes,(address,bytes,uint256,uint8))": EventFragment;
        "FundsDeposited(bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,uint32,bytes32,bytes32,bytes32,bytes)": EventFragment;
        "RequestedSlowFill(bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes32,bytes32,bytes32,bytes32)": EventFragment;
        "RequestedSpeedUpDeposit(uint256,uint256,bytes32,bytes32,bytes,bytes)": EventFragment;
        "RequestedSpeedUpV3Deposit(uint256,uint32,address,address,bytes,bytes)": EventFragment;
        "RequestedV3SlowFill(address,address,uint256,uint256,uint256,uint32,uint32,uint32,address,address,address,bytes)": EventFragment;
        "V3FundsDeposited(address,address,uint256,uint256,uint256,uint32,uint32,uint32,uint32,address,address,address,bytes)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ClaimedRelayerRefund"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "FilledRelay"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "FilledV3Relay"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "FundsDeposited"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RequestedSlowFill"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RequestedSpeedUpDeposit"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RequestedSpeedUpV3Deposit"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RequestedV3SlowFill"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "V3FundsDeposited"): EventFragment;
}
export interface ClaimedRelayerRefundEventObject {
    l2TokenAddress: string;
    refundAddress: string;
    amount: BigNumber;
    caller: string;
}
export type ClaimedRelayerRefundEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    string
], ClaimedRelayerRefundEventObject>;
export type ClaimedRelayerRefundEventFilter = TypedEventFilter<ClaimedRelayerRefundEvent>;
export interface FilledRelayEventObject {
    inputToken: string;
    outputToken: string;
    inputAmount: BigNumber;
    outputAmount: BigNumber;
    repaymentChainId: BigNumber;
    originChainId: BigNumber;
    depositId: BigNumber;
    fillDeadline: number;
    exclusivityDeadline: number;
    exclusiveRelayer: string;
    relayer: string;
    depositor: string;
    recipient: string;
    messageHash: string;
    relayExecutionInfo: V3SpokePoolInterface.V3RelayExecutionEventInfoStructOutput;
}
export type FilledRelayEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    number,
    number,
    string,
    string,
    string,
    string,
    string,
    V3SpokePoolInterface.V3RelayExecutionEventInfoStructOutput
], FilledRelayEventObject>;
export type FilledRelayEventFilter = TypedEventFilter<FilledRelayEvent>;
export interface FilledV3RelayEventObject {
    inputToken: string;
    outputToken: string;
    inputAmount: BigNumber;
    outputAmount: BigNumber;
    repaymentChainId: BigNumber;
    originChainId: BigNumber;
    depositId: number;
    fillDeadline: number;
    exclusivityDeadline: number;
    exclusiveRelayer: string;
    relayer: string;
    depositor: string;
    recipient: string;
    message: string;
    relayExecutionInfo: V3SpokePoolInterface.LegacyV3RelayExecutionEventInfoStructOutput;
}
export type FilledV3RelayEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    number,
    number,
    number,
    string,
    string,
    string,
    string,
    string,
    V3SpokePoolInterface.LegacyV3RelayExecutionEventInfoStructOutput
], FilledV3RelayEventObject>;
export type FilledV3RelayEventFilter = TypedEventFilter<FilledV3RelayEvent>;
export interface FundsDepositedEventObject {
    inputToken: string;
    outputToken: string;
    inputAmount: BigNumber;
    outputAmount: BigNumber;
    destinationChainId: BigNumber;
    depositId: BigNumber;
    quoteTimestamp: number;
    fillDeadline: number;
    exclusivityDeadline: number;
    depositor: string;
    recipient: string;
    exclusiveRelayer: string;
    message: string;
}
export type FundsDepositedEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    number,
    number,
    number,
    string,
    string,
    string,
    string
], FundsDepositedEventObject>;
export type FundsDepositedEventFilter = TypedEventFilter<FundsDepositedEvent>;
export interface RequestedSlowFillEventObject {
    inputToken: string;
    outputToken: string;
    inputAmount: BigNumber;
    outputAmount: BigNumber;
    originChainId: BigNumber;
    depositId: BigNumber;
    fillDeadline: number;
    exclusivityDeadline: number;
    exclusiveRelayer: string;
    depositor: string;
    recipient: string;
    messageHash: string;
}
export type RequestedSlowFillEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    number,
    number,
    string,
    string,
    string,
    string
], RequestedSlowFillEventObject>;
export type RequestedSlowFillEventFilter = TypedEventFilter<RequestedSlowFillEvent>;
export interface RequestedSpeedUpDepositEventObject {
    updatedOutputAmount: BigNumber;
    depositId: BigNumber;
    depositor: string;
    updatedRecipient: string;
    updatedMessage: string;
    depositorSignature: string;
}
export type RequestedSpeedUpDepositEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    string,
    string,
    string,
    string
], RequestedSpeedUpDepositEventObject>;
export type RequestedSpeedUpDepositEventFilter = TypedEventFilter<RequestedSpeedUpDepositEvent>;
export interface RequestedSpeedUpV3DepositEventObject {
    updatedOutputAmount: BigNumber;
    depositId: number;
    depositor: string;
    updatedRecipient: string;
    updatedMessage: string;
    depositorSignature: string;
}
export type RequestedSpeedUpV3DepositEvent = TypedEvent<[
    BigNumber,
    number,
    string,
    string,
    string,
    string
], RequestedSpeedUpV3DepositEventObject>;
export type RequestedSpeedUpV3DepositEventFilter = TypedEventFilter<RequestedSpeedUpV3DepositEvent>;
export interface RequestedV3SlowFillEventObject {
    inputToken: string;
    outputToken: string;
    inputAmount: BigNumber;
    outputAmount: BigNumber;
    originChainId: BigNumber;
    depositId: number;
    fillDeadline: number;
    exclusivityDeadline: number;
    exclusiveRelayer: string;
    depositor: string;
    recipient: string;
    message: string;
}
export type RequestedV3SlowFillEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    number,
    number,
    number,
    string,
    string,
    string,
    string
], RequestedV3SlowFillEventObject>;
export type RequestedV3SlowFillEventFilter = TypedEventFilter<RequestedV3SlowFillEvent>;
export interface V3FundsDepositedEventObject {
    inputToken: string;
    outputToken: string;
    inputAmount: BigNumber;
    outputAmount: BigNumber;
    destinationChainId: BigNumber;
    depositId: number;
    quoteTimestamp: number;
    fillDeadline: number;
    exclusivityDeadline: number;
    depositor: string;
    recipient: string;
    exclusiveRelayer: string;
    message: string;
}
export type V3FundsDepositedEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    number,
    number,
    number,
    number,
    string,
    string,
    string,
    string
], V3FundsDepositedEventObject>;
export type V3FundsDepositedEventFilter = TypedEventFilter<V3FundsDepositedEvent>;
export interface ISpokePool extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ISpokePoolInterface;
    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: {
        chainId(overrides?: CallOverrides): Promise<[BigNumber]>;
        claimRelayerRefund(l2TokenAddress: BytesLike, refundAddress: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        deposit(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        depositDeprecated_5947912356(recipient: string, originToken: string, amount: BigNumberish, destinationChainId: BigNumberish, relayerFeePct: BigNumberish, quoteTimestamp: BigNumberish, message: BytesLike, maxCount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        depositFor(depositor: string, recipient: string, originToken: string, amount: BigNumberish, destinationChainId: BigNumberish, relayerFeePct: BigNumberish, quoteTimestamp: BigNumberish, message: BytesLike, maxCount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        depositNow(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, fillDeadlineOffset: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        depositV3(depositor: string, recipient: string, inputToken: string, outputToken: string, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: string, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        depositV3Now(depositor: string, recipient: string, inputToken: string, outputToken: string, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: string, fillDeadlineOffset: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        emergencyDeleteRootBundle(rootBundleId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        executeRelayerRefundLeaf(rootBundleId: BigNumberish, relayerRefundLeaf: SpokePoolInterface.RelayerRefundLeafStruct, proof: BytesLike[], overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        executeSlowRelayLeaf(slowFillLeaf: V3SpokePoolInterface.V3SlowFillStruct, rootBundleId: BigNumberish, proof: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        fillRelay(relayData: V3SpokePoolInterface.V3RelayDataStruct, repaymentChainId: BigNumberish, repaymentAddress: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        fillRelayWithUpdatedDeposit(relayData: V3SpokePoolInterface.V3RelayDataStruct, repaymentChainId: BigNumberish, repaymentAddress: BytesLike, updatedOutputAmount: BigNumberish, updatedRecipient: BytesLike, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        fillV3Relay(relayData: V3SpokePoolInterface.V3RelayDataLegacyStruct, repaymentChainId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getUnsafeDepositId(msgSender: string, depositor: BytesLike, depositNonce: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        numberOfDeposits(overrides?: CallOverrides): Promise<[number]>;
        pauseDeposits(pause: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        pauseFills(pause: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        relayRootBundle(relayerRefundRoot: BytesLike, slowRelayRoot: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        requestSlowFill(relayData: V3SpokePoolInterface.V3RelayDataStruct, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        setCrossDomainAdmin(newCrossDomainAdmin: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        setWithdrawalRecipient(newWithdrawalRecipient: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        speedUpDeposit(depositor: BytesLike, depositId: BigNumberish, updatedOutputAmount: BigNumberish, updatedRecipient: BytesLike, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        speedUpV3Deposit(depositor: string, depositId: BigNumberish, updatedOutputAmount: BigNumberish, updatedRecipient: string, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        unsafeDeposit(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, depositNonce: BigNumberish, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityParameter: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    chainId(overrides?: CallOverrides): Promise<BigNumber>;
    claimRelayerRefund(l2TokenAddress: BytesLike, refundAddress: BytesLike, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    deposit(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    depositDeprecated_5947912356(recipient: string, originToken: string, amount: BigNumberish, destinationChainId: BigNumberish, relayerFeePct: BigNumberish, quoteTimestamp: BigNumberish, message: BytesLike, maxCount: BigNumberish, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    depositFor(depositor: string, recipient: string, originToken: string, amount: BigNumberish, destinationChainId: BigNumberish, relayerFeePct: BigNumberish, quoteTimestamp: BigNumberish, message: BytesLike, maxCount: BigNumberish, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    depositNow(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, fillDeadlineOffset: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    depositV3(depositor: string, recipient: string, inputToken: string, outputToken: string, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: string, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    depositV3Now(depositor: string, recipient: string, inputToken: string, outputToken: string, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: string, fillDeadlineOffset: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    emergencyDeleteRootBundle(rootBundleId: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    executeRelayerRefundLeaf(rootBundleId: BigNumberish, relayerRefundLeaf: SpokePoolInterface.RelayerRefundLeafStruct, proof: BytesLike[], overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    executeSlowRelayLeaf(slowFillLeaf: V3SpokePoolInterface.V3SlowFillStruct, rootBundleId: BigNumberish, proof: BytesLike[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    fillRelay(relayData: V3SpokePoolInterface.V3RelayDataStruct, repaymentChainId: BigNumberish, repaymentAddress: BytesLike, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    fillRelayWithUpdatedDeposit(relayData: V3SpokePoolInterface.V3RelayDataStruct, repaymentChainId: BigNumberish, repaymentAddress: BytesLike, updatedOutputAmount: BigNumberish, updatedRecipient: BytesLike, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    fillV3Relay(relayData: V3SpokePoolInterface.V3RelayDataLegacyStruct, repaymentChainId: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getUnsafeDepositId(msgSender: string, depositor: BytesLike, depositNonce: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    numberOfDeposits(overrides?: CallOverrides): Promise<number>;
    pauseDeposits(pause: boolean, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    pauseFills(pause: boolean, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    relayRootBundle(relayerRefundRoot: BytesLike, slowRelayRoot: BytesLike, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    requestSlowFill(relayData: V3SpokePoolInterface.V3RelayDataStruct, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    setCrossDomainAdmin(newCrossDomainAdmin: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    setWithdrawalRecipient(newWithdrawalRecipient: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    speedUpDeposit(depositor: BytesLike, depositId: BigNumberish, updatedOutputAmount: BigNumberish, updatedRecipient: BytesLike, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    speedUpV3Deposit(depositor: string, depositId: BigNumberish, updatedOutputAmount: BigNumberish, updatedRecipient: string, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    unsafeDeposit(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, depositNonce: BigNumberish, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityParameter: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        chainId(overrides?: CallOverrides): Promise<BigNumber>;
        claimRelayerRefund(l2TokenAddress: BytesLike, refundAddress: BytesLike, overrides?: CallOverrides): Promise<void>;
        deposit(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: CallOverrides): Promise<void>;
        depositDeprecated_5947912356(recipient: string, originToken: string, amount: BigNumberish, destinationChainId: BigNumberish, relayerFeePct: BigNumberish, quoteTimestamp: BigNumberish, message: BytesLike, maxCount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        depositFor(depositor: string, recipient: string, originToken: string, amount: BigNumberish, destinationChainId: BigNumberish, relayerFeePct: BigNumberish, quoteTimestamp: BigNumberish, message: BytesLike, maxCount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        depositNow(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, fillDeadlineOffset: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: CallOverrides): Promise<void>;
        depositV3(depositor: string, recipient: string, inputToken: string, outputToken: string, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: string, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: CallOverrides): Promise<void>;
        depositV3Now(depositor: string, recipient: string, inputToken: string, outputToken: string, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: string, fillDeadlineOffset: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: CallOverrides): Promise<void>;
        emergencyDeleteRootBundle(rootBundleId: BigNumberish, overrides?: CallOverrides): Promise<void>;
        executeRelayerRefundLeaf(rootBundleId: BigNumberish, relayerRefundLeaf: SpokePoolInterface.RelayerRefundLeafStruct, proof: BytesLike[], overrides?: CallOverrides): Promise<void>;
        executeSlowRelayLeaf(slowFillLeaf: V3SpokePoolInterface.V3SlowFillStruct, rootBundleId: BigNumberish, proof: BytesLike[], overrides?: CallOverrides): Promise<void>;
        fillRelay(relayData: V3SpokePoolInterface.V3RelayDataStruct, repaymentChainId: BigNumberish, repaymentAddress: BytesLike, overrides?: CallOverrides): Promise<void>;
        fillRelayWithUpdatedDeposit(relayData: V3SpokePoolInterface.V3RelayDataStruct, repaymentChainId: BigNumberish, repaymentAddress: BytesLike, updatedOutputAmount: BigNumberish, updatedRecipient: BytesLike, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: CallOverrides): Promise<void>;
        fillV3Relay(relayData: V3SpokePoolInterface.V3RelayDataLegacyStruct, repaymentChainId: BigNumberish, overrides?: CallOverrides): Promise<void>;
        getUnsafeDepositId(msgSender: string, depositor: BytesLike, depositNonce: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        numberOfDeposits(overrides?: CallOverrides): Promise<number>;
        pauseDeposits(pause: boolean, overrides?: CallOverrides): Promise<void>;
        pauseFills(pause: boolean, overrides?: CallOverrides): Promise<void>;
        relayRootBundle(relayerRefundRoot: BytesLike, slowRelayRoot: BytesLike, overrides?: CallOverrides): Promise<void>;
        requestSlowFill(relayData: V3SpokePoolInterface.V3RelayDataStruct, overrides?: CallOverrides): Promise<void>;
        setCrossDomainAdmin(newCrossDomainAdmin: string, overrides?: CallOverrides): Promise<void>;
        setWithdrawalRecipient(newWithdrawalRecipient: string, overrides?: CallOverrides): Promise<void>;
        speedUpDeposit(depositor: BytesLike, depositId: BigNumberish, updatedOutputAmount: BigNumberish, updatedRecipient: BytesLike, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: CallOverrides): Promise<void>;
        speedUpV3Deposit(depositor: string, depositId: BigNumberish, updatedOutputAmount: BigNumberish, updatedRecipient: string, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: CallOverrides): Promise<void>;
        unsafeDeposit(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, depositNonce: BigNumberish, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityParameter: BigNumberish, message: BytesLike, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "ClaimedRelayerRefund(bytes32,bytes32,uint256,address)"(l2TokenAddress?: BytesLike | null, refundAddress?: BytesLike | null, amount?: null, caller?: string | null): ClaimedRelayerRefundEventFilter;
        ClaimedRelayerRefund(l2TokenAddress?: BytesLike | null, refundAddress?: BytesLike | null, amount?: null, caller?: string | null): ClaimedRelayerRefundEventFilter;
        "FilledRelay(bytes32,bytes32,uint256,uint256,uint256,uint256,uint256,uint32,uint32,bytes32,bytes32,bytes32,bytes32,bytes32,(bytes32,bytes32,uint256,uint8))"(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, repaymentChainId?: null, originChainId?: BigNumberish | null, depositId?: BigNumberish | null, fillDeadline?: null, exclusivityDeadline?: null, exclusiveRelayer?: null, relayer?: BytesLike | null, depositor?: null, recipient?: null, messageHash?: null, relayExecutionInfo?: null): FilledRelayEventFilter;
        FilledRelay(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, repaymentChainId?: null, originChainId?: BigNumberish | null, depositId?: BigNumberish | null, fillDeadline?: null, exclusivityDeadline?: null, exclusiveRelayer?: null, relayer?: BytesLike | null, depositor?: null, recipient?: null, messageHash?: null, relayExecutionInfo?: null): FilledRelayEventFilter;
        "FilledV3Relay(address,address,uint256,uint256,uint256,uint256,uint32,uint32,uint32,address,address,address,address,bytes,(address,bytes,uint256,uint8))"(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, repaymentChainId?: null, originChainId?: BigNumberish | null, depositId?: BigNumberish | null, fillDeadline?: null, exclusivityDeadline?: null, exclusiveRelayer?: null, relayer?: string | null, depositor?: null, recipient?: null, message?: null, relayExecutionInfo?: null): FilledV3RelayEventFilter;
        FilledV3Relay(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, repaymentChainId?: null, originChainId?: BigNumberish | null, depositId?: BigNumberish | null, fillDeadline?: null, exclusivityDeadline?: null, exclusiveRelayer?: null, relayer?: string | null, depositor?: null, recipient?: null, message?: null, relayExecutionInfo?: null): FilledV3RelayEventFilter;
        "FundsDeposited(bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,uint32,bytes32,bytes32,bytes32,bytes)"(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, destinationChainId?: BigNumberish | null, depositId?: BigNumberish | null, quoteTimestamp?: null, fillDeadline?: null, exclusivityDeadline?: null, depositor?: BytesLike | null, recipient?: null, exclusiveRelayer?: null, message?: null): FundsDepositedEventFilter;
        FundsDeposited(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, destinationChainId?: BigNumberish | null, depositId?: BigNumberish | null, quoteTimestamp?: null, fillDeadline?: null, exclusivityDeadline?: null, depositor?: BytesLike | null, recipient?: null, exclusiveRelayer?: null, message?: null): FundsDepositedEventFilter;
        "RequestedSlowFill(bytes32,bytes32,uint256,uint256,uint256,uint256,uint32,uint32,bytes32,bytes32,bytes32,bytes32)"(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, originChainId?: BigNumberish | null, depositId?: BigNumberish | null, fillDeadline?: null, exclusivityDeadline?: null, exclusiveRelayer?: null, depositor?: null, recipient?: null, messageHash?: null): RequestedSlowFillEventFilter;
        RequestedSlowFill(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, originChainId?: BigNumberish | null, depositId?: BigNumberish | null, fillDeadline?: null, exclusivityDeadline?: null, exclusiveRelayer?: null, depositor?: null, recipient?: null, messageHash?: null): RequestedSlowFillEventFilter;
        "RequestedSpeedUpDeposit(uint256,uint256,bytes32,bytes32,bytes,bytes)"(updatedOutputAmount?: null, depositId?: BigNumberish | null, depositor?: BytesLike | null, updatedRecipient?: null, updatedMessage?: null, depositorSignature?: null): RequestedSpeedUpDepositEventFilter;
        RequestedSpeedUpDeposit(updatedOutputAmount?: null, depositId?: BigNumberish | null, depositor?: BytesLike | null, updatedRecipient?: null, updatedMessage?: null, depositorSignature?: null): RequestedSpeedUpDepositEventFilter;
        "RequestedSpeedUpV3Deposit(uint256,uint32,address,address,bytes,bytes)"(updatedOutputAmount?: null, depositId?: BigNumberish | null, depositor?: string | null, updatedRecipient?: null, updatedMessage?: null, depositorSignature?: null): RequestedSpeedUpV3DepositEventFilter;
        RequestedSpeedUpV3Deposit(updatedOutputAmount?: null, depositId?: BigNumberish | null, depositor?: string | null, updatedRecipient?: null, updatedMessage?: null, depositorSignature?: null): RequestedSpeedUpV3DepositEventFilter;
        "RequestedV3SlowFill(address,address,uint256,uint256,uint256,uint32,uint32,uint32,address,address,address,bytes)"(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, originChainId?: BigNumberish | null, depositId?: BigNumberish | null, fillDeadline?: null, exclusivityDeadline?: null, exclusiveRelayer?: null, depositor?: null, recipient?: null, message?: null): RequestedV3SlowFillEventFilter;
        RequestedV3SlowFill(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, originChainId?: BigNumberish | null, depositId?: BigNumberish | null, fillDeadline?: null, exclusivityDeadline?: null, exclusiveRelayer?: null, depositor?: null, recipient?: null, message?: null): RequestedV3SlowFillEventFilter;
        "V3FundsDeposited(address,address,uint256,uint256,uint256,uint32,uint32,uint32,uint32,address,address,address,bytes)"(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, destinationChainId?: BigNumberish | null, depositId?: BigNumberish | null, quoteTimestamp?: null, fillDeadline?: null, exclusivityDeadline?: null, depositor?: string | null, recipient?: null, exclusiveRelayer?: null, message?: null): V3FundsDepositedEventFilter;
        V3FundsDeposited(inputToken?: null, outputToken?: null, inputAmount?: null, outputAmount?: null, destinationChainId?: BigNumberish | null, depositId?: BigNumberish | null, quoteTimestamp?: null, fillDeadline?: null, exclusivityDeadline?: null, depositor?: string | null, recipient?: null, exclusiveRelayer?: null, message?: null): V3FundsDepositedEventFilter;
    };
    estimateGas: {
        chainId(overrides?: CallOverrides): Promise<BigNumber>;
        claimRelayerRefund(l2TokenAddress: BytesLike, refundAddress: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        deposit(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        depositDeprecated_5947912356(recipient: string, originToken: string, amount: BigNumberish, destinationChainId: BigNumberish, relayerFeePct: BigNumberish, quoteTimestamp: BigNumberish, message: BytesLike, maxCount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        depositFor(depositor: string, recipient: string, originToken: string, amount: BigNumberish, destinationChainId: BigNumberish, relayerFeePct: BigNumberish, quoteTimestamp: BigNumberish, message: BytesLike, maxCount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        depositNow(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, fillDeadlineOffset: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        depositV3(depositor: string, recipient: string, inputToken: string, outputToken: string, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: string, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        depositV3Now(depositor: string, recipient: string, inputToken: string, outputToken: string, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: string, fillDeadlineOffset: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        emergencyDeleteRootBundle(rootBundleId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        executeRelayerRefundLeaf(rootBundleId: BigNumberish, relayerRefundLeaf: SpokePoolInterface.RelayerRefundLeafStruct, proof: BytesLike[], overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        executeSlowRelayLeaf(slowFillLeaf: V3SpokePoolInterface.V3SlowFillStruct, rootBundleId: BigNumberish, proof: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        fillRelay(relayData: V3SpokePoolInterface.V3RelayDataStruct, repaymentChainId: BigNumberish, repaymentAddress: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        fillRelayWithUpdatedDeposit(relayData: V3SpokePoolInterface.V3RelayDataStruct, repaymentChainId: BigNumberish, repaymentAddress: BytesLike, updatedOutputAmount: BigNumberish, updatedRecipient: BytesLike, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        fillV3Relay(relayData: V3SpokePoolInterface.V3RelayDataLegacyStruct, repaymentChainId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getUnsafeDepositId(msgSender: string, depositor: BytesLike, depositNonce: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        numberOfDeposits(overrides?: CallOverrides): Promise<BigNumber>;
        pauseDeposits(pause: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        pauseFills(pause: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        relayRootBundle(relayerRefundRoot: BytesLike, slowRelayRoot: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        requestSlowFill(relayData: V3SpokePoolInterface.V3RelayDataStruct, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        setCrossDomainAdmin(newCrossDomainAdmin: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        setWithdrawalRecipient(newWithdrawalRecipient: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        speedUpDeposit(depositor: BytesLike, depositId: BigNumberish, updatedOutputAmount: BigNumberish, updatedRecipient: BytesLike, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        speedUpV3Deposit(depositor: string, depositId: BigNumberish, updatedOutputAmount: BigNumberish, updatedRecipient: string, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        unsafeDeposit(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, depositNonce: BigNumberish, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityParameter: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        chainId(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        claimRelayerRefund(l2TokenAddress: BytesLike, refundAddress: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        deposit(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        depositDeprecated_5947912356(recipient: string, originToken: string, amount: BigNumberish, destinationChainId: BigNumberish, relayerFeePct: BigNumberish, quoteTimestamp: BigNumberish, message: BytesLike, maxCount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        depositFor(depositor: string, recipient: string, originToken: string, amount: BigNumberish, destinationChainId: BigNumberish, relayerFeePct: BigNumberish, quoteTimestamp: BigNumberish, message: BytesLike, maxCount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        depositNow(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, fillDeadlineOffset: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        depositV3(depositor: string, recipient: string, inputToken: string, outputToken: string, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: string, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        depositV3Now(depositor: string, recipient: string, inputToken: string, outputToken: string, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: string, fillDeadlineOffset: BigNumberish, exclusivityDeadline: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        emergencyDeleteRootBundle(rootBundleId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        executeRelayerRefundLeaf(rootBundleId: BigNumberish, relayerRefundLeaf: SpokePoolInterface.RelayerRefundLeafStruct, proof: BytesLike[], overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        executeSlowRelayLeaf(slowFillLeaf: V3SpokePoolInterface.V3SlowFillStruct, rootBundleId: BigNumberish, proof: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        fillRelay(relayData: V3SpokePoolInterface.V3RelayDataStruct, repaymentChainId: BigNumberish, repaymentAddress: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        fillRelayWithUpdatedDeposit(relayData: V3SpokePoolInterface.V3RelayDataStruct, repaymentChainId: BigNumberish, repaymentAddress: BytesLike, updatedOutputAmount: BigNumberish, updatedRecipient: BytesLike, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        fillV3Relay(relayData: V3SpokePoolInterface.V3RelayDataLegacyStruct, repaymentChainId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getUnsafeDepositId(msgSender: string, depositor: BytesLike, depositNonce: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        numberOfDeposits(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pauseDeposits(pause: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        pauseFills(pause: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        relayRootBundle(relayerRefundRoot: BytesLike, slowRelayRoot: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        requestSlowFill(relayData: V3SpokePoolInterface.V3RelayDataStruct, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setCrossDomainAdmin(newCrossDomainAdmin: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setWithdrawalRecipient(newWithdrawalRecipient: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        speedUpDeposit(depositor: BytesLike, depositId: BigNumberish, updatedOutputAmount: BigNumberish, updatedRecipient: BytesLike, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        speedUpV3Deposit(depositor: string, depositId: BigNumberish, updatedOutputAmount: BigNumberish, updatedRecipient: string, updatedMessage: BytesLike, depositorSignature: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        unsafeDeposit(depositor: BytesLike, recipient: BytesLike, inputToken: BytesLike, outputToken: BytesLike, inputAmount: BigNumberish, outputAmount: BigNumberish, destinationChainId: BigNumberish, exclusiveRelayer: BytesLike, depositNonce: BigNumberish, quoteTimestamp: BigNumberish, fillDeadline: BigNumberish, exclusivityParameter: BigNumberish, message: BytesLike, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}
