import { CancellationToken } from "../../../../base/common/cancellation.js";
import { ThemeIcon } from "../../../../base/common/themables.js";
import { URI } from "../../../../base/common/uri.js";
import { IRange } from "../../../../editor/common/core/range.js";
import { Location } from "../../../../editor/common/languages.js";
import { IChatModel } from "@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/common/chatModel";
import { IChatContentReference, IChatProgressMessage } from "./chatService.js";
export interface IChatVariableData {
    id: string;
    name: string;
    icon?: ThemeIcon;
    fullName?: string;
    description: string;
    modelDescription?: string;
    isSlow?: boolean;
    canTakeArgument?: boolean;
}
export type IChatRequestVariableValue = string | URI | Location | unknown | Uint8Array;
export type IChatVariableResolverProgress = IChatContentReference | IChatProgressMessage;
export interface IChatVariableResolver {
    (messageText: string, arg: string | undefined, model: IChatModel, progress: (part: IChatVariableResolverProgress) => void, token: CancellationToken): Promise<IChatRequestVariableValue | undefined>;
}
export interface IDynamicVariable {
    range: IRange;
    id: string;
    fullName?: string;
    icon?: ThemeIcon;
    prefix?: string;
    modelDescription?: string;
    isFile?: boolean;
    data: IChatRequestVariableValue;
}
