/**
 * Enums Constants - Single Source of Truth
 *
 * @description Centraliza todos los enums del sistema para evitar duplicación
 * y asegurar consistencia entre backend, frontend y base de datos.
 *
 * @usage
 * ```typescript
 * import { UserStatusEnum, UserRoleEnum } from '@shared/constants';
 * ```
 */

/**
 * Estados de usuario
 */
export enum UserStatusEnum {
  PENDING = 'pending',
  ACTIVE = 'active',
  SUSPENDED = 'suspended',
  DELETED = 'deleted',
}

/**
 * Roles de usuario
 * @note Debe coincidir con la definición en roles.decorator.ts
 */
export enum UserRoleEnum {
  SUPER_ADMIN = 'super_admin',
  ADMIN = 'admin',
  MANAGER = 'manager',
  EDITOR = 'editor',
  VIEWER = 'viewer',
}

/**
 * Tipos de cliente
 */
export enum ClientTypeEnum {
  COMPANY = 'company',
  INDIVIDUAL = 'individual',
  AGENCY = 'agency',
}

/**
 * Estados de proyecto
 */
export enum ProjectStatusEnum {
  DRAFT = 'draft',
  ACTIVE = 'active',
  ON_HOLD = 'on_hold',
  COMPLETED = 'completed',
  ARCHIVED = 'archived',
}

/**
 * Tipos de contenido
 */
export enum ContentTypeEnum {
  IMAGE = 'image',
  VIDEO = 'video',
  DOCUMENT = 'document',
  POST = 'post',
  STORY = 'story',
  REEL = 'reel',
}

/**
 * Estados de contenido
 */
export enum ContentStatusEnum {
  DRAFT = 'draft',
  REVIEW = 'review',
  APPROVED = 'approved',
  SCHEDULED = 'scheduled',
  PUBLISHED = 'published',
  ARCHIVED = 'archived',
}

/**
 * Tipos de asset
 */
export enum AssetTypeEnum {
  IMAGE = 'image',
  VIDEO = 'video',
  AUDIO = 'audio',
  DOCUMENT = 'document',
  ARCHIVE = 'archive',
  OTHER = 'other',
}

/**
 * Planes de tenant
 */
export enum TenantPlanEnum {
  FREE = 'free',
  STARTER = 'starter',
  PROFESSIONAL = 'professional',
  ENTERPRISE = 'enterprise',
}

/**
 * Estados de tenant
 */
export enum TenantStatusEnum {
  TRIAL = 'trial',
  ACTIVE = 'active',
  SUSPENDED = 'suspended',
  CANCELLED = 'cancelled',
}
