import { FieldValues } from "react-hook-form";
import type { CreateConfig, CreatePropsDefinition, Field, RenderField, RenderFields, UseFormParameters } from "./types";
export declare function create<T extends CreatePropsDefinition>(config: CreateConfig<T>): <TFieldValues extends FieldValues = FieldValues>(parameters?: UseFormParameters<T, TFieldValues>) => {
    methods: import("react-hook-form").UseFormReturn<TFieldValues, any, undefined>;
    renderField: RenderField<T["fieldProps"], TFieldValues>;
    renderFields: RenderFields<T["fieldProps"], TFieldValues>;
    getField: (name: string) => Field<T["fieldProps"], TFieldValues> | undefined;
    memoize: <T_1>(callback: T_1 | (() => T_1), dependencies: [key: any, ...deps: any[]]) => T_1;
    memoizeCallback: <T_2 extends () => any>(callback: T_2, dependencies: [key: any, ...deps: any[]]) => T_2;
    control: {
        readonly errorsControl: (((parameters: import("./types").ErrorsControlParameters<T["fieldProps"]>) => string | boolean | void | undefined) | ((parameters: import("./types").ErrorsControlParameters<T["fieldProps"]>) => Promise<string | boolean | void | undefined>))[] | undefined;
        readonly fieldsRegistered: Map<string, Field<T["fieldProps"], TFieldValues>>;
        readonly fieldsInputedCalled: Set<string>;
        readonly debounceSubmitDefinitions: {
            debounceRegistry: {
                registeredAt: number;
                time: number;
            };
            set(time: number): void;
            getRemainingTime(): number;
            isActiveDebounce(): boolean;
        };
        readonly parameters: UseFormParameters<T, TFieldValues> | undefined;
        readonly config: CreateConfig<T>;
    };
};
export type Create = typeof create;
export type UseForm = ReturnType<Create>;
export type UseReturn = ReturnType<UseForm>;
//# sourceMappingURL=create.d.ts.map