import React, { ChangeEvent, FocusEvent } from 'react';
import { IconLookup } from '@fortawesome/fontawesome-svg-core';
import { FormFieldValidity, AsyncValidation, INPUT_TYPES, FormFieldProps, HELPER_TEXT_POSITION } from '../form-field';
import { ValueOf } from '../types';
export declare const INPUT_SIZES: {
    readonly SM: "sm";
    readonly MD: "md";
    readonly LG: "lg";
    readonly XL: "xl";
};
export type InputSizes = ValueOf<typeof INPUT_SIZES>;
export type InputTypes = ValueOf<typeof INPUT_TYPES>;
export { HELPER_TEXT_POSITION };
export type PasswordToggleButtonTextsProps = {
    show?: string | null;
    hide?: string | null;
    toggle?: string | null;
};
export type ValidationValuesProps = {
    error?: string;
    success?: string;
};
export type InputProps = {
    value?: string | number;
    id?: string;
    helperText?: string;
    helperTextPosition?: HELPER_TEXT_POSITION;
    className?: string;
    isDisabled?: boolean;
    isOptional?: boolean;
    isHighlighted?: boolean;
    optionalLabelText?: string;
    autoFocus?: boolean;
    disabledInfo?: string;
    touched?: boolean;
    validationTestId?: string;
    validity?: FormFieldValidity | null;
    asyncValidation?: AsyncValidation;
    leftIcon?: IconLookup | null;
    rightIcon?: IconLookup | null;
    iconTooltipText?: string;
    label?: React.ReactNode;
    labelTestId?: string;
    labelIcon?: IconLookup | null;
    labelIconTestId?: string;
    labelIconTooltipText?: string;
    isLabelIconTooltipInteractive?: boolean;
    fieldClass?: string;
    placeholder?: string;
    required?: boolean;
    onClear?: () => void;
    onChange?: (event: ChangeEvent<HTMLInputElement>, params: {
        normalizedValue: string | number;
    }) => void;
    onBlur?: (event: FocusEvent<HTMLInputElement>) => void;
    onFocus?: (event: FocusEvent<HTMLInputElement>) => void;
    type?: InputTypes;
    /** if type="password", spellcheck is disabled by default */
    spellCheck?: boolean;
    shouldDisplayControls?: boolean;
    inputSize?: InputSizes;
    isHorizontalLayout?: boolean;
    name?: string;
    step?: number | string;
    size?: number;
    readOnly?: boolean;
    minlength?: number;
    min?: number;
    maxLength?: number;
    max?: number;
    autoComplete?: string;
    passwordToggleButtonTexts?: PasswordToggleButtonTextsProps;
    validationValues?: ValidationValuesProps;
    onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
    onPaste?: (event: React.ClipboardEvent<HTMLInputElement>) => void;
    wrapperClass?: string;
    role?: string;
    fieldTestId?: string;
    useFont?: boolean;
    disableApplyButton?: boolean;
} & FormFieldProps;
/**
 * Input component, which supports label, helper text and validation
 * [CAPITALIZATION] Use sentence case for label and placeholder, no colon
 * [CAPITALIZATION] Helper text, in most cases, should be a complete sentence with a period
 * [CAPITALIZATION] Don't have mixed format in one text block, use sentence case
 * @midnight-gray-supported
 * @alpine-light-supported
 */
declare const Input: React.ForwardRefExoticComponent<{
    value?: string | number | undefined;
    id?: string | undefined;
    helperText?: string | undefined;
    helperTextPosition?: HELPER_TEXT_POSITION | undefined;
    className?: string | undefined;
    isDisabled?: boolean | undefined;
    isOptional?: boolean | undefined;
    isHighlighted?: boolean | undefined;
    optionalLabelText?: string | undefined;
    autoFocus?: boolean | undefined;
    disabledInfo?: string | undefined;
    touched?: boolean | undefined;
    validationTestId?: string | undefined;
    validity?: FormFieldValidity | null | undefined;
    asyncValidation?: AsyncValidation | undefined;
    leftIcon?: IconLookup | null | undefined;
    rightIcon?: IconLookup | null | undefined;
    iconTooltipText?: string | undefined;
    label?: React.ReactNode;
    labelTestId?: string | undefined;
    labelIcon?: IconLookup | null | undefined;
    labelIconTestId?: string | undefined;
    labelIconTooltipText?: string | undefined;
    isLabelIconTooltipInteractive?: boolean | undefined;
    fieldClass?: string | undefined;
    placeholder?: string | undefined;
    required?: boolean | undefined;
    onClear?: (() => void) | undefined;
    onChange?: ((event: ChangeEvent<HTMLInputElement>, params: {
        normalizedValue: string | number;
    }) => void) | undefined;
    onBlur?: ((event: FocusEvent<HTMLInputElement>) => void) | undefined;
    onFocus?: ((event: FocusEvent<HTMLInputElement>) => void) | undefined;
    type?: InputTypes | undefined;
    /** if type="password", spellcheck is disabled by default */
    spellCheck?: boolean | undefined;
    shouldDisplayControls?: boolean | undefined;
    inputSize?: InputSizes | undefined;
    isHorizontalLayout?: boolean | undefined;
    name?: string | undefined;
    step?: string | number | undefined;
    size?: number | undefined;
    readOnly?: boolean | undefined;
    minlength?: number | undefined;
    min?: number | undefined;
    maxLength?: number | undefined;
    max?: number | undefined;
    autoComplete?: string | undefined;
    passwordToggleButtonTexts?: PasswordToggleButtonTextsProps | undefined;
    validationValues?: ValidationValuesProps | undefined;
    onKeyDown?: ((event: React.KeyboardEvent<HTMLInputElement>) => void) | undefined;
    onPaste?: ((event: React.ClipboardEvent<HTMLInputElement>) => void) | undefined;
    wrapperClass?: string | undefined;
    role?: string | undefined;
    fieldTestId?: string | undefined;
    useFont?: boolean | undefined;
    disableApplyButton?: boolean | undefined;
} & FormFieldProps & React.RefAttributes<HTMLInputElement>>;
export default Input;
