/**
 * Built-in Harper Agent component (#626).
 *
 * `startOnMainThread` is invoked once on the main thread by `componentLoader`.
 * When `agent.enabled` is `false` (default) the component registers nothing
 * and returns immediately — opt-in keeps surprise LLM costs at bay. When
 * enabled, the six operations land on the operations API, the session table
 * is realized lazily on first use, and the loop runs in-process.
 *
 * The component intentionally avoids `handleApplication`: it has nothing
 * worker-thread-shaped to do. Operator-only tools (FS, schedule, fetch) are
 * inline; registry-backed tools (#615/#617/#618) will fold in via toolset.ts
 * once those land.
 */
interface StartOpts {
    server: {
        registerOperation: (def: {
            name: string;
            execute: (op: any) => any | Promise<any>;
        }) => void;
    };
    enabled?: boolean;
    provider?: string;
    model?: string;
    maxTurns?: number;
    maxCostUsd?: number;
    autoApprove?: boolean;
    allowDestructive?: boolean;
    user?: string;
    componentsScope?: string;
}
export declare function startOnMainThread(opts: StartOpts): Promise<void>;
/** Test-only: reset module state between specs. */
export declare function _resetForTests(): void;
export {};
