# Swappable drug front-ends. Each entry supplies everything simulate.R needs
# to build the PK + target-engagement layer; the mechanism core and clinical
# translation downstream never change per-drug. See model-spec.md Section 3.
#
# confidence: "high" = published human population PK; "low" = scaled from
# non-human or non-population data; "stub" = structure wired, parameters not
# yet researched -- app should warn the user visibly.

ted_drugs <- list(

  none = list(
    label = "No treatment (natural history)",
    mechanism = "none",
    confidence = "high",
    pk_type = NA,
    default_regimen = NULL
  ),

  teprotumumab = list(
    label = "Teprotumumab (IGF-1R mAb, IV)",
    mechanism = "igf1r",
    confidence = "high",
    source = "Xu et al. population PK, PMC8332554",
    pk_type = "iv_2cmt_mm",
    pk = list(CL = 0.334, Q = 0.859, Vc = 3.94, Vp = 4.21, Vmax = 3.02, Km = 1.5),
    pk_sex_vc = list(male = 3.94, female = 3.25),
    default_regimen = list(
      dose_mg_per_kg = c(10, rep(20, 7)),  # dose escalates after 1st infusion
      n_doses = 8,
      interval_days = 21
    )
  ),

  veligrotug = list(
    label = "Veligrotug / VRDN-001 (IGF-1R mAb, IV) [low-confidence PK]",
    mechanism = "igf1r",
    confidence = "low",
    source = "Preclinical (cynomolgus) NCA only, PMC12629334 -- allometrically scaled placeholder, no human population PK located",
    pk_type = "iv_2cmt_mm",
    pk = list(CL = 0.334, Q = 0.859, Vc = 3.94, Vp = 4.21, Vmax = 3.02, Km = 1.5),
    default_regimen = list(
      dose_mg_per_kg = rep(10, 5),
      n_doses = 5,
      interval_days = 28
    )
  ),

  vrdn003 = list(
    label = "VRDN-003 (IGF-1R mAb, SC) [stub -- not parameterized]",
    mechanism = "igf1r",
    confidence = "stub",
    source = "No published PK parameters located as of project start",
    pk_type = "iv_2cmt_mm",
    pk = list(CL = 0.2, Q = 0.5, Vc = 3.5, Vp = 4.0, Vmax = 2.0, Km = 1.5),
    default_regimen = list(
      dose_mg_per_kg = rep(10, 6),
      n_doses = 6,
      interval_days = 28
    )
  ),

  linsitinib = list(
    label = "Linsitinib (oral IGF-1R inhibitor) [stub -- not parameterized]",
    mechanism = "igf1r",
    confidence = "stub",
    source = "Oral, short half-life, BID dosing per literature scan -- no PK parameters located",
    pk_type = "oral_1cmt",
    pk = list(ka = 1.0, CL = 50, Vc = 100, Km = 1.5),
    default_regimen = list(
      dose_mg = 100,
      n_doses = 56,  # BID for 4 weeks, illustrative
      interval_days = 0.5
    )
  ),

  batoclimab = list(
    label = "Batoclimab (FcRn antagonist -> TRAb clearance) [stub -- not parameterized]",
    mechanism = "trab_clearance",
    confidence = "stub",
    source = "Mechanism (FcRn antagonism accelerating IgG clearance) is literature-supported; PK/PD magnitude not yet parameterized",
    pk_type = "iv_2cmt_mm",
    pk = list(CL = 0.3, Q = 0.5, Vc = 3.5, Vp = 4.0, Vmax = 2.0, Km = 1.5),
    trab_clearance_emax = 0.6,
    default_regimen = list(
      dose_mg_per_kg = rep(3, 6),
      n_doses = 6,
      interval_days = 7
    )
  ),

  k1_70 = list(
    label = "K1-70 (TSHR-blocking mAb) [stub -- not parameterized]",
    mechanism = "tshr",
    confidence = "stub",
    source = "Phase 1 only, sparse published PK -- placeholder parameters",
    pk_type = "iv_2cmt_mm",
    pk = list(CL = 0.3, Q = 0.6, Vc = 3.8, Vp = 4.1, Vmax = 2.5, Km = 1.5),
    default_regimen = list(
      dose_mg_per_kg = rep(5, 6),
      n_doses = 6,
      interval_days = 21
    )
  )
)
