import { CancellationTokenSource, 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/observableInternal/index.js";
import { IChatEditingSession, IChatRelatedFilesProvider, IChatRelatedFile } from "./chatEditingService.js";
export declare const IChatEditingService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IChatEditingService>;
export interface IChatEditingService {
    _serviceBrand: undefined;
    readonly onDidCreateEditingSession: Event<IChatEditingSession>;
    readonly onDidChangeEditingSession: Event<void>;
    readonly currentEditingSessionObs: IObservable<IChatEditingSession | null>;
    readonly currentEditingSession: IChatEditingSession | null;
    readonly currentAutoApplyOperation: CancellationTokenSource | null;
    readonly editingSessionFileLimit: number;
    startOrContinueEditingSession(chatSessionId: string): Promise<IChatEditingSession>;
    getOrRestoreEditingSession(): Promise<IChatEditingSession | null>;
    hasRelatedFilesProviders(): boolean;
    registerRelatedFilesProvider(handle: number, provider: IChatRelatedFilesProvider): IDisposable;
    getRelatedFiles(chatSessionId: string, prompt: string, token: CancellationToken): Promise<{
        group: string;
        files: IChatRelatedFile[];
    }[] | undefined>;
}
