import { type CreateHookContext, type IHookContext } from './HookContext';
import type { IContainer } from '../container/IContainer';
export type MapHookContext = (context: IHookContext) => IHookContext;
export type HooksRunnerContext = {
    scope: IContainer;
    createContext?: CreateHookContext;
    mapContext?: MapHookContext;
    predicate?: (methodName: string) => boolean;
};
export declare class HooksRunner {
    private readonly key;
    constructor(key: string | symbol);
    execute(target: object, { scope, createContext, mapContext, predicate, }: HooksRunnerContext): void;
    executeAsync(target: object, { scope, createContext, mapContext, predicate, }: HooksRunnerContext): Promise<void[]>;
}
