export type HookEvent = "PreToolUse" | "PostToolUse" | "Notification" | "Stop" | "SessionStart" | "SessionEnd" | "PreEdit" | "PostEdit";
export interface Hook {
    event: HookEvent;
    command: string;
    pattern?: string;
    timeout?: number;
    enabled?: boolean;
}
export interface HookContext {
    event: HookEvent;
    toolName?: string;
    toolArgs?: Record<string, unknown>;
    toolResult?: {
        success: boolean;
        output?: string;
        error?: string;
    };
    sessionId?: string;
    message?: string;
    filePath?: string;
    timestamp: Date;
}
export interface HookResult {
    success: boolean;
    output?: string;
    error?: string;
    blocked?: boolean;
    modifiedArgs?: Record<string, unknown>;
}
export interface HooksConfig {
    hooks: Hook[];
}
export declare class HookManager {
    private hooks;
    private configPath;
    private globalConfigPath;
    private enabled;
    constructor();
    private loadHooks;
    reloadHooks(): void;
    setEnabled(enabled: boolean): void;
    isEnabled(): boolean;
    getHooks(): Hook[];
    getHooksForEvent(event: HookEvent): Hook[];
    addHook(hook: Hook): void;
    removeHook(index: number): boolean;
    private saveHooks;
    executeHooks(event: HookEvent, context: Partial<HookContext>): Promise<HookResult>;
    private executeHook;
    formatStatus(): string;
}
export declare function getHookManager(): HookManager;
