export interface QueueConfiguration {
  id: string;
  mcpToolName: string;

  // Timing
  delayType: 'fixed' | 'random';
  delayUnit: 'seconds' | 'minutes' | 'hours' | 'days';
  delayValue?: number;
  delayMin?: number;
  delayMax?: number;

  // Rate limits
  dailyLimit: number;
  hourlyLimit: number;

  // Active hours
  activeHours?: {
    timezone: string;
    schedule: {
      [day: string]: {
        enabled: boolean;
        start?: string;
        end?: string;
      };
    };
  };

  // Metadata
  createdAt: number;
  updatedAt: number;
  lastUsed?: number;
  totalProcessed: number;
}

export interface QueueState {
  queueId: string;
  lastReleaseTime: number;
  itemCount: number;
  currentExecutingItem: string | null;
  lastExecutedTime: number;
  version: number;
}

export interface QueueUsage {
  date: string;
  hour: string;
  dailyCount: number;
  hourlyCount: number;
}

export interface QueueItem {
  id: string;
  queueId: string;
  releaseTime: number;
  targetAction: string;
  actionConfig: any;
  status: 'scheduled' | 'processing' | 'completed' | 'failed';
  createdAt: number;
  lastError?: string;
}

export interface QueueStatus {
  pendingItems: number;
  currentlyExecuting: string | null;
  lastExecutedTime: string | null;
  dailyUsed: number;
  dailyLimit: number;
  dailyRemaining: number | null;
  hourlyUsed: number;
  hourlyLimit: number;
  hourlyRemaining: number | null;
  isWithinActiveHours?: boolean;
  nextActiveWindow?: string;
}
