import { Component, VNode, ComponentInternalInstance } from 'vue';
export type PublicChildT<T = {}> = {
    uid: number;
    getVNode: () => VNode;
} & T;
/**
 * 按模板顺序维护指定类型后代组件的排序
 *
 * @description
 * 在 Vue 中，当使用 Teleport 或动态注册组件时，子组件的渲染顺序可能与模板书写顺序不一致。
 * 该 Hook 通过监听 DOM 节点变化，确保子组件始终按模板中的书写顺序排列。
 *
 * @param vm - 父组件实例
 * @param childType - 需要排序的后代组件类型
 *
 * @note
 * - 排序操作会在下一帧执行
 * - SSR 环境下无法工作（依赖响应式变量触发重渲染）
 * - 适用于需要严格保持子组件顺序的场景
 */
export declare const useSortedTeleportChildren: <T extends PublicChildT>(vm: ComponentInternalInstance, childType: Component | string) => {
    children: import('vue').ShallowRef<T[], T[]>;
    childMap: Record<string, T>;
    addChild: (child: T) => void;
    OTeleportWrapper: import('vue').DefineComponent<{}, () => VNode<import('vue').RendererNode, import('vue').RendererElement, {
        [key: string]: any;
    }>[] | undefined, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
};
