import { CancellationToken } from "../../../../base/common/cancellation.js";
import { IDisposable } from "../../../../base/common/lifecycle.js";
import { IObservable } from "../../../../base/common/observable.js";
import { URI } from "../../../../base/common/uri.js";
import { IChatEditingSession, IChatRelatedFilesProvider, IChatRelatedFile } from "./chatEditingService.js";
import { ChatModel } from "@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel";
export declare const IChatEditingService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IChatEditingService>;
export interface IChatEditingService {
    _serviceBrand: undefined;
    startOrContinueGlobalEditingSession(chatModel: ChatModel): Promise<IChatEditingSession>;
    getEditingSession(chatSessionId: string): IChatEditingSession | undefined;
    /**
    * All editing sessions, sorted by recency, e.g the last created session comes first.
    */
    readonly editingSessionsObs: IObservable<readonly IChatEditingSession[]>;
    /**
    * Creates a new short lived editing session
    */
    createEditingSession(chatModel: ChatModel): Promise<IChatEditingSession>;
    hasRelatedFilesProviders(): boolean;
    registerRelatedFilesProvider(handle: number, provider: IChatRelatedFilesProvider): IDisposable;
    getRelatedFiles(chatSessionId: string, prompt: string, files: URI[], token: CancellationToken): Promise<{
        group: string;
        files: IChatRelatedFile[];
    }[] | undefined>;
}
