import { type WorkflowExpressionEvaluationContext } from '../evaluator/index.js'; import { type AvailabilitySite, type WorkflowInterpolationFailurePolicy } from '../workflow-context/workflow-context.js'; import { type EvaluationTraceEntry } from './evaluation-trace.js'; import type { ResolvedField } from './resolved-field.js'; export type WorkflowTemplateFailurePolicy = WorkflowInterpolationFailurePolicy; export interface WorkflowTemplateDiagnostic { readonly reason: 'missing-path'; readonly expression: string; readonly contextRoots: readonly string[]; } export interface FrozenResolvedField { readonly value: Value; readonly diagnostics: readonly WorkflowTemplateDiagnostic[]; readonly trace: readonly EvaluationTraceEntry[]; } export type SiteResolvedField = { readonly kind: 'frozen'; readonly value: Value; readonly diagnostics: readonly WorkflowTemplateDiagnostic[]; readonly trace: readonly EvaluationTraceEntry[]; } | { readonly kind: 'residual'; readonly field: ResolvedField; readonly diagnostics: readonly WorkflowTemplateDiagnostic[]; readonly trace: readonly EvaluationTraceEntry[]; }; interface ResolveFieldAtSiteParams { readonly field: ResolvedField; readonly failurePolicy: WorkflowInterpolationFailurePolicy; readonly site: AvailabilitySite; readonly context: WorkflowExpressionEvaluationContext; /** Preserve the value of an exact single expression instead of stringifying it. */ readonly preserveSingleExpressionType?: boolean; } /** * Segment lifecycle: * * `{expr}` -> plan -> `{deferred, fillTarget}` -> freeze at a site at or after * `fillTarget` -> `{literal}`. Runner-fill segments are never filled server-side. * * Value fields follow their declared policy at their fill target. Predicates use * the planned predicate entry point and fail closed when evaluation is deferred. */ export declare function freezeResolvedFieldAtSite(params: ResolveFieldAtSiteParams & { readonly preserveSingleExpressionType: true; }): FrozenResolvedField; export declare function freezeResolvedFieldAtSite(params: ResolveFieldAtSiteParams & { readonly preserveSingleExpressionType?: false; }): FrozenResolvedField; export declare function freezeResolvedFieldAtSite(params: ResolveFieldAtSiteParams): FrozenResolvedField; export declare function resolveFieldAtSite(params: ResolveFieldAtSiteParams & { readonly preserveSingleExpressionType: true; }): SiteResolvedField; export declare function resolveFieldAtSite(params: ResolveFieldAtSiteParams & { readonly preserveSingleExpressionType?: false; }): SiteResolvedField; export declare function resolveFieldAtSite(params: ResolveFieldAtSiteParams): SiteResolvedField; export {}; //# sourceMappingURL=freeze.d.ts.map