import { Disposable } from "../../../../../../base/common/lifecycle.js";
import { ThemeIcon } from "../../../../../../base/common/themables.js";
import { URI } from "../../../../../../base/common/uri.js";
import { ConfirmResult } from "../../../../../../platform/dialogs/common/dialogs.js";
import { IDialogService } from "../../../../../../platform/dialogs/common/dialogs.service.js";
import { IInstantiationService } from "../../../../../../platform/instantiation/common/instantiation.js";
import { EditorInputCapabilities, IEditorIdentifier, IEditorSerializer, IUntypedEditorInput, Verbosity } from "../../../../../common/editor.js";
import { EditorInput, IEditorCloseHandler } from "../../../../../common/editor/editorInput.js";
import { IChatService } from "../../../common/chatService/chatService.service.js";
import { IChatSessionsService } from "../../../common/chatSessionsService.service.js";
import { IChatEditingSession } from "../../../common/editing/chatEditingService.js";
import { IChatModel } from "../../../common/model/chatModel.js";
import { IClearEditingSessionConfirmationOptions } from "../../actions/chatActions.js";
import type { IChatEditorOptions } from "@codingame/monaco-vscode-chat-service-override/vscode/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor";
export declare class ChatEditorInput extends EditorInput implements IEditorCloseHandler {
    readonly resource: URI;
    readonly options: IChatEditorOptions;
    private readonly chatService;
    private readonly dialogService;
    private readonly chatSessionsService;
    private readonly instantiationService;
    static readonly TypeID: string;
    static readonly EditorID: string;
    private _sessionResource;
    /**
     * Get the uri of the session this editor input is associated with.
     *
     * This should be preferred over using `resource` directly, as it handles cases where a chat editor becomes a session
     */
    get sessionResource(): URI | undefined;
    private didTransferOutEditingSession;
    private cachedIcon;
    private readonly modelRef;
    private get model();
    static getNewEditorUri(): URI;
    constructor(resource: URI, options: IChatEditorOptions, chatService: IChatService, dialogService: IDialogService, chatSessionsService: IChatSessionsService, instantiationService: IInstantiationService);
    closeHandler: this;
    showConfirm(): boolean;
    transferOutEditingSession(): IChatEditingSession | undefined;
    confirm(editors: ReadonlyArray<IEditorIdentifier>): Promise<ConfirmResult>;
    get editorId(): string | undefined;
    get capabilities(): EditorInputCapabilities;
    copy(): EditorInput;
    matches(otherInput: EditorInput | IUntypedEditorInput): boolean;
    get typeId(): string;
    getName(): string;
    getTitle(verbosity?: Verbosity): string;
    private getSessionTypeDisplayName;
    getIcon(): ThemeIcon | URI | undefined;
    private resolveIcon;
    /**
     * Returns chat session type from a URI, or {@linkcode localChatSessionType} if not specified or cannot be determined.
     */
    getSessionType(): string;
    resolve(): Promise<ChatEditorModel | null>;
    private iconsEqual;
}
export declare class ChatEditorModel extends Disposable {
    readonly model: IChatModel;
    private _isResolved;
    constructor(model: IChatModel);
    resolve(): Promise<void>;
    isResolved(): boolean;
    isDisposed(): boolean;
}
export declare class ChatEditorInputSerializer implements IEditorSerializer {
    canSerialize(input: EditorInput): input is ChatEditorInput;
    serialize(input: EditorInput): string | undefined;
    deserialize(instantiationService: IInstantiationService, serializedEditor: string): EditorInput | undefined;
}
export declare function showClearEditingSessionConfirmation(model: IChatModel, dialogService: IDialogService, options?: IClearEditingSessionConfirmationOptions): Promise<boolean>;
/** Returns the number of files in the  model's modifications that need a prompt before saving */
export declare function shouldShowClearEditingSessionConfirmation(model: IChatModel, options?: IClearEditingSessionConfirmationOptions): number;
