/**
 * @fileoverview Prompt builder for constructing prompts from multiple components.
 *
 * This module provides functionality for building prompts from multiple components,
 * including templates, user-provided fragments, and model-specific optimizations.
 */
import { ReviewOptions, ReviewType } from '../types/review';
import { ProjectDocs } from '../utils/projectDocs';
import { PromptManager } from './PromptManager';
import { PromptCache } from './cache/PromptCache';
/**
 * Interface for a prompt component
 */
export interface PromptComponent {
    /**
     * Content of the component
     */
    content: string;
    /**
     * Position of the component in the prompt (start, middle, end)
     */
    position: 'start' | 'middle' | 'end';
    /**
     * Priority of the component (higher priority components are included first)
     */
    priority: number;
}
/**
 * Builder for constructing prompts
 */
export declare class PromptBuilder {
    private promptManager;
    private promptCache;
    private components;
    /**
     * Create a new prompt builder
     * @param promptManager Prompt manager instance
     * @param promptCache Prompt cache instance
     */
    constructor(promptManager: PromptManager, promptCache: PromptCache);
    /**
     * Add a component to the prompt
     * @param component Prompt component to add
     * @returns This builder instance for chaining
     */
    addComponent(component: PromptComponent): PromptBuilder;
    /**
     * Add a user-provided fragment to the prompt
     * @param content Content of the fragment
     * @param position Position of the fragment in the prompt
     * @param priority Priority of the fragment
     * @returns This builder instance for chaining
     */
    addFragment(content: string, position?: 'start' | 'middle' | 'end', priority?: number): PromptBuilder;
    /**
     * Build a prompt for a review
     * @param reviewType Type of review
     * @param options Review options
     * @param projectDocs Project documentation
     * @param basePrompt Optional base prompt to use instead of fetching from the prompt manager
     * @returns Promise resolving to the built prompt
     */
    buildPrompt(reviewType: ReviewType, options: ReviewOptions, projectDocs?: ProjectDocs | null, basePrompt?: string): Promise<string>;
    /**
     * Clear all components from the builder
     * @returns This builder instance for chaining
     */
    clear(): PromptBuilder;
}
