/** Minimal Brain surface needed here — keeps this module decoupled from the
 *  heavy Brain implementation and trivially mockable in tests. */
export interface ThinkerBrain {
    think(systemPrompt: string, userMessage: string): Promise<string>;
}
/** Minimal memory surface (Phase 4). OmniMemory.search satisfies this.
 *  Returns formatted relevant memory, or '' when nothing/unavailable. */
export interface MemorySearcher {
    search(query: string): Promise<string>;
}
/** Execution feedback surface (Phase 6). CatalogPromotion satisfies this.
 *  Records the outcome and may auto-promote a proven draft agent. */
export interface ExecutionRecorder {
    recordExecution(agentId: string, success: boolean): void | Promise<void>;
}
export interface CatalogAgentDefinition {
    id: string;
    name: string;
    role: string;
    /** Full persona body (everything after the mirror front-matter). */
    body: string;
    sourcePath: string;
}
export interface CatalogAgentResult {
    ok: boolean;
    agentId: string;
    output?: string;
    error?: string;
}
export declare class CatalogAgentExecutor {
    private brain;
    private memory?;
    private recorder?;
    /** @param brain    LLM dispatcher (injected for testability).
     *  @param memory   optional memory searcher (Phase 4). When present, relevant
     *                  memory is retrieved for the task and injected as context.
     *  @param recorder optional execution recorder (Phase 6). When present, each
     *                  run's outcome is recorded and proven drafts auto-promote.
     *  Omit memory + recorder and the executor behaves exactly as Phase 1. */
    constructor(brain: ThinkerBrain, memory?: MemorySearcher | undefined, recorder?: ExecutionRecorder | undefined);
    /** Load a catalog agent's definition by id. Returns null if not found.
     *  Guards against path traversal — id is treated as a single dir name. */
    loadDefinition(id: string): CatalogAgentDefinition | null;
    /** Build the system prompt that makes the LLM behave as this agent. */
    buildSystemPrompt(def: CatalogAgentDefinition): string;
    /** Prepend relevant memory to the task when a memory searcher is wired.
     *  Fails open: any error or empty result leaves the task untouched. */
    private withMemory;
    /** Execute a task as the given catalog agent. */
    execute(id: string, task: string): Promise<CatalogAgentResult>;
    /** Best-effort feedback recording — never blocks or fails the execution. */
    private recordOutcome;
}
