/** * ViewData Builder Contract * * Purpose: Transform API Transport DTOs into ViewData for templates * * Rules: * - Deterministic and side-effect free * - No HTTP/API calls * - Input: API Transport DTO (must be JSON-serializable) * - Output: ViewData (JSON-serializable template-ready data) * - Must be in lib/builders/view-data/ * - Must be named *ViewDataBuilder * - Must have 'use client' directive * - Must implement static build() method */ import { JsonValue } from '../types/primitives'; import { ViewData } from '../view-data/ViewData'; export interface ViewDataBuilder { /** * Transform DTO into ViewData * * @param dto - API Transport DTO (JSON-serializable) * @returns ViewData for template */ build(dto: TDTO): TViewData; }