import type { IGeneralMetadata, PluginInfo, Plugin, HookMap } from './types';
export type HookNames<DATA extends IGeneralMetadata<HookMap>> = keyof NonNullable<DATA['__hooks']> & string;
export declare function getPluginsWithHooks<DATA extends IGeneralMetadata<HookMap>>(data: DATA, hookName: HookNames<DATA>): PluginInfo<unknown, DATA, Plugin<unknown, DATA>>[];
export type HookParams<DATA extends IGeneralMetadata<HookMap>, HOOK extends HookNames<DATA>> = NonNullable<NonNullable<DATA['__hooks']>[HOOK]> extends (pluginParams: never, ...args: infer U) => unknown ? U : never;
export declare function callHooks<DATA extends IGeneralMetadata<HookMap>, HOOKNAME extends HookNames<DATA>>(data: DATA, hookName: HOOKNAME, ...props: HookParams<DATA, HOOKNAME>): void;
//# sourceMappingURL=hooks.d.ts.map