import { TTree } from "@codingame/monaco-vscode-chat-service-override/vscode/vs/workbench/contrib/chat/common/promptSyntax/utils/treeUtils";
import { ChatMode } from "../../constants.js";
import { IPromptMetadata } from "../parsers/types.js";
import { URI } from "../../../../../../base/common/uri.js";
import { TextModelPromptParser } from "@codingame/monaco-vscode-chat-service-override/vscode/vs/workbench/contrib/chat/common/promptSyntax/parsers/textModelPromptParser";
export type TPromptsStorage = "local" | "user";
export type TPromptsType = "instructions" | "prompt";
export interface IPromptPath {
    readonly uri: URI;
    readonly storage: TPromptsStorage;
    readonly type: TPromptsType;
}
export type TSharedPrompt = Omit<TextModelPromptParser, "dispose">;
export interface IMetadata {
    readonly uri: URI;
    readonly metadata: IPromptMetadata;
    readonly children?: readonly TTree<IMetadata>[];
}
interface ICombinedAgentToolsMetadata {
    readonly tools: readonly string[] | undefined;
    readonly mode: ChatMode.Agent;
}
interface ICombinedNonAgentToolsMetadata {
    readonly tools: undefined;
    readonly mode?: ChatMode.Ask | ChatMode.Edit;
}
export type TCombinedToolsMetadata = ICombinedAgentToolsMetadata | ICombinedNonAgentToolsMetadata;
export interface IChatPromptSlashCommand {
    readonly command: string;
    readonly detail: string;
    readonly promptPath?: IPromptPath;
}
export {};
