import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
/**
 * 滑块值类型 - 单滑块为数字，双滑块为数组
 */
export type SliderValue = number | number[]
export declare const sliderProps: {
  /**
   * 自定义最小值的样式类名
   * 类型: string
   * 默认值: ''
   */
  customMinClass: {
    type: PropType<string>
    default: string
  }
  /**
   * 自定义最大值的样式类名
   * 类型: string
   * 默认值: ''
   */
  customMaxClass: {
    type: PropType<string>
    default: string
  }
  /**
   * 是否隐藏左右的最大最小值
   * 类型: boolean
   * 默认值: false
   */
  hideMinMax: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 是否隐藏当前滑块值
   * 类型: boolean
   * 默认值: false
   */
  hideLabel: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 是否禁用滑块
   * 类型: boolean
   * 默认值: false
   */
  disabled: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 进度条未激活的背景颜色
   * 类型: string
   * 默认值: '#e5e5e5'
   */
  inactiveColor: {
    type: PropType<string>
    default: string
  }
  /**
   * 进度条激活的背景颜色
   * 类型: string
   * 默认值: ''
   */
  activeColor: {
    type: PropType<string>
    default: string
  }
  /**
   * 滑块的最大值
   * 类型: number
   * 默认值: 100
   */
  max: {
    type: NumberConstructor
    default: number
  }
  /**
   * 滑块的最小值
   * 类型: number
   * 默认值: 0
   */
  min: {
    type: NumberConstructor
    default: number
  }
  /**
   * 滑块的步进值
   * 类型: number
   * 默认值: 1
   */
  step: {
    type: NumberConstructor
    default: number
  }
  /**
   * 滑块的值，如果为数组，则为双向滑块
   * 类型: number | number[]
   * 默认值: 0
   */
  modelValue: {
    type: PropType<SliderValue>
    default: number
  }
  customStyle: {
    type: PropType<string>
    default: string
  }
  customClass: {
    type: PropType<string>
    default: string
  }
}
/**
 * 滑块拖动事件参数
 */
export interface SliderDragEvent {
  /**
   * 当前滑块的值
   * 单滑块模式为数字，双滑块模式为数组
   */
  value: SliderValue
}
/**
 * 滑块组件事件类型定义
 */
export type SliderEmits = {
  /**
   * 开始拖动滑块时触发
   */
  dragstart: [event: SliderDragEvent]
  /**
   * 拖动滑块过程中触发
   */
  dragmove: [event: SliderDragEvent]
  /**
   * 结束拖动滑块时触发
   */
  dragend: [event: SliderDragEvent]
  /**
   * 更新滑块值时触发，用于v-model绑定
   */
  'update:modelValue': [value: SliderValue]
}
export type SliderExpose = {
  /**
   * 初始化slider宽度
   */
  initSlider: () => void
}
export type SliderProps = ExtractPropTypes<typeof sliderProps>
export type SliderInstance = ComponentPublicInstance<SliderProps, SliderExpose>
