import { ChangeEvent, FocusEvent, KeyboardEvent, MouseEvent, PureComponent, ReactNode } from "react";
import { IconType } from "../@ui/@types/icon.js";
import { IAccessibilityConfigBase } from "../typings/accessibility.js";
import { IDomNative, IDomNativeProps } from "../typings/domNative.js";
/**
 * @internal
 */
export interface InputPureProps extends IDomNativeProps {
    className?: string;
    clearOnEsc?: boolean;
    disabled?: boolean;
    hasError?: boolean;
    hasWarning?: boolean;
    isSearch?: boolean;
    isSmall?: boolean;
    maxlength?: number;
    onChange?: (value: string | number, e?: ChangeEvent<HTMLInputElement>) => void;
    onKeyDown?: (e: KeyboardEvent) => void;
    onEscKeyPress?: (e: KeyboardEvent) => void;
    onEnterKeyPress?: () => void;
    onBlur?: (e: FocusEvent<HTMLInputElement>) => void;
    onFocus?: (e: FocusEvent<HTMLInputElement>) => void;
    placeholder?: string;
    prefix?: string;
    readonly?: boolean;
    suffix?: string;
    label?: ReactNode;
    labelPositionTop?: boolean;
    value?: string | number;
    id?: string;
    name?: string;
    type?: string;
    required?: boolean;
    accessibilityType?: string;
    accessibilityConfig?: IAccessibilityConfigBase;
    autocomplete?: string;
    iconButton?: IconType;
    onIconButtonClick?: (e: MouseEvent<HTMLButtonElement>) => void;
    iconButtonLabel?: string;
    dataTestId?: string;
}
/**
 * @internal
 */
export declare class InputPure extends PureComponent<InputPureProps> implements IDomNative {
    inputNodeRef: HTMLInputElement;
    private autofocusDispatcher;
    static defaultProps: {
        autofocus: boolean;
        className: string;
        clearOnEsc: boolean;
        disabled: boolean;
        hasError: boolean;
        hasWarning: boolean;
        isSearch: boolean;
        isSmall: boolean;
        maxlength: number;
        onChange: (..._: any[]) => void;
        onEscKeyPress: (..._: any[]) => void;
        onEnterKeyPress: (..._: any[]) => void;
        onBlur: (..._: any[]) => void;
        onFocus: (..._: any[]) => void;
        placeholder: string;
        prefix: string;
        readonly: boolean;
        suffix: string;
        label: string;
        labelPositionTop: boolean;
        value: string;
    };
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentDidUpdate(prevProps: Readonly<InputPureProps>): void;
    onChange: (e: ChangeEvent<HTMLInputElement>) => void;
    onKeyPress: (e: KeyboardEvent) => void;
    onClear: (e?: ChangeEvent<HTMLInputElement>) => void;
    getLabelClassNames(className: string): string;
    getInputClassNames(): string;
    renderPrefix(prefix: string): ReactNode;
    renderSuffix(suffix: string): ReactNode;
    renderLabel(label: ReactNode): ReactNode;
    renderSearch(isSearch: boolean): ReactNode;
    renderClearIcon(clearOnEsc: boolean): ReactNode;
    renderIconButton(iconButton: IconType, iconButtonLabel: string, onIconButtonClick: (e: MouseEvent<HTMLButtonElement>) => void): ReactNode;
    renderInput(): import("react/jsx-runtime").JSX.Element;
    render(): import("react/jsx-runtime").JSX.Element;
    focus(options?: {
        preventScroll?: boolean;
    }): void;
}
//# sourceMappingURL=InputPure.d.ts.map