import { type FormItemRule } from '../wd-form/types'
import type { CalendarType } from '../wd-calendar-view/types'
declare const _default: __VLS_WithTemplateSlots<
  import('vue').DefineComponent<
    {
      modelValue: {
        type: import('vue').PropType<number | number[] | null>
        required: true
      }
      type: {
        type: import('vue').PropType<CalendarType>
        default: CalendarType
      }
      minDate: {
        type: NumberConstructor
        default: number
      }
      maxDate: {
        type: NumberConstructor
        default: number
      }
      firstDayOfWeek: {
        type: NumberConstructor
        default: number
      }
      formatter: import('vue').PropType<import('../wd-calendar-view/types').CalendarFormatter>
      maxRange: NumberConstructor
      rangePrompt: StringConstructor
      allowSameDay: {
        type: BooleanConstructor
        default: boolean
      }
      defaultTime: {
        type: import('vue').PropType<string | string[]>
      }
      timeFilter: import('vue').PropType<import('../wd-calendar-view/types').CalendarTimeFilter>
      hideSecond: {
        type: BooleanConstructor
        default: boolean
      }
      label: StringConstructor
      labelWidth: StringConstructor
      useLabelSlot: {
        type: BooleanConstructor
        default: boolean
      }
      useDefaultSlot: {
        type: BooleanConstructor
        default: boolean
      }
      disabled: {
        type: BooleanConstructor
        default: boolean
      }
      readonly: {
        type: BooleanConstructor
        default: boolean
      }
      placeholder: StringConstructor
      title: StringConstructor
      alignRight: {
        type: BooleanConstructor
        default: boolean
      }
      error: {
        type: BooleanConstructor
        default: boolean
      }
      required: {
        type: BooleanConstructor
        default: boolean
      }
      size: StringConstructor
      center: {
        type: BooleanConstructor
        default: boolean
      }
      closeOnClickModal: {
        type: BooleanConstructor
        default: boolean
      }
      zIndex: {
        type: NumberConstructor
        default: number
      }
      showConfirm: {
        type: BooleanConstructor
        default: boolean
      }
      confirmText: StringConstructor
      displayFormat: import('vue').PropType<import('./types').CalendarDisplayFormat>
      innerDisplayFormat: import('vue').PropType<import('./types').CalendarInnerDisplayFormat>
      ellipsis: {
        type: BooleanConstructor
        default: boolean
      }
      showTypeSwitch: {
        type: BooleanConstructor
        default: boolean
      }
      shortcuts: {
        type: import('vue').PropType<Record<string, any>[]>
        default: () => never[]
      }
      onShortcutsClick: import('vue').PropType<import('./types').CalendarOnShortcutsClick>
      safeAreaInsetBottom: {
        type: BooleanConstructor
        default: boolean
      }
      beforeConfirm: import('vue').PropType<import('./types').CalendarBeforeConfirm>
      prop: StringConstructor
      rules: {
        type: import('vue').PropType<FormItemRule[]>
        default: () => never[]
      }
      customViewClass: {
        type: import('vue').PropType<string>
        default: string
      }
      customLabelClass: {
        type: import('vue').PropType<string>
        default: string
      }
      customValueClass: {
        type: import('vue').PropType<string>
        default: string
      }
      immediateChange: {
        type: BooleanConstructor
        default: boolean
      }
      initFun: import('vue').PropType<() => void>
      withCell: {
        type: BooleanConstructor
        default: boolean
      }
      customStyle: {
        type: import('vue').PropType<string>
        default: string
      }
      customClass: {
        type: import('vue').PropType<string>
        default: string
      }
    },
    {
      close: () => void
      open: () => void
    },
    unknown,
    {},
    {},
    import('vue').ComponentOptionsMixin,
    import('vue').ComponentOptionsMixin,
    {
      cancel: (...args: any[]) => void
      open: (...args: any[]) => void
      'update:modelValue': (...args: any[]) => void
      change: (...args: any[]) => void
      confirm: (...args: any[]) => void
    },
    string,
    import('vue').PublicProps,
    Readonly<
      import('vue').ExtractPropTypes<{
        modelValue: {
          type: import('vue').PropType<number | number[] | null>
          required: true
        }
        type: {
          type: import('vue').PropType<CalendarType>
          default: CalendarType
        }
        minDate: {
          type: NumberConstructor
          default: number
        }
        maxDate: {
          type: NumberConstructor
          default: number
        }
        firstDayOfWeek: {
          type: NumberConstructor
          default: number
        }
        formatter: import('vue').PropType<import('../wd-calendar-view/types').CalendarFormatter>
        maxRange: NumberConstructor
        rangePrompt: StringConstructor
        allowSameDay: {
          type: BooleanConstructor
          default: boolean
        }
        defaultTime: {
          type: import('vue').PropType<string | string[]>
        }
        timeFilter: import('vue').PropType<import('../wd-calendar-view/types').CalendarTimeFilter>
        hideSecond: {
          type: BooleanConstructor
          default: boolean
        }
        label: StringConstructor
        labelWidth: StringConstructor
        useLabelSlot: {
          type: BooleanConstructor
          default: boolean
        }
        useDefaultSlot: {
          type: BooleanConstructor
          default: boolean
        }
        disabled: {
          type: BooleanConstructor
          default: boolean
        }
        readonly: {
          type: BooleanConstructor
          default: boolean
        }
        placeholder: StringConstructor
        title: StringConstructor
        alignRight: {
          type: BooleanConstructor
          default: boolean
        }
        error: {
          type: BooleanConstructor
          default: boolean
        }
        required: {
          type: BooleanConstructor
          default: boolean
        }
        size: StringConstructor
        center: {
          type: BooleanConstructor
          default: boolean
        }
        closeOnClickModal: {
          type: BooleanConstructor
          default: boolean
        }
        zIndex: {
          type: NumberConstructor
          default: number
        }
        showConfirm: {
          type: BooleanConstructor
          default: boolean
        }
        confirmText: StringConstructor
        displayFormat: import('vue').PropType<import('./types').CalendarDisplayFormat>
        innerDisplayFormat: import('vue').PropType<import('./types').CalendarInnerDisplayFormat>
        ellipsis: {
          type: BooleanConstructor
          default: boolean
        }
        showTypeSwitch: {
          type: BooleanConstructor
          default: boolean
        }
        shortcuts: {
          type: import('vue').PropType<Record<string, any>[]>
          default: () => never[]
        }
        onShortcutsClick: import('vue').PropType<import('./types').CalendarOnShortcutsClick>
        safeAreaInsetBottom: {
          type: BooleanConstructor
          default: boolean
        }
        beforeConfirm: import('vue').PropType<import('./types').CalendarBeforeConfirm>
        prop: StringConstructor
        rules: {
          type: import('vue').PropType<FormItemRule[]>
          default: () => never[]
        }
        customViewClass: {
          type: import('vue').PropType<string>
          default: string
        }
        customLabelClass: {
          type: import('vue').PropType<string>
          default: string
        }
        customValueClass: {
          type: import('vue').PropType<string>
          default: string
        }
        immediateChange: {
          type: BooleanConstructor
          default: boolean
        }
        initFun: import('vue').PropType<() => void>
        withCell: {
          type: BooleanConstructor
          default: boolean
        }
        customStyle: {
          type: import('vue').PropType<string>
          default: string
        }
        customClass: {
          type: import('vue').PropType<string>
          default: string
        }
      }>
    > & {
      onCancel?: ((...args: any[]) => any) | undefined
      onOpen?: ((...args: any[]) => any) | undefined
      'onUpdate:modelValue'?: ((...args: any[]) => any) | undefined
      onChange?: ((...args: any[]) => any) | undefined
      onConfirm?: ((...args: any[]) => any) | undefined
    },
    {
      closeOnClickModal: boolean
      zIndex: number
      safeAreaInsetBottom: boolean
      customStyle: string
      customClass: string
      readonly: boolean
      type: CalendarType
      required: boolean
      error: boolean
      disabled: boolean
      minDate: number
      maxDate: number
      firstDayOfWeek: number
      allowSameDay: boolean
      hideSecond: boolean
      immediateChange: boolean
      rules: FormItemRule[]
      useLabelSlot: boolean
      useDefaultSlot: boolean
      alignRight: boolean
      center: boolean
      showConfirm: boolean
      ellipsis: boolean
      showTypeSwitch: boolean
      shortcuts: Record<string, any>[]
      customViewClass: string
      customLabelClass: string
      customValueClass: string
      withCell: boolean
    },
    {}
  >,
  {
    default?(_: {}): any
    label?(_: {}): any
  }
>
export default _default
type __VLS_WithTemplateSlots<T, S> = T & {
  new (): {
    $slots: S
  }
}
