/**
 * Template Engine Registry
 *
 * Manages multiple template engines and provides a unified
 * interface for rendering templates.
 */
import type { TemplateEngine, CodeTemplate, TemplateContext } from '../types/index.js';
/**
 * Engine registry configuration
 */
export interface EngineRegistryConfig {
    /** Base directory for resolving template paths */
    baseDir?: string;
    /** Enable caching of loaded modules */
    enableCache?: boolean;
    /** Custom engine implementations */
    customEngines?: Map<string, TemplateEngine>;
}
/**
 * Engine not found error
 */
export declare class EngineNotFoundError extends Error {
    engineType: string;
    constructor(engineType: string);
}
/**
 * Template engine registry
 */
export declare class TemplateEngineRegistry {
    private engines;
    private config;
    constructor(config?: EngineRegistryConfig);
    /**
     * Register default built-in engines
     */
    private registerDefaultEngines;
    /**
     * Register a template engine
     */
    register(type: string, engine: TemplateEngine): void;
    /**
     * Get a template engine by type
     */
    get(type: string): TemplateEngine;
    /**
     * Check if an engine type is registered
     */
    has(type: string): boolean;
    /**
     * Get all registered engine types
     */
    getRegisteredTypes(): string[];
    /**
     * Render a template using the appropriate engine
     */
    render(template: CodeTemplate, context: TemplateContext, options?: {
        basePath?: string;
    }): Promise<string>;
    /**
     * Render multiple templates in parallel
     */
    renderMany(templates: Array<{
        template: CodeTemplate;
        context: TemplateContext;
    }>): Promise<string[]>;
    /**
     * Clear all engine caches
     */
    clearCaches(): void;
    /**
     * Get statistics about registered engines
     */
    getStats(): {
        registeredEngines: string[];
        engineStats: Record<string, any>;
    };
}
/**
 * Create a default template engine registry
 */
export declare function createDefaultRegistry(config?: EngineRegistryConfig): TemplateEngineRegistry;
/**
 * Get the global template engine registry
 */
export declare function getGlobalRegistry(): TemplateEngineRegistry;
/**
 * Set the global template engine registry
 */
export declare function setGlobalRegistry(registry: TemplateEngineRegistry): void;
/**
 * Reset the global registry to null
 */
export declare function resetGlobalRegistry(): void;
//# sourceMappingURL=engine-registry.d.ts.map