import React, { ReactElement, ReactNode, Ref, CSSProperties, MouseEventHandler } from 'react';
import { RenderOverride } from '../lib/render-override';
import { IWithControlProps } from '../withControl/withControl';
import { IIconProps } from '../Icon/Icon';
import { ITextinputControlProps } from './Control/Textinput-Control';
import './Textinput.css';
export declare const cnTextinput: import("@bem-react/classname").ClassNameFormatter;
export interface ITextinputProps extends ITextinputControlProps, IWithControlProps<HTMLInputElement> {
    /**
     * Событие, которое вызывается при нажатии на компонент
     */
    onClick?: MouseEventHandler<HTMLElement>;
    /**
     * Событие по своему действию похоже на `onClick` и возникает в момент нажатия кнопки мыши.
     * `onClick` в каком-то смысле является комбинацией событий `onMouseDown` и `onMouseUp`
     */
    onMouseDown?: MouseEventHandler<HTMLElement>;
    /**
     * Событие по своему действию противоположно событию `onMouseDown` и происходит при отпускании кнопки мыши.
     * Курсор должен находится в пределах HTML-элемента, к которому добавлен атрибут `onmouseup`
     */
    onMouseUp?: MouseEventHandler<HTMLElement>;
    /**
     * Состояние фокуса на компоненте
     */
    focused?: boolean;
    /**
     * Состояние нажатия на компоненте
     */
    pressed?: boolean;
    /**
     * Дополнительный контент после контрола
     */
    addonAfter?: ReactNode;
    /**
     * Дополнительный контент перед контролом
     */
    addonBefore?: ReactNode;
    /**
     * Иконка слева от содержимого текстового поля
     */
    iconLeft?: ReactElement<IIconProps>;
    /**
     * Иконка справа от содержимого текстового поля
     */
    iconRight?: ReactElement<IIconProps>;
    /**
     * Ссылка на корневой DOM элемент компонента
     */
    innerRef?: Ref<HTMLSpanElement>;
    /**
     * Пользовательские стили на корневом DOM элементе.
     */
    style?: CSSProperties;
    /**
     * Текст-подсказка, появляющаяся после компонента.
     * Может иметь различное визуальное оформление в зависимости от свойства `state`.
     */
    hint?: string;
    /**
     * Визуальное состояние компонента.
     * Может использоваться при проверке формы на корректность.
     */
    state?: 'error';
    /**
     * Всплывающая подсказка
     */
    title?: string;
    /**
     * Переопределяет компонент `Control`
     */
    renderControl?: RenderOverride<ITextinputControlProps>;
}
export declare const Textinput: React.ComponentClass<ITextinputProps, any>;
