import { Raw } from '@vscode/prompt-tsx';
import type { Diagnostic, InlineCompletionContext, Uri } from 'vscode';
import { ThemeIcon } from '../../../util/vs/base/common/themables';
import { SerializedLineEdit } from '../../../util/vs/editor/common/core/edits/lineEdit';
import { SerializedEdit } from './dataTypes/editUtils';
import { LanguageContextResponse, SerializedContextResponse, SerializedDiagnostic } from './dataTypes/languageContext';
import { RootedLineEdit } from './dataTypes/rootedLineEdit';
import { DebugRecorderBookmark } from './debugRecorderBookmark';
import { ISerializedNextEditRequest, StatelessNextEditRequest } from './statelessNextEditProvider';
import { HistoryContext } from './workspaceEditTracker/historyContextProvider';
export declare class InlineEditRequestLogContext {
    readonly filePath: string;
    readonly version: number;
    private _context;
    private static _id;
    readonly requestId: number;
    readonly time: number;
    /** Tweaks visibility of this log element in the log tree */
    protected _isVisible: boolean;
    get includeInLogTree(): boolean;
    constructor(filePath: string, version: number, _context: InlineCompletionContext | undefined);
    recordingBookmark: DebugRecorderBookmark | undefined;
    toLogDocument(): string;
    toMinimalLog(): string;
    private _statelessNextEditProviderId;
    setStatelessNextEditProviderId(id: string): void;
    private _nextEditRequest;
    setRequestInput(nextEditRequest: StatelessNextEditRequest): void;
    private _resultEdit;
    setResult(resultEdit: RootedLineEdit): void;
    protected _diagnosticsResultEdit: RootedLineEdit | undefined;
    setDiagnosticsResult(resultEdit: RootedLineEdit): void;
    private _nesTypePicked;
    setPickedNESType(nesTypePicked: 'llm' | 'diagnostics'): this;
    private _logContextOfCachedEdit;
    setIsCachedResult(logContextOfCachedEdit: InlineEditRequestLogContext): void;
    private _endpointInfo;
    setEndpointInfo(url: string, modelName: string): void;
    _prompt: string | undefined;
    get prompt(): string | undefined;
    setPrompt(prompt: string | Raw.ChatMessage[]): void;
    private _icon;
    getIcon(): ThemeIcon | undefined;
    setIsSkipped(): void;
    markAsNoSuggestions(): void;
    private error;
    setError(e: unknown): void;
    /**
     * Model Response
     */
    private response;
    setResponse(v: string): void;
    private fullResponsePromise;
    private fullResponse;
    setFullResponse(promise: Promise<string | undefined>): void;
    allPromisesResolved(): Promise<void>;
    private providerStartTime;
    setProviderStartTime(): void;
    private providerEndTime;
    setProviderEndTime(): void;
    private fetchStartTime;
    setFetchStartTime(): void;
    private fetchEndTime;
    setFetchEndTime(): void;
    /**
     * Each of edit suggestions from model
     */
    private _responseResults;
    get responseResults(): readonly unknown[] | undefined;
    setResponseResults(v: readonly unknown[]): void;
    getDebugName(): string;
    getMarkdownTitle(): string;
    protected _recentEdit: HistoryContext | undefined;
    setRecentEdit(edit: HistoryContext): void;
    private _logs;
    addLog(content: string): void;
    private _isAccepted;
    setAccepted(isAccepted: boolean): void;
    addListToLog(list: string[]): void;
    addCodeblockToLog(code: string, language?: string): void;
    private _fileDiagnostics;
    setFileDiagnostics(fileDiagnostics: [Uri, Diagnostic[]][]): void;
    private _getDiagnosticsForTrackedFiles;
    private _languageContext;
    setLanguageContext(langCtx: LanguageContextResponse): void;
    /**
     * Convert the current instance into a JSON format to enable serialization
     * @returns JSON representation of the current state
     */
    toJSON(): ISerializedInlineEditLogContext;
}
export interface INextEditProviderTest {
    recentWorkspaceEdits: {
        path: string;
        initialText: string;
        edit: SerializedEdit;
    }[];
    recentWorkspaceEditsActiveDocumentIdx?: number;
    statelessDocuments?: {
        initialText: string;
        edit: SerializedLineEdit;
    }[];
    statelessActiveDocumentIdx?: number;
    statelessLLMPrompt?: string;
    statelessLLMResponse?: string;
    statelessNextEdit?: SerializedLineEdit;
    nextEdit?: SerializedEdit;
}
export interface ISerializedInlineEditLogContext {
    requestId: number;
    time: number;
    filePath: string;
    version: number;
    statelessNextEditProviderId: string | undefined;
    nextEditRequest: ISerializedNextEditRequest | undefined;
    diagnosticsResultEdit: string | undefined;
    resultEdit: string | undefined;
    isCachedResult: boolean;
    prompt: string | undefined;
    error: string;
    response: string | undefined;
    responseResults: string;
    providerStartTime: number | undefined;
    providerEndTime: number | undefined;
    fetchStartTime: number | undefined;
    fetchEndTime: number | undefined;
    logs: string[];
    isAccepted: boolean | undefined;
    languageContext: SerializedContextResponse | undefined;
    diagnostics: SerializedDiagnostic[] | undefined;
}
//# sourceMappingURL=inlineEditLogContext.d.ts.map