/** * Customer Domain - Contract * * Business types and provider-specific mapping types. * Validated types are derived from schemas (see schema.ts). */ import type { IsoDateTimeString } from "../common/types"; import type { CustomerAddress } from "./schema"; // ============================================================================ // Customer Profile (Core Type) // ============================================================================ /** * CustomerProfile - Core profile data following WHMCS client structure * Used as the base for authenticated users in the portal */ export interface CustomerProfile { id: string; email: string; firstname?: string | null; lastname?: string | null; fullname?: string | null; companyname?: string | null; phonenumber?: string | null; address?: CustomerAddress; language?: string | null; currencyCode?: string | null; createdAt?: IsoDateTimeString | null; updatedAt?: IsoDateTimeString | null; } // ============================================================================ // Salesforce Integration Types (Provider-Specific, Not Validated) // ============================================================================ export interface SalesforceAccountFieldMap { internetEligibility: string; customerNumber: string; } export interface SalesforceAccountRecord { Id: string; Name?: string | null; WH_Account__c?: string | null; [key: string]: unknown; } // ============================================================================ // Re-export Types from Schema (Schema-First Approach) // ============================================================================ export type { CustomerAddress, Address, CustomerEmailPreferences, CustomerUser, CustomerStats, Customer, AddressFormData, } from './schema'; // Re-export helper function export { addressFormToRequest } from './schema';