import type { Ref } from 'react';
import type { FormControlProps, HandleValue } from '../FormControl';
import type { Attributes, NoChildrenProp, TestIdProp, WithAttributes } from '../../types';
export type NumberProps = NoChildrenProp & TestIdProp & {
    /** Set visual state based on a validation state. */
    status?: FormControlProps['status'];
    /** Pass a string or a fragment with an Icon and string. */
    label?: FormControlProps['label'];
    /**
     * Visually hides the label region.
     * @default false
     */
    labelHidden?: FormControlProps['labelHidden'];
    /** It is recommended to pass a simple string to offer guidance. Text will be styled based on status prop. */
    info?: FormControlProps['info'];
    /** Indicate if the field is required. The browser defaults to false. */
    required?: FormControlProps['required'];
    /** Makes the component non-editable and non-clickable. The browser defaults to false. */
    readOnly?: FormControlProps['readOnly'];
    /** Button when clicked will show additional information */
    additionalInfo?: FormControlProps['additionalInfo'];
    /** Defines unit of the number, like 'kg', 'miles' or '%'. */
    unit?: string;
    /** Determines whether decimal places should be shown. The value is rounded if true.
     * @default true
     */
    showDecimal?: boolean;
    /** Determines the maximum number of decimal places. The value is rounded to the number of places.
     * @default variable NUMBER_MAX_DECIMAL_PLACES. Recommended minimum: 1.
     */
    numberOfDecimals?: number;
    /** Determines whether group separators should be shown.
     * @default true
     */
    showGroupSeparators?: boolean;
    /** The minimum value to accept for this input.
     *  This value must be less than or equal to the value of the max attribute.
     *  @default Number.MIN_SAFE_INTEGER
     */
    min?: number;
    /**
     * The maximum value to accept for this input.
     *  This value must be greater than or equal to the value of the min attribute.
     *  @default Number.MAX_SAFE_INTEGER
     */
    max?: number;
    /** A stepping interval to use when using up and down arrows to adjust the value.
     * @default 1
     */
    step?: number;
    /**
     * Component variation. Might be rendered as regular input or stepper.
     * @default 'default'
     */
    variant?: 'default' | 'stepper';
};
export type NumberInputProps = WithAttributes<'input', NumberProps & {
    /**
     * CurrencyInput input value.
     * Requires an onChange handler to update value.
     */
    value?: string;
    /** Callback fired when input value changes. */
    onChange: (value: string) => void;
    /** Callback fired when the component gets focus. */
    onFocus?: (value: string) => void;
    /** Callback fired when the component loses focus. */
    onBlur?: (value: string) => void;
    /** Callback fired when AI suggestion is accepted/rejected */
    onResolveSuggestion?: FormControlProps['onResolveSuggestion'];
    type?: never;
    defaultValue?: never;
}>;
export type NumberRangeInputProps = WithAttributes<'fieldset', NumberProps & Pick<Attributes<'input'>, 'placeholder'> & {
    /** Range as a tuple of start and end. */
    value?: {
        start?: string;
        end?: string;
    };
    /** Callback for any modifications to the range */
    onChange: (value: {
        start: string;
        end: string;
    }) => void;
    /** Callback fired when the component loses focus. */
    onBlur?: (value: {
        start: string;
        end: string;
    }) => void;
    /** Callback fired when the component gets focus. */
    onFocus?: (value: {
        start: string;
        end: string;
    }) => void;
    /** Pass a string or a fragment with an Icon and string for first part of NumberRangeInput. */
    fromLabel?: FormControlProps['label'];
    /** Pass a string or a fragment with an Icon and string for second part of NumberRangeInput. */
    toLabel?: FormControlProps['label'];
    /** Pass an object with "heading" and "content" properties to show AdditionalInfo for first part of NumberRangeInput. */
    fromAdditionalInfo?: FormControlProps['additionalInfo'];
    /** Pass an object with "heading" and "content" properties to show AdditionalInfo for second part of NumberRangeInput. */
    toAdditionalInfo?: FormControlProps['additionalInfo'];
    /** Imperative handle */
    handle?: Ref<HandleValue>;
}>;
/** Maximum fraction digits is 20. */
export declare const NUMBER_MAX_DECIMAL_PLACES = 20;
//# sourceMappingURL=NumberInput.types.d.ts.map