export interface MetadataRefreshJob {
  trackId: string;
  refreshType: 'full' | 'partial';
}

export interface AudioAnalysisJob {
  trackId: string;
}

export interface CleanupJob {
  reason: 'expired' | 'manual';
  targetFiles: string[];
}

export interface LibraryScanJob {
  directory: string;
}

export interface ReindexTracksJob {}

export interface ReprocessArtistsJob {
  batchSize?: number;
  offset?: number;
}

/**
 * Explicit, opt-in System E hand-off. The worker looks the candidate up again
 * from Postgres; no URL or shell arguments travel through Redis.
 */
export interface AcquisitionJob {
  candidateId: string;
}

export type JobPayload = MetadataRefreshJob | AudioAnalysisJob | CleanupJob | LibraryScanJob | ReindexTracksJob | ReprocessArtistsJob | AcquisitionJob;
