import { CSSProperties, VNode } from 'vue';
export type StyleValue = string | CSSProperties | Array<StyleValue>;
export type Nullable<T> = T | null;
export type Recordable<T = any> = Record<string, T>;
export type ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>;
/**
 * 任意类型的异步函数
 */
type AnyPromiseFunction = (...arg: any[]) => PromiseLike<any>;
/**
 * 任意类型的普通函数
 */
type AnyNormalFunction = (...arg: any[]) => any;
/**
 * 任意类型的函数
 */
export type AnyFunction = AnyNormalFunction | AnyPromiseFunction;
export type Fn<T = any, R = T> = (...arg: T[]) => R;
export interface ComponentElRef<T extends HTMLElement = HTMLDivElement> {
    $el: T;
}
export type ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null;
export type EmitType = ReturnType<typeof defineEmits>;
type VNodeChildAtom = VNode | string | number | boolean | null | undefined | void;
export type VueNode = VNodeChildAtom | VNodeChildAtom[] | VNode;
export type LiteralUnion<T extends U, U> = T | (U & {
    zz_IGNORE_ME?: never;
});
export type RecursivePartial<T> = {
    [P in keyof T]?: T[P] extends object ? RecursivePartial<T[P]> : T[P];
};
export type Awaitable<T> = T | Promise<T>;
export {};
