import type { Option, PickClassStyleType, ReactPropsBase, SchemaExpression } from 'jamis-core';
import type { FormBaseControlSchema, FormControlProps } from '../types';
export type InputNumberRendererEvent = 'blur' | 'focus' | 'change';
export type InputNumberRendererAction = 'clear';
/**
 * 数字输入框
 *
 */
export interface NumberControlSchema extends FormBaseControlSchema {
    type: 'input-number';
    /**
     * 最大值
     */
    max?: number;
    maxExpr?: SchemaExpression;
    /**
     * 最小值
     */
    min?: number;
    minExpr?: SchemaExpression;
    /**
     * 步长
     */
    step?: number;
    /**
     * 精度
     */
    precision?: number;
    /**
     * 默认当然是
     */
    showSteps?: boolean;
    /**
     * 边框模式，全边框，还是半边框，或者没边框。
     */
    borderMode?: 'full' | 'half' | 'none';
    /**
     * 前缀
     */
    prefix?: string;
    /**
     * 后缀
     */
    suffix?: string;
    /**
     * 单位列表
     */
    unitOptions?: string | Array<Option> | string[] | PlainObject;
    /**
     * 是否千分分隔
     */
    kilobitSeparator?: boolean;
    /**
     * 只读
     */
    readOnly?: boolean;
    /**
     * 是否启用键盘行为
     */
    keyboard?: boolean;
}
export interface NumberControlProps extends FormControlProps {
    placeholder?: string;
    max?: number | string;
    min?: number | string;
    step?: number;
    precision?: number;
    /**
     * 边框模式，全边框，还是半边框，或者没边框。
     */
    borderMode?: 'full' | 'half' | 'none';
    /**
     * 前缀
     */
    prefix?: string;
    /**
     * 后缀
     */
    suffix?: string;
    /**
     * 是否千分分隔
     */
    kilobitSeparator?: boolean;
    /**
     * 只读
     */
    readOnly?: boolean;
    /**
     * 启用键盘行为，即通过上下方向键控制是否生效
     */
    keyboard?: boolean;
}
export interface NumberProps extends ReactPropsBase, PickClassStyleType {
    placeholder?: string;
    max?: number;
    min?: number;
    step?: number;
    /** 是否显示加减按钮, 默认是显示 */
    showSteps?: boolean;
    precision?: number;
    disabled?: boolean;
    /**
     * 只读
     */
    readOnly?: boolean;
    value?: number;
    /**
     * 边框模式，全边框或者没边框。
     */
    borderMode?: 'full' | 'half' | 'none';
    /**
     * 指定输入框展示值的格式
     */
    formatter?: Function;
    /**
     * 指定从 formatter 里转换回数字的方式，和 formatter 搭配使用
     */
    parser?: Function;
    inputRef?: Function;
    keyboard?: Boolean;
    /** 是否有校验错误 */
    hasError?: boolean;
    /**
     * 获取焦点事件
     */
    onFocus?: Function;
    /**
     * 失去焦点事件
     */
    onBlur?: Function;
    onChange?: (value: number) => void;
}
export * from './InputText.types';
export * from './Textarea.types';
