export type AdapterName = 'claude' | 'gemini' | 'codex' | 'mock';
export interface InvokeOptions {
    provider?: AdapterName;
    /** Tier hint passed through to the underlying CLI (fast/smart/deep). */
    tier?: 'fast' | 'smart' | 'deep';
    /** Optional model override; provider-specific format. */
    model?: string;
    /** Total wall-clock cap on the spawned child. Default 300_000 (5min). */
    timeoutMs?: number;
    /** Working directory for the spawned CLI. Defaults to cwd. */
    cwd?: string;
    /** Extra env vars to inject. Inherits process.env. */
    env?: Record<string, string>;
    /**
     * Optional skill file path to pass to the host. Claude-cli accepts this
     * via the slash-command surface; other adapters may ignore.
     */
    skillFile?: string;
}
export interface InvokeResult {
    ok: boolean;
    /** Raw stdout text — caller passes through ResponseStructureExtractor. */
    text: string;
    /** Optional parsed structured payload (adapter-specific). */
    structured?: Record<string, unknown>;
    exitCode: number;
    durationMs: number;
    /** Adapter identifier that handled the call. */
    adapter: AdapterName;
    error?: string;
}
export interface HostAdapter {
    readonly name: AdapterName;
    /** Whether this adapter can actually run (binary on PATH, etc.). */
    isAvailable(): Promise<boolean>;
    /** Spawn the CLI with the prompt; capture stdout; return InvokeResult. */
    invoke(prompt: string, opts: InvokeOptions): Promise<InvokeResult>;
}
export declare const HostInvoker: {
    /** Manually register an adapter (used by tests). */
    register(adapter: HostAdapter): void;
    /** Invoke via the named provider, or auto-route via OPENLIFE_HOST_ADAPTER env. */
    invoke(prompt: string, opts?: InvokeOptions): Promise<InvokeResult>;
    /** Exposed for tests + diagnostics. */
    _listRegistered(): AdapterName[];
    _resetForTests(): void;
};
