import { CancellationToken } from "../../../../../../base/common/cancellation.js";
import { Event } from "../../../../../../base/common/event.js";
import { IDisposable } from "../../../../../../base/common/lifecycle.js";
import { URI } from "../../../../../../base/common/uri.js";
import { ITextModel } from "../../../../../../editor/common/model.js";
import { IExtensionDescription } from "../../../../../../platform/extensions/common/extensions.js";
import { PromptsType } from "@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes";
import { ParsedPromptFile } from "@codingame/monaco-vscode-chat-service-override/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/newPromptsParser";
import { IPromptPath, PromptsStorage, IChatPromptSlashCommand, ICustomChatMode } from "@codingame/monaco-vscode-chat-service-override/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>;
    /**
    * 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 chat modes changes.
    */
    readonly onDidChangeCustomChatModes: Event<void>;
    /**
    * Finds all available custom chat modes
    */
    getCustomChatModes(token: CancellationToken): Promise<readonly ICustomChatMode[]>;
    /**
    * 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;
    findAgentMDsInWorkspace(token: CancellationToken): Promise<URI[]>;
}
