import type { ExtractPropTypes, PropType } from 'vue'
export type PlacementType =
  | 'top'
  | 'top-start'
  | 'top-end'
  | 'bottom'
  | 'bottom-start'
  | 'bottom-end'
  | 'left'
  | 'left-start'
  | 'left-end'
  | 'right'
  | 'right-start'
  | 'right-end'
export type PopoverMode = 'menu' | 'normal'
export declare const popoverProps: {
  customArrow: {
    type: PropType<string>
    default: string
  }
  customPop: {
    type: PropType<string>
    default: string
  }
  /**
   * 是否显示 popover 箭头
   */
  visibleArrow: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 显示的内容，也可以通过 slot#content 传入
   */
  content: PropType<string | Record<string, any>[]>
  /**
   * 指定 popover 的放置位置：top / top-start / top-end / bottom / bottom-start / bottom-end / left / left-start / left-end / right / right-start / right-end
   */
  placement: {
    type: PropType<PlacementType>
    default: PlacementType
  }
  /**
   * 偏移量
   */
  offset: {
    type: NumberConstructor
    default: number
  }
  /**
   * 是否使用内容插槽
   */
  useContentSlot: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 是否禁用 popover
   */
  disabled: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 是否显示关闭按钮
   */
  showClose: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 控制 popover 的显示状态
   */
  modelValue: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 当前显示的模式，决定内容的展现形式，可选值：normal（普通模式）/ menu（菜单模式）
   */
  mode: {
    type: PropType<PopoverMode>
    default: PopoverMode
  }
  customStyle: {
    type: PropType<string>
    default: string
  }
  customClass: {
    type: PropType<string>
    default: string
  }
}
export type PopoverProps = ExtractPropTypes<typeof popoverProps>
export type PopoverExpose = {
  open: () => void
  close: () => void
}
