import { type UseMutationOptions, type UseMutationResult } from "@tanstack/react-query";
import type { BaseRecord, CreateResponse, HttpError, MetaQuery, Prettify } from "../../contexts/data/types";
import type { SuccessErrorNotification } from "../../contexts/notification/types";
import { type UseLoadingOvertimeOptionsProps, type UseLoadingOvertimeReturnType } from "../useLoadingOvertime";
interface UseCustomMutationConfig {
    headers?: {};
}
type useCustomMutationParams<TData, TError, TVariables> = {
    url: string;
    method: "post" | "put" | "patch" | "delete";
    values: TVariables;
    /**
     * Meta data for `dataProvider`
     */
    meta?: MetaQuery;
    /**
     * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.
     */
    dataProviderName?: string;
    config?: UseCustomMutationConfig;
} & SuccessErrorNotification<CreateResponse<TData>, TError, Prettify<UseCustomMutationConfig & MetaQuery>>;
export type UseCustomMutationReturnType<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables = {}> = {
    mutation: UseMutationResult<CreateResponse<TData>, TError, useCustomMutationParams<TData, TError, TVariables>, unknown>;
    mutate: UseMutationResult<CreateResponse<TData>, TError, useCustomMutationParams<TData, TError, TVariables>, unknown>["mutate"];
    mutateAsync: UseMutationResult<CreateResponse<TData>, TError, useCustomMutationParams<TData, TError, TVariables>, unknown>["mutateAsync"];
} & UseLoadingOvertimeReturnType;
export type UseCustomMutationOptions<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables = {}> = UseMutationOptions<CreateResponse<TData>, TError, useCustomMutationParams<TData, TError, TVariables>, unknown>;
export type UseCustomMutationProps<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables = {}> = {
    mutationOptions?: UseCustomMutationOptions<TData, TError, TVariables>;
} & UseLoadingOvertimeOptionsProps;
/**
 * `useCustomMutation` is a modified version of `react-query`'s {@link https://tanstack.com/query/v5/docs/framework/react/reference/useMutation `useMutation`} for create mutations.
 *
 * It uses the `custom` method from the `dataProvider` which is passed to `<Refine>`.
 *
 * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCustomMutation} for more details.
 *
 * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}
 * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}
 * @typeParam TVariables - Values for mutation function
 *
 */
export declare const useCustomMutation: <TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TVariables = {}>({ mutationOptions, overtimeOptions, }?: UseCustomMutationProps<TData, TError, TVariables>) => UseCustomMutationReturnType<TData, TError, TVariables> & UseLoadingOvertimeReturnType;
export {};
//# sourceMappingURL=useCustomMutation.d.ts.map