export interface SlaMetricBlock {
  due_at: string | null;
  completed_at: string | null;
  breached: boolean;
  time_remaining_minutes: number | null;
  percentage_elapsed: number | null;
  is_warning: boolean;
  is_breached: boolean;
}

export interface TicketSlaTracking {
  id: string;
  ticket_id: string;
  sla_status: string;
  sla_status_label: string;
  sla_status_color: string;
  response: SlaMetricBlock;
  resolution: SlaMetricBlock;
  is_paused: boolean;
  paused_at: string | null;
  paused_duration_minutes: number | null;
  created_at: string;
  updated_at: string;
}

function isSlaMetricBlock(value: unknown): value is SlaMetricBlock {
  if (typeof value !== 'object' || value === null) {
    return false;
  }
  const m = value as Record<string, unknown>;
  return typeof m.is_warning === 'boolean' && typeof m.is_breached === 'boolean';
}

export function isTicketSlaTracking(value: unknown): value is TicketSlaTracking {
  if (typeof value !== 'object' || value === null) {
    return false;
  }
  const s = value as Record<string, unknown>;
  return (
    typeof s.id === 'string' &&
    typeof s.sla_status === 'string' &&
    typeof s.sla_status_label === 'string' &&
    isSlaMetricBlock(s.response) &&
    isSlaMetricBlock(s.resolution)
  );
}
