import { ChatMode } from "../../constants.js";
import { URI } from "../../../../../../base/common/uri.js";
import { ResolveError } from "@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-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;
}
export interface IPromptMetadata {
    description?: string;
    tools?: readonly string[];
    mode?: ChatMode;
    applyTo?: 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;
    readonly references: readonly IPromptReference[];
    readonly allReferences: readonly IPromptReference[];
    readonly allValidReferences: readonly IPromptReference[];
    readonly allToolsMetadata: readonly string[] | null;
    readonly metadata: IPromptMetadata;
    settled(): Promise<this>;
    allSettled(): Promise<this>;
}
export interface IPromptFileReference extends IPromptReferenceBase {
    readonly type: "file";
    readonly subtype: "prompt" | "markdown";
}
export type IPromptReference = IPromptFileReference;
export {};
