import type { CompanyClient } from './company.js';
import type { MessageContext } from './types.js';
import type { FetchLike } from './util.js';
/** Cheap, capable, tool-calling model on OpenRouter. Override with --model / POPPY_AGENT_MODEL. */
export declare const DEFAULT_MODEL = "anthropic/claude-haiku-5.5";
export declare const OPENROUTER_URL = "https://openrouter.ai/api/v1/chat/completions";
export interface AskOptions {
    apiKey: string;
    model?: string | undefined;
    /** Hard cap on LLM turns. */
    maxSteps?: number | undefined;
    baseUrl?: string | undefined;
    fetch?: FetchLike | undefined;
    /** Transcript sink. */
    log: (line: string) => void;
    /** Lets MCP tools without `readOnlyHint` run. Otherwise `confirm` is asked, or they're refused. */
    allowWrites?: boolean | undefined;
    confirm?: ((question: string) => Promise<boolean>) | undefined;
    context?: MessageContext | undefined;
}
/**
 * "LLM mode": a tiny autonomous Personal Agent. It uses an OpenRouter model to work on `task`
 * through the Company's conversation endpoint and/or MCP tools, within `maxSteps`. It never
 * sees tokens: tools return only what the Company said.
 */
export declare function ask(company: CompanyClient, task: string, opts: AskOptions): Promise<{
    answer?: string | undefined;
    steps: number;
    conversationId?: string | undefined;
}>;
//# sourceMappingURL=llm.d.ts.map