import React from 'react';

type FieldValue = string | string[];
type FieldRef = {
    validate?: () => boolean;
    getValue: () => FieldValue;
    reset: () => void;
};
type Register = (key: string) => (fieldRef: FieldRef | null) => void;
type HybridFormReturn = [
    Register,
    () => Record<string, FieldValue> | null,
    () => void
];
declare function useHybridForm(): HybridFormReturn;

type InputFieldProps = {
    type?: "tel" | "url" | "date" | "file" | "text" | "time" | "week" | "color" | "email" | "month" | "range" | "number" | "datetime-local";
    name: string;
    label?: string;
    fieldClass?: string;
    inputClass?: string;
    labelClass?: string;
    errorClass?: string;
    placeholder?: string;
    defaultValue?: string;
    autoComplete?: string;
    validate?: (value: string) => string | null;
};
type InputFieldRef = {
    validate: () => boolean;
    getValue: () => string;
    reset: () => void;
};
declare const InputField: React.ForwardRefExoticComponent<InputFieldProps & React.RefAttributes<InputFieldRef>>;

type Option$2 = {
    label: string;
    value: string;
};
type RadioFieldProps = {
    name: string;
    label: string;
    options: Option$2[];
    fieldClass?: string;
    labelClass?: string;
    optionClass?: string;
    optionsClass?: string;
};
type RadioFieldRef = {
    reset: () => void;
    getValue: () => string;
};
declare const RadioField: React.ForwardRefExoticComponent<RadioFieldProps & React.RefAttributes<RadioFieldRef>>;

type Option$1 = {
    label: string;
    value: string;
};
type SelectFieldProps = {
    name: string;
    label: string;
    options: Option$1[];
    fieldClass?: string;
    labelClass?: string;
    optionClass?: string;
    optionsClass?: string;
};
type SelectFieldRef = {
    reset: () => void;
    getValue: () => string;
};
declare const SelectField: React.ForwardRefExoticComponent<SelectFieldProps & React.RefAttributes<SelectFieldRef>>;

type Option = {
    label: string;
    value: string;
};
type CheckBoxFieldProps = {
    name: string;
    label: string;
    options: Option[];
    fieldClass?: string;
    labelClass?: string;
    optionsClass?: string;
    optionClass?: string;
};
type CheckBoxFieldRef = {
    reset: () => void;
    getValue: () => string[];
};
declare const CheckBoxField: React.ForwardRefExoticComponent<CheckBoxFieldProps & React.RefAttributes<CheckBoxFieldRef>>;

type PasswordFieldProps = {
    name: string;
    label?: string;
    fieldClass?: string;
    inputClass?: string;
    labelClass?: string;
    errorClass?: string;
    placeholder?: string;
    showPasswordIcon?: string;
    hidePasswordIcon?: string;
    toggleVisibilityClass?: string;
    requiresConfirmation?: boolean;
    requiresTogglingVisibility?: boolean;
    validate: (value: string) => string | null;
};
type PasswordFieldRef = {
    reset: () => void;
    getValue: () => string;
    validate: () => boolean;
};
declare const PasswordField: React.ForwardRefExoticComponent<PasswordFieldProps & React.RefAttributes<PasswordFieldRef>>;

type TextAreaFieldProps = {
    name: string;
    rows?: number;
    cols?: number;
    label?: string;
    fieldClass?: string;
    labelClass?: string;
    errorClass?: string;
    placeholder?: string;
    defaultValue?: string;
    textareaClass?: string;
    validate?: (value: string) => string | null;
};
type TextAreaFieldRef = {
    reset: () => void;
    getValue: () => string;
    validate: () => boolean;
};
declare const TextAreaField: React.ForwardRefExoticComponent<TextAreaFieldProps & React.RefAttributes<TextAreaFieldRef>>;

export { CheckBoxField, InputField, PasswordField, RadioField, SelectField, TextAreaField, useHybridForm };
