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 { PromptsType } from "@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes";
import { TSharedPrompt, IPromptPath, IChatPromptSlashCommand, IPromptParserResult, ICustomChatMode } from "./promptsService.js";
/**
* 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;
    /**
    * Get a prompt syntax parser for the provided text model.
    * See {@link TextModelPromptParser} for more info on the parser API.
    */
    getSyntaxParserFor(model: ITextModel): TSharedPrompt & {
        isDisposed: false;
    };
    /**
    * List all available prompt files.
    */
    listPromptFiles(type: PromptsType, 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<IPromptParserResult | undefined>;
    /**
    * Returns a prompt command if the command name is valid.
    */
    findPromptSlashCommands(): Promise<IChatPromptSlashCommand[]>;
    /**
    * 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
    */
    parse(uri: URI, type: PromptsType, token: CancellationToken): Promise<IPromptParserResult>;
    /**
    * Returns the prompt file type for the given URI.
    * @param resource the URI of the resource
    */
    getPromptFileType(resource: URI): PromptsType | undefined;
}
