import type { CliAdapter } from '../adapters/cli/types.js';
export type DiscoveredSource = 'project-command' | 'user-command' | 'project-skill' | 'user-skill' | 'plugin-command' | 'plugin-skill';
export interface DiscoveredCommand {
    /** Invocation form, e.g. '/deploy' or '/myplugin:foo'. */
    name: string;
    /** First-line description pulled from frontmatter, when present. */
    description?: string;
    source: DiscoveredSource;
    /** Human-friendly origin (relative-ish path or plugin id) for display. */
    origin: string;
}
export type CommandDiscoveryAdapter = Pick<CliAdapter, 'claudeDataDir' | 'skillsDir' | 'pluginDir'>;
/**
 * Discover all filesystem-visible slash commands for a session's working dir.
 * Personal (`~/.claude`) + project (`<workingDir>/.claude`) + plugins, deduped
 * by (name, source) and sorted by name. Safe to call on any CLI: non-Claude
 * layouts simply yield nothing.
 */
export declare function discoverSlashCommands(workingDir: string): DiscoveredCommand[];
export declare function supportsFilesystemCommandDiscovery(adapter: CommandDiscoveryAdapter | undefined): boolean;
/**
 * Discover filesystem-visible commands for the concrete CLI adapter.
 * Claude-family adapters scan their data root plus project `.claude`; all
 * other adapters scan only the roots they explicitly advertise.
 */
export declare function discoverSlashCommandsForAdapter(workingDir: string, adapter: CommandDiscoveryAdapter): DiscoveredCommand[];
/**
 * Cheaply surface MCP *server* names from `<workingDir>/.mcp.json` (the standard
 * project-level MCP config). The actual `/mcp__<server>__<prompt>` commands need
 * a live handshake to enumerate and are out of scope here — this is just a hint.
 */
export declare function listMcpServerNames(workingDir: string): string[];
//# sourceMappingURL=command-discovery.d.ts.map