// Core exports
export { Queue, type QueueWorkerConfig } from './queue';
export { QueueManager } from './queue-manager';
export { SmartQueueManager } from './smart-queue-manager';
export { ServiceCache, createServiceCache } from './service-cache';
export { 
  SERVICE_REGISTRY, 
  getServiceConfig, 
  findServiceForHandler,
  getFullQueueName,
  parseQueueName 
} from './service-registry';

// Re-export handler registry and utilities from handlers package
export { handlerRegistry, createJobHandler } from '@stock-bot/handlers';

// 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,
  QueueStats,
  GlobalStats,

  // Batch processing types
  BatchResult,
  ProcessOptions,
  BatchJobData,

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

  // 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';

// Re-export service registry types
export type { ServiceConfig } from './service-registry';
