import { Component, Slots, Slot, VNode, VNodeTypes, ComponentPublicInstance, Ref } from 'vue';
export declare const enum ShapeFlags {
    ELEMENT = 1,// 普通HTML元素
    FUNCTIONAL_COMPONENT = 2,//函数式组件
    STATEFUL_COMPONENT = 4,//有状态组件
    TEXT_CHILDREN = 8,//文本节点
    ARRAY_CHILDREN = 16,//数组子节点
    SLOTS_CHILDREN = 32,//插槽子节点
    TELEPORT = 64,// teleport组件
    SUSPENSE = 128,//suspense组件
    COMPONENT_SHOULD_KEEP_ALIVE = 256,//需要被keep-live的有状态组件
    COMPONENT_KEPT_ALIVE = 512,//已经被keep-alive的有状态组件
    COMPONENT = 6
}
/**
 * 判断vnode是不是element
 */
export declare const isElement: (vnode: VNode) => boolean;
/**
 * 判断vnode是不是文本节点
 * 包含注释节点
 */
export declare const isTextElement: (vnode: VNode) => boolean;
/**
 * 判断vnode是不是vue组件
 * @param vnode vnode节点
 * @param type 组件信息
 */
export declare function isComponent(vnode: VNode, _type?: VNodeTypes): _type is Component;
/**
 * 判断vnode是不是vue组件
 */
export declare const isSlotsChildren: (vnode: VNode, _children?: VNode["children"]) => _children is Slots;
/**
 * 判断vnode是不是slot的子元素
 */
export declare const isArrayChildren: (vn: VNode, _children?: VNode["children"]) => _children is VNode[];
/**
 * 判断val是不是vue组件实例
 */
export declare function isComponentPublicInstance(val: unknown): val is ComponentPublicInstance;
export declare function useSlotElement(componentName?: string): {
    setSlotChildren(nodes: VNode[] | undefined): void;
};
export declare function getFirstComponent(vn: VNode | VNode[]): VNode | null;
export declare const getFirstElement: (vn: VNode | VNode[]) => HTMLElement | null;
export declare function useSlotFirstElement(): {
    setSlot: (nodes: VNode[] | undefined) => void;
    firstElement: Ref<HTMLElement | null>;
};
export declare const resolveHtmlElement: (elRef: Ref<string | ComponentPublicInstance | HTMLElement | null | undefined> | HTMLElement | string | undefined | ComponentPublicInstance) => Promise<HTMLElement | null>;
export declare const getHtmlElement: (elRef: Ref<string | ComponentPublicInstance | HTMLElement | null>) => Promise<HTMLElement | null>;
export declare const isEmptySlot: (slot?: Slot) => boolean;
/**
 * 过滤插槽
 */
export declare function filterSlots(slots: Slots, slotNames: {
    [key: string]: string;
}): string[];
