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 { IToolData, IToolImpl, IToolInvocation, CountTokensCallback, IToolResult, ToolSet, ToolDataSource } from "./languageModelToolsService.js";
export declare const ILanguageModelToolsService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<ILanguageModelToolsService>;
export interface ILanguageModelToolsService {
    _serviceBrand: undefined;
    onDidChangeTools: Event<void>;
    registerToolData(toolData: IToolData): IDisposable;
    registerToolImplementation(id: string, 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>;
    setToolAutoConfirmation(toolId: string, scope: "workspace" | "profile" | "memory", autoConfirm?: boolean): void;
    resetToolAutoConfirmation(): void;
    cancelToolCallsForRequest(requestId: string): void;
    toEnablementMap(toolOrToolSetNames: Iterable<string>): Record<string, boolean>;
    readonly toolSets: IObservable<Iterable<ToolSet>>;
    getToolSetByName(name: string): ToolSet | undefined;
    createToolSet(source: ToolDataSource, id: string, referenceName: string, options?: {
        icon?: ThemeIcon;
        description?: string;
    }): ToolSet & IDisposable;
}
