import React from 'react';
import { IconProps, IconPropSize } from '../../icons/Icon/Icon';
import { PropsWithHTMLAttributes } from '../../utils/types/PropsWithHTMLAttributes';
export declare type TextFieldPropValue = string | null;
export declare type TextFieldPropName = string;
export declare type TextFieldPropId = string | number;
export declare const textFieldPropSize: readonly ["m", "xs", "s", "l"];
export declare type TextFieldPropSize = typeof textFieldPropSize[number];
export declare const textFieldPropSizeDefault: TextFieldPropSize;
export declare type TextFieldPropOnChange = (args: TextFieldOnChangeArguments) => void;
export declare type TextFieldOnChangeArguments = {
    e: React.ChangeEvent | React.MouseEvent;
    id?: TextFieldPropId;
    name?: TextFieldPropName;
    value: TextFieldPropValue;
};
export declare const textFieldPropView: readonly ["default", "clear", "outline"];
export declare type TextFieldPropView = typeof textFieldPropView[number];
export declare const textFieldPropViewDefault: TextFieldPropView;
export declare const textFieldPropForm: readonly ["default", "defaultClear", "defaultBrick", "brick", "brickDefault", "brickClear", "brickRound", "round", "roundClear", "roundBrick", "clearRound", "clearDefault", "clearBrick", "clearClear"];
export declare type TextFieldPropForm = typeof textFieldPropForm[number];
export declare const textFieldPropFormDefault: TextFieldPropForm;
export declare const textFieldPropStatus: readonly ["alert", "success", "warning"];
export declare type TextFieldPropStatus = typeof textFieldPropStatus[number];
export declare const textFieldPropWidth: readonly ["default", "full"];
export declare type TextFieldPropWidth = typeof textFieldPropWidth[number];
export declare const textFieldPropWidthDefault: TextFieldPropWidth;
export declare type TextFieldPropAutoComplete = 'on' | 'off';
export declare type TextFieldPropsTextareaType<TYPE> = TYPE extends 'textarea' ? {
    minRows?: never;
    maxRows?: never;
    rows?: number;
} | {
    rows?: never;
    minRows?: number;
    maxRows?: number;
} : {
    rows?: never;
    minRows?: never;
    maxRows?: never;
};
export declare type TextFieldPropRightSide<TYPE> = TYPE extends 'number' ? {
    rightSide?: never;
} : {
    rightSide?: string | React.FC<IconProps>;
};
export declare type Props<TYPE extends string> = {
    className?: string;
    value?: TextFieldPropValue;
    cols?: number;
    onChange?: TextFieldPropOnChange;
    id?: TextFieldPropId;
    name?: TextFieldPropName;
    type?: TYPE;
    disabled?: boolean;
    maxLength?: number;
    size?: TextFieldPropSize;
    view?: TextFieldPropView;
    form?: TextFieldPropForm;
    state?: TextFieldPropStatus;
    status?: TextFieldPropStatus;
    width?: TextFieldPropWidth;
    onFocus?: React.FocusEventHandler<HTMLElement>;
    onBlur?: React.FocusEventHandler<HTMLElement>;
    autoFocus?: boolean;
    placeholder?: string;
    leftSide?: string | React.FC<IconProps>;
    rightSide?: string | React.FC<IconProps>;
    withClearButton?: boolean;
    autoComplete?: TextFieldPropAutoComplete;
    max?: number | string;
    min?: number | string;
    readOnly?: boolean;
    required?: boolean;
    step?: number | string;
    tabIndex?: number;
    inputRef?: React.Ref<HTMLTextAreaElement | HTMLInputElement>;
    ariaLabel?: string;
    iconSize?: IconPropSize;
    children?: never;
    label?: string;
    caption?: string;
    labelPosition?: 'top' | 'left';
    focused?: boolean;
    component: never;
} & TextFieldPropsTextareaType<TYPE> & TextFieldPropRightSide<TYPE>;
export declare type TextFieldProps<TYPE extends string> = PropsWithHTMLAttributes<Props<TYPE>, HTMLDivElement>;
export declare type TextFieldComponent = <TYPE extends string>(props: TextFieldProps<TYPE> & React.RefAttributes<HTMLElement>) => React.ReactElement | null;
export declare const sizeMap: Record<TextFieldPropSize, IconPropSize>;
