import { CancellationToken } from "../../../../base/common/cancellation.js";
import { Event } from "../../../../base/common/event.js";
import { IDisposable } from "../../../../base/common/lifecycle.js";
import { IObservable } from "../../../../base/common/observable.js";
import { ThemeIcon } from "../../../../base/common/themables.js";
import { IVariableReference } from "@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/common/chatModes";
import { ChatRequestToolReferenceEntry } from "./chatVariableEntries.js";
import { IToolData, IToolImpl, IToolInvocation, CountTokensCallback, IToolResult, ToolSet, ToolDataSource, IToolAndToolSetEnablementMap } from "./languageModelToolsService.js";
export declare const ILanguageModelToolsService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<ILanguageModelToolsService>;
export interface ILanguageModelToolsService {
    _serviceBrand: undefined;
    readonly onDidChangeTools: Event<void>;
    readonly onDidPrepareToolCallBecomeUnresponsive: Event<{
        readonly sessionId: string;
        readonly toolData: IToolData;
    }>;
    registerToolData(toolData: IToolData): IDisposable;
    registerToolImplementation(id: string, tool: IToolImpl): IDisposable;
    registerTool(toolData: IToolData, tool: IToolImpl): IDisposable;
    getTools(): Iterable<Readonly<IToolData>>;
    getTool(id: string): IToolData | undefined;
    getToolByName(name: string, includeDisabled?: boolean): IToolData | undefined;
    invokeTool(invocation: IToolInvocation, countTokens: CountTokensCallback, token: CancellationToken): Promise<IToolResult>;
    cancelToolCallsForRequest(requestId: string): void;
    /** Flush any pending tool updates to the extension hosts. */
    flushToolUpdates(): void;
    readonly toolSets: IObservable<Iterable<ToolSet>>;
    getToolSet(id: string): ToolSet | undefined;
    getToolSetByName(name: string): ToolSet | undefined;
    createToolSet(source: ToolDataSource, id: string, referenceName: string, options?: {
        icon?: ThemeIcon;
        description?: string;
    }): ToolSet & IDisposable;
    getQualifiedToolNames(): Iterable<string>;
    getToolByQualifiedName(qualifiedName: string): IToolData | ToolSet | undefined;
    getQualifiedToolName(tool: IToolData, toolSet?: ToolSet): string;
    getDeprecatedQualifiedToolNames(): Map<string, string>;
    mapGithubToolName(githubToolName: string): string;
    toToolAndToolSetEnablementMap(qualifiedToolOrToolSetNames: readonly string[], target: string | undefined): IToolAndToolSetEnablementMap;
    toQualifiedToolNames(map: IToolAndToolSetEnablementMap): string[];
    toToolReferences(variableReferences: readonly IVariableReference[]): ChatRequestToolReferenceEntry[];
}
