import { CancellationToken } from "../../../../base/common/cancellation.js";
import { Event } from "../../../../base/common/event.js";
import { IDisposable } from "../../../../base/common/lifecycle.js";
import { URI } from "../../../../base/common/uri.js";
import { IActiveCodeEditor, ICodeEditor } from "../../../../editor/browser/editorBrowser.js";
import { IRange } from "../../../../editor/common/core/range.js";
import { IValidEditOperation } from "../../../../editor/common/model.js";
import { Session, StashedSession } from "@codingame/monaco-vscode-a793b3ee-7ba9-5176-a019-30ec806fdd95-common/vscode/vs/workbench/contrib/inlineChat/browser/inlineChatSession";
import { IInlineChatSessionEvent, IInlineChatSessionEndEvent, ISessionKeyComputer, IInlineChatSession2 } from "@codingame/monaco-vscode-a793b3ee-7ba9-5176-a019-30ec806fdd95-common/vscode/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService";
export declare const IInlineChatSessionService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IInlineChatSessionService>;
export interface IInlineChatSessionService {
    _serviceBrand: undefined;
    readonly onWillStartSession: Event<IActiveCodeEditor>;
    readonly onDidMoveSession: Event<IInlineChatSessionEvent>;
    readonly onDidStashSession: Event<IInlineChatSessionEvent>;
    readonly onDidEndSession: Event<IInlineChatSessionEndEvent>;
    createSession(editor: IActiveCodeEditor, options: {
        wholeRange?: IRange;
        session?: Session;
        headless?: boolean;
    }, token: CancellationToken): Promise<Session | undefined>;
    moveSession(session: Session, newEditor: ICodeEditor): void;
    getCodeEditor(session: Session): ICodeEditor;
    getSession(editor: ICodeEditor, uri: URI): Session | undefined;
    releaseSession(session: Session): void;
    stashSession(session: Session, editor: ICodeEditor, undoCancelEdits: IValidEditOperation[]): StashedSession;
    registerSessionKeyComputer(scheme: string, value: ISessionKeyComputer): IDisposable;
    dispose(): void;
    createSession2(editor: ICodeEditor, uri: URI, token: CancellationToken): Promise<IInlineChatSession2>;
    getSession2(uri: URI): IInlineChatSession2 | undefined;
    getSession2(sessionId: string): IInlineChatSession2 | undefined;
    readonly onDidChangeSessions: Event<this>;
}
