import type { App, RenderFunction } from 'vue'; import { VNode } from 'vue'; export interface SDOptions { classPrefix?: string; componentPrefix?: string; } export interface SDIconOptions { iconPrefix?: string; } export interface SDGlobalConfig { classPrefix?: string; } type UnionToIntersection = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never; export type BaseType = string | number; export type UnionType = BaseType | Record; export type Data = Record; export type RenderContent = string | RenderFunction; export type EmitFn = (event: T, ...args: any[]) => void; export type EmitFn2, Event extends keyof Options = keyof Options> = UnionToIntersection<{ [key in Event]: Options[key] extends (...args: infer Args) => any ? (event: key, ...args: Args) => void : (event: key, ...args: any[]) => void; }[Event]>; export type EmitType = T | T[]; export type SFCWithInstall> = T & D & { install: (app: App, opt?: SDOptions) => void; }; export type ClassName = string | Record | (string | Record)[]; export type FieldString = { [K in keyof T]?: string; }; export interface SlotChildren { value?: VNode[]; } export interface ValueData { value: string | number; label: string; closable?: boolean; [other: string]: any; } export type AnimationDuration = number | { enter: number; leave: number; }; export {};