/**
 * Enhanced Template Repository
 *
 * Provides unified access to both static (legacy) and database-backed templates
 * with full CRUD operations, search, and PMBOK compliance validation.
 */
import { DatabaseTemplate, TemplateSearchQuery } from '../types/databaseTemplates';
import { GenerationTask } from '../modules/documentGenerator/types';
interface DatabaseConnection {
    query(sql: string, params?: any[]): Promise<any>;
    transaction<T>(callback: (trx: any) => Promise<T>): Promise<T>;
}
export declare class TemplateRepository {
    private db;
    constructor(db: DatabaseConnection);
    /**
     * Get all system templates (migrated from static GENERATION_TASKS)
     */
    getSystemTemplates(): Promise<DatabaseTemplate[]>;
    /**
     * Get user-created templates
     */
    getUserTemplates(userId?: string): Promise<DatabaseTemplate[]>;
    /**
     * Get all active templates (system + user)
     */
    getAllTemplates(): Promise<DatabaseTemplate[]>;
    /**
     * Search templates with advanced filtering
     */
    searchTemplates(query: TemplateSearchQuery): Promise<DatabaseTemplate[]>;
    /**
     * Get template by ID
     */
    getTemplateById(id: string): Promise<DatabaseTemplate | null>;
    /**
     * Get template by generation function (for backward compatibility)
     */
    getTemplateByFunction(functionName: string): Promise<DatabaseTemplate | null>;
    /**
     * Create new template
     */
    createTemplate(template: Omit<DatabaseTemplate, 'id' | 'created_at' | 'updated_at'>): Promise<DatabaseTemplate>;
    /**
     * Update existing template (creates new version)
     */
    updateTemplate(id: string, updates: Partial<DatabaseTemplate>, updatedBy: string): Promise<DatabaseTemplate>;
    /**
     * Soft delete template (mark as inactive)
     */
    deleteTemplate(id: string): Promise<void>;
    /**
     * Get template categories
     */
    getCategories(): Promise<any[]>;
    /**
     * Convert database template to legacy GenerationTask format (for backward compatibility)
     */
    templateToGenerationTask(template: DatabaseTemplate): GenerationTask;
    /**
     * Get all templates as legacy GenerationTask format
     */
    getTemplatesAsGenerationTasks(): Promise<GenerationTask[]>;
    /**
     * Validate template for PMBOK compliance
     */
    validatePMBOKCompliance(template: DatabaseTemplate): {
        valid: boolean;
        issues: string[];
    };
    /**
     * Get template usage statistics
     */
    getTemplateStats(): Promise<any>;
}
export {};
//# sourceMappingURL=TemplateRepository.d.ts.map