/**
 * Prompt Manager - External Markdown Prompts System
 *
 * Inspired by mistral-vibe's approach of storing prompts in external files.
 * Allows users to customize system prompts without modifying code.
 *
 * Features:
 * - Load prompts from ~/.codebuddy/prompts/*.md
 * - Fall back to built-in prompts
 * - Compose prompts dynamically with optional sections
 * - Auto-select prompt complexity based on model alignment
 */
export interface PromptConfig {
    /** Prompt ID to load (e.g., 'default', 'minimal', 'security-expert') */
    promptId?: string;
    /** Include model information section */
    includeModelInfo?: boolean;
    /** Include OS/platform information */
    includeOsInfo?: boolean;
    /** Include project context (directory tree, git status) */
    includeProjectContext?: boolean;
    /** Include tool-specific prompts */
    includeToolPrompts?: boolean;
    /** Custom user instructions to append */
    userInstructions?: string;
    /** Current working directory */
    cwd?: string;
    /** Model name for context */
    modelName?: string;
    /** Available tools */
    tools?: string[];
    /** Include memory context */
    includeMemory?: boolean;
    /** Memory context content */
    memoryContext?: string;
}
export interface PromptSection {
    id: string;
    content: string;
    priority: number;
}
/**
 * Determine if a model is well-aligned and needs minimal prompting
 */
export declare function isWellAlignedModel(modelName: string): boolean;
/**
 * Determine if a model needs extra security instructions
 */
export declare function needsExtraSecurity(modelName: string): boolean;
/**
 * Auto-select the best prompt ID based on model
 */
export declare function autoSelectPromptId(modelName: string): string;
export declare class PromptManager {
    private userPromptsDir;
    private builtinPromptsDir;
    private cache;
    constructor();
    /**
     * Load a prompt by ID
     * Priority: user prompts > builtin prompts
     */
    loadPrompt(promptId: string): Promise<string>;
    /**
     * Get inline prompt for IDs without files
     */
    private getInlinePrompt;
    /**
     * Build a complete system prompt with dynamic sections
     */
    buildSystemPrompt(config?: PromptConfig): Promise<string>;
    /**
     * Build tool section based on available tools
     */
    private buildToolSection;
    /**
     * Build project context section
     */
    private buildProjectContext;
    /**
     * List available prompts (user + builtin)
     */
    listPrompts(): Promise<{
        id: string;
        source: 'user' | 'builtin';
    }[]>;
    /**
     * Initialize user prompts directory with examples
     */
    initUserPrompts(): Promise<void>;
    /**
     * Clear cache
     */
    clearCache(): void;
}
export declare function getPromptManager(): PromptManager;
export declare function resetPromptManager(): void;
export default PromptManager;
