import type { FetcherWithComponents, SubmitFunction, SubmitOptions } from "react-router";
import { useFetcher } from "react-router";
type SubmitTarget = Parameters<SubmitFunction>["0"];
/**
 * Submits a HTML `<form>` to the server without reloading the page.
 */
type DebounceSubmitFunction = (
/**
 * Specifies the `<form>` to be submitted to the server, a specific
 * `<button>` or `<input type="submit">` to use to submit the form, or some
 * arbitrary data to submit.
 *
 * Note: When using a `<button>` its `name` and `value` will also be
 * included in the form data that is submitted.
 */
target: SubmitTarget, 
/**
 * Options that override the `<form>`'s own attributes. Required when
 * submitting arbitrary data without a backing `<form>`. Additionally, you
 * can specify a `debounceTimeout` to delay the submission of the data.
 */
options?: SubmitOptions & {
    debounceTimeout?: number;
}) => void;
type DebouncedFetcher<Data = unknown> = Omit<FetcherWithComponents<Data>, "submit"> & {
    submit: DebounceSubmitFunction;
};
export declare function useDebounceFetcher<Data>(opts?: Parameters<typeof useFetcher>[0]): DebouncedFetcher<Data>;
export {};
