import * as _tanstack_react_query from '@tanstack/react-query';
import { EscrowRequestResponse, InitializeSingleReleaseEscrowPayload, InitializeMultiReleaseEscrowPayload, EscrowType, SendTransactionResponse, InitializeSingleReleaseEscrowResponse, InitializeMultiReleaseEscrowResponse, SingleReleaseEscrow, MultiReleaseEscrow, GetEscrowParams, UpdateSingleReleaseEscrowPayload, UpdateMultiReleaseEscrowPayload, SingleReleaseStartDisputePayload, MultiReleaseStartDisputePayload, SingleReleaseResolveDisputePayload, MultiReleaseResolveDisputePayload, GetEscrowBalancesResponse, GetBalanceParams, SingleReleaseReleaseFundsPayload, MultiReleaseReleaseFundsPayload, FundEscrowPayload, ChangeMilestoneStatusPayload, ApproveMilestonePayload } from '../types/index.mjs';

/**
 * Use the useInitializeEscrow hook to initialize an escrow.
 * @returns A mutation function to initialize an escrow.
 */
declare function useInitializeEscrow(): {
    deployEscrow: _tanstack_react_query.UseMutateAsyncFunction<EscrowRequestResponse, Error, {
        payload: InitializeSingleReleaseEscrowPayload | InitializeMultiReleaseEscrowPayload;
        type: EscrowType;
    }, unknown>;
    isPending: boolean;
    isError: boolean;
    isSuccess: boolean;
    unsignedTransaction: string | undefined;
};

/**
 * Use the useSendTransaction hook to send a transaction by signing it with the user's private key.
 * @returns A mutation function to send a transaction.
 */
declare function useSendTransaction(): {
    sendTransaction: _tanstack_react_query.UseMutateAsyncFunction<SendTransactionResponse | InitializeSingleReleaseEscrowResponse | InitializeMultiReleaseEscrowResponse, Error, string, unknown>;
    isPending: boolean;
    isError: boolean;
    isSuccess: boolean;
};

/**
 * Use the useGetEscrow hook to get an escrow.
 * @returns A mutation function to get an escrow.
 */
declare function useGetEscrow(): {
    getEscrow: _tanstack_react_query.UseMutateAsyncFunction<SingleReleaseEscrow | MultiReleaseEscrow, Error, {
        payload: GetEscrowParams;
        type: EscrowType;
    }, unknown>;
    isPending: boolean;
    isError: boolean;
    isSuccess: boolean;
    escrow: SingleReleaseEscrow | MultiReleaseEscrow | undefined;
};

/**
 * Use the useUpdateEscrow hook to update an escrow.
 * @returns A mutation function to update an escrow.
 */
declare function useUpdateEscrow(): {
    updateEscrow: _tanstack_react_query.UseMutateAsyncFunction<EscrowRequestResponse, Error, {
        payload: UpdateSingleReleaseEscrowPayload | UpdateMultiReleaseEscrowPayload;
        type: EscrowType;
    }, unknown>;
    isPending: boolean;
    isError: boolean;
    isSuccess: boolean;
    unsignedTransaction: string | undefined;
};

/**
 * Use the useStartDispute hook to start a dispute.
 * @returns A mutation function to start a dispute.
 */
declare function useStartDispute(): {
    startDispute: _tanstack_react_query.UseMutateAsyncFunction<EscrowRequestResponse, Error, {
        payload: SingleReleaseStartDisputePayload | MultiReleaseStartDisputePayload;
        type: EscrowType;
    }, unknown>;
    isPending: boolean;
    isError: boolean;
    isSuccess: boolean;
    unsignedTransaction: string | undefined;
};

/**
 * Use the useResolveDispute hook to resolve a dispute.
 * @returns A mutation function to resolve a dispute.
 */
declare function useResolveDispute(): {
    resolveDispute: _tanstack_react_query.UseMutateAsyncFunction<EscrowRequestResponse, Error, {
        payload: SingleReleaseResolveDisputePayload | MultiReleaseResolveDisputePayload;
        type: EscrowType;
    }, unknown>;
    isPending: boolean;
    isError: boolean;
    isSuccess: boolean;
    unsignedTransaction: string | undefined;
};

/**
 * Use the useGetMultipleEscrowBalances hook to get multiple escrow balances.
 * @returns A mutation function to get multiple escrow balances.
 */
declare function useGetMultipleEscrowBalances(): {
    getMultipleBalances: _tanstack_react_query.UseMutateAsyncFunction<GetEscrowBalancesResponse[], Error, {
        payload: GetBalanceParams;
        type: EscrowType;
    }, unknown>;
    isPending: boolean;
    isError: boolean;
    isSuccess: boolean;
    balances: GetEscrowBalancesResponse[] | undefined;
};

/**
 * Use the useReleaseFunds hook to release funds from an escrow.
 * @returns A mutation function to release funds from an escrow.
 */
declare function useReleaseFunds(): {
    releaseFunds: _tanstack_react_query.UseMutateAsyncFunction<EscrowRequestResponse, Error, {
        payload: SingleReleaseReleaseFundsPayload | MultiReleaseReleaseFundsPayload;
        type: EscrowType;
    }, unknown>;
    isPending: boolean;
    isError: boolean;
    isSuccess: boolean;
    unsignedTransaction: string | undefined;
};

/**
 * Use the useFundEscrow hook to fund an escrow.
 * @returns A mutation function to fund an escrow.
 */
declare function useFundEscrow(): {
    fundEscrow: _tanstack_react_query.UseMutateAsyncFunction<EscrowRequestResponse, Error, {
        payload: FundEscrowPayload;
        type: EscrowType;
    }, unknown>;
    isPending: boolean;
    isError: boolean;
    isSuccess: boolean;
    unsignedTransaction: string | undefined;
};

/**
 * Use the useChangeMilestoneStatus hook to change the status of a milestone.
 * @returns A mutation function to change the status of a milestone.
 */
declare function useChangeMilestoneStatus(): {
    changeMilestoneStatus: _tanstack_react_query.UseMutateAsyncFunction<EscrowRequestResponse, Error, {
        payload: ChangeMilestoneStatusPayload;
        type: EscrowType;
    }, unknown>;
    isPending: boolean;
    isError: boolean;
    isSuccess: boolean;
    unsignedTransaction: string | undefined;
};

/**
 * Use the useApproveMilestone hook to change the approved flag of a milestone.
 * @returns A mutation function to change the approved flag of a milestone.
 */
declare function useApproveMilestone(): {
    approveMilestone: _tanstack_react_query.UseMutateAsyncFunction<EscrowRequestResponse, Error, {
        payload: ApproveMilestonePayload;
        type: EscrowType;
    }, unknown>;
    isPending: boolean;
    isError: boolean;
    isSuccess: boolean;
    unsignedTransaction: string | undefined;
};

export { useApproveMilestone, useChangeMilestoneStatus, useFundEscrow, useGetEscrow, useGetMultipleEscrowBalances, useInitializeEscrow, useReleaseFunds, useResolveDispute, useSendTransaction, useStartDispute, useUpdateEscrow };
