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-2339d6ac-d6bb-53cd-95ee-81911735d1c7-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(chatSessionResource: URI): 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>;
    /**
    * Creates an editing session with state transferred from the provided session.
    */
    transferEditingSession(chatModel: ChatModel, session: IChatEditingSession): Promise<IChatEditingSession>;
    hasRelatedFilesProviders(): boolean;
    registerRelatedFilesProvider(handle: number, provider: IChatRelatedFilesProvider): IDisposable;
    getRelatedFiles(chatSessionResource: URI, prompt: string, files: URI[], token: CancellationToken): Promise<{
        group: string;
        files: IChatRelatedFile[];
    }[] | undefined>;
}
