// Exported enums for frontend use
export enum UserRole {
  ADMIN = 'ADMIN',
  PROMOTOR = 'PROMOTOR',
  ARTIST = 'ARTIST',
  USER = 'USER',
}

export enum ArtistGenre {
  POP = 'POP',
  ROCK = 'ROCK',
  JAZZ = 'JAZZ',
  CLASSICAL = 'CLASSICAL',
  ELECTRONIC = 'ELECTRONIC',
  HIP_HOP = 'HIP_HOP',
  R_AND_B = 'R_AND_B',
  COUNTRY = 'COUNTRY',
  FOLK = 'FOLK',
  REGGAE = 'REGGAE',
  BLUES = 'BLUES',
  METAL = 'METAL',
  PUNK = 'PUNK',
  INDIE = 'INDIE',
  ALTERNATIVE = 'ALTERNATIVE',
  WORLD = 'WORLD',
  OTHER = 'OTHER',
}

export enum EventStatus {
  DRAFT = 'DRAFT',
  PENDING_APPROVAL = 'PENDING_APPROVAL',
  PUBLISHED = 'PUBLISHED',
  CANCELLED = 'CANCELLED',
  COMPLETED = 'COMPLETED',
  POSTPONED = 'POSTPONED',
}

export enum EventCategory {
  CONCERT = 'CONCERT',
  FESTIVAL = 'FESTIVAL',
  THEATER = 'THEATER',
  COMEDY = 'COMEDY',
  SPORTS = 'SPORTS',
  CONFERENCE = 'CONFERENCE',
  WORKSHOP = 'WORKSHOP',
  EXHIBITION = 'EXHIBITION',
  OTHER = 'OTHER',
}

export enum TicketStatus {
  ACTIVE = 'ACTIVE',
  USED = 'USED',
  CANCELLED = 'CANCELLED',
  EXPIRED = 'EXPIRED',
  REFUNDED = 'REFUNDED',
}

export enum TicketTypeStatus {
  ACTIVE = 'ACTIVE',
  SOLD_OUT = 'SOLD_OUT',
  INACTIVE = 'INACTIVE',
  CANCELLED = 'CANCELLED',
}

export enum ReservationStatus {
  PENDING = 'PENDING',
  CONFIRMED = 'CONFIRMED',
  EXPIRED = 'EXPIRED',
  CANCELLED = 'CANCELLED',
}

export enum OrderStatus {
  PENDING = 'PENDING',
  PAID = 'PAID',
  CONFIRMED = 'CONFIRMED',
  CANCELLED = 'CANCELLED',
  REFUNDED = 'REFUNDED',
  EXPIRED = 'EXPIRED',
}

export enum OrderItemType {
  TICKET = 'TICKET',
  MERCHANDISE = 'MERCHANDISE',
}

export enum DiscountType {
  PERCENTAGE = 'PERCENTAGE',
  FIXED_AMOUNT = 'FIXED_AMOUNT',
  FREE_SHIPPING = 'FREE_SHIPPING',
}

export enum DiscountStatus {
  ACTIVE = 'ACTIVE',
  INACTIVE = 'INACTIVE',
  EXPIRED = 'EXPIRED',
  USED_UP = 'USED_UP',
}

export enum PaymentStatus {
  PENDING = 'PENDING',
  PROCESSING = 'PROCESSING',
  COMPLETED = 'COMPLETED',
  FAILED = 'FAILED',
  CANCELLED = 'CANCELLED',
  REFUNDED = 'REFUNDED',
  PARTIALLY_REFUNDED = 'PARTIALLY_REFUNDED',
}

export enum PaymentMethod {
  CREDIT_CARD = 'CREDIT_CARD',
  DEBIT_CARD = 'DEBIT_CARD',
  BANK_TRANSFER = 'BANK_TRANSFER',
  VIRTUAL_ACCOUNT = 'VIRTUAL_ACCOUNT',
  E_WALLET = 'E_WALLET',
  QRIS = 'QRIS',
  CASH = 'CASH',
  INSTALLMENT = 'INSTALLMENT',
}

export enum PaymentProvider {
  MIDTRANS = 'MIDTRANS',
  XENDIT = 'XENDIT',
  DOKU = 'DOKU',
  FASPAY = 'FASPAY',
  GOPAY = 'GOPAY',
  OVO = 'OVO',
  DANA = 'DANA',
  LINKAJA = 'LINKAJA',
  SHOPEEPAY = 'SHOPEEPAY',
  BCA = 'BCA',
  MANDIRI = 'MANDIRI',
  BNI = 'BNI',
  BRI = 'BRI',
  PERMATA = 'PERMATA',
  OTHER = 'OTHER',
}

export enum RefundStatus {
  PENDING = 'PENDING',
  PROCESSING = 'PROCESSING',
  COMPLETED = 'COMPLETED',
  FAILED = 'FAILED',
  CANCELLED = 'CANCELLED',
}

