import { URI } from "../../../../../base/common/uri.js";
import { IDynamicVariable } from "../attachments/chatVariables.js";
import { IChatVariablesService } from "../attachments/chatVariables.service.js";
import { ChatAgentLocation, ChatModeKind } from "../constants.js";
import { IChatAgentAttachmentCapabilities, IChatAgentData } from "../participants/chatAgents.js";
import { IChatAgentService } from "../participants/chatAgents.service.js";
import { IChatSlashCommandService } from "../participants/chatSlashCommands.service.js";
import { IPromptsService } from "../promptSyntax/service/promptsService.service.js";
import { IToolAndToolSetEnablementMap } from "../tools/languageModelToolsService.js";
import { IParsedChatRequest } from "./chatParserTypes.js";
export interface IChatParserContext {
    /** Used only as a disambiguator, when the query references an agent that has a duplicate with the same name. */
    selectedAgent?: IChatAgentData;
    mode?: ChatModeKind;
    /** Parse as this agent, even when it does not appear in the query text */
    forcedAgent?: IChatAgentData;
    attachmentCapabilities?: IChatAgentAttachmentCapabilities;
}
export declare class ChatRequestParser {
    private readonly agentService;
    private readonly variableService;
    private readonly slashCommandService;
    private readonly promptsService;
    constructor(agentService: IChatAgentService, variableService: IChatVariablesService, slashCommandService: IChatSlashCommandService, promptsService: IPromptsService);
    parseChatRequest(sessionResource: URI, message: string, location?: ChatAgentLocation, context?: IChatParserContext): IParsedChatRequest;
    parseChatRequestWithReferences(references: ReadonlyArray<IDynamicVariable>, selectedToolAndToolSets: IToolAndToolSetEnablementMap, message: string, location?: ChatAgentLocation, context?: IChatParserContext): IParsedChatRequest;
    private tryToParseAgent;
    private tryToParseVariable;
    private tryToParseSlashCommand;
    private tryToParseDynamicVariable;
}
