import type * as vscode from "vscode";
import { CancellationToken } from "../../../base/common/cancellation.js";
import { IDisposable } from "../../../base/common/lifecycle.js";
import { IExtensionDescription } from "../../../platform/extensions/common/extensions.js";
import { IPreparedToolInvocation, IToolInvocation, IToolResult } from "../../contrib/chat/common/languageModelToolsService.js";
import { Dto, SerializableObjectWithBuffers } from "../../services/extensions/common/proxyIdentifier.js";
import { ExtHostLanguageModelToolsShape, IMainContext, IToolDataDto } from "./extHost.protocol.js";
import { ExtHostLanguageModels } from "./extHostLanguageModels.js";
export declare class ExtHostLanguageModelTools implements ExtHostLanguageModelToolsShape {
    private readonly _languageModels;
    private readonly _registeredTools;
    private readonly _proxy;
    private readonly _tokenCountFuncs;
    private readonly _allTools;
    constructor(mainContext: IMainContext, _languageModels: ExtHostLanguageModels);
    $countTokensForInvocation(callId: string, input: string, token: CancellationToken): Promise<number>;
    invokeTool(extension: IExtensionDescription, toolId: string, options: vscode.LanguageModelToolInvocationOptions<any>, token?: CancellationToken): Promise<vscode.LanguageModelToolResult>;
    $onDidChangeTools(tools: IToolDataDto[]): void;
    getTools(extension: IExtensionDescription): vscode.LanguageModelToolInformation[];
    $invokeTool(dto: IToolInvocation, token: CancellationToken): Promise<Dto<IToolResult> | SerializableObjectWithBuffers<Dto<IToolResult>>>;
    private getModel;
    $prepareToolInvocation(toolId: string, input: any, token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
    registerTool(extension: IExtensionDescription, id: string, tool: vscode.LanguageModelTool<any>): IDisposable;
}
