import type { ComputedRef } from "vue"; /** Vue Emits 对象中允许的校验器形状 */ type EmitValidator = ((...arguments_: never[]) => unknown) | null; /** 事件名到可选参数校验器的内部映射 */ type EmitsOptions = Record; /** 从校验器中提取事件参数;无校验器时保留未知参数。 */ type EventArguments = Validator extends (...arguments_: infer Arguments) => unknown ? Arguments : unknown[]; /** 在类型层递归把 kebab-case 事件名转换为 PascalCase */ type PascalEventName = Value extends `${infer Head}-${infer Tail}` ? `${Capitalize}${PascalEventName}` : Capitalize; /** 把事件配置映射为 Vue `onXxx` 属性 */ export type EmitHandlers = { [Name in keyof Emits as Name extends string ? `on${PascalEventName}` : never]: (...arguments_: EventArguments) => void; }; /** * 构建响应式 Vue 事件处理器。 * * @param emits - Vue emits 配置对象 * @param emit - `setup` 上下文提供的 emit 函数 * @param ignoredEvents - 不需要向子组件透传的事件名 * @returns 随配置重新计算的事件处理器对象 */ export declare function useEmits(emits: Emits, emit: (...arguments_: never[]) => unknown, ignoredEvents?: readonly (keyof Emits)[]): ComputedRef>>; export {};