/**
 * Warning codes emitted by the genetics engine. The engine is language-neutral:
 * it emits CODES only. German texts are mapped in de.ts (UI layer).
 *
 * Modelled as a const object (not a TS `enum`) because the project's tsconfig
 * enables `erasableSyntaxOnly`.
 */
export const GeneticsWarningCode = {
  /** Schecke × Schecke: SpSp embryos die in utero; ~25% fewer live young. */
  ScheckeLethal: 'SCHECKE_LETHAL',
  /** Rex × Rex: ReRe is semi-lethal; reduced viability of homozygous young. */
  RexSemiLethal: 'REX_SEMI_LETHAL',
  /** WP × WP: S(l)S(l) is prenatal-lethal (Rumpback/megacolon); fewer live young. */
  SlsLethal: 'SLS_LETHAL',
  /** Sp + Sls together -> Superschecke: very high white, deafness-prone (info). */
  SuperscheckeDeaf: 'SUPERSCHECKE_DEAF',
} as const

export type GeneticsWarningCode =
  (typeof GeneticsWarningCode)[keyof typeof GeneticsWarningCode]

export interface GeneticsWarning {
  readonly code: GeneticsWarningCode
  /** Optional structured detail for the UI (e.g. fraction of young lost). */
  readonly detail?: Record<string, string | number>
}
