/// <reference types="react" />
import { ReactElement } from '../../@declares';
import { InputTypes } from '.';
declare namespace TextField {
    type Restrict = 'text' | 'katakana' | 'hankaku.katakana' | 'number' | 'digitNumber' | 'tel' | 'email' | 'url' | 'fileName' | 'password' | 'postal' | 'creditCard' | 'concealed';
    type Input<T = string, Element = HTMLInputElement> = InputTypes.CoreInput<T> & React.DOMAttributes<Element> & {
        label?: ReactElement;
        isLabelActive?: boolean;
        placeholder?: string;
        tone?: InputTypes.BoxTone;
        tabIndex?: number;
        id?: string;
        disabled?: boolean;
        allowDecimals?: boolean | number;
        allowZeroStart?: boolean;
        restrict?: Restrict;
        minRows?: number;
        maxRows?: number;
        multiline?: boolean;
        autoHeight?: boolean;
        min?: number | null;
        max?: number | null;
        maxLength?: number | null;
        autoComplete?: 'off' | 'none' | string;
        autoCapitalize?: 'off' | 'none' | string;
        clearButton?: boolean;
        value?: string | number;
        leftIndicator?: ReactElement | false;
        rightIndicator?: ReactElement | false;
        leftIcon?: ReactElement | false;
        rightIcon?: ReactElement | false;
    };
    type WrapperStates = {
        rootStates: Input;
        val_focus: boolean;
        set_focus: React.Dispatch<React.SetStateAction<boolean>>;
        val_isComposing: boolean;
        set_isComposing: React.Dispatch<React.SetStateAction<boolean>>;
        val_status: InputTypes.Status.Text;
        set_status: React.Dispatch<React.SetStateAction<InputTypes.Status.Text>>;
        val_validate: InputTypes.Validation.Result;
        set_validate: React.Dispatch<React.SetStateAction<InputTypes.Validation.Result>>;
    };
    namespace Methods {
        type Component = {
            (p: Input): JSX.Element;
        };
        type FNs = {
            Validate(value: any, restrict: Restrict): {
                ok: boolean;
                body: ReactElement;
            };
            Katakana: React.FC<Input>;
            HankakuKatakana: React.FC<Input>;
            Number: React.FC<Input>;
            DigitNumber: React.FC<Input>;
            Tel: React.FC<Input>;
            CreditCard: React.FC<Input>;
            Email: React.FC<Input>;
            Url: React.FC<Input>;
            Postal: React.FC<Input>;
            Password: React.FC<Input>;
            Concealed: React.FC<Input>;
            Money: {
                JPY: React.FC<Input>;
            };
        };
    }
    type Methods = Methods.Component & Methods.FNs;
}
export declare const TextInput: React.FC<TextField.Input>;
declare const TextField: TextField.Methods;
export { TextField, TextField as default };
