import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common";
export type SendParamStruct = {
    dstEid: BigNumberish;
    to: BytesLike;
    amountLD: BigNumberish;
    minAmountLD: BigNumberish;
    extraOptions: BytesLike;
    composeMsg: BytesLike;
    oftCmd: BytesLike;
};
export type SendParamStructOutput = [
    number,
    string,
    BigNumber,
    BigNumber,
    string,
    string,
    string
] & {
    dstEid: number;
    to: string;
    amountLD: BigNumber;
    minAmountLD: BigNumber;
    extraOptions: string;
    composeMsg: string;
    oftCmd: string;
};
export type MessagingFeeStruct = {
    nativeFee: BigNumberish;
    lzTokenFee: BigNumberish;
};
export type MessagingFeeStructOutput = [BigNumber, BigNumber] & {
    nativeFee: BigNumber;
    lzTokenFee: BigNumber;
};
export type MessagingReceiptStruct = {
    guid: BytesLike;
    nonce: BigNumberish;
    fee: MessagingFeeStruct;
};
export type MessagingReceiptStructOutput = [
    string,
    BigNumber,
    MessagingFeeStructOutput
] & {
    guid: string;
    nonce: BigNumber;
    fee: MessagingFeeStructOutput;
};
export type OFTReceiptStruct = {
    amountSentLD: BigNumberish;
    amountReceivedLD: BigNumberish;
};
export type OFTReceiptStructOutput = [BigNumber, BigNumber] & {
    amountSentLD: BigNumber;
    amountReceivedLD: BigNumber;
};
export interface MockOFTMessengerInterface extends utils.Interface {
    functions: {
        "amountReceivedLDToReturn()": FunctionFragment;
        "amountSentLDToReturn()": FunctionFragment;
        "endpoint()": FunctionFragment;
        "endpoint_()": FunctionFragment;
        "lastFee()": FunctionFragment;
        "lastMsgValue()": FunctionFragment;
        "lastRefundAddress()": FunctionFragment;
        "lastSendParam()": FunctionFragment;
        "lzFee()": FunctionFragment;
        "nativeFee()": FunctionFragment;
        "quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)": FunctionFragment;
        "resetReceipt()": FunctionFragment;
        "send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)": FunctionFragment;
        "sendCallCount()": FunctionFragment;
        "setEndpoint(address)": FunctionFragment;
        "setFeesToReturn(uint256,uint256)": FunctionFragment;
        "setLDAmountsToReturn(uint256,uint256)": FunctionFragment;
        "token()": FunctionFragment;
        "useCustomReceipt()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "amountReceivedLDToReturn" | "amountSentLDToReturn" | "endpoint" | "endpoint_" | "lastFee" | "lastMsgValue" | "lastRefundAddress" | "lastSendParam" | "lzFee" | "nativeFee" | "quoteSend" | "resetReceipt" | "send" | "sendCallCount" | "setEndpoint" | "setFeesToReturn" | "setLDAmountsToReturn" | "token" | "useCustomReceipt"): FunctionFragment;
    encodeFunctionData(functionFragment: "amountReceivedLDToReturn", values?: undefined): string;
    encodeFunctionData(functionFragment: "amountSentLDToReturn", values?: undefined): string;
    encodeFunctionData(functionFragment: "endpoint", values?: undefined): string;
    encodeFunctionData(functionFragment: "endpoint_", values?: undefined): string;
    encodeFunctionData(functionFragment: "lastFee", values?: undefined): string;
    encodeFunctionData(functionFragment: "lastMsgValue", values?: undefined): string;
    encodeFunctionData(functionFragment: "lastRefundAddress", values?: undefined): string;
    encodeFunctionData(functionFragment: "lastSendParam", values?: undefined): string;
    encodeFunctionData(functionFragment: "lzFee", values?: undefined): string;
    encodeFunctionData(functionFragment: "nativeFee", values?: undefined): string;
    encodeFunctionData(functionFragment: "quoteSend", values: [SendParamStruct, boolean]): string;
    encodeFunctionData(functionFragment: "resetReceipt", values?: undefined): string;
    encodeFunctionData(functionFragment: "send", values: [SendParamStruct, MessagingFeeStruct, string]): string;
    encodeFunctionData(functionFragment: "sendCallCount", values?: undefined): string;
    encodeFunctionData(functionFragment: "setEndpoint", values: [string]): string;
    encodeFunctionData(functionFragment: "setFeesToReturn", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "setLDAmountsToReturn", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "token", values?: undefined): string;
    encodeFunctionData(functionFragment: "useCustomReceipt", values?: undefined): string;
    decodeFunctionResult(functionFragment: "amountReceivedLDToReturn", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "amountSentLDToReturn", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "endpoint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "endpoint_", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lastFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lastMsgValue", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lastRefundAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lastSendParam", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "lzFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "nativeFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "quoteSend", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "resetReceipt", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "send", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sendCallCount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setEndpoint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setFeesToReturn", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setLDAmountsToReturn", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "token", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "useCustomReceipt", data: BytesLike): Result;
    events: {};
}
export interface MockOFTMessenger extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: MockOFTMessengerInterface;
    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: {
        amountReceivedLDToReturn(overrides?: CallOverrides): Promise<[BigNumber]>;
        amountSentLDToReturn(overrides?: CallOverrides): Promise<[BigNumber]>;
        endpoint(overrides?: CallOverrides): Promise<[string] & {
            iEndpoint: string;
        }>;
        endpoint_(overrides?: CallOverrides): Promise<[string]>;
        lastFee(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            nativeFee: BigNumber;
            lzTokenFee: BigNumber;
        }>;
        lastMsgValue(overrides?: CallOverrides): Promise<[BigNumber]>;
        lastRefundAddress(overrides?: CallOverrides): Promise<[string]>;
        lastSendParam(overrides?: CallOverrides): Promise<[
            number,
            string,
            BigNumber,
            BigNumber,
            string,
            string,
            string
        ] & {
            dstEid: number;
            to: string;
            amountLD: BigNumber;
            minAmountLD: BigNumber;
            extraOptions: string;
            composeMsg: string;
            oftCmd: string;
        }>;
        lzFee(overrides?: CallOverrides): Promise<[BigNumber]>;
        nativeFee(overrides?: CallOverrides): Promise<[BigNumber]>;
        quoteSend(arg0: SendParamStruct, arg1: boolean, overrides?: CallOverrides): Promise<[MessagingFeeStructOutput]>;
        resetReceipt(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        send(_sendParam: SendParamStruct, _fee: MessagingFeeStruct, _refundAddress: string, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        sendCallCount(overrides?: CallOverrides): Promise<[BigNumber]>;
        setEndpoint(endpointAddr: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        setFeesToReturn(_nativeFee: BigNumberish, _lzFee: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        setLDAmountsToReturn(_amountSentLD: BigNumberish, _amountReceivedLD: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        token(overrides?: CallOverrides): Promise<[string]>;
        useCustomReceipt(overrides?: CallOverrides): Promise<[boolean]>;
    };
    amountReceivedLDToReturn(overrides?: CallOverrides): Promise<BigNumber>;
    amountSentLDToReturn(overrides?: CallOverrides): Promise<BigNumber>;
    endpoint(overrides?: CallOverrides): Promise<string>;
    endpoint_(overrides?: CallOverrides): Promise<string>;
    lastFee(overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        nativeFee: BigNumber;
        lzTokenFee: BigNumber;
    }>;
    lastMsgValue(overrides?: CallOverrides): Promise<BigNumber>;
    lastRefundAddress(overrides?: CallOverrides): Promise<string>;
    lastSendParam(overrides?: CallOverrides): Promise<[
        number,
        string,
        BigNumber,
        BigNumber,
        string,
        string,
        string
    ] & {
        dstEid: number;
        to: string;
        amountLD: BigNumber;
        minAmountLD: BigNumber;
        extraOptions: string;
        composeMsg: string;
        oftCmd: string;
    }>;
    lzFee(overrides?: CallOverrides): Promise<BigNumber>;
    nativeFee(overrides?: CallOverrides): Promise<BigNumber>;
    quoteSend(arg0: SendParamStruct, arg1: boolean, overrides?: CallOverrides): Promise<MessagingFeeStructOutput>;
    resetReceipt(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    send(_sendParam: SendParamStruct, _fee: MessagingFeeStruct, _refundAddress: string, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    sendCallCount(overrides?: CallOverrides): Promise<BigNumber>;
    setEndpoint(endpointAddr: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    setFeesToReturn(_nativeFee: BigNumberish, _lzFee: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    setLDAmountsToReturn(_amountSentLD: BigNumberish, _amountReceivedLD: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    token(overrides?: CallOverrides): Promise<string>;
    useCustomReceipt(overrides?: CallOverrides): Promise<boolean>;
    callStatic: {
        amountReceivedLDToReturn(overrides?: CallOverrides): Promise<BigNumber>;
        amountSentLDToReturn(overrides?: CallOverrides): Promise<BigNumber>;
        endpoint(overrides?: CallOverrides): Promise<string>;
        endpoint_(overrides?: CallOverrides): Promise<string>;
        lastFee(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            nativeFee: BigNumber;
            lzTokenFee: BigNumber;
        }>;
        lastMsgValue(overrides?: CallOverrides): Promise<BigNumber>;
        lastRefundAddress(overrides?: CallOverrides): Promise<string>;
        lastSendParam(overrides?: CallOverrides): Promise<[
            number,
            string,
            BigNumber,
            BigNumber,
            string,
            string,
            string
        ] & {
            dstEid: number;
            to: string;
            amountLD: BigNumber;
            minAmountLD: BigNumber;
            extraOptions: string;
            composeMsg: string;
            oftCmd: string;
        }>;
        lzFee(overrides?: CallOverrides): Promise<BigNumber>;
        nativeFee(overrides?: CallOverrides): Promise<BigNumber>;
        quoteSend(arg0: SendParamStruct, arg1: boolean, overrides?: CallOverrides): Promise<MessagingFeeStructOutput>;
        resetReceipt(overrides?: CallOverrides): Promise<void>;
        send(_sendParam: SendParamStruct, _fee: MessagingFeeStruct, _refundAddress: string, overrides?: CallOverrides): Promise<[MessagingReceiptStructOutput, OFTReceiptStructOutput]>;
        sendCallCount(overrides?: CallOverrides): Promise<BigNumber>;
        setEndpoint(endpointAddr: string, overrides?: CallOverrides): Promise<void>;
        setFeesToReturn(_nativeFee: BigNumberish, _lzFee: BigNumberish, overrides?: CallOverrides): Promise<void>;
        setLDAmountsToReturn(_amountSentLD: BigNumberish, _amountReceivedLD: BigNumberish, overrides?: CallOverrides): Promise<void>;
        token(overrides?: CallOverrides): Promise<string>;
        useCustomReceipt(overrides?: CallOverrides): Promise<boolean>;
    };
    filters: {};
    estimateGas: {
        amountReceivedLDToReturn(overrides?: CallOverrides): Promise<BigNumber>;
        amountSentLDToReturn(overrides?: CallOverrides): Promise<BigNumber>;
        endpoint(overrides?: CallOverrides): Promise<BigNumber>;
        endpoint_(overrides?: CallOverrides): Promise<BigNumber>;
        lastFee(overrides?: CallOverrides): Promise<BigNumber>;
        lastMsgValue(overrides?: CallOverrides): Promise<BigNumber>;
        lastRefundAddress(overrides?: CallOverrides): Promise<BigNumber>;
        lastSendParam(overrides?: CallOverrides): Promise<BigNumber>;
        lzFee(overrides?: CallOverrides): Promise<BigNumber>;
        nativeFee(overrides?: CallOverrides): Promise<BigNumber>;
        quoteSend(arg0: SendParamStruct, arg1: boolean, overrides?: CallOverrides): Promise<BigNumber>;
        resetReceipt(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        send(_sendParam: SendParamStruct, _fee: MessagingFeeStruct, _refundAddress: string, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        sendCallCount(overrides?: CallOverrides): Promise<BigNumber>;
        setEndpoint(endpointAddr: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        setFeesToReturn(_nativeFee: BigNumberish, _lzFee: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        setLDAmountsToReturn(_amountSentLD: BigNumberish, _amountReceivedLD: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        token(overrides?: CallOverrides): Promise<BigNumber>;
        useCustomReceipt(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        amountReceivedLDToReturn(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        amountSentLDToReturn(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        endpoint(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        endpoint_(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lastFee(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lastMsgValue(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lastRefundAddress(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lastSendParam(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lzFee(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        nativeFee(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        quoteSend(arg0: SendParamStruct, arg1: boolean, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        resetReceipt(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        send(_sendParam: SendParamStruct, _fee: MessagingFeeStruct, _refundAddress: string, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        sendCallCount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setEndpoint(endpointAddr: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setFeesToReturn(_nativeFee: BigNumberish, _lzFee: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setLDAmountsToReturn(_amountSentLD: BigNumberish, _amountReceivedLD: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        token(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        useCustomReceipt(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
