import { Runner } from '../Runner';
import { HooksHandler } from '../Contracts';
/**
 * Exposes the API for registering hooks for a given lifecycle action.
 *
 * @example
 * const hooks = new Hooks()
 * hooks.add('onCreate', function () {
 *  doSomething
 * })
 */
export declare class Hooks {
    /**
     * Pre-resolved registered hooks
     */
    private hooks;
    /**
     * Add handler to the actions map
     */
    private addHandler;
    /**
     * Returns a map of registered hooks
     */
    all(): Map<string, Set<HooksHandler>>;
    /**
     * Returns true when a handler has already been registered
     */
    has(action: string, handler: HooksHandler): boolean;
    /**
     * Register handler for a given action
     */
    add(action: string, handler: HooksHandler): this;
    /**
     * Remove a pre-registered handler
     */
    remove(action: string, handler: HooksHandler): void;
    /**
     * Remove all handlers for a given action. If action is not
     * defined, then all actions are removed.
     */
    clear(action?: string): void;
    /**
     * Merge pre-resolved hooks from an existing
     * hooks instance
     */
    merge(hooks: Hooks): void;
    /**
     * Returns an instance of hooks runner. Optionally, a few hooks can be disabled.
     */
    runner(action: string, withoutHooks?: string[]): Runner;
}
