import { type AriaAttributes, type ChangeEvent, type FocusEvent, type KeyboardEvent, type MouseEvent, PureComponent, type ReactNode } from "react";
import { type IconType } from "../@ui/@types/icon.js";
import { type IAccessibilityConfigBase } from "../typings/accessibility.js";
import { type IDomNative, type IDomNativeProps } from "../typings/domNative.js";
/**
 * @internal
 */
export interface IInputPureAccessibilityConfig extends IAccessibilityConfigBase {
    prefixAriaLabel?: string;
    suffixAriaLabel?: string;
    ariaInvalid?: AriaAttributes["aria-invalid"];
}
/**
 * @internal
 */
export interface IInputPureProps 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?: IInputPureAccessibilityConfig;
    autocomplete?: string;
    iconButton?: IconType;
    onIconButtonClick?: (e: MouseEvent<HTMLButtonElement>) => void;
    iconButtonLabel?: string;
    dataTestId?: string;
}
/**
 * @internal
 */
export declare class InputPure extends PureComponent<IInputPureProps> implements IDomNative {
    inputNodeRef: HTMLInputElement | null;
    private autofocusDispatcher;
    private readonly a11yIdBase;
    static defaultProps: {
        autofocus: boolean;
        className: string;
        clearOnEsc: boolean;
        disabled: boolean;
        hasError: boolean;
        hasWarning: boolean;
        isSearch: boolean;
        isSmall: boolean;
        maxlength: number;
        onChange: (..._args: unknown[]) => void;
        onEscKeyPress: (..._args: unknown[]) => void;
        onEnterKeyPress: (..._args: unknown[]) => void;
        onBlur: (..._args: unknown[]) => void;
        onFocus: (..._args: unknown[]) => void;
        placeholder: string;
        prefix: string;
        readonly: boolean;
        suffix: string;
        label: string;
        labelPositionTop: boolean;
        value: string;
    };
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentDidUpdate(prevProps: Readonly<IInputPureProps>): void;
    onChange: (e: ChangeEvent<HTMLInputElement>) => void;
    onKeyPress: (e: KeyboardEvent<Element>) => void;
    onClear: (e?: ChangeEvent<HTMLInputElement> | undefined) => void;
    getLabelClassNames(className: string): string;
    getInputClassNames(): string;
    private getA11yIdBase;
    private getPrefixA11yId;
    private getSuffixA11yId;
    renderPrefix(prefix: string, ariaLabel?: string): ReactNode;
    renderSuffix(suffix: string, ariaLabel?: string): ReactNode;
    renderLabel(label: ReactNode, htmlFor?: string): ReactNode;
    renderSearch(isSearch: boolean): ReactNode;
    renderClearIcon(clearOnEsc: boolean): ReactNode;
    renderIconButton(iconButton: IconType, iconButtonLabel: string, onIconButtonClick: (e: MouseEvent<HTMLButtonElement>) => void): ReactNode;
    getAriaDescribedBy(): string | undefined;
    renderInput(): import("react/jsx-runtime").JSX.Element;
    render(): import("react/jsx-runtime").JSX.Element;
    focus(options?: {
        preventScroll?: boolean;
    }): void;
}
//# sourceMappingURL=InputPure.d.ts.map