import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
export type DateTimeType = 'date' | 'year-month' | 'time' | 'datetime' | 'year'
/**
 * @description 根据传入的值和类型，获取当前的选项数组，便于传入 pickerView
 * @param value
 * @param type picker类型
 * @return {Array} pickerValue
 */
export declare function getPickerValue(value: string | number, type: DateTimeType): number[]
export declare const datetimePickerViewProps: {
  /**
   * 选中项，当 type 为 time 时，类型为字符串，否则为 时间戳
   */
  modelValue: {
    type: (NumberConstructor | StringConstructor | DateConstructor)[]
    required: true
  }
  /**
   * 加载中
   */
  loading: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 加载的颜色，只能使用十六进制的色值写法，且不能使用缩写
   */
  loadingColor: {
    type: PropType<string>
    default: string
  }
  /**
   * picker内部滚筒高
   */
  columnsHeight: {
    type: NumberConstructor
    default: number
  }
  valueKey: {
    type: PropType<string>
    default: string
  }
  labelKey: {
    type: PropType<string>
    default: string
  }
  /**
   * 选择器类型，可选值：date / year-month / time
   */
  type: {
    type: PropType<DateTimeType>
    default: DateTimeType
  }
  /**
   * 自定义过滤选项的函数，返回列的选项数组
   */
  filter: PropType<DatetimePickerViewFilter>
  /**
   * 自定义弹出层选项文案的格式化函数，返回一个字符串
   */
  formatter: PropType<DatetimePickerViewFormatter>
  /**
   * 自定义列的格式化函数
   */
  columnFormatter: PropType<DatetimePickerViewColumnFormatter>
  /**
   * 最小日期
   */
  minDate: {
    type: NumberConstructor
    default: number
  }
  /**
   * 最大日期
   */
  maxDate: {
    type: NumberConstructor
    default: number
  }
  /**
   * 最小小时，time类型时生效
   */
  minHour: {
    type: NumberConstructor
    default: number
  }
  /**
   * 最大小时，time类型时生效
   */
  maxHour: {
    type: NumberConstructor
    default: number
  }
  /**
   * 最小分钟，time类型时生效
   */
  minMinute: {
    type: NumberConstructor
    default: number
  }
  /**
   * 最大分钟，time类型时生效
   */
  maxMinute: {
    type: NumberConstructor
    default: number
  }
  /**
   * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件，1.2.25版本起提供，仅微信小程序和支付宝小程序支持。
   */
  immediateChange: {
    type: BooleanConstructor
    default: boolean
  }
  startSymbol: {
    type: BooleanConstructor
    default: boolean
  }
  customStyle: {
    type: PropType<string>
    default: string
  }
  customClass: {
    type: PropType<string>
    default: string
  }
}
export type DatetimePickerViewColumnType = 'year' | 'month' | 'date' | 'hour' | 'minute'
export type DatetimePickerViewOption = {
  label: string
  value: number
}
export type DatetimePickerViewFilter = (
  type: DatetimePickerViewColumnType,
  values: number[],
) => number[]
export type DatetimePickerViewFormatter = (type: string, value: string) => string
export type DatetimePickerViewColumnFormatter = (
  picker: DatetimePickerViewInstance,
) => DatetimePickerViewOption[][]
export type DatetimePickerViewProps = ExtractPropTypes<typeof datetimePickerViewProps>
export type DatetimePickerViewExpose = {
  updateColumns: () => DatetimePickerViewOption[][]
  setColumns: (columnList: DatetimePickerViewOption[][]) => void
  getSelects: () => Record<string, any> | Record<string, any>[] | undefined
  correctValue: (value: string | number) => string | number
  getPickerValue: (value: string | number, type: DateTimeType) => number[]
  getOriginColumns: () => {
    type: DatetimePickerViewColumnType
    values: number[]
  }[]
}
export type DatetimePickerViewInstance = ComponentPublicInstance<
  DatetimePickerViewProps,
  DatetimePickerViewExpose
>
