import type {
  SweepsCellEvidence,
  SweepsRuleId,
  SweepsViolationFact,
  Ui001EvidenceRecord,
} from "./types.js";
import { SWEEPS_DETECTOR_VERSION } from "./types.js";

export function screenshotRefs(evidence: SweepsCellEvidence): string[] {
  return [evidence.sweepsArtifacts.fullScreenshot.relativePath];
}

export function timestampPhase(evidence: SweepsCellEvidence): string {
  return evidence.settled.signal;
}

export function buildUi001Evidence(
  evidence: SweepsCellEvidence,
  ruleId: SweepsRuleId,
  violation: SweepsViolationFact,
  classificationBasis: string,
): Ui001EvidenceRecord {
  const cell = evidence.cell;
  return {
    ruleId,
    route: cell.routeId,
    url: cell.url,
    role: cell.role,
    locale: cell.locale,
    viewport: cell.viewport,
    state: cell.state,
    actions: cell.actions,
    timestampPhase: timestampPhase(evidence),
    targetLocator: violation.locator,
    measuredEvidence: {
      ...violation.measurement,
      sweepsProbe: {
        sweepsVersion: evidence.sweepsProbe.sweepsVersion,
        localeCheckCount: evidence.sweepsProbe.localeChecks.length,
        responsiveCheckCount: evidence.sweepsProbe.responsiveChecks.length,
        observation: evidence.sweepsProbe.observation,
      },
    },
    screenshotRefs: screenshotRefs(evidence),
    detectorVersion: SWEEPS_DETECTOR_VERSION,
    classificationBasis,
    violation,
  };
}
