import type { Runner } from './runner.js'; /** * Exporting hooks runner as a type */ export { Runner }; /** * Shape of the cleanup handler */ export type CleanupHandler = (...args: Args) => void | Promise; /** * Shape of the hook handler */ export type HookHandler = (...args: Args) => void | CleanupHandler | Promise | Promise>; /** * Extracts args from a hook handler type */ export type ExtractHookHandlerArgs = Handler extends HookHandler ? [A, B] : never; /** * Hook represented as an object with handle method */ export type HookHandlerProvider = { name: string; handle(event: string, ...args: Args): void | CleanupHandler | Promise | Promise>; };