export enum WebhookStatus {
  PENDING = 'PENDING',
  PROCESSED = 'PROCESSED',
  FAILED = 'FAILED',
  IGNORED = 'IGNORED',
}

export enum ShippingStatus {
  PENDING = 'PENDING',
  PROCESSING = 'PROCESSING',
  SHIPPED = 'SHIPPED',
  IN_TRANSIT = 'IN_TRANSIT',
  OUT_FOR_DELIVERY = 'OUT_FOR_DELIVERY',
  DELIVERED = 'DELIVERED',
  FAILED_DELIVERY = 'FAILED_DELIVERY',
  RETURNED = 'RETURNED',
  CANCELLED = 'CANCELLED',
}

export enum InstallmentStatus {
  PENDING = 'PENDING',
  DUE = 'DUE',
  PAID = 'PAID',
  OVERDUE = 'OVERDUE',
  CANCELLED = 'CANCELLED',
  FAILED = 'FAILED',
}

export enum DisputeStatus {
  OPENED = 'OPENED',
  UNDER_REVIEW = 'UNDER_REVIEW',
  EVIDENCE_REQUIRED = 'EVIDENCE_REQUIRED',
  RESOLVED = 'RESOLVED',
  LOST = 'LOST',
  WON = 'WON',
  CANCELLED = 'CANCELLED',
}

export enum DisputeType {
  CHARGEBACK = 'CHARGEBACK',
  INQUIRY = 'INQUIRY',
  RETRIEVAL = 'RETRIEVAL',
  FRAUD = 'FRAUD',
  AUTHORIZATION = 'AUTHORIZATION',
  PROCESSING_ERROR = 'PROCESSING_ERROR',
  DUPLICATE_PROCESSING = 'DUPLICATE_PROCESSING',
  CREDIT_NOT_PROCESSED = 'CREDIT_NOT_PROCESSED',
  CANCELLED_RECURRING = 'CANCELLED_RECURRING',
  PRODUCT_NOT_RECEIVED = 'PRODUCT_NOT_RECEIVED',
  PRODUCT_UNACCEPTABLE = 'PRODUCT_UNACCEPTABLE',
  OTHER = 'OTHER',
}

export enum NotificationType {
  EMAIL = 'EMAIL',
  SMS = 'SMS',
  PUSH = 'PUSH',
  IN_APP = 'IN_APP',
  WHATSAPP = 'WHATSAPP',
}

export enum NotificationStatus {
  PENDING = 'PENDING',
  SENT = 'SENT',
  DELIVERED = 'DELIVERED',
  FAILED = 'FAILED',
  CANCELLED = 'CANCELLED',
  BOUNCED = 'BOUNCED',
  OPENED = 'OPENED',
  CLICKED = 'CLICKED',
}

export enum NotificationPriority {
  LOW = 'LOW',
  NORMAL = 'NORMAL',
  HIGH = 'HIGH',
  URGENT = 'URGENT',
}

export enum TemplateStatus {
  DRAFT = 'DRAFT',
  ACTIVE = 'ACTIVE',
  INACTIVE = 'INACTIVE',
  ARCHIVED = 'ARCHIVED',
}

export enum DeliveryProvider {
  SENDGRID = 'SENDGRID',
  MAILGUN = 'MAILGUN',
  SES = 'SES',
  TWILIO = 'TWILIO',
  NEXMO = 'NEXMO',
  FIREBASE = 'FIREBASE',
  ONESIGNAL = 'ONESIGNAL',
  WHATSAPP_BUSINESS = 'WHATSAPP_BUSINESS',
  INTERNAL = 'INTERNAL',
}

export enum MerchandiseCategory {
  CLOTHING = 'CLOTHING',
  ACCESSORIES = 'ACCESSORIES',
  COLLECTIBLES = 'COLLECTIBLES',
  MUSIC = 'MUSIC',
  BOOKS = 'BOOKS',
  ELECTRONICS = 'ELECTRONICS',
  HOME_DECOR = 'HOME_DECOR',
  STATIONERY = 'STATIONERY',
  BAGS = 'BAGS',
  SHOES = 'SHOES',
  JEWELRY = 'JEWELRY',
  OTHER = 'OTHER',
}

export enum MerchandiseStatus {
  DRAFT = 'DRAFT',
  ACTIVE = 'ACTIVE',
  INACTIVE = 'INACTIVE',
  OUT_OF_STOCK = 'OUT_OF_STOCK',
  DISCONTINUED = 'DISCONTINUED',
  ARCHIVED = 'ARCHIVED',
}

