import { CancellationToken } from "../../../../../base/common/cancellation.js";
import { UriComponents } from "../../../../../base/common/uri.js";
import { IWorkspaceContextService } from "../../../../../platform/workspace/common/workspace.service.js";
import { IEditorGroupsService } from "../../../../services/editor/common/editorGroupsService.service.js";
import { ITextFileService } from "../../../../services/textfile/common/textfiles.service.js";
import { INotebookService } from "../../../notebook/common/notebookService.service.js";
import { ICodeMapperService } from "../chatCodeMapperService.service.js";
import { IChatService } from "../chatService.service.js";
import { ILanguageModelIgnoredFilesService } from "../ignoredFiles.service.js";
import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolResult } from "../languageModelToolsService.js";
import { IToolInputProcessor } from "./tools.js";
export declare const ExtensionEditToolId = "vscode_editFile";
export declare const InternalEditToolId = "vscode_editFile_internal";
export declare const EditToolData: IToolData;
export declare class EditTool implements IToolImpl {
    private readonly chatService;
    private readonly codeMapperService;
    private readonly workspaceContextService;
    private readonly ignoredFilesService;
    private readonly textFileService;
    private readonly notebookService;
    private readonly editorGroupsService;
    constructor(chatService: IChatService, codeMapperService: ICodeMapperService, workspaceContextService: IWorkspaceContextService, ignoredFilesService: ILanguageModelIgnoredFilesService, textFileService: ITextFileService, notebookService: INotebookService, editorGroupsService: IEditorGroupsService);
    invoke(invocation: IToolInvocation, countTokens: CountTokensCallback, token: CancellationToken): Promise<IToolResult>;
    prepareToolInvocation(parameters: any, token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
}
export interface EditToolParams {
    file: UriComponents;
    explanation: string;
    code: string;
}
export interface EditToolRawParams {
    filePath: string;
    explanation: string;
    code: string;
}
export declare class EditToolInputProcessor implements IToolInputProcessor {
    processInput(input: EditToolRawParams): EditToolParams;
}
