import type { BindingDiagnostic, BindingNodeContext, BindingRuntimeScope, BindingValueResult, DataBindingDocument, DataCatalog, DataField, DataFixtureContext, DataPreviewResolver } from './contracts.js'; export interface ProjectedDataBinding { bindingId: string; nodeId: string; slotId: string; rowPath: BindingRuntimeScope['rowPath']; /** The source result remains distinct from any missing-value presentation. */ result: BindingValueResult; presentation: { kind: 'value'; value: unknown; } | { kind: 'hidden'; } | { kind: 'empty'; } | { kind: 'error'; message: string; }; } export interface ProjectedDataRow { repeatId: string; templateNodeId: string; rowPath: BindingRuntimeScope['rowPath']; } export interface DataProjection { values: readonly ProjectedDataBinding[]; rows: readonly ProjectedDataRow[]; diagnostics: readonly BindingDiagnostic[]; } /** Executable values remain opaque; only the declared field boundary is validated. */ export declare function readDataField(field: DataField, scope: BindingRuntimeScope, resolver: DataPreviewResolver): BindingValueResult; /** Preview is a projection: it never changes a document, its history, or source expressions. */ export declare function projectDataBindings(catalog: DataCatalog, document: DataBindingDocument, nodes: readonly BindingNodeContext[], fixture: DataFixtureContext, resolver: DataPreviewResolver, options?: { maxRows?: number; maxDepth?: number; }): DataProjection;