import {
  type ComponentPublicInstance,
  type ExtractPropTypes,
  type InjectionKey,
  type PropType,
} from 'vue'
export type CollapseToggleAllOptions =
  | boolean
  | {
      expanded?: boolean
      skipDisabled?: boolean
    }
export type CollapseProvide = {
  props: Partial<CollapseProps>
  toggle: (name: string, expanded: boolean) => void
}
export declare const COLLAPSE_KEY: InjectionKey<CollapseProvide>
export declare const collapseProps: {
  /**
   * 查看更多模式下的插槽外部自定义样式
   */
  customMoreSlotClass: {
    type: PropType<string>
    default: string
  }
  text: {
    type: PropType<string>
    default: string
  }
  /**
   * 绑定值
   */
  modelValue: {
    type: PropType<string | Array<string> | boolean>
  }
  /**
   * 手风琴模式
   */
  accordion: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 查看更多的折叠面板
   */
  viewmore: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 查看更多的自定义插槽使用标志
   */
  useMoreSlot: {
    type: BooleanConstructor
    default: boolean
  }
  /**
   * 查看更多的折叠面板，收起时的显示行数
   */
  lineNum: {
    type: NumberConstructor
    default: number
  }
  customStyle: {
    type: PropType<string>
    default: string
  }
  customClass: {
    type: PropType<string>
    default: string
  }
}
export type CollapseProps = ExtractPropTypes<typeof collapseProps>
export type CollapseExpose = {
  /**
   * 切换所有面板展开状态，传 true 为全部展开，false 为全部收起，不传参为全部切换
   * @param options 面板状态
   */
  toggleAll: (options?: boolean | CollapseToggleAllOptions) => void
}
export type CollapseInstance = ComponentPublicInstance<CollapseProps, CollapseExpose>
