export interface Props {
  
  data?: any[]

  
  mode?: 'multiple' | 'tags'

  
  modelValue?: string | number | string[] | number[]

  
  showFullPath?: boolean

  
  showSelectDom?: boolean

  
  size?: 'small' | 'middle' | 'large'

  
  borderType?: 'underline' | 'bordered' | 'none'

  
  placeholder?: string

  
  disabled?: boolean

  
  isView?: boolean

  
  errorMode?: 'default' | 'overlay'

  
  error?: boolean

  
  errorLabel?: string

  
  selectAttrs?: Record<any, any>

  
  width?: number | string

  
  poppverWidth?: number | string

  
  poppverHeight?: number | string

  
  poppverMaxHeight?: number | string

  
  filter?: boolean

  
  keyword?: string

  
  defaultExpandAll?: boolean

  
  checkStrictly?: boolean

  
  path?: string | string[]

  
  load?: (data: any, level: number) => Promise<any>

  
  search?: (text: string) => Promise<any>

  
  parentLinkChildrenStrictly?: boolean

  
  getGrandChildren?: (data?: any) => Promise<any>

  
  childLinkParentStrictly?: boolean

  
  showTextStrict?: boolean
}

export interface Emits {
  (e: 'update:modelValue', value: string | string[] | number | number[]): void

  (e: 'update:path', value: string | string[]): void

  (e: 'update:keyword', value: string): void

  
  (e: 'change', value: string | number | string[] | number[], options: any[]): void

  (e: 'focus', val: any): void

  (e: 'blur', val: any): void

  
  (e: 'visible-change', value: boolean): void
}
