import { HookHandler, HookHandlerProvider } from './types.js';
/**
 * Runner allows running a set of specific hook handlers for a given
 * event. You can grab the instance of the runner using the "hook.runner" method.
 *
 * ```ts
 * const hooks = new Hooks()
 *
 * await hooks.runner('saving').run()
 * ```
 */
export declare class Runner<HookArgs extends any[], CleanUpArgs extends any[]> {
    #private;
    action: string;
    /**
     * Find if cleanup is pending or not
     */
    get isCleanupPending(): boolean;
    constructor(action: string, hookHandlers?: Set<HookHandler<HookArgs, CleanUpArgs> | HookHandlerProvider<HookArgs, CleanUpArgs>>);
    /**
     * Ignore specific or all hook handlers. Calling this
     * method multiple times will result in overwriting
     * the existing state.
     */
    without(handlersToIgnore?: string[]): this;
    /**
     * Execute handlers
     */
    run(...data: HookArgs): Promise<void>;
    /**
     * Execute handlers in reverse order
     */
    runReverse(...data: HookArgs): Promise<void>;
    /**
     * Execute cleanup actions
     */
    cleanup(...data: CleanUpArgs): Promise<void>;
}
