import type { DirectCheckKind, StateCheckKind } from "./types.js";

export const DIRECT_CHECK_KINDS: readonly DirectCheckKind[] = [
  "keyboard-trap",
  "invisible-focus",
  "wrong-focus-restoration",
  "modal-background-reachability",
  "duplicate-ids",
  "missing-labels",
  "invalid-landmarks",
  "insufficient-target-size",
  "zoom-reflow-loss",
] as const;

export const STATE_CHECK_KINDS: readonly StateCheckKind[] = [
  "route-account-leakage",
  "stale-cache-presentation",
  "back-forward-corruption",
  "offline-recovery-mismatch",
  "theme-inconsistency",
  "scroll-lock-leakage",
] as const;

/** Axe rules treated as deterministic-applicability blocking candidates (UI-060). */
export const BLOCKING_AXE_RULES = new Set<string>([
  "duplicate-id",
  "duplicate-id-active",
  "duplicate-id-aria",
  "image-alt",
  "label",
  "button-name",
  "html-has-lang",
  "landmark-one-main",
  "document-title",
  "meta-viewport",
]);

/** Axe rules that remain advisory because they require manual review (UI-060). */
export const ADVISORY_AXE_RULES = new Set<string>([
  "color-contrast",
  "color-contrast-enhanced",
]);

export const FORCED_COLORS_CAPABILITY_FEATURE = "a11y-forced-colors";

export const AXE_ADAPTER_NAME = "axe-core";
