/**
 * Bridge contract for `invoke_llm` — non-streaming LLM call dispatched to the
 * client-side `/api/llm/invoke` handler. Not a user-callable tool; the runtime
 * uses this for internal one-shot LLM jobs (e.g. follow-up suggestions).
 */
import type { AssistantMessage, ToolResultMessage, UserMessage } from '../../../ai/types.js';
import { type ApprovalRequirement, type HostToolRequest, type ToolContract } from '../../../contracts/host-tool.js';
export declare const INVOKE_LLM_KIND: "invokeLlm";
export type InvokeLlmKind = typeof INVOKE_LLM_KIND;
export type InvokeLlmMessage = UserMessage | AssistantMessage | ToolResultMessage;
export interface InvokeLlmToolSchema {
    readonly name: string;
    readonly description: string;
    readonly parameters: Record<string, unknown>;
}
export interface InvokeLlmToolChoice {
    readonly type: 'tool';
    readonly name: string;
}
export interface InvokeLlmParams {
    readonly model: string;
    readonly systemPrompt?: string;
    readonly messages: readonly InvokeLlmMessage[];
    readonly tools?: readonly InvokeLlmToolSchema[];
    readonly tool_choice?: InvokeLlmToolChoice;
    readonly effort_level?: 'low' | 'medium' | 'high';
    readonly thinking_type?: 'on' | 'off';
    readonly max_tokens?: number;
}
export interface InvokeLlmToolCall {
    readonly id: string;
    readonly name: string;
    readonly arguments: string;
}
export interface InvokeLlmDetails {
    readonly text?: string;
    readonly tool_calls?: readonly InvokeLlmToolCall[];
    readonly stop_reason?: string;
}
export type InvokeLlmRequest = HostToolRequest & {
    readonly kind: InvokeLlmKind;
    readonly params: InvokeLlmParams;
};
export declare const INVOKE_LLM_APPROVAL: ApprovalRequirement;
export declare const invokeLlmContract: ToolContract<InvokeLlmParams, InvokeLlmDetails>;
//# sourceMappingURL=contract.d.ts.map