import { FormEvent, ChangeEvent } from 'react';

interface RegisteredFieldProps {
    name: string;
    value?: string | number | readonly string[] | undefined;
    onChange: (event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => void;
}
interface FileInputProps {
    name: string;
    onChange: (event: ChangeEvent<HTMLInputElement>) => void;
}
/**
 * Hook personalizado para manejo de formularios controlados.
 * @template T - Tipo de los valores del formulario.
 * @param initialValues - Valores iniciales del formulario.
 * @param onSubmitCallback - Función a ejecutar al enviar el formulario.
 * @returns Métodos y valores para manejar el formulario.
*/
declare function useFormLite<T extends Record<string, any>>(initialValues: T, onSubmitCallback: (values: T) => void): {
    values: T;
    handleSubmit: (event: FormEvent<HTMLFormElement>) => void;
    resetForm: () => void;
    register: (fieldName: string) => RegisteredFieldProps;
    registerFile: (fieldName: string) => FileInputProps;
    getEmptyFields: () => Record<string, string>;
};

export { useFormLite };