export enum MerchandiseOrderStatus {
  PENDING = 'PENDING',
  CONFIRMED = 'CONFIRMED',
  PROCESSING = 'PROCESSING',
  SHIPPED = 'SHIPPED',
  DELIVERED = 'DELIVERED',
  CANCELLED = 'CANCELLED',
  REFUNDED = 'REFUNDED',
  RETURNED = 'RETURNED',
}

export enum VariantType {
  SIZE = 'SIZE',
  COLOR = 'COLOR',
  MATERIAL = 'MATERIAL',
  STYLE = 'STYLE',
  EDITION = 'EDITION',
  OTHER = 'OTHER',
}

export enum ShippingMethod {
  STANDARD = 'STANDARD',
  EXPRESS = 'EXPRESS',
  OVERNIGHT = 'OVERNIGHT',
  PICKUP = 'PICKUP',
  DIGITAL = 'DIGITAL',
}

export enum EventMediaType {
  IMAGE = 'IMAGE',
  VIDEO = 'VIDEO',
  AUDIO = 'AUDIO',
  DOCUMENT = 'DOCUMENT',
}

export enum EventArtistRole {
  HEADLINER = 'HEADLINER',
  SUPPORTING = 'SUPPORTING',
  OPENING = 'OPENING',
  PERFORMER = 'PERFORMER',
  GUEST = 'GUEST',
  HOST = 'HOST',
  MODERATOR = 'MODERATOR',
}

export enum ApprovalStatus {
  PENDING = 'PENDING',
  APPROVED = 'APPROVED',
  REJECTED = 'REJECTED',
  CANCELLED = 'CANCELLED',
}

// Settings System Enums
export enum SettingCategory {
  SECURITY = 'SECURITY',
  EMAIL = 'EMAIL',
  PAYMENT = 'PAYMENT',
  PLATFORM = 'PLATFORM',
  NOTIFICATION = 'NOTIFICATION',
  DATABASE = 'DATABASE',
  FEATURE_FLAGS = 'FEATURE_FLAGS',
  API = 'API',
  INTEGRATION = 'INTEGRATION',
  ANALYTICS = 'ANALYTICS',
}

export enum SettingDataType {
  STRING = 'STRING',
  NUMBER = 'NUMBER',
  BOOLEAN = 'BOOLEAN',
  JSON = 'JSON',
  ARRAY = 'ARRAY',
  ENCRYPTED = 'ENCRYPTED',
  URL = 'URL',
  EMAIL = 'EMAIL',
}

export enum SettingEnvironment {
  DEVELOPMENT = 'DEVELOPMENT',
  STAGING = 'STAGING',
  PRODUCTION = 'PRODUCTION',
  ALL = 'ALL',
}

export enum SettingChangeType {
  CREATE = 'CREATE',
  UPDATE = 'UPDATE',
  DELETE = 'DELETE',
  RESTORE = 'RESTORE',
  BULK_UPDATE = 'BULK_UPDATE',
}

export enum SettingChangeSource {
  ADMIN_PANEL = 'ADMIN_PANEL',
  API = 'API',
  SYSTEM = 'SYSTEM',
  MIGRATION = 'MIGRATION',
  IMPORT = 'IMPORT',
  WEBHOOK = 'WEBHOOK',
}

export enum FeatureFlagStatus {
  ACTIVE = 'ACTIVE',
  INACTIVE = 'INACTIVE',
  TESTING = 'TESTING',
  DEPRECATED = 'DEPRECATED',
  ARCHIVED = 'ARCHIVED',
}

export enum FeatureFlagType {
  BOOLEAN = 'BOOLEAN',
  PERCENTAGE = 'PERCENTAGE',
  USER_LIST = 'USER_LIST',
  ROLE_BASED = 'ROLE_BASED',
  GEOGRAPHIC = 'GEOGRAPHIC',
  TIME_BASED = 'TIME_BASED',
}

export enum FeatureFlagScope {
  GLOBAL = 'GLOBAL',
  SERVICE = 'SERVICE',
  FEATURE = 'FEATURE',
  EXPERIMENT = 'EXPERIMENT',
}

export enum EmailTemplateType {
  SYSTEM = 'SYSTEM',
  MARKETING = 'MARKETING',
  TRANSACTIONAL = 'TRANSACTIONAL',
  NOTIFICATION = 'NOTIFICATION',
  REMINDER = 'REMINDER',
  CONFIRMATION = 'CONFIRMATION',
  INVITATION = 'INVITATION',
  WELCOME = 'WELCOME',
  RESET_PASSWORD = 'RESET_PASSWORD',
  VERIFICATION = 'VERIFICATION',
}

export enum EmailTemplateFormat {
  HTML = 'HTML',
  TEXT = 'TEXT',
  MIXED = 'MIXED',
}

export enum EmailTemplatePriority {
  LOW = 'LOW',
  NORMAL = 'NORMAL',
  HIGH = 'HIGH',
  URGENT = 'URGENT',
}