/**
 * Template Manager
 *
 * Handles loading and rendering of project document templates.
 * Supports different template formats for architecture, requirements, and design documents.
 */
export type ArchitectureTemplate = string;
export type RequirementsTemplate = string;
export type DesignTemplate = string;
export interface TemplateOptions {
    architecture?: ArchitectureTemplate;
    requirements?: RequirementsTemplate;
    design?: DesignTemplate;
}
export interface TemplateResult {
    content: string;
    additionalFiles?: Array<{
        relativePath: string;
        content: Buffer;
    }>;
}
export declare class TemplateManager {
    private templatesPath;
    constructor();
    /**
     * Resolve templates path using similar strategy as WorkflowManager
     */
    private resolveTemplatesPath;
    /**
     * Get the default template options based on available templates
     */
    getDefaults(): Promise<Required<TemplateOptions>>;
    /**
     * Get preferred template from available options, with fallback preferences
     */
    private getPreferredTemplate;
    /**
     * Load and render a template
     */
    loadTemplate(type: 'architecture' | 'requirements' | 'design', template: string): Promise<TemplateResult>;
    /**
     * Load a directory-based template (like arc42 with images)
     */
    private loadDirectoryTemplate;
    /**
     * Recursively load additional files from template directory
     */
    private loadAdditionalFiles;
    /**
     * Validate template options against available templates
     */
    validateOptions(options: TemplateOptions): Promise<void>;
    /**
     * Get available templates for each type by scanning the file system
     */
    getAvailableTemplates(): Promise<{
        architecture: string[];
        requirements: string[];
        design: string[];
    }>;
}
