import { URI } from "../../../../../../base/common/uri.js";
import { ResolveError } from "@codingame/monaco-vscode-9a6d8b6c-ad4c-5ea3-9558-f43d6dc4c0ad-common/vscode/vs/workbench/contrib/chat/common/promptFileReferenceErrors";
import { IDisposable } from "../../../../../../base/common/lifecycle.js";
import { IRange, Range } from "../../../../../../editor/common/core/range.js";
export interface IResolveError {
    readonly originalError: ResolveError;
    readonly parentUri?: URI;
}
export interface ITopError extends IResolveError {
    readonly errorSubject: "root" | "child" | "indirect-child";
    readonly errorsCount: number;
    readonly localizedMessage: string;
}
interface IPromptReferenceBase extends IDisposable {
    readonly type: string;
    readonly subtype: string;
    readonly uri: URI;
    readonly range: Range;
    readonly linkRange: IRange | undefined;
    readonly text: string;
    readonly path: string;
    readonly isPromptFile: boolean;
    readonly resolveFailed: boolean | undefined;
    readonly errorCondition: ResolveError | undefined;
    readonly errors: readonly ResolveError[];
    readonly allErrors: readonly IResolveError[];
    readonly topError: ITopError | undefined;
    references: readonly IPromptReference[];
    allReferences: readonly IPromptReference[];
    allValidReferences: readonly IPromptReference[];
    settled(): Promise<this>;
    allSettled(): Promise<this>;
}
export interface IPromptFileReference extends IPromptReferenceBase {
    readonly type: "file";
    readonly subtype: "prompt" | "markdown";
}
export type IPromptReference = IPromptFileReference;
