import { ReactNode } from "react";
import { z, ZodEffects, ZodObject, ZodRawShape } from "zod";
type InputValue = string | string[] | number | null;
type FormProviderProps = {
    children: ReactNode;
};
export declare function FormProvider({ children }: FormProviderProps): import("react/jsx-runtime").JSX.Element;
type UnwrapZodSchema<T> = T extends ZodEffects<infer U> ? UnwrapZodSchema<U> : T;
type InferZodSchema<T> = T extends ZodObject<ZodRawShape> ? z.infer<T> : never;
export declare function useForm<Schema extends ZodObject<ZodRawShape> | ZodEffects<ZodObject<ZodRawShape>> | undefined, DefaultValues = Schema extends undefined ? Record<string, unknown> : InferZodSchema<UnwrapZodSchema<Schema>>>(props?: {
    schema?: Schema;
    defaultValues?: DefaultValues;
    errors?: Partial<Record<keyof DefaultValues, string>>;
    mode?: "controlled" | "uncontrolled";
}): {
    formValues: DefaultValues;
    formErrors: {};
    updateValue: () => void;
    validateField: () => Promise<void>;
} | {
    formValues: InferZodSchema<UnwrapZodSchema<Schema>> | DefaultValues;
    formErrors: Partial<Record<keyof InferZodSchema<UnwrapZodSchema<Schema>>, string>>;
    updateValue: (name: string | undefined, value: any) => void;
    validateField: (name: string | undefined, value: InputValue) => Promise<void>;
};
export {};
