import React from 'react';
import { ComponentSizeType } from '../Forms';
import { InputValidationProps } from '../../common/InputValidationProps';
import { ComponentWithClass } from '../../common/ComponentWithClass';
interface NumberInputBaseProps extends ComponentWithClass, InputValidationProps {
    /**
     * Toggles whether to focus the input on initial render.
     */
    autoFocus?: boolean;
    /**
     * Optional text footnote to display below the component.
     */
    footnote?: string;
    /**
     * Optional HTML `id` attribute to apply to the internal input.
     */
    id?: string;
    /**
     * Toggles whether the component is disabled or not (preventing user interaction).
     */
    isDisabled?: boolean;
    /**
     * Optional descriptive text label to display within the component.
     */
    label?: string;
    /**
     * Maximum value selectable by the component (upper bound).
     *
     * Deprecated: Use app-side validation (ideally triggered `onBlur`).
     *
     * @deprecated
     */
    max?: number;
    /**
     * Minimum value selectable by the component (lower bound).
     *
     * To disable the entry of negative numbers, set this to `0` or
     * greater.
     *
     * Deprecated: Use app-side validation (ideally triggered `onBlur`).
     *
     * @deprecated
     */
    min?: number;
    /**
     * HTML `name` attribute to apply to the internal input.
     */
    name: string;
    /**
     * Optional handler called when the `onBlur` event is emitted.
     */
    onBlur?: (event: React.FormEvent) => void;
    /**
     * Handler called when the entered value changes.
     *
     * Note that `newValue` could be `NaN` if negative numbers
     * are allowed and a single `-` is entered.
     */
    onChange: (event: React.ChangeEvent<HTMLInputElement> | React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLInputElement>, newValue: number | null) => void;
    /**
     * Optional placeholder text to display within the component.
     */
    placeholder?: string;
    /**
     * Size of the component.
     */
    size?: ComponentSizeType;
    /**
     * Stepped increment amount by which to increase/decrese component value.
     */
    step?: number;
    /**
     * Currently selected value displayed by the component.
     */
    value?: number | null;
}
export interface NumberInputWithIconProps extends NumberInputBaseProps {
    /**
     * Optional icon to display to the left of the input value.
     */
    icon?: React.ReactNode;
    prefix?: never;
    suffix?: never;
}
export interface NumberInputWithPrefixProps extends NumberInputBaseProps {
    icon?: never;
    /**
     * Optional value to display next to the component value.
     */
    prefix?: string;
    suffix?: never;
}
export interface NumberInputWithSuffixProps extends NumberInputBaseProps {
    icon?: never;
    prefix?: never;
    /**
     * Optional value to display next to the component value.
     */
    suffix?: string;
}
export type NumberInputProps = NumberInputWithIconProps | NumberInputWithPrefixProps | NumberInputWithSuffixProps;
export declare const NumberInput: React.FC<NumberInputProps>;
export {};
//# sourceMappingURL=NumberInput.d.ts.map