import type { AriaAttributes } from 'react';
import React from 'react';
import type { InputProps } from '../Input/index.js';
import type { Nullable, Override } from '../../typings/utility-types.js';
import type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';
import type { TGetRootNode } from '../../lib/rootNode/index.js';
import type { Selection } from './SelectionHelper.js';
export interface CurrencyInputProps extends Pick<AriaAttributes, 'aria-label'>, CommonProps, Override<Omit<InputProps, 'showClearIcon' | 'maxLength'>, {
    /** Значение поля. */
    value?: Nullable<number>;
    /** Убирает лишние нули после запятой. */
    hideTrailingZeros?: boolean;
    /** Устанавливает минимальное количество отображаемых знаков после запятой. Если fractionDigits=15, то в целой части допускается только **0**. */
    fractionDigits?: Nullable<number>;
    /** Разрешает вводить в поле символ минуса для отрицательных значений. */
    signed?: boolean;
    /** Допустимое количество цифр целой части до запятой.
     * Если передан **0**, то в целой части допускается только **0**. */
    integerDigits?: Nullable<number>;
    /** Событие изменения `value`. */
    onValueChange: (value: Nullable<number>) => void;
    /** Событие отправки формы. */
    onSubmit?: () => void;
}> {
}
export interface CurrencyInputState {
    formatted: string;
    selection: Selection;
    focused: boolean;
}
export declare const CurrencyInputDataTids: {
    readonly root: "CurrencyInput__root";
};
type DefaultProps = Required<Pick<CurrencyInputProps, 'align' | 'fractionDigits' | 'hideTrailingZeros' | 'value' | 'inputMode'>>;
/** Поле для денежных сумм. */
export declare class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    private getProps;
    private validateProps;
    state: CurrencyInputState;
    private input;
    private tempSelectionForOnChange;
    getRootNode: TGetRootNode;
    private setRootNode;
    componentDidMount(): void;
    componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState): void;
    render(): React.JSX.Element;
    renderMain: (props: CommonWrapperRestProps<CurrencyInputProps>) => React.JSX.Element;
    /** Программно устанавливает фокус на поле.
     * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.
     * @public
     */
    focus: () => void;
    /** Программно снимает фокус с кнопки.
     * @public
     */
    blur: () => void;
    private getState;
    private setSelectionFromEvent;
    private handleMouseUp;
    private handleKeyDown;
    private scrollInput;
    private getSelection;
    private moveCursor;
    private extendSelection;
    private inputValue;
    private getOnChangeDelta;
    private handleValueChange;
    private handlePaste;
    private handleCopy;
    private handleCut;
    private handleFocus;
    private resetFocus;
    private handleBlur;
    private refInput;
}
export {};
