/**
 * Orders Domain
 * 
 * Exports all order-related contracts, schemas, and provider mappers.
 * 
 * Types are derived from Zod schemas (Schema-First Approach)
 */

// Business types and constants
export { 
  type OrderCreationType, 
  type OrderStatus, 
  type OrderType, 
  type OrderTypeValue,
  type UserMapping,
  // Checkout types
  type CheckoutItem,
  type CheckoutTotals,
  type CheckoutCart,
  type OrderCreateResponse,
  type OrderFulfillmentValidationResult,
  // Constants
  ORDER_TYPE,
  ORDER_STATUS,
  ACTIVATION_TYPE,
  type ActivationTypeValue,
  SIM_TYPE,
  type SimTypeValue,
  ACCESS_MODE,
  type AccessModeValue,
  ORDER_FULFILLMENT_ERROR_CODE,
  type OrderFulfillmentErrorCode,
} from "./contract";

// Schemas (includes derived types)
export * from "./schema";

// Validation (extended business rules)
export * from "./validation";

// Utilities
export * from "./utils";
export * from "./events";
export {
  buildSimOrderConfigurations,
  normalizeBillingCycle,
  normalizeOrderSelections,
  buildOrderDisplayItems,
  categorizeOrderItem,
  type BuildSimOrderConfigurationsOptions,
  type OrderStatusDescriptor,
  type OrderStatusInput,
  type OrderStatusState,
  type OrderStatusTone,
  type OrderServiceCategory,
  type OrderTotalsInputItem,
  deriveOrderStatusDescriptor,
  getOrderServiceCategory,
  calculateOrderTotals,
  formatScheduledDate,
} from "./helpers";
// Re-export types for convenience
export type {
  // Order item types
  OrderItemSummary,
  OrderItemDetails,
  // Order types
  OrderSummary,
  OrderDetails,
  // Query and creation types
  OrderQueryParams,
  OrderConfigurationsAddress,
  OrderConfigurations,
  CreateOrderRequest,
  OrderBusinessValidation,
  SfOrderIdParam,
  // Display types
  OrderDisplayItem,
  OrderDisplayItemCategory,
  OrderDisplayItemCharge,
  OrderDisplayItemChargeKind,
} from './schema';

// Provider adapters
export * as Providers from "./providers/index";

// Re-export provider types for convenience
export * from "./providers/whmcs/raw.types";
export * from "./providers/salesforce/raw.types";
export * from "./providers/salesforce/field-map";
