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

// Constants
export { SIM_STATUS, SIM_TYPE, SIM_PLAN_CODES, SIM_PLAN_LABELS } from "./contract";

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

// Validation functions
export * from "./validation";
export {
  canManageActiveSim,
  canReissueEsim,
  canCancelSim,
  canTopUpSim,
  formatSimPlanShort,
  SIM_PLAN_OPTIONS,
  getSimPlanLabel,
  buildSimFeaturesUpdatePayload,
} from "./helpers";

// Re-export types for convenience
export type {
  SimStatus,
  SimType,
  SimDetails,
  RecentDayUsage,
  SimUsage,
  SimTopUpHistoryEntry,
  SimTopUpHistory,
  SimInfo,
  // Request types
  SimTopUpRequest,
  SimPlanChangeRequest,
  SimCancelRequest,
  SimTopUpHistoryRequest,
  SimFeaturesUpdateRequest,
  SimReissueRequest,
  SimConfigureFormData,
  SimCardType,
  ActivationType,
  MnpData,
  // Enhanced request types
  SimCancelFullRequest,
  SimTopUpFullRequest,
  SimChangePlanFullRequest,
  // Activation types
  SimOrderActivationRequest,
  SimOrderActivationMnp,
  SimOrderActivationAddons,
  // Pricing types
  SimTopUpPricing,
  SimTopUpPricingPreviewRequest,
  SimTopUpPricingPreviewResponse,
} from './schema';
export type { SimPlanCode } from "./contract";
export type { SimPlanOption, SimFeatureToggleSnapshot } from "./helpers";

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