declare type ValidationParams<Value, Data> = {
    [key: string]: {
        validator: (value: Value, formState: FormState<Data>) => boolean;
        message?: string;
    };
};
declare type FormFieldParams<Data> = {
    [Key in keyof Data]: {
        defaultValue: Data[Key];
        required?: {
            message: string;
        };
        validation?: ValidationParams<Data[Key], Data>;
        label?: string;
        helperText?: string;
    };
};
declare type FormStateOptions = {
    errorUpdateDelayInSeconds?: number;
};
declare type FormState<Data> = {
    [Key in keyof Data]: FormFieldState<Data[Key]>;
};
declare type FormFieldState<Value = any> = {
    label: string;
    value: Value;
    isValid: boolean;
    isInteracted: boolean;
    isRequired: boolean;
    helperText?: string;
    error?: {
        type?: string;
        message?: string;
    };
};
declare const useFormState: <Data>(formFieldParams: FormFieldParams<Data>, options?: FormStateOptions) => {
    state: FormState<Data>;
    set: <Key extends keyof Data>(key: Key, value: Data[Key], setInteracted?: boolean) => void;
    update: <Key_1 extends keyof Data>(data: Partial<Data>, setInteracted?: boolean) => void;
    checkIfAllValid: (options?: {
        updateErrorType?: boolean | undefined;
    } | undefined) => boolean;
    extractStateValue: <F extends "object" | "formdata">({ format }: {
        format: F;
    }) => {
        object: Data;
        formdata: FormData;
    }[F];
    reset: () => void;
};
export { useFormState, FormFieldParams, FormState, FormFieldState, FormStateOptions };
