/**
 * Template Engine
 * Handles template processing and code generation
 */
import * as handlebars from 'handlebars';
export interface TemplateContext {
    [key: string]: any;
}
export interface TemplateOptions {
    helpers?: Record<string, handlebars.HelperDelegate>;
    partials?: Record<string, string>;
    strictMode?: boolean;
    noEscape?: boolean;
}
export interface TemplateResult {
    success: boolean;
    output?: string;
    error?: string;
    warnings?: string[];
}
export interface RenderResult extends TemplateResult {
}
export interface TemplateVariable {
    name: string;
    type: 'string' | 'number' | 'boolean' | 'array' | 'object';
    required?: boolean;
    defaultValue?: any;
    description?: string;
    validation?: {
        pattern?: string;
        min?: number;
        max?: number;
        enum?: any[];
    };
}
export interface TemplateEngineOptions extends TemplateOptions {
}
/**
 * Basic template interface for external use
 */
export interface Template {
    id: string;
    name: string;
    description: string;
    category: string;
    content?: string;
    variables?: Record<string, any>;
    metadata?: Record<string, any>;
}
export declare class TemplateEngine {
    private handlebars;
    private options;
    constructor(options?: TemplateOptions);
    /**
     * Process a template string with given context
     */
    processTemplate(templateString: string, context: TemplateContext): TemplateResult;
    /**
     * Process template from file
     */
    processTemplateFile(filePath: string, context: TemplateContext): Promise<TemplateResult>;
    /**
     * Register custom helpers
     */
    registerHelpers(helpers: Record<string, handlebars.HelperDelegate>): void;
    /**
     * Register partials
     */
    registerPartials(partials: Record<string, string>): void;
    /**
     * Register built-in helpers
     */
    private registerBuiltinHelpers;
    /**
     * Create a new template engine instance with additional options
     */
    extend(additionalOptions: TemplateOptions): TemplateEngine;
    /**
     * Validate template syntax without processing
     */
    validateTemplate(templateString: string): TemplateResult;
    /**
     * Get available helpers
     */
    getHelpers(): string[];
    /**
     * Get available partials
     */
    getPartials(): string[];
}
export declare function createTemplateEngine(options?: TemplateOptions): TemplateEngine;
export declare function processTemplate(templateString: string, context: TemplateContext, options?: TemplateOptions): TemplateResult;
export declare function processTemplateFile(filePath: string, context: TemplateContext, options?: TemplateOptions): Promise<TemplateResult>;
export default TemplateEngine;
//# sourceMappingURL=template-engine.d.ts.map