/**
 * Customer Domain - Contract
 * 
 * Constants and provider-specific types.
 * Main domain types exported from schema.ts
 * 
 * Pattern matches billing and subscriptions domains.
 */

// ============================================================================
// User Role Constants
// ============================================================================

export const USER_ROLE = {
  USER: "USER",
  ADMIN: "ADMIN",
} as const;

export type UserRoleValue = (typeof USER_ROLE)[keyof typeof USER_ROLE];

// ============================================================================
// Salesforce Integration Types (Provider-Specific, Not Validated)
// ============================================================================

/**
 * Salesforce account field mapping
 * This is provider-specific and not validated at runtime
 */
export interface SalesforceAccountFieldMap {
  internetEligibility: string;
  customerNumber: string;
}

/**
 * Salesforce account record structure
 * Raw structure from Salesforce API
 */
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 {
  User,
  UserAuth,
  UserRole,
  Address,
  AddressFormData,
} from './schema';
