import type { CapabilityRequest, ToolApprovalClass, ToolHeartbeatPolicy, ToolInputValue, ToolReplayPolicy, ToolSummary } from "@best-agent/protocol";
import type { AnyToolDefinition, RuntimeToolDefinition, ToolDefinition, ToolExecutionContext, ToolRegistryOptions } from "./contracts.js";
export { toolInputSchema, typedToolInputSchema, wireInputSchema } from "./schema.js";
export { searchWorkspacePaths } from "./builtins/search-tools.js";
export type { AnyToolDefinition, NormalizedAskUserInput, RuntimeToolDefinition, ToolDefinition, ToolExecutionContext, ToolExecutionResultMetadata, ToolInputBase, ToolInputJsonSchema, ToolInputMode, ToolRegistryOptions, } from "./contracts.js";
export { coerceLooseStringInput, formatAskUserAnswers, normalizeAskUserInput, } from "./input-normalization.js";
export interface PreparedToolInvocation {
    capabilityRequests: CapabilityRequest[];
    displayInput: string;
    normalizedInput: ToolInputValue;
}
export interface DefaultToolRegistryOptions extends ToolRegistryOptions {
    excludeBuiltIns?: string[];
    extraTools?: ToolDefinition[];
    noBuiltIns?: boolean;
}
export declare class ToolRegistry {
    #private;
    constructor(tools: ToolDefinition[], options?: ToolRegistryOptions);
    constructor(tools: AnyToolDefinition[], options?: ToolRegistryOptions);
    prepare(toolName: string, input: ToolInputValue, context: ToolExecutionContext): Promise<PreparedToolInvocation>;
    getCapabilities(toolName: string, input: ToolInputValue, context: ToolExecutionContext): Promise<CapabilityRequest[]>;
    validateExactInput(toolName: string, input: ToolInputValue): void;
    list(toolNames?: string[]): ToolSummary[];
    summarize(toolName: string, input: ToolInputValue, output: string): string;
    entries(): RuntimeToolDefinition[];
    getDefinition(toolName: string): RuntimeToolDefinition;
    execute(toolName: string, input: ToolInputValue, context: ToolExecutionContext): Promise<string>;
    executeRaw(toolName: string, input: ToolInputValue, context: ToolExecutionContext): Promise<string>;
    executePrepared(toolName: string, normalizedInput: ToolInputValue, context: ToolExecutionContext): Promise<string>;
}
export declare function resolveToolReplayPolicy(tool: Pick<ToolDefinition, "executionClass" | "idempotent" | "replayPolicy">): ToolReplayPolicy;
export declare function resolveToolApprovalClass(tool: Pick<ToolDefinition, "approvalClass" | "executionClass">): ToolApprovalClass;
export declare function resolveToolConcurrencyGroup(tool: Pick<ToolDefinition, "concurrencyGroup" | "executionClass" | "name">): string;
export declare function resolveToolHeartbeatPolicy(tool: Pick<ToolDefinition, "heartbeatPolicy">): ToolHeartbeatPolicy;
export declare function createDefaultToolRegistry(options?: ToolDefinition[] | DefaultToolRegistryOptions): ToolRegistry;
//# sourceMappingURL=registry.d.ts.map