import { CancellationToken } from "../../../../base/common/cancellation.js";
import { Event } from "../../../../base/common/event.js";
import { IDisposable } from "../../../../base/common/lifecycle.js";
import { IProgress } from "../../../../platform/progress/common/progress.js";
import { IChatProgress, IChatFollowup } from "./chatService.js";
import { IChatSlashData, IChatSlashCallback } from "@codingame/monaco-vscode-chat-service-override/vscode/vs/workbench/contrib/chat/common/chatSlashCommands";
import { ChatAgentLocation, ChatMode } from "./constants.js";
import { IChatMessage } from "./languageModels.js";
export declare const IChatSlashCommandService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IChatSlashCommandService>;
export interface IChatSlashCommandService {
    _serviceBrand: undefined;
    readonly onDidChangeCommands: Event<void>;
    registerSlashCommand(data: IChatSlashData, command: IChatSlashCallback): IDisposable;
    executeCommand(id: string, prompt: string, progress: IProgress<IChatProgress>, history: IChatMessage[], location: ChatAgentLocation, token: CancellationToken): Promise<{
        followUp: IChatFollowup[];
    } | void>;
    getCommands(location: ChatAgentLocation, mode: ChatMode): Array<IChatSlashData>;
    hasCommand(id: string): boolean;
}
