import type { ExtractPropTypes, PropType } from 'vue'
/**
 * 输入框值变化前的回调函数类型定义
 * @param value 输入框的新值
 * @returns 返回布尔值或Promise<boolean>，用于控制是否允许值的变化
 */
export type InputNumberBeforeChange = (value: number | string) => boolean | Promise<boolean>
export type OperationType = 'add' | 'sub'
export declare const inputNumberProps: {
  /**
   * 绑定值
   */
  modelValue: {
    type: (NumberConstructor | StringConstructor)[]
    required: true
  }
  /**
   * 最小值
   */
  min: {
    type: NumberConstructor
    default: number
  }
  /**
   * 最大值
   */
  max: {
    type: NumberConstructor
    default: number
  }
  /**
   * 步进值
   */
  step: {
    type: NumberConstructor
    default: number
  }
  /**
   * 是否严格按照步进值递增或递减
   */
  stepStrictly: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 数值精度
   */
  precision: {
    type: (NumberConstructor | StringConstructor)[]
    default: number
  }
  /**
   * 是否禁用
   */
  disabled: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 是否禁用输入框
   */
  disableInput: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 是否禁用减号按钮
   */
  disableMinus: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 是否禁用加号按钮
   */
  disablePlus: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 是否不显示输入框
   */
  withoutInput: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 输入框宽度
   */
  inputWidth: {
    type: (NumberConstructor | StringConstructor)[]
    default: number
  }
  /**
   * 是否允许为空
   */
  allowNull: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 输入框占位符
   */
  placeholder: {
    type: PropType<string>
    default: string
  }
  /**
   * 原生属性，键盘弹起时，是否自动上推页面
   */
  adjustPosition: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 输入值变化前的回调函数，返回 `false` 可阻止输入，支持返回 `Promise`
   */
  beforeChange: PropType<InputNumberBeforeChange>
  /**
   * 是否开启长按加减手势
   */
  longPress: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 是否立即响应输入变化，false 时仅在失焦和按钮点击时更新
   */
  immediateChange: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 是否在初始化时更新 v-model 为修正后的值
   * true: 自动修正并更新 v-model
   * false: 保持原始值不修正，但仍会进行显示格式化
   */
  updateOnInit: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 输入框类型
   * number: 数字输入
   * digit: 整数输入
   */
  inputType: {
    type: PropType<'number' | 'digit'>
    default: 'number' | 'digit'
  }
  customStyle: {
    type: PropType<string>
    default: string
  }
  customClass: {
    type: PropType<string>
    default: string
  }
}
export type InputNumberProps = ExtractPropTypes<typeof inputNumberProps>
