// copy from element-plus import type { CSSProperties, Plugin } from 'vue'; type OptionalKeys> = { [K in keyof T]: T extends Record ? never : K; }[keyof T]; type RequiredKeys> = Exclude>; type MonoArgEmitter = (evt: K, arg?: T[K]) => void; type BiArgEmitter = (evt: K, arg: T[K]) => void; export type EventEmitter> = MonoArgEmitter> & BiArgEmitter>; export type AnyFunction = (...args: any[]) => T; export type PartialReturnType unknown> = Partial>; export type SFCWithInstall = T & Plugin; export type Nullable = T | null; export type RefElement = Nullable; export type CustomizedHTMLElement = HTMLElement & T; export type Indexable = { [key: string]: T; }; export type Hash = Indexable; export type TimeoutHandle = ReturnType; export type ComponentSize = 'large' | 'medium' | 'small' | 'mini'; export type StyleValue = string | CSSProperties | Array; export type Mutable = { -readonly [P in keyof T]: T[P] };