/**
 * ViewData Builder Contract
 * 
 * Purpose: Transform ViewModels into ViewData for templates
 * 
 * Rules:
 * - Deterministic and side-effect free
 * - No HTTP/API calls
 * - Input: ViewModel
 * - Output: ViewData (JSON-serializable)
 * - Must be in lib/builders/view-data/
 * - Must be named *ViewDataBuilder
 * - Must have 'use client' directive
 * - Must implement static build() method
 */

export interface ViewDataBuilder<TInput, TOutput> {
  /**
   * Transform ViewModel into ViewData
   * 
   * @param viewModel - Client-side ViewModel
   * @returns ViewData for template
   */
  build(viewModel: TInput): TOutput;
}