import { TTree } from "@codingame/monaco-vscode-chat-service-override/vscode/vs/workbench/contrib/chat/common/promptSyntax/utils/treeUtils";
import { ChatMode } from "../../constants.js";
import { URI } from "../../../../../../base/common/uri.js";
import { TMetadata } from "@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase";
import { TextModelPromptParser } from "@codingame/monaco-vscode-chat-service-override/vscode/vs/workbench/contrib/chat/common/promptSyntax/parsers/textModelPromptParser";
import { PromptsType } from "@codingame/monaco-vscode-47472025-cc45-5680-86cd-09ceaba921a1-common/vscode/vs/platform/prompts/common/prompts";
export type TPromptsStorage = "local" | "user";
export interface IPromptPath {
    readonly uri: URI;
    readonly storage: TPromptsStorage;
    readonly type: PromptsType;
}
export type TSharedPrompt = Omit<TextModelPromptParser, "dispose">;
export interface IMetadata {
    readonly uri: URI;
    readonly metadata: TMetadata | null;
    readonly children?: readonly TTree<IMetadata | null>[];
}
export interface ICustomChatMode {
    readonly uri: URI;
    readonly name: string;
    readonly description?: string;
    readonly tools?: readonly string[];
    readonly body: string;
}
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 {};
