// Core exports
export { Queue } from './queue';
export { QueueManager } from './queue-manager';
export { ServiceCache, createServiceCache } from './service-cache';
// Service utilities
export {
  normalizeServiceName,
  generateCachePrefix,
  getFullQueueName,
  parseQueueName,
} from './service-utils';

// Batch processing
export { processBatchJob, processItems } from './batch-processor';

// DLQ handling
export { DeadLetterQueueHandler } from './dlq-handler';

// Metrics
export { QueueMetricsCollector } from './queue-metrics';

// Rate limiting
export { QueueRateLimiter } from './rate-limiter';

// Types
export type {
  // Core types
  JobData,
  JobOptions,
  QueueOptions,
  GlobalStats,

  // Batch processing types
  BatchResult,
  ProcessOptions,
  BatchJobData,

  // Handler types
  JobHandler,
  TypedJobHandler,
  HandlerConfig,
  HandlerConfigWithSchedule,
  HandlerInitializer,
  QueueStats,
  QueueWorkerConfig,

  // Configuration types
  RedisConfig,
  QueueConfig,
  QueueManagerConfig,

  // Rate limiting types
  RateLimitConfig,
  RateLimitRule,

  // DLQ types
  DLQConfig,
  DLQJobInfo,

  // Scheduled job types
  ScheduledJob,
  ScheduleConfig,

  // Smart Queue types
  SmartQueueConfig,
  QueueRoute,
} from './types';
