import { CancellationToken } from "../../../../../../base/common/cancellation.js";
import { Event } from "../../../../../../base/common/event.js";
import { IDisposable } from "../../../../../../base/common/lifecycle.js";
import { ResourceSet } from "../../../../../../base/common/map.js";
import { URI } from "../../../../../../base/common/uri.js";
import { ITextModel } from "../../../../../../editor/common/model.js";
import { IExtensionDescription } from "../../../../../../platform/extensions/common/extensions.js";
import { ParsedPromptFile } from "@codingame/monaco-vscode-8d4ef243-d8c1-540d-9f11-38df46f54c9f-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptFileParser";
import { PromptsType } from "@codingame/monaco-vscode-8d4ef243-d8c1-540d-9f11-38df46f54c9f-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes";
import { IPromptPath, PromptsStorage, IChatPromptSlashCommand, ICustomAgent } from "@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService";
/**
* Provides prompt services.
*/
export declare const IPromptsService: import("../../../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier<IPromptsService>;
/**
* Provides prompt services.
*/
export interface IPromptsService extends IDisposable {
    readonly _serviceBrand: undefined;
    /**
    * The parsed prompt file for the provided text model.
    * @param textModel Returns the parsed prompt file.
    */
    getParsedPromptFile(textModel: ITextModel): ParsedPromptFile;
    /**
    * List all available prompt files.
    */
    listPromptFiles(type: PromptsType, token: CancellationToken): Promise<readonly IPromptPath[]>;
    /**
    * List all available prompt files.
    */
    listPromptFilesForStorage(type: PromptsType, storage: PromptsStorage, token: CancellationToken): Promise<readonly IPromptPath[]>;
    /**
    * Get a list of prompt source folders based on the provided prompt type.
    */
    getSourceFolders(type: PromptsType): readonly IPromptPath[];
    /**
    * Returns a prompt command if the command name.
    * Undefined is returned if the name does not look like a file name of a prompt file.
    */
    asPromptSlashCommand(name: string): IChatPromptSlashCommand | undefined;
    /**
    * Gets the prompt file for a slash command.
    */
    resolvePromptSlashCommand(data: IChatPromptSlashCommand, _token: CancellationToken): Promise<ParsedPromptFile | undefined>;
    /**
    * Gets the prompt file for a slash command from cache if available.
    * @param command - name of the prompt command without slash
    */
    resolvePromptSlashCommandFromCache(command: string): ParsedPromptFile | undefined;
    /**
    * Event that is triggered when slash command -> ParsedPromptFile cache is updated.
    * Event handler can call resolvePromptSlashCommandFromCache in case there is new value populated.
    */
    readonly onDidChangeParsedPromptFilesCache: Event<void>;
    /**
    * Returns a prompt command if the command name is valid.
    */
    findPromptSlashCommands(): Promise<IChatPromptSlashCommand[]>;
    /**
    * Returns the prompt command name for the given URI.
    */
    getPromptCommandName(uri: URI): Promise<string>;
    /**
    * Event that is triggered when the list of custom agents changes.
    */
    readonly onDidChangeCustomAgents: Event<void>;
    /**
    * Finds all available custom agents
    */
    getCustomAgents(token: CancellationToken): Promise<readonly ICustomAgent[]>;
    /**
    * Parses the provided URI
    * @param uris
    */
    parseNew(uri: URI, token: CancellationToken): Promise<ParsedPromptFile>;
    /**
    * Returns the prompt file type for the given URI.
    * @param resource the URI of the resource
    */
    getPromptFileType(resource: URI): PromptsType | undefined;
    /**
    * Internal: register a contributed file. Returns a disposable that removes the contribution.
    * Not intended for extension authors; used by contribution point handler.
    */
    registerContributedFile(type: PromptsType, name: string, description: string, uri: URI, extension: IExtensionDescription): IDisposable;
    getPromptLocationLabel(promptPath: IPromptPath): string;
    /**
    * Gets list of all AGENTS.md files in the workspace.
    */
    findAgentMDsInWorkspace(token: CancellationToken): Promise<URI[]>;
    /**
    * Gets list of AGENTS.md files.
    * @param includeNested Whether to include AGENTS.md files from subfolders, or only from the root.
    */
    listAgentMDs(token: CancellationToken, includeNested: boolean): Promise<URI[]>;
    /**
    * Gets list of .github/copilot-instructions.md files.
    */
    listCopilotInstructionsMDs(token: CancellationToken): Promise<URI[]>;
    /**
    * For a chat mode file URI, return the name of the agent file that it should use.
    * @param oldURI
    */
    getAgentFileURIFromModeFile(oldURI: URI): URI | undefined;
    /**
    * Returns the list of disabled prompt file URIs for a given type. By default no prompt files are disabled.
    */
    getDisabledPromptFiles(type: PromptsType): ResourceSet;
    /**
    * Persists the set of disabled prompt file URIs for the given type.
    */
    setDisabledPromptFiles(type: PromptsType, uris: ResourceSet): void;
}
