/** * Template resolution — inheritance, cycle-scope phase applicability. * * - `resolveTemplate()` applies the full inheritance chain (remove/override/add). * - `loadTemplates()` loads all template YAML files from a directory. * - `phasesForScope()` filters phases by cycle scope. * * Requirements: 8.1, 8.5, 5.1, 5.2 */ import type { WorkflowTemplate, TemplatePhase, CycleScope } from './types.js'; /** * Error thrown when template resolution encounters a problem * (cycle, missing parent, invalid insertion point). */ export declare class TemplateResolutionError extends Error { constructor(message: string); } /** * Get the applicable phases for a given cycle scope. * * Filters the resolved template's phases to include only those whose name * appears in the scope's allowed phase set. Custom (non-core) phase names * pass through for all scopes (they are never filtered out by scope rules). * * @param resolvedTemplate - A fully resolved template (no `extends`). * @param scope - The cycle scope to filter by. * @returns The subset of template phases applicable to the given scope. */ export declare function phasesForScope(resolvedTemplate: WorkflowTemplate, scope: CycleScope): TemplatePhase[]; /** * Resolve a template by applying its inheritance chain. * * Resolution algorithm: * 1. If no `extends` → template is already resolved (return a copy with * inheritance fields cleared). * 2. Load parent template, resolve it recursively (cycle-detected). * 3. Start with parent's resolved phases. * 4. Apply `remove`: filter out listed phases. * 5. Apply `override`: for each phase name in override map, merge fields. * 6. Apply `add`: insert new phases at declared positions (before/after). * * @param template - The template to resolve. * @param allTemplates - Map of all available templates by name. * @returns A fully resolved WorkflowTemplate (no `extends`, all phases concrete). * @throws {TemplateResolutionError} On circular inheritance or missing parent. */ export declare function resolveTemplate(template: WorkflowTemplate, allTemplates: Map): WorkflowTemplate; /** * Load all templates from a directory. Each `.yaml` or `.yml` file is parsed * as a WorkflowTemplate. Invalid files are skipped with a warning to stderr. * * @param templateDir - Path to the directory containing template YAML files. * @returns A Map of template name → WorkflowTemplate. */ export declare function loadTemplates(templateDir: string): Map; //# sourceMappingURL=template-resolver.d.ts.map