/**
 * Slash Commands Manager
 *
 * Manages the registration, parsing, and execution of slash commands.
 * Supports both built-in commands and custom commands loaded from
 * `.codebuddy/commands/*.md` files in the project or home directory.
 */
export type { SlashCommand, SlashCommandArgument, SlashCommandResult } from './slash/types.js';
import type { SlashCommand, SlashCommandResult } from './slash/types.js';
/**
 * Slash Commands Manager - Inspired by Claude Code.
 *
 * Manages the registration, parsing, and execution of slash commands.
 * Supports both built-in commands and custom commands loaded from
 * `.codebuddy/commands/*.md` files in the project or home directory.
 */
export declare class SlashCommandManager {
    private commands;
    private workingDirectory;
    private commandsDirs;
    /**
     * Creates a new instance of SlashCommandManager.
     *
     * @param workingDirectory - The current working directory (defaults to process.cwd()).
     */
    constructor(workingDirectory?: string);
    /**
     * Loads the set of built-in slash commands.
     * These commands are defined in the builtin-commands module.
     */
    private loadBuiltinCommands;
    /**
     * Loads custom commands from `.codebuddy/commands/*.md` files.
     * Scans both the project directory and the user's home directory.
     */
    private loadCustomCommands;
    /**
     * Parses the content of a command markdown file.
     * Extracts YAML frontmatter for metadata and uses the rest as the prompt.
     *
     * @param content - The raw content of the markdown file.
     * @returns An object containing description, prompt, and optional arguments.
     */
    private parseCommandFile;
    /**
     * Retrieves all available slash commands.
     *
     * @returns An array of all registered commands.
     */
    getCommands(): SlashCommand[];
    /**
     * Retrieves a specific command by name.
     *
     * @param name - The name of the command to retrieve.
     * @returns The command definition or undefined if not found.
     */
    getCommand(name: string): SlashCommand | undefined;
    /**
     * Retrieves all registered commands.
     * Alias for `getCommands()`.
     *
     * @returns An array of all registered commands.
     */
    getAllCommands(): SlashCommand[];
    /**
     * Executes a slash command string.
     * Handles argument substitution and checks for command existence.
     *
     * @param input - The full command string (e.g., "/help", "/mode code").
     * @returns The result of the execution, including the prompt to send or an error.
     */
    execute(input: string): SlashCommandResult;
    /**
     * Formats a user-friendly list of all available commands.
     * Separates built-in commands from custom commands.
     *
     * @returns A formatted string ready for display.
     */
    formatCommandsList(): string;
    /**
     * Reloads all commands from disk.
     * Useful after adding or editing custom command files.
     */
    reload(): void;
    /**
     * Creates a new custom command template file.
     *
     * @param name - The name of the new command.
     * @param description - The description of the new command.
     * @returns The file path of the created command template.
     */
    createCommandTemplate(name: string, description: string): string;
}
/**
 * Gets the singleton instance of SlashCommandManager.
 *
 * @param workingDirectory - Optional working directory to initialize with.
 * @returns The singleton instance.
 */
export declare function getSlashCommandManager(workingDirectory?: string): SlashCommandManager;
/**
 * Resets the singleton instance of SlashCommandManager.
 * Primarily used for testing.
 */
export declare function resetSlashCommandManager(): void;
