export interface EmployeeSearchResult {
  employee_id: string;
  staff_id: string;
  firstname: string;
  lastname: string;
}

export interface BulkPayslipPayload {
  payroll_run_id: string;
}

export interface BulkTaxCertificatePayload {
  year: number;
  payroll_run_id?: string;
}

export interface BulkReportCreateResponse {
  message: string;
  batch_id: string;
  status_url: string;
}

export interface ReportBatchStatus {
  batch_id: string;
  name: string;
  total_jobs: number;
  pending_jobs: number;
  processed_jobs: number;
  failed_jobs: number;
  failed_job_ids: string[];
  progress: number;
  finished: boolean;
  cancelled: boolean;
  download_url: string | null;
}

export interface ReportPreviewResponse {
  data: Record<string, string | number | null>[];
  headings: string[];
  totals: Record<string, number | string>;
}

export interface ReportDownloadPayload {
  payroll_run_id: string;
  format?: 'xlsx' | 'csv';
}

export interface PayrollReportArchive {
  id: string;
  batch_id: string;
  type: 'payslip' | 'tax_certificate';
  payroll_run_id?: string;
  payroll_run_label?: string;
  year?: number;
  employee_count?: number;
  file_size?: number;
  status: 'pending' | 'ready' | 'failed';
  error_message?: string;
  generated_by_name?: string;
  generated_at?: string;
  created_at: string;
}

export interface ArchiveListResponse {
  data: PayrollReportArchive[];
  meta: {
    current_page: number;
    last_page: number;
    per_page: number;
    total: number;
  };
}

export interface PensionPool {
  id: string;
  code: string;
  name: string;
  report_group: string;
  country_code: string;
  is_active: boolean;
}

export interface PensionReportDownloadPayload {
  payroll_run_id: string;
  report_group: string;
  format?: 'xlsx' | 'csv';
}
