import { ReadonlyOr } from '@myparcel-vfb/utils/src'; import { ResolvePromise } from '@myparcel-vfb/utils'; declare type HookCallback = (...args: any[]) => any; declare type HookNamesObject = { hookNames?: HookNames; }; declare type HookManagerConfiguration = HookNamesObject & Record; declare type CustomHookItem = { name: HN; callback: HookCallback; }; declare type HookNames = ReadonlyOr<(string | HN)[]>; declare type GetParameters = T extends (...args: any[]) => any ? Parameters : never; declare type GetReturnType = ResolvePromise any ? ReturnType : never>; declare class HookManager = HookManagerConfiguration> { availableHooks: HookNames; registeredHooks: CustomHookItem[]; constructor(config: HC); execute(name: N, ...args: GetParameters): Promise>; has(name: HN | string): boolean; register(name: HN | string, callback: HC[HN]): void; } declare const createHookManager: >(config: HC) => HookManager; declare const filterMatchingHooks: (hooks: ReadonlyOr, key: string) => boolean; export { CustomHookItem, HookCallback, HookManager, HookManagerConfiguration, HookNames, HookNamesObject, createHookManager, filterMatchingHooks };