import type { ToolCall } from '../types/index.js';
/**
 * Strip  tags from content (some models output thinking that shouldn't be shown)
 */
export declare function stripThinkTags(content: string): string;
/**
 * Result of parsing tool calls from content
 */
type ParseResult = {
    success: true;
    toolCalls: ToolCall[];
    cleanedContent: string;
} | {
    success: false;
    error: string;
    examples: string;
};
/**
 * Strips XML- and JSON-shaped tool call text from content. Used on the native
 * path when the model emits tool calls via the SDK protocol AND echoes the
 * same call back as text in the assistant message ("Ghost Echo").
 *
 * Caller is expected to gate this on `toolCalls.length > 0` so legitimate
 * prose discussing tool call shapes doesn't get silently erased on turns
 * where the model never actually called a tool.
 */
export declare function stripEmbeddedToolCallText(content: unknown): string;
/**
 * Parses XML tool calls from content (used for non-tool-calling models).
 * Falls back to JSON parsing for open-weights models that revert to JSON-shaped
 * tool calls under reasoning pressure. Only runs on the XML fallback path when
 * native tool calling is disabled.
 * Type-preserving: Accepts unknown type, converts to string for processing.
 */
export declare function parseToolCalls(content: unknown): ParseResult;
export {};
//# sourceMappingURL=tool-parser.d.ts.map