import type { Agent } from '../agent';
import type { Handoff } from '../handoff';
import type { RunContext } from '../runContext';
import { type FunctionTool, type HostedMCPTool, type Tool } from '../tool';
import type * as protocol from '../types/protocol';
import { type FunctionToolLookupKey } from '../toolIdentity';
export declare function isDeferredHostedMcpTool(tool: Tool<any>): tool is HostedMCPTool<any>;
export declare function addLoadedToolNamesFromToolSearchOutput(toolSearchOutput: protocol.ToolSearchOutputItem, loadedToolNames: Set<string>): void;
/** Snapshots namespace discovery before configuration changes can alter its meaning. */
export declare function recordHostedMcpDiscovery(output: protocol.ToolSearchOutputItem, tools: Tool<any>[]): protocol.ToolSearchOutputItem;
/** Matches explicit MCP discovery or an unambiguous hosted namespace result. */
export declare function toolSearchOutputLoadsHostedMcpTool(output: protocol.ToolSearchOutputItem, serverLabel: string, toolName: unknown): boolean;
export declare function addHostedMcpToolsFromToolSearchOutput(toolSearchOutput: protocol.ToolSearchOutputItem, hostedMcpToolsByServerLabel: Map<string, HostedMCPTool<any>>, options?: {
    preserveExistingServerLabels?: Set<string>;
}): void;
export declare function validateClientToolSearchSupport(tools: Tool<any>[]): void;
export declare function resolveBuiltInClientToolSearchTools(paths: string[], tools: Tool<any>[]): Tool<any>[];
export declare function createClientToolSearchOutputFromTools(toolSearchCall: protocol.ToolSearchCallItem, tools: Tool<any>[]): protocol.ToolSearchOutputItem;
export declare function createBuiltInClientToolSearchOutput(toolSearchCall: protocol.ToolSearchCallItem, tools: Tool<any>[]): protocol.ToolSearchOutputItem;
export declare function executeCustomClientToolSearch<TContext>(args: {
    agent: Agent<TContext, any>;
    runContext: RunContext<TContext>;
    toolSearchCall: protocol.ToolSearchCallItem;
    toolSearchTool: Tool<TContext>;
    tools: Tool<TContext>[];
}): Promise<{
    output: protocol.ToolSearchOutputItem;
    runtimeTools: Tool<TContext>[];
    callbackRuntimeTools: Tool<TContext>[];
}>;
export declare function filterEnabledToolSearchRuntimeTools<TContext>(args: {
    agent: Agent<TContext, any>;
    runContext: RunContext<TContext>;
    runtimeTools: Tool<TContext>[];
}): Promise<Tool<TContext>[]>;
export declare function registerRuntimeToolSearchTools<TContext>(args: {
    availableTools: Tool<TContext>[];
    functionMap: Map<FunctionToolLookupKey, FunctionTool<TContext>>;
    handoffMap: Map<string, Handoff<any, any>>;
    mcpToolMap: Map<string, HostedMCPTool>;
    replaceableRuntimeToolKeys?: Set<string>;
    replacedRuntimeTools?: Tool<TContext>[];
    runtimeTools: Tool<TContext>[];
}): Tool<TContext>[];
export declare function getClientToolSearchHelper<TContext>(tools: Tool<TContext>[]): Tool<TContext> | undefined;
