import type { App } from "vue"; /** Vue 组件对象、函数组件或指令对象可接受的最小结构类型 */ export type VueInstallValue = object | ((...arguments_: never[]) => unknown); /** 为 Vue 组件或指令附加供 Vue 3 `app.use()` 调用的安装能力 */ export type Installable = Value & { /** * 把当前组件或指令安装到 Vue 3 App。 * @param app - Vue 3 App 实例 */ install: (app: App) => void; }; /** TSX 组件安装类型;与 {@link Installable} 保持同一运行时契约。 */ export type TSXWithInstall = Installable; /** * 为主组件附加 Vue 3 `app.use()` 安装能力。 * * @remarks 函数会直接为 `main` 定义附属组件属性和 `install`。所有组件名称、附属属性 * 冲突会在修改 `main` 前完成校验;安装到 App 时也会先预检全部全局名称,再统一注册。 * @param main - 具有非空 `name` 的组件 * @param extras - 同时注册并以可枚举属性挂到主组件的附属组件映射 * @returns 原始 `main` 引用,并附加类型化的 `install` 与 `extras` 属性。 * @throws `TypeError` 当组件缺少合法名称、已有 `install`、附属键或名称发生冲突。 * @throws `Error` 当 App 中同名位置已经注册其他组件。 */ export declare function withInstall
= Record>(main: Main, extras?: Extras): Installable
& Extras; /** * 为不需要单独注册的附属组件附加空安装函数。 * * @remarks 适用于只能作为主组件附属属性使用、但仍需满足 Vue Plugin 类型的组件。 * 函数直接修改并返回传入组件,不会向 Vue 3 App 注册内容。 * @param component - 尚未定义或继承 `install` 属性的组件 * @returns 原组件引用及无副作用的 `install` 方法 * @throws `TypeError` 当组件自身或原型链已经存在 `install`。 */ export declare function withNoopInstall(component: Value): TSXWithInstall; /** * 为 Vue 3 指令附加插件安装能力。 * * @remarks 函数直接修改并返回指令。安装时重复注册同一引用保持幂等,不会覆盖同名的 * 其他指令。名称只传给 `directive()`,不得包含 `v-` 前缀。 * @param directive - 尚未定义或继承 `install` 属性的 Vue 指令对象 * @param name - 非空、无空白且不以 `v-` 开头的全局指令名 * @returns 原指令引用及 Vue Plugin `install` 方法。 * @throws `TypeError` 当名称非法、指令已有 `install`,或安装目标无效。 * @throws `Error` 当 App 中同名位置已经注册其他指令。 */ export declare function withInstallDirective(directive: Value, name: string): Installable;