/** * ViewModel Builder Contract * * Purpose: Transform ViewData into ViewModels for client-side state management * * Rules: * - Deterministic and side-effect free * - No HTTP/API calls * - Input: ViewData (JSON-serializable template-ready data) * - Output: ViewModel (client-only class) * - Must be in lib/builders/view-models/ * - Must be named *ViewModelBuilder * - Must have 'use client' directive * - Must implement static build() method */ import { ViewData } from '../view-data/ViewData'; import { ViewModel } from '../view-models/ViewModel'; export interface ViewModelBuilder { /** * Transform ViewData into ViewModel * * @param viewData - ViewData (JSON-serializable template-ready data) * @returns ViewModel */ build(viewData: TViewData): TViewModel; }