import type { AgentTool, AgentToolContext, AgentToolResult, AgentToolUpdateCallback } from "@oh-my-pi/pi-agent-core";
import type { Component } from "@oh-my-pi/pi-tui";
import type { RenderResultOptions } from "../extensibility/custom-tools/types.js";
import type { Theme } from "../modes/theme/theme.js";
import { type DiscoverableTool } from "../tool-discovery/tool-index.js";
import type { ToolSession } from "./index.js";
declare const searchToolBm25Schema: import("arktype/internal/variants/object.ts").ObjectType<{
    query: string;
    limit?: number | undefined;
}, {}>;
type SearchToolBm25Params = typeof searchToolBm25Schema.infer;
interface SearchToolBm25Match {
    name: string;
    label: string;
    description: string;
    server_name?: string;
    mcp_tool_name?: string;
    schema_keys: string[];
    score: number;
}
export interface SearchToolBm25Details {
    query: string;
    limit: number;
    total_tools: number;
    activated_tools: string[];
    active_selected_tools: string[];
    tools: SearchToolBm25Match[];
}
export declare function renderSearchToolBm25Description(discoverableTools?: DiscoverableTool[]): string;
/**
 * SearchToolsTool — wire name `search_tool_bm25` (preserved for persisted session back-compat).
 *
 * When tools.discoveryMode === "all", this covers both MCP tools and built-in discoverable tools.
 * When tools.discoveryMode === "mcp-only" or mcp.discoveryMode === true, only MCP tools are searched.
 */
export declare class SearchToolBm25Tool implements AgentTool<typeof searchToolBm25Schema, SearchToolBm25Details> {
    private readonly session;
    readonly name = "search_tool_bm25";
    readonly approval: "read";
    readonly label = "SearchTools";
    readonly loadMode = "essential";
    get description(): string;
    readonly parameters: import("arktype/internal/variants/object.ts").ObjectType<{
        query: string;
        limit?: number | undefined;
    }, {}>;
    readonly strict = true;
    constructor(session: ToolSession);
    static createIf(session: ToolSession): SearchToolBm25Tool | null;
    execute(_toolCallId: string, params: SearchToolBm25Params, _signal?: AbortSignal, _onUpdate?: AgentToolUpdateCallback<SearchToolBm25Details>, _context?: AgentToolContext): Promise<AgentToolResult<SearchToolBm25Details>>;
}
export declare const searchToolBm25Renderer: {
    renderCall(args: SearchToolBm25Params, _options: RenderResultOptions, uiTheme: Theme): Component;
    renderResult(result: {
        content: Array<{
            type: string;
            text?: string;
        }>;
        details?: SearchToolBm25Details;
        isError?: boolean;
    }, options: RenderResultOptions, uiTheme: Theme): Component;
    mergeCallAndResult: boolean;
    inline: boolean;
};
export {};
