import type { HookDispatcher } from './dispatcher.js';
import type { HookChain, HookDefinition, HookType, HooksConfig } from '@pellux/goodvibes-sdk/platform/hooks/types';
import type { ConfigManager } from '../config/manager.js';
export interface HookAuthoringAction {
    readonly kind: 'load' | 'save' | 'reload' | 'scaffold-hook' | 'scaffold-chain' | 'remove' | 'toggle' | 'simulate' | 'export' | 'import' | 'inspect';
    readonly target: string;
    readonly timestamp: number;
    readonly detail?: string;
}
export interface HookSimulationResult {
    readonly eventPath: string;
    readonly matchedHooks: readonly {
        readonly pattern: string;
        readonly name: string;
        readonly type: HookType;
        readonly contract: string;
    }[];
    readonly matchedChains: readonly {
        readonly name: string;
        readonly stepMatches: number;
    }[];
    readonly capturedAt: number;
}
export interface HookConfigInspection {
    readonly path: string;
    readonly hookCount: number;
    readonly chainCount: number;
    readonly patterns: readonly string[];
}
export interface HookWorkbenchOptions {
    readonly hookDispatcher: Pick<HookDispatcher, 'clear' | 'loadFromFile'>;
    readonly configManager: Pick<ConfigManager, 'get' | 'getWorkingDirectory'>;
    readonly hooksFilePathResolver?: () => string;
}
export declare class HookWorkbench {
    private readonly hookDispatcher;
    private readonly hooksFilePathResolver;
    private managedConfig;
    private recentActions;
    private lastSimulation;
    private lastLoadedPath;
    constructor(hookDispatcher: Pick<HookDispatcher, 'clear' | 'loadFromFile'>, hooksFilePathResolver: () => string);
    getHooksFilePath(): string;
    getManagedConfig(): HooksConfig;
    listManagedHooks(): Array<{
        pattern: string;
        hook: HookDefinition;
    }>;
    listManagedChains(): HookChain[];
    listRecentActions(limit?: number): HookAuthoringAction[];
    getLastSimulation(): HookSimulationResult | null;
    private recordAction;
    loadManagedConfig(path?: string): HooksConfig;
    saveManagedConfig(path?: string): Promise<void>;
    loadAndApplyManagedHooks(path?: string): Promise<void>;
    scaffoldHook(name: string, match: string, type: HookType): HookDefinition;
    scaffoldChain(name: string, matches: readonly string[]): HookChain;
    removeManagedEntry(name: string): boolean;
    toggleManagedHook(name: string, enabled: boolean): boolean;
    exportManagedConfig(path: string): Promise<string>;
    inspectManagedConfig(path: string): HookConfigInspection;
    importManagedConfig(path: string, strategy?: 'merge' | 'replace'): HooksConfig;
    simulate(eventPath: string, payload?: Record<string, unknown>): HookSimulationResult;
    clear(): void;
}
export declare function createHookWorkbench(options: HookWorkbenchOptions): HookWorkbench;
//# sourceMappingURL=workbench.d.ts.map