import type { SpecTemplateEntry, TemplateVariableValue, TemplateVariable, TemplateCriterion } from '../../types/spec-templates.js';
/**
 * Interpolates all {{Key}} placeholders in a template string with provided values.
 * Falls back to defaultValue if a variable is optional and not provided.
 */
export declare function interpolate(template: string, variables: TemplateVariableValue[], definitions: TemplateVariable[]): string;
/**
 * Returns the keys of required variables that are missing from the provided values.
 */
export declare function findMissingRequired(template: SpecTemplateEntry, variables: TemplateVariableValue[]): string[];
/**
 * Resolves which criteria to include and generates warnings for forced-required criteria.
 * AC-07: Required criteria cannot be omitted.
 */
export declare function resolveCriteria(allCriteria: TemplateCriterion[], includeCriteria?: string[]): {
    included: TemplateCriterion[];
    warnings: string[];
};
/**
 * Filters HU template content to include only the selected criteria sections.
 * Renumbers criteria sequentially (AC-01, AC-02, ...) to avoid gaps.
 */
export declare function filterHuByCriteria(huContent: string, allCriteria: TemplateCriterion[], includedCriteria: TemplateCriterion[]): string;
/**
 * Filters PROGRESS template to include only selected criteria.
 */
export declare function filterProgressByCriteria(progressContent: string, allCriteria: TemplateCriterion[], includedCriteria: TemplateCriterion[]): string;
/**
 * Builds the estimation section to inject into the HU.md (AC-09).
 */
export declare function buildEstimationSection(template: SpecTemplateEntry): string;
/**
 * Renders all three template files (HU, FICHA-TECNICA, PROGRESS) with the provided values.
 * Supports partial criteria selection and estimation injection.
 */
export declare function renderTemplate(template: SpecTemplateEntry, variables: TemplateVariableValue[], includeCriteria?: string[]): {
    hu: string;
    fichaTecnica: string;
    progress: string;
    criteriaIncluded: number;
    criteriaTotal: number;
    warnings: string[];
};
//# sourceMappingURL=renderer.d.ts.map