/**
 * Signup ViewModel Builder
 * 
 * Transforms API DTOs into SignupViewModel for client-side state management.
 * Deterministic, side-effect free, no business logic.
 */

import { SignupViewData } from '@/lib/builders/view-data/types/SignupViewData';
import { SignupViewModel, SignupFormState, SignupUIState } from '@/lib/view-models/auth/SignupViewModel';

export class SignupViewModelBuilder {
  static build(viewData: SignupViewData): SignupViewModel {
    const formState: SignupFormState = {
      fields: {
        firstName: { value: '', error: undefined, touched: false, validating: false },
        lastName: { value: '', error: undefined, touched: false, validating: false },
        email: { value: '', error: undefined, touched: false, validating: false },
        password: { value: '', error: undefined, touched: false, validating: false },
        confirmPassword: { value: '', error: undefined, touched: false, validating: false },
      },
      isValid: true,
      isSubmitting: false,
      submitError: undefined,
      submitCount: 0,
    };

    const uiState: SignupUIState = {
      showPassword: false,
      showConfirmPassword: false,
    };

    return new SignupViewModel(
      viewData.returnTo,
      formState,
      uiState,
      false,
      null
    );
  }
}