import { App } from '@vue/runtime-core'; export * from './business'; export type SFCWithInstall = T & { install: (app: App, ...options: any[]) => any; }; export type AnyObject = Record; export type AnyFn = any[], P = any> = (...args: T) => P; export type Nullable = T | null | undefined; export type UndefinedAble = T | undefined; export type ArrayAble = T | T[]; export type Copy = { [K in keyof T]: T[K]; }; export type PropertyRequired = Copy<{ [KEY in keyof T as KEY extends K ? never : KEY]: T[KEY]; } & { [KEY in K]-?: T[KEY]; }>; export type TupleToUnion = T[number]; type UnionToIntersection = (T extends T ? (params: T) => any : never) extends (P: infer R) => any ? R : never; export type UnionToTuple = UnionToIntersection T : never> extends () => infer Return ? UnionToTuple, [Return, ...Result]> : Result; export type MaybeString = T | `${T}`; export type GetFn = T extends (...args: any[]) => any ? T : never; export type NumberRange = U['length'] extends End ? [...Result, U['length']] : U['length'] extends From ? NumberRange : Flag extends true ? NumberRange : NumberRange; export type ConstructorParams = T extends new (...args: infer P) => any ? P : never; export type DeepPartial = { [P in keyof T]?: T[P] extends Array ? Array> : T[P] extends ReadonlyArray ? ReadonlyArray> : DeepPartial; };