import { ReactNode } from 'react';
import { BigNumber } from 'bignumber.js';
import { FormatNumberFuncOptions } from 'choerodon-ui/dataset/data-set/Field';
import { TextField, TextFieldProps } from '../text-field/TextField';
import { ValidationMessages } from '../validator/Validator';
import { FieldType } from '../data-set/enum';
import defaultFormatNumber from '../formatter/formatNumber';
import { Lang } from '../locale-context/enum';
export declare type FormatNumberFunc = (value: string, lang: string, options: Intl.NumberFormatOptions) => string;
export { FormatNumberFuncOptions };
export interface NumberFieldProps<V = number> extends TextFieldProps<V> {
    /**
     * 最小值
     */
    min?: BigNumber.Value | null;
    /**
     * 最大值
     */
    max?: BigNumber.Value | null;
    /**
     * 步距
     */
    step?: BigNumber.Value;
    /**
     * 非严格步距
     */
    nonStrictStep?: boolean;
    /**
     * 格式器
     */
    formatter?: FormatNumberFunc;
    /**
     * 格式器参数
     */
    formatterOptions?: FormatNumberFuncOptions;
    /**
     *是否长按按钮按步距增加
     */
    longPressPlus?: boolean;
    /**
     * 小数点精度
     */
    precision?: number;
    /**
     * 千分位分组显示
     */
    numberGrouping?: boolean;
    /**
     * 是否启用UP DOWN键盘事件
     */
    keyboard?: boolean;
    /**
     * @deprecated
     */
    stringMode?: boolean;
}
export declare class NumberField<T extends NumberFieldProps> extends TextField<T & NumberFieldProps> {
    static displayName: string;
    static defaultProps: {
        suffixCls: string;
        longPressPlus: boolean;
        max: number;
        min: number;
        clearButton: boolean;
        multiple: boolean;
        border: boolean;
        valueChangeAction: import("../text-field/enum").ValueChangeAction;
        waitType: import("../core/enum").WaitType;
        readOnly: boolean;
        disabled: boolean;
        noValidate: boolean;
        trim: import("../data-set/enum").FieldTrim;
    };
    static format: typeof defaultFormatNumber;
    /**
     * @deprecated
     */
    static bigNumberFormat: typeof defaultFormatNumber;
    plusElement?: HTMLDivElement | null;
    minusElement?: HTMLDivElement | null;
    get lang(): Lang;
    get defaultValidationMessages(): ValidationMessages;
    get strict(): boolean;
    get allowDecimal(): boolean;
    get nonStrictStep(): boolean;
    get allowNegative(): boolean;
    get min(): BigNumber.Value | undefined | null;
    get max(): BigNumber.Value | undefined | null;
    get value(): any | undefined;
    set value(value: any | undefined);
    get keyboard(): boolean;
    savePlusRef(ref: any): void;
    saveMinusRef(ref: any): void;
    isLowerRange(value1: number | string, value2: number | string): boolean;
    getFieldType(): FieldType;
    getLimit(type: string): BigNumber | number | string | undefined | null;
    getValidatorProp(key: string): any;
    getInnerSpanButton(): ReactNode;
    getWrapperClassNames(...args: any[]): string;
    handleEnterDown(e: any): void;
    handleKeyDown(e: any): void;
    handleKeyDownUp(value: any): void;
    handleKeyDownDown(value: any): void;
    handlePlus(value: any): void;
    handleMinus(value: any): void;
    handleOncePlus(): void;
    handleOnceMinus(): void;
    getOmitPropsKeys(): string[];
    getOtherProps(): any;
    getObservableProps(props: any, context: any): any;
    stepGenerator(isPlus: boolean): IterableIterator<BigNumber.Value>;
    getCurrentInputValue(): any;
    step(isPlus: boolean): void;
    afterStep(newValue: any): void;
    prepareSetValue(value: any): void;
    restrictInput(value: string): string;
    getFormatOptions(value?: number | BigNumber): FormatNumberFuncOptions;
    getFormatter(): any;
    processText(value: ReactNode): ReactNode;
    renderLengthInfo(): ReactNode;
    compare(oldValue: any, newValue: any): boolean;
    isValidInput(input: string): boolean;
}
export default class ObserverNumberField extends NumberField<NumberFieldProps> {
    static defaultProps: {
        suffixCls: string;
        longPressPlus: boolean;
        max: number;
        min: number;
        clearButton: boolean;
        multiple: boolean;
        border: boolean;
        valueChangeAction: import("../text-field/enum").ValueChangeAction;
        waitType: import("../core/enum").WaitType;
        readOnly: boolean;
        disabled: boolean;
        noValidate: boolean;
        trim: import("../data-set/enum").FieldTrim;
    };
    static format: typeof defaultFormatNumber;
    /**
     * @deprecated
     */
    static bigNumberFormat: typeof defaultFormatNumber;
}
