/**
 * Subscriptions Domain - Contract
 * 
 * Constants and types for the subscriptions domain.
 * All validated types are derived from schemas (see schema.ts).
 */

// ============================================================================
// Subscription Status Constants
// ============================================================================

export const SUBSCRIPTION_STATUS = {
  ACTIVE: "Active",
  INACTIVE: "Inactive",
  PENDING: "Pending",
  CANCELLED: "Cancelled",
  SUSPENDED: "Suspended",
  TERMINATED: "Terminated",
  COMPLETED: "Completed",
} as const;

// ============================================================================
// Subscription Billing Cycle Constants
// ============================================================================

export const SUBSCRIPTION_CYCLE = {
  MONTHLY: "Monthly",
  QUARTERLY: "Quarterly",
  SEMI_ANNUALLY: "Semi-Annually",
  ANNUALLY: "Annually",
  BIENNIALLY: "Biennially",
  TRIENNIALLY: "Triennially",
  ONE_TIME: "One-time",
  FREE: "Free",
} as const;

// ============================================================================
// Re-export Types from Schema (Schema-First Approach)
// ============================================================================

export type {
  SubscriptionStatus,
  SubscriptionCycle,
  Subscription,
  SubscriptionList,
  SubscriptionQueryParams,
  SubscriptionQuery,
} from './schema';
