import { 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/observable.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-9f229325-8261-585c-a552-16085958c680-common/vscode/vs/workbench/contrib/inlineChat/browser/inlineChatSession";
import { IInlineChatSessionEvent, IInlineChatSessionEndEvent, ISessionKeyComputer, IInlineChatSession2 } from "./inlineChatSessionService.js";
export declare const IInlineChatSessionService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IInlineChatSessionService>;
export interface IInlineChatSessionService {
    _serviceBrand: undefined;
    onWillStartSession: Event<IActiveCodeEditor>;
    onDidMoveSession: Event<IInlineChatSessionEvent>;
    onDidStashSession: Event<IInlineChatSessionEvent>;
    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;
    hideOnRequest: IObservable<boolean>;
    createSession2(editor: ICodeEditor, uri: URI, token: CancellationToken): Promise<IInlineChatSession2>;
    getSession2(uri: URI): IInlineChatSession2 | undefined;
    onDidChangeSessions: Event<this>;
}
