/** * Orders Domain - Contract * * Business types and provider-specific mapping types. * Validated types are derived from schemas (see schema.ts). */ import type { SalesforceProductFieldMap } from "../catalog/contract.js"; import type { SalesforceAccountFieldMap } from "../customer/index.js"; import type { UserIdMapping } from "../mappings/contract.js"; // ============================================================================ // Order Type Constants // ============================================================================ /** * Order types available in the system */ export const ORDER_TYPE = { INTERNET: "Internet", SIM: "SIM", VPN: "VPN", OTHER: "Other", } as const; export type OrderTypeValue = (typeof ORDER_TYPE)[keyof typeof ORDER_TYPE]; // ============================================================================ // Order Status Constants // ============================================================================ /** * Possible order statuses */ export const ORDER_STATUS = { DRAFT: "Draft", ACTIVATED: "Activated", PENDING: "Pending", FAILED: "Failed", CANCELLED: "Cancelled", } as const; export type OrderStatusValue = (typeof ORDER_STATUS)[keyof typeof ORDER_STATUS]; // ============================================================================ // Activation Type Constants // ============================================================================ /** * Order activation types */ export const ACTIVATION_TYPE = { IMMEDIATE: "Immediate", SCHEDULED: "Scheduled", } as const; export type ActivationTypeValue = (typeof ACTIVATION_TYPE)[keyof typeof ACTIVATION_TYPE]; // ============================================================================ // SIM Type Constants // ============================================================================ /** * SIM card types */ export const SIM_TYPE = { ESIM: "eSIM", PHYSICAL: "Physical SIM", } as const; export type SimTypeValue = (typeof SIM_TYPE)[keyof typeof SIM_TYPE]; // ============================================================================ // Order Fulfillment Error Codes // ============================================================================ /** * Error codes for order fulfillment operations * These represent business-level error categories */ export const ORDER_FULFILLMENT_ERROR_CODE = { PAYMENT_METHOD_MISSING: "PAYMENT_METHOD_MISSING", ORDER_NOT_FOUND: "ORDER_NOT_FOUND", WHMCS_ERROR: "WHMCS_ERROR", MAPPING_ERROR: "MAPPING_ERROR", VALIDATION_ERROR: "VALIDATION_ERROR", SALESFORCE_ERROR: "SALESFORCE_ERROR", PROVISIONING_ERROR: "PROVISIONING_ERROR", } as const; export type OrderFulfillmentErrorCode = (typeof ORDER_FULFILLMENT_ERROR_CODE)[keyof typeof ORDER_FULFILLMENT_ERROR_CODE]; // ============================================================================ // Business Types (used internally, not validated at API boundary) // ============================================================================ /** * Order creation type used for order creation flows */ export type OrderCreationType = "Internet" | "SIM" | "VPN" | "Other"; /** * Order status (string literal for flexibility) */ export type OrderStatus = string; /** * Order type (string literal for flexibility) */ export type OrderType = string; /** * User mapping for order creation (subset of UserIdMapping) */ export type UserMapping = Pick; // ============================================================================ // Re-export Types from Schema (Schema-First Approach) // ============================================================================ export type { // Order item types OrderItemSummary, OrderItemDetails, // Order types OrderSummary, OrderDetails, // Query and creation types OrderQueryParams, OrderConfigurationsAddress, OrderConfigurations, CreateOrderRequest, OrderBusinessValidation, SfOrderIdParam, } from './schema';