import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
import type { CalendarFormatter, CalendarTimeFilter, CalendarType } from '../types'
/**
 * 月份信息
 */
export interface MonthInfo {
  date: number
  height: number
}
export declare const monthPanelProps: {
  type: {
    type: PropType<CalendarType>
    required: true
  }
  value: {
    type: PropType<number | (number | null)[] | null>
    required: true
  }
  minDate: {
    type: NumberConstructor
    required: true
  }
  maxDate: {
    type: NumberConstructor
    required: true
  }
  firstDayOfWeek: {
    type: NumberConstructor
    required: true
  }
  formatter: PropType<CalendarFormatter>
  maxRange: NumberConstructor
  rangePrompt: StringConstructor
  allowSameDay: {
    type: BooleanConstructor
    default: boolean
  }
  showPanelTitle: {
    type: BooleanConstructor
    default: boolean
  }
  defaultTime: {
    type: PropType<Array<number[]>>
  }
  panelHeight: {
    type: NumberConstructor
    required: true
  }
  timeFilter: PropType<CalendarTimeFilter>
  hideSecond: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件，1.2.25版本起提供，仅微信小程序和支付宝小程序支持。
   */
  immediateChange: {
    type: BooleanConstructor
    default: boolean
  }
}
export type MonthPanelProps = ExtractPropTypes<typeof monthPanelProps>
export type MonthPanelTimeType = 'start' | 'end' | ''
export type MonthPanelExpose = {
  /**
   * 使当前日期或者选中日期滚动到可视区域
   */
  scrollIntoView: () => void
}
export type MonthPanelInstance = ComponentPublicInstance<MonthPanelProps, MonthPanelExpose>
