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 IPaymentsEscrowInterface extends Interface {
    getFunction(nameOrSignature: "MAX_WAIT_PERIOD" | "WITHDRAW_ESCROW_THAWING_PERIOD" | "cancelThaw" | "collect" | "deposit" | "depositTo" | "getBalance" | "initialize" | "thaw" | "withdraw"): FunctionFragment;
    getEvent(nameOrSignatureOrTopic: "CancelThaw" | "Deposit" | "EscrowCollected" | "Thaw" | "Withdraw"): EventFragment;
    encodeFunctionData(functionFragment: "MAX_WAIT_PERIOD", values?: undefined): string;
    encodeFunctionData(functionFragment: "WITHDRAW_ESCROW_THAWING_PERIOD", values?: undefined): string;
    encodeFunctionData(functionFragment: "cancelThaw", values: [AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "collect", values: [
        BigNumberish,
        AddressLike,
        AddressLike,
        BigNumberish,
        AddressLike,
        BigNumberish,
        AddressLike
    ]): string;
    encodeFunctionData(functionFragment: "deposit", values: [AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "depositTo", values: [AddressLike, AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getBalance", values: [AddressLike, AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "initialize", values?: undefined): string;
    encodeFunctionData(functionFragment: "thaw", values: [AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "withdraw", values: [AddressLike, AddressLike]): string;
    decodeFunctionResult(functionFragment: "MAX_WAIT_PERIOD", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "WITHDRAW_ESCROW_THAWING_PERIOD", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "cancelThaw", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "collect", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "depositTo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "thaw", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;
}
export declare namespace CancelThawEvent {
    type InputTuple = [
        payer: AddressLike,
        collector: AddressLike,
        receiver: AddressLike,
        tokensThawing: BigNumberish,
        thawEndTimestamp: BigNumberish
    ];
    type OutputTuple = [
        payer: string,
        collector: string,
        receiver: string,
        tokensThawing: bigint,
        thawEndTimestamp: bigint
    ];
    interface OutputObject {
        payer: string;
        collector: string;
        receiver: string;
        tokensThawing: bigint;
        thawEndTimestamp: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace DepositEvent {
    type InputTuple = [
        payer: AddressLike,
        collector: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        payer: string,
        collector: string,
        receiver: string,
        tokens: bigint
    ];
    interface OutputObject {
        payer: string;
        collector: string;
        receiver: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace EscrowCollectedEvent {
    type InputTuple = [
        paymentType: BigNumberish,
        payer: AddressLike,
        collector: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish,
        receiverDestination: AddressLike
    ];
    type OutputTuple = [
        paymentType: bigint,
        payer: string,
        collector: string,
        receiver: string,
        tokens: bigint,
        receiverDestination: string
    ];
    interface OutputObject {
        paymentType: bigint;
        payer: string;
        collector: string;
        receiver: string;
        tokens: bigint;
        receiverDestination: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ThawEvent {
    type InputTuple = [
        payer: AddressLike,
        collector: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish,
        thawEndTimestamp: BigNumberish
    ];
    type OutputTuple = [
        payer: string,
        collector: string,
        receiver: string,
        tokens: bigint,
        thawEndTimestamp: bigint
    ];
    interface OutputObject {
        payer: string;
        collector: string;
        receiver: string;
        tokens: bigint;
        thawEndTimestamp: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace WithdrawEvent {
    type InputTuple = [
        payer: AddressLike,
        collector: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        payer: string,
        collector: string,
        receiver: string,
        tokens: bigint
    ];
    interface OutputObject {
        payer: string;
        collector: string;
        receiver: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export interface IPaymentsEscrow extends BaseContract {
    connect(runner?: ContractRunner | null): IPaymentsEscrow;
    waitForDeployment(): Promise<this>;
    interface: IPaymentsEscrowInterface;
    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>;
    MAX_WAIT_PERIOD: TypedContractMethod<[], [bigint], "view">;
    WITHDRAW_ESCROW_THAWING_PERIOD: TypedContractMethod<[], [bigint], "view">;
    cancelThaw: TypedContractMethod<[
        collector: AddressLike,
        receiver: AddressLike
    ], [
        void
    ], "nonpayable">;
    collect: TypedContractMethod<[
        paymentType: BigNumberish,
        payer: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish,
        dataService: AddressLike,
        dataServiceCut: BigNumberish,
        receiverDestination: AddressLike
    ], [
        void
    ], "nonpayable">;
    deposit: TypedContractMethod<[
        collector: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    depositTo: TypedContractMethod<[
        payer: AddressLike,
        collector: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getBalance: TypedContractMethod<[
        payer: AddressLike,
        collector: AddressLike,
        receiver: AddressLike
    ], [
        bigint
    ], "view">;
    initialize: TypedContractMethod<[], [void], "nonpayable">;
    thaw: TypedContractMethod<[
        collector: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    withdraw: TypedContractMethod<[
        collector: AddressLike,
        receiver: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "MAX_WAIT_PERIOD"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "WITHDRAW_ESCROW_THAWING_PERIOD"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "cancelThaw"): TypedContractMethod<[
        collector: AddressLike,
        receiver: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "collect"): TypedContractMethod<[
        paymentType: BigNumberish,
        payer: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish,
        dataService: AddressLike,
        dataServiceCut: BigNumberish,
        receiverDestination: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "deposit"): TypedContractMethod<[
        collector: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "depositTo"): TypedContractMethod<[
        payer: AddressLike,
        collector: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "getBalance"): TypedContractMethod<[
        payer: AddressLike,
        collector: AddressLike,
        receiver: AddressLike
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "initialize"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "thaw"): TypedContractMethod<[
        collector: AddressLike,
        receiver: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "withdraw"): TypedContractMethod<[
        collector: AddressLike,
        receiver: AddressLike
    ], [
        void
    ], "nonpayable">;
    getEvent(key: "CancelThaw"): TypedContractEvent<CancelThawEvent.InputTuple, CancelThawEvent.OutputTuple, CancelThawEvent.OutputObject>;
    getEvent(key: "Deposit"): TypedContractEvent<DepositEvent.InputTuple, DepositEvent.OutputTuple, DepositEvent.OutputObject>;
    getEvent(key: "EscrowCollected"): TypedContractEvent<EscrowCollectedEvent.InputTuple, EscrowCollectedEvent.OutputTuple, EscrowCollectedEvent.OutputObject>;
    getEvent(key: "Thaw"): TypedContractEvent<ThawEvent.InputTuple, ThawEvent.OutputTuple, ThawEvent.OutputObject>;
    getEvent(key: "Withdraw"): TypedContractEvent<WithdrawEvent.InputTuple, WithdrawEvent.OutputTuple, WithdrawEvent.OutputObject>;
    filters: {
        "CancelThaw(address,address,address,uint256,uint256)": TypedContractEvent<CancelThawEvent.InputTuple, CancelThawEvent.OutputTuple, CancelThawEvent.OutputObject>;
        CancelThaw: TypedContractEvent<CancelThawEvent.InputTuple, CancelThawEvent.OutputTuple, CancelThawEvent.OutputObject>;
        "Deposit(address,address,address,uint256)": TypedContractEvent<DepositEvent.InputTuple, DepositEvent.OutputTuple, DepositEvent.OutputObject>;
        Deposit: TypedContractEvent<DepositEvent.InputTuple, DepositEvent.OutputTuple, DepositEvent.OutputObject>;
        "EscrowCollected(uint8,address,address,address,uint256,address)": TypedContractEvent<EscrowCollectedEvent.InputTuple, EscrowCollectedEvent.OutputTuple, EscrowCollectedEvent.OutputObject>;
        EscrowCollected: TypedContractEvent<EscrowCollectedEvent.InputTuple, EscrowCollectedEvent.OutputTuple, EscrowCollectedEvent.OutputObject>;
        "Thaw(address,address,address,uint256,uint256)": TypedContractEvent<ThawEvent.InputTuple, ThawEvent.OutputTuple, ThawEvent.OutputObject>;
        Thaw: TypedContractEvent<ThawEvent.InputTuple, ThawEvent.OutputTuple, ThawEvent.OutputObject>;
        "Withdraw(address,address,address,uint256)": TypedContractEvent<WithdrawEvent.InputTuple, WithdrawEvent.OutputTuple, WithdrawEvent.OutputObject>;
        Withdraw: TypedContractEvent<WithdrawEvent.InputTuple, WithdrawEvent.OutputTuple, WithdrawEvent.OutputObject>;
    };
}
//# sourceMappingURL=IPaymentsEscrow.d.ts.map