/**
 * Per-tool contract for `web_search` — host-mediated server call.
 *
 * `details.text` is model-facing markdown with numbered references.
 * `details.user_message` is UI-facing markdown with `{{citation-<id>}}` markers.
 * `details.citations` resolves those UI markers into source metadata.
 */
import { type HostToolRequest, type ToolContract, type ToolLlmOptionsBase } from '../../../contracts/host-tool.js';
export declare const WEB_SEARCH_KIND: "webSearch";
export type WebSearchKind = typeof WEB_SEARCH_KIND;
export interface WebSearchParams {
    readonly description: string;
    readonly query: string;
}
/** Citation entry resolved from a `{{citation-<id>}}` marker. */
export interface WebSearchCitationEntry {
    readonly id: string;
    readonly type: 'web';
    readonly title: string;
    readonly url: string;
    readonly cited_text: string;
}
export interface WebSearchDetails {
    readonly provider?: 'anthropic';
    readonly query?: string;
    /** Model-facing markdown returned to the LLM; must not contain `{{citation-...}}` markers. */
    readonly text?: string;
    /**
     * UI-facing markdown body carrying `{{citation-<id>}}` markers paired
     * against `citations`. This is a structural artifact of the citation
     * contract (validator enforces that markers resolve), not the canonical
     * failure-reason channel — for that, `HostToolResult.userMessage` is the
     * top-level field every tool uses. Other tools should not copy this
     * snake_case slot.
     */
    readonly user_message?: string;
    /** Keyed by the bare ID inside each marker. */
    readonly citations?: Record<string, WebSearchCitationEntry>;
}
export type WebSearchRequest = HostToolRequest & {
    readonly kind: WebSearchKind;
    readonly params: WebSearchParams;
};
/** Listing one-liner used by `get_tool_info`. */
export declare const WEB_SEARCH_TOOL_SUMMARY = "Search the web for current information (use liberally for up-to-date data)";
export declare const WEB_SEARCH_TOOL_DESCRIPTION: string;
export declare const WEB_SEARCH_DESCRIPTION_DESCRIPTION = "A short one-sentence summary of the search query starting with 'Searching for...' or 'Looking for...'";
export declare const WEB_SEARCH_QUERY_DESCRIPTION = "The search query to execute. Must be self-contained with all necessary context.";
export declare const webSearchContract: ToolContract<WebSearchParams, WebSearchDetails, ToolLlmOptionsBase>;
//# sourceMappingURL=contract.d.ts.map