/** * Customer Domain * * Main exports: * - User: API response type * - UserAuth: Portal DB auth state * - Address: Address structure (follows billing/subscriptions pattern) * * Pattern matches billing and subscriptions domains. * * Types are derived from Zod schemas (Schema-First Approach) */ // ============================================================================ // Constants // ============================================================================ export { USER_ROLE, type UserRoleValue } from "./contract.js"; // ============================================================================ // Domain Types (Clean Names - Public API) // ============================================================================ export type { User, // API response type (normalized camelCase) UserAuth, // Portal DB auth state UserRole, // "USER" | "ADMIN" Address, // Address structure (not "CustomerAddress") AddressFormData, // Address form validation ProfileEditFormData, // Profile edit form data ResidenceCardVerificationStatus, ResidenceCardVerification, UserProfile, // Alias for User AuthenticatedUser, // Alias for authenticated user WhmcsClient, // Provider-normalized WHMCS client shape } from "./schema.js"; // ============================================================================ // Schemas // ============================================================================ export { userSchema, userAuthSchema, addressSchema, addressFormSchema, profileEditFormSchema, residenceCardVerificationStatusSchema, residenceCardVerificationSchema, // Helper functions combineToUser, // Domain helper: UserAuth + WhmcsClient → User addressFormToRequest, profileFormToRequest, } from "./schema.js"; // ============================================================================ // Provider Namespace // ============================================================================ /** * Providers namespace contains provider-specific implementations * * Access as: * - Providers.Whmcs.Client (full WHMCS type) * - Providers.Whmcs.transformWhmcsClientResponse() * - Providers.Portal.mapPrismaUserToUserAuth() */ // NOTE: Provider adapters and provider-specific types are intentionally not exported // from the module root. Import BFF-only provider APIs from: // @customer-portal/domain/customer/providers