import { URI } from "../../../../../../base/common/uri.js";
import { PromptsType } from "../promptTypes.js";
import { PromptsStorage } from "../service/promptsService.js";
/**
 * File extension for the reusable prompt files.
 */
export declare const PROMPT_FILE_EXTENSION = ".prompt.md";
/**
 * File extension for the reusable instruction files.
 */
export declare const INSTRUCTION_FILE_EXTENSION = ".instructions.md";
/**
 * File extension for the modes files.
 */
export declare const LEGACY_MODE_FILE_EXTENSION = ".chatmode.md";
/**
 * File extension for the agent files.
 */
export declare const AGENT_FILE_EXTENSION = ".agent.md";
/**
 * Skill file name (case insensitive).
 */
export declare const SKILL_FILENAME = "SKILL.md";
/**
 * Regex for valid skill names: lowercase alphanumeric and hyphens only.
 */
export declare const VALID_SKILL_NAME_REGEX: RegExp;
/**
 * AGENT file name
 */
export declare const AGENT_MD_FILENAME = "AGENTS.md";
/**
 * Claude file name.
 */
export declare const CLAUDE_MD_FILENAME = "CLAUDE.md";
/**
 * Claude local file name.
 */
export declare const CLAUDE_LOCAL_MD_FILENAME = "CLAUDE.local.md";
/**
 * Claude configuration folder name.
 */
export declare const CLAUDE_CONFIG_FOLDER = ".claude";
/**
 * Copilot custom instructions file name.
 */
export declare const COPILOT_CUSTOM_INSTRUCTIONS_FILENAME = "copilot-instructions.md";
/**
 * GitHub configuration folder name.
 */
export declare const GITHUB_CONFIG_FOLDER = ".github";
/**
 * Default reusable prompt files source folder.
 */
export declare const PROMPT_DEFAULT_SOURCE_FOLDER = ".github/prompts";
/**
 * Default reusable instructions files source folder.
 */
export declare const INSTRUCTIONS_DEFAULT_SOURCE_FOLDER = ".github/instructions";
/**
 * Default modes source folder.
 */
export declare const LEGACY_MODE_DEFAULT_SOURCE_FOLDER = ".github/chatmodes";
/**
 * Agents folder.
 */
export declare const AGENTS_SOURCE_FOLDER = ".github/agents";
/**
 * Claude agents folder.
 */
export declare const CLAUDE_AGENTS_SOURCE_FOLDER = ".claude/agents";
/**
 * Copilot user agents folder.
 */
export declare const COPILOT_USER_AGENTS_SOURCE_FOLDER = "~/.copilot/agents";
/**
 * Claude rules folder.
 */
export declare const CLAUDE_RULES_SOURCE_FOLDER = ".claude/rules";
/**
 * Hooks folder.
 */
export declare const HOOKS_SOURCE_FOLDER = ".github/hooks";
/**
 * Tracks where prompt files originate from.
 */
export declare enum PromptFileSource {
    GitHubWorkspace = "github-workspace",
    CopilotPersonal = "copilot-personal",
    ClaudePersonal = "claude-personal",
    ClaudeWorkspace = "claude-workspace",
    ClaudeWorkspaceLocal = "claude-workspace-local",
    AgentsWorkspace = "agents-workspace",
    AgentsPersonal = "agents-personal",
    ConfigWorkspace = "config-workspace",
    ConfigPersonal = "config-personal",
    ExtensionContribution = "extension-contribution",
    ExtensionAPI = "extension-api",
    Plugin = "plugin",
    Internal = "internal"
}
/**
 * Prompt source folder path with source and storage type.
 */
export interface IPromptSourceFolder {
    readonly path: string;
    readonly source: PromptFileSource;
    readonly storage: PromptsStorage;
}
/**
 * Resolved prompt folder with source and storage type.
 */
export interface IResolvedPromptSourceFolder {
    readonly uri: URI;
    readonly parent: URI;
    readonly filePattern: string | undefined;
    readonly source: PromptFileSource;
    readonly storage: PromptsStorage;
    /**
     * The original path string before resolution (e.g., '~/.copilot/agents' or '.github/agents').
     * Used for display purposes.
     */
    readonly displayPath?: string;
    /**
     * Whether this is a default location (vs user-configured).
     */
    readonly isDefault?: boolean;
}
/**
 * Resolved prompt markdown file with source and storage type.
 */
export interface IResolvedPromptFile {
    readonly fileUri: URI;
    readonly source: PromptFileSource;
    readonly storage: PromptsStorage;
}
/**
 * All default skill source folders (both workspace and user home).
 */
export declare const DEFAULT_SKILL_SOURCE_FOLDERS: readonly IPromptSourceFolder[];
/**
 * Default instructions source folders.
 */
export declare const DEFAULT_INSTRUCTIONS_SOURCE_FOLDERS: readonly IPromptSourceFolder[];
/**
 * Default prompt source folders.
 */
export declare const DEFAULT_PROMPT_SOURCE_FOLDERS: readonly IPromptSourceFolder[];
/**
 * Default agent source folders.
 */
export declare const DEFAULT_AGENT_SOURCE_FOLDERS: readonly IPromptSourceFolder[];
/**
 * Default hook file paths.
 * Entries can be either a directory or a specific file path (.json)
 */
export declare const DEFAULT_HOOK_FILE_PATHS: readonly IPromptSourceFolder[];
/**
 * Helper function to check if a file is directly in the .claude/agents/ folder.
 */
export declare function isInClaudeAgentsFolder(fileUri: URI): boolean;
/**
 * Helper function to check if a file is directly in the ~/.copilot/agents/ folder.
 */
export declare function isInCopilotAgentsFolder(fileUri: URI): boolean;
/**
 * Helper function to check if a file is inside the .claude/rules/ folder (including subfolders).
 * Claude rules files (.md) in this folder are treated as instruction files.
 */
export declare function isInClaudeRulesFolder(fileUri: URI): boolean;
/**
 * Gets the prompt file type from the provided path.
 *
 * Note: This function assumes the URI is already known to be a prompt file
 * (e.g., from a configured prompt source folder). It does not validate that
 * arbitrary URIs are prompt files - for example, any .json file will return
 * PromptsType.hook regardless of its location.
 */
export declare function getPromptFileType(fileUri: URI): PromptsType | undefined;
/**
 * Check if provided URI points to a file that with prompt file extension.
 */
export declare function isPromptOrInstructionsFile(fileUri: URI): boolean;
export declare function getPromptFileExtension(type: PromptsType): string;
export declare function getPromptFileDefaultLocations(type: PromptsType): readonly IPromptSourceFolder[];
export declare function getSkillFolderName(fileUri: URI): string;
/**
 * Gets clean prompt name without file extension.
 */
export declare function getCleanPromptName(fileUri: URI): string;
