// Mock data for Agio Compliance dashboard.
// All names, addresses, amounts are fictional. Designed to feel realistic
// for a Bahamas-regulated digital asset platform: BVI/Bahamas/LatAm/EU mix.

const COUNTRIES = {
  BS: { name: "Bahamas",         flag: "🇧🇸" },
  VG: { name: "BVI",             flag: "🇻🇬" },
  KY: { name: "Cayman Islands",  flag: "🇰🇾" },
  PA: { name: "Panama",          flag: "🇵🇦" },
  MX: { name: "Mexico",          flag: "🇲🇽" },
  AR: { name: "Argentina",       flag: "🇦🇷" },
  BR: { name: "Brazil",          flag: "🇧🇷" },
  CL: { name: "Chile",           flag: "🇨🇱" },
  CO: { name: "Colombia",        flag: "🇨🇴" },
  US: { name: "United States",   flag: "🇺🇸" },
  GB: { name: "United Kingdom",  flag: "🇬🇧" },
  CH: { name: "Switzerland",     flag: "🇨🇭" },
  AE: { name: "UAE",             flag: "🇦🇪" },
  SG: { name: "Singapore",       flag: "🇸🇬" },
  PT: { name: "Portugal",        flag: "🇵🇹" },
  DE: { name: "Germany",         flag: "🇩🇪" },
  ES: { name: "Spain",           flag: "🇪🇸" },
};

const APPLICANTS = [
  // id, name, country, type (kyc/kyb), tier, status, riskScore, pendingDays, nextAction, docType, sumsubId, email, dob, addr
  ["AP-7F31A2", "Mariana Salgado",         "MX", "kyc", "high",   "pending",  78, 47, "Manual EDD",      "Passport",         "iAbcD9123", "m.salgado@protonmail.com",    "1984-03-12", "Polanco, CDMX"],
  ["AP-7F31A3", "Helios Maritime Holdings", "VG", "kyb", "high",   "pending",  82, 31, "Request Docs",    "Cert. of Incorp.", "iXyZ44521", "compliance@helios-mar.vg",    "—",          "Road Town, Tortola"],
  ["AP-7F31A4", "João Pereira Coutinho",   "BR", "kyc", "medium", "pending",  41, 12, "Approve",         "RG / CPF",         "iBbcDee31", "joao.coutinho@gmail.com",     "1976-11-30", "Vila Madalena, SP"],
  ["AP-7F31A5", "Sigma Atlantic SPC",      "KY", "kyb", "high",   "on_hold",  88, 19, "UBO Incomplete",  "M&A",              "iSig00012", "ops@sigma-atlantic.ky",       "—",          "George Town, Grand Cayman"],
  ["AP-7F31A6", "Ana Lucía Ramírez",       "CO", "kyc", "low",    "pending",   8, 2,  "Approve",         "Cédula",           "iAnaR9923", "ana.ramirez@outlook.com",     "1991-06-18", "El Poblado, Medellín"],
  ["AP-7F31A7", "Erik Hoffmann",           "CH", "kyc", "medium", "pending",  35, 5,  "Approve",         "Passport",         "iErikH102", "erik.hoffmann@hin.ch",        "1969-09-04", "Zollikon, ZH"],
  ["AP-7F31A8", "Patricia Whitcombe",      "GB", "kyc", "high",   "pending",  72, 8,  "Request Docs",    "Passport + utility","iPatW0008","p.whitcombe@iqeq.com",        "1962-02-22", "Knightsbridge, London"],
  ["AP-7F31A9", "Andean Capital Partners", "CL", "kyb", "high",   "pending",  64, 14, "EDD Attestation", "Audited financials","iAnden4421","compliance@andeancap.cl",    "—",          "Las Condes, Santiago"],
  ["AP-7F31AA", "Fatima Al Mansouri",      "AE", "kyc", "high",   "pending",  69, 21, "Manual EDD",      "Emirates ID",      "iFatM7712", "fatima.alm@adnoc.ae",         "1981-12-08", "Saadiyat, AD"],
  ["AP-7F31AB", "Lorenzo Tavárez",         "PA", "kyc", "medium", "pending",  44, 4,  "Approve",         "Passport",         "iLoreT091", "lorenzo.tavarez@hsbc.com.pa", "1973-04-19", "Costa del Este, PTY"],
  ["AP-7F31AC", "Bridgewater Nominees Ltd","BS", "kyb", "high",   "pending",  56, 22, "Request Docs",    "Register of Members","iBridg551","compliance@bridgewater.bs",  "—",          "Lyford Cay, Nassau"],
  ["AP-7F31AD", "Sofia Lindqvist",         "PT", "kyc", "low",    "pending",  12, 1,  "Approve",         "Passport",         "iSofiL301", "s.lindqvist@gmail.com",       "1988-07-25", "Cascais, Lisbon"],
  ["AP-7F31AE", "Rafael Negroponte",       "AR", "kyc", "medium", "on_hold",  47, 16, "Awaiting client", "DNI",              "iRafN3340", "rafael.negroponte@gmail.com", "1979-10-11", "Recoleta, BA"],
  ["AP-7F31AF", "Cayman Cove Fund VII",    "KY", "kyb", "high",   "pending",  74, 9,  "EDD Attestation", "PPM + LPA",        "iCayCV007", "ops@caymancove.ky",           "—",          "Camana Bay, Grand Cayman"],
  ["AP-7F31B0", "Hideo Tanaka",            "SG", "kyc", "medium", "pending",  29, 3,  "Approve",         "Passport",         "iHideT008", "h.tanaka@temasek.com.sg",     "1975-05-14", "Orchard Road, SG"],
  ["AP-7F31B1", "Verónica del Río",        "ES", "kyc", "medium", "pending",  38, 6,  "Approve",         "DNI",              "iVeroR009", "v.delrio@bbva.com",           "1980-08-30", "Salamanca, Madrid"],
  ["AP-7F31B2", "Northern Crest Holdings", "VG", "kyb", "high",   "pending",  91, 53, "Reject",          "Cert. of Incorp.", "iNorthC11", "compliance@nccrest.vg",       "—",          "Road Town, Tortola"],
  ["AP-7F31B3", "Carlos Mendoza",          "MX", "kyc", "high",   "pending",  62, 11, "Request Docs",    "Passport",         "iCarlM412", "carlos.mendoza@banorte.com",  "1971-01-09", "San Pedro, MTY"],
  ["AP-7F31B4", "Isabela Furtado",         "BR", "kyc", "low",    "pending",  14, 1,  "Approve",         "RG / CPF",         "iIsaF8821", "isabela.furtado@itau.com.br", "1986-11-02", "Leblon, RJ"],
  ["AP-7F31B5", "Konstantin Petrov",       "AE", "kyc", "high",   "pending",  85, 26, "Manual EDD",      "Passport",         "iKonP9931", "k.petrov@rosgeo.ae",          "1967-04-04", "Downtown, Dubai"],
  ["AP-7F31B6", "Meridian Trust (BS) Ltd", "BS", "kyb", "medium", "pending",  33, 7,  "Approve",         "Trust Deed",       "iMerT0042", "trustees@meridian-trust.bs",  "—",          "Bay Street, Nassau"],
  ["AP-7F31B7", "Yusuf Demir",             "DE", "kyc", "medium", "pending",  41, 10, "Approve",         "Personalausweis",  "iYusD7711", "yusuf.demir@deutsche.de",     "1983-12-18", "Charlottenburg, Berlin"],
  ["AP-7F31B8", "Eliza Marchetti",         "CH", "kyc", "high",   "pending",  58, 18, "Request Docs",    "Passport",         "iEliM8801", "e.marchetti@pictet.ch",       "1974-07-07", "Cologny, Geneva"],
  ["AP-7F31B9", "Pacific Rim Ventures II", "SG", "kyb", "high",   "pending",  67, 13, "EDD Attestation", "LPA",              "iPacR3320", "ops@pacrimvc.sg",             "—",          "Marina Bay, SG"],
  ["AP-7F31BA", "Daniel Ortiz",            "PA", "kyc", "low",    "pending",  19, 3,  "Approve",         "Passport",         "iDanO5520", "daniel.ortiz@bladex.com",     "1989-09-15", "Costa del Este, PTY"],
  ["AP-7F31BB", "Camille Bouchard",        "US", "kyc", "medium", "pending",  37, 5,  "Approve",         "Passport",         "iCamB6691", "camille.bouchard@protonmail.com","1985-02-28","Brickell, Miami"],
  ["AP-7F31BC", "Tessera Family Office",   "PT", "kyb", "high",   "pending",  51, 24, "Request Docs",    "Articles",         "iTessF990", "compliance@tessera-fo.pt",    "—",          "Avenida, Lisbon"],
  ["AP-7F31BD", "Aiyana Begay",            "US", "kyc", "low",    "pending",  11, 2,  "Approve",         "Passport",         "iAiyB7720", "aiyana.begay@gmail.com",      "1992-03-21", "Santa Fe, NM"],
  ["AP-7F31BE", "Jorge Domínguez",         "AR", "kyc", "high",   "pending",  73, 35, "Manual EDD",      "DNI",              "iJorD6643", "jorge.dominguez@galicia.ar",  "1965-06-26", "Puerto Madero, BA"],
  ["AP-7F31BF", "Lin Chen",                "SG", "kyc", "medium", "pending",  31, 4,  "Approve",         "Passport",         "iLinC7732", "lin.chen@uob.com.sg",         "1987-10-12", "Sentosa Cove, SG"],
];

const FIRST_ROW = ["id","name","country","kind","tier","status","risk","days","action","doctype","sumsub","email","dob","addr"];
const applicants = APPLICANTS.map((row) =>
  Object.fromEntries(FIRST_ROW.map((k, i) => [k, row[i]]))
);

// ── Withdrawals ────────────────────────────────────────────────────────────
const WITHDRAWALS = [
  // id, user, country, tier (low/med/high), amount, asset, chain, dest, destRisk, kycTier, amlBand, ts
  ["WD-09A14", "Mariana Salgado",     "MX", "high",   164200,  "USDC", "Base",     "0x9F4c…a18B", "low",   "Tier-3", "Medium", "2026-05-19T09:14:00Z"],
  ["WD-09A13", "Helios Maritime",     "VG", "high",   2450000, "USDT", "Ethereum", "0x7AaE…4c0d", "high",  "Tier-3", "High",   "2026-05-19T08:42:00Z"],
  ["WD-09A12", "Konstantin Petrov",   "AE", "high",   38000,   "USDC", "Solana",   "5n2k…q8Px",  "low",   "Tier-3", "Medium", "2026-05-19T08:11:00Z"],
  ["WD-09A11", "Cayman Cove Fund VII","KY", "high",   980000,  "USDC", "Ethereum", "0x5C11…02A4", "low",   "Tier-3", "Low",    "2026-05-19T07:58:00Z"],
  ["WD-09A10", "Erik Hoffmann",       "CH", "medium", 18400,   "USDC", "Base",     "0x6Cd2…7f01", "low",   "Tier-2", "Low",    "2026-05-19T09:22:00Z"],
  ["WD-09A0F", "Patricia Whitcombe",  "GB", "medium", 22150,   "USDT", "Polygon",  "0xC3aa…81b5", "med",   "Tier-2", "Medium", "2026-05-19T08:51:00Z"],
  ["WD-09A0E", "Hideo Tanaka",        "SG", "medium", 9800,    "USDC", "Ethereum", "0x14F8…ee32", "low",   "Tier-2", "Low",    "2026-05-19T08:33:00Z"],
  ["WD-09A0D", "Yusuf Demir",         "DE", "medium", 14200,   "USDC", "Base",     "0xA002…117f", "low",   "Tier-2", "Low",    "2026-05-19T08:04:00Z"],
  ["WD-09A0C", "Camille Bouchard",    "US", "medium", 6450,    "USDC", "Solana",   "9PXz…aaQq",  "low",   "Tier-2", "Low",    "2026-05-19T07:39:00Z"],
  ["WD-09A0B", "Lorenzo Tavárez",     "PA", "medium", 11900,   "USDC", "Ethereum", "0xBb71…3290", "low",   "Tier-2", "Low",    "2026-05-19T07:21:00Z"],
  ["WD-09A0A", "Verónica del Río",    "ES", "medium", 7800,    "USDT", "Polygon",  "0xDd42…aa01", "low",   "Tier-2", "Low",    "2026-05-19T06:58:00Z"],
  ["WD-09A09", "Ana Lucía Ramírez",   "CO", "low",    1200,    "USDC", "Solana",   "Hk71…02vQ",  "low",   "Tier-1", "Low",    "2026-05-19T05:11:00Z"],
  ["WD-09A08", "Daniel Ortiz",        "PA", "low",    410,     "USDC", "Base",     "0x081d…aa9f", "low",   "Tier-1", "Low",    "2026-05-19T04:52:00Z"],
  ["WD-09A07", "Aiyana Begay",        "US", "low",    900,     "USDC", "Solana",   "GR9z…11Mn",  "low",   "Tier-1", "Low",    "2026-05-19T04:33:00Z"],
];
const W_KEYS = ["id","user","country","tier","amount","asset","chain","dest","destRisk","kycTier","amlBand","ts"];
const withdrawals = WITHDRAWALS.map(row => Object.fromEntries(W_KEYS.map((k,i)=>[k, row[i]])));

// ── Organizations (KYB / UBO) ─────────────────────────────────────────────
const ORGS = [
  {
    id: "ORG-7H22", name: "Helios Maritime Holdings", country: "VG",
    aum: 184_000_000, sub: "Fund A — $2.45M pending", uboCoverage: 0.60,
    ubos: [
      { name: "Patricia Whitcombe", pct: 32, verified: true },
      { name: "Jorge Domínguez",    pct: 28, verified: true },
      { name: "Sigma Atlantic SPC", pct: 22, verified: false, sub: true },
      { name: "Unknown",            pct: 18, verified: false },
    ],
  },
  {
    id: "ORG-7H08", name: "Sigma Atlantic SPC", country: "KY",
    aum: 92_000_000, sub: "Class B — $920k pending", uboCoverage: 0.45,
    ubos: [
      { name: "Konstantin Petrov",   pct: 41, verified: true },
      { name: "Fatima Al Mansouri",  pct: 22, verified: false },
      { name: "Bridgewater Nominees",pct: 21, verified: false, sub: true },
      { name: "Unknown",             pct: 16, verified: false },
    ],
  },
  {
    id: "ORG-7H44", name: "Cayman Cove Fund VII", country: "KY",
    aum: 412_000_000, sub: "Sub-doc complete", uboCoverage: 0.78,
    ubos: [
      { name: "Eliza Marchetti",       pct: 35, verified: true },
      { name: "Carlos Mendoza",        pct: 25, verified: true },
      { name: "Tessera Family Office", pct: 18, verified: false, sub: true },
      { name: "Pacific Rim Ventures",  pct: 12, verified: true,  sub: true },
      { name: "Other (<10%)",          pct: 10, verified: true },
    ],
  },
  {
    id: "ORG-7H51", name: "Andean Capital Partners", country: "CL",
    aum: 28_000_000, sub: "Onboarding", uboCoverage: 0.30,
    ubos: [
      { name: "Rafael Negroponte",     pct: 38, verified: false },
      { name: "Lorenzo Tavárez",       pct: 22, verified: true },
      { name: "Northern Crest Holdings",pct:20, verified: false, sub: true },
      { name: "Unknown",               pct: 20, verified: false },
    ],
  },
  {
    id: "ORG-7H62", name: "Northern Crest Holdings", country: "VG",
    aum: 67_000_000, sub: "Blocked", uboCoverage: 0.0,
    ubos: [
      { name: "Nominee #1",           pct: 51, verified: false, sub: true },
      { name: "Nominee #2",           pct: 28, verified: false, sub: true },
      { name: "Unknown",              pct: 21, verified: false },
    ],
  },
  {
    id: "ORG-7H77", name: "Pacific Rim Ventures II", country: "SG",
    aum: 134_000_000, sub: "LPA — $4.1M pending", uboCoverage: 0.66,
    ubos: [
      { name: "Hideo Tanaka",       pct: 31, verified: true },
      { name: "Lin Chen",           pct: 28, verified: true },
      { name: "Tessera Family Office",pct: 22, verified: false, sub: true },
      { name: "Other (<10%)",       pct: 19, verified: true },
    ],
  },
];

// ── Document Expiration ───────────────────────────────────────────────────
const DOC_EXPIRY = (() => {
  const buckets = { "0-7": [], "8-30": [], "31-90": [], "91-180": [] };
  const sample = [
    ["Mariana Salgado",       "Passport",         3,   "MX"],
    ["Erik Hoffmann",         "Address Proof",    5,   "CH"],
    ["Patricia Whitcombe",    "Risk Declaration", 6,   "GB"],
    ["Helios Maritime",       "Reg. of Members",  7,   "VG"],
    ["João Pereira Coutinho", "RG / CPF",         11,  "BR"],
    ["Konstantin Petrov",     "Passport",         14,  "AE"],
    ["Fatima Al Mansouri",    "Emirates ID",      17,  "AE"],
    ["Andean Capital",        "Audit Financials", 22,  "CL"],
    ["Lin Chen",              "Passport",         28,  "SG"],
    ["Pacific Rim Ventures",  "LPA",              29,  "SG"],
    ["Eliza Marchetti",       "Passport",         44,  "CH"],
    ["Yusuf Demir",           "Personalausweis",  56,  "DE"],
    ["Hideo Tanaka",          "Passport",         62,  "SG"],
    ["Verónica del Río",      "DNI",              71,  "ES"],
    ["Cayman Cove Fund VII",  "PPM",              82,  "KY"],
    ["Bridgewater Nominees",  "Trust Deed",       88,  "BS"],
    ["Tessera Family Office", "Articles",         110, "PT"],
    ["Meridian Trust",        "Trust Deed",       133, "BS"],
    ["Camille Bouchard",      "Passport",         152, "US"],
    ["Sofia Lindqvist",       "Risk Declaration", 168, "PT"],
  ];
  sample.forEach(([name, doc, days, c]) => {
    const b = days <= 7 ? "0-7" : days <= 30 ? "8-30" : days <= 90 ? "31-90" : "91-180";
    buckets[b].push({ name, doc, days, country: c });
  });
  return buckets;
})();

// ── Audit Trail ───────────────────────────────────────────────────────────
const AUDIT = [
  ["2026-05-19 09:42:18", "alva.brennan@agio",       "kyc.approved",     "AP-7F31A4 João Pereira Coutinho",   "Tier 2 → approved. Notes: address proof valid."],
  ["2026-05-19 09:41:02", "alva.brennan@agio",       "kyc.requested_docs","AP-7F31A8 Patricia Whitcombe",     "Requested: utility bill (<3mo)."],
  ["2026-05-19 09:38:55", "alva.brennan@agio",       "review.opened",    "AP-7F31A8 Patricia Whitcombe",      "—"],
  ["2026-05-19 09:21:09", "carlos.gomes@agio",       "wd.approved",      "WD-09A10 Erik Hoffmann $18,400",    "Medium tier · destination clean."],
  ["2026-05-19 09:14:33", "carlos.gomes@agio",       "wd.requested_edd", "WD-09A14 Mariana Salgado $164,200", "EDD required: source of funds attestation."],
  ["2026-05-19 09:02:11", "system",                  "kyt.alert",        "0x7AaE…4c0d (Helios Maritime)",     "Destination tagged: sanctioned-adjacent (Score 82)."],
  ["2026-05-19 08:51:44", "carlos.gomes@agio",       "wd.approved",      "WD-09A0F Patricia Whitcombe $22,150","Medium tier · second look."],
  ["2026-05-19 08:33:27", "carlos.gomes@agio",       "wd.approved",      "WD-09A0E Hideo Tanaka $9,800",      "Medium tier · standard."],
  ["2026-05-19 08:11:50", "alva.brennan@agio",       "kyc.escalated",    "AP-7F31A2 Mariana Salgado",         "Escalated to manual EDD (risk 78)."],
  ["2026-05-19 07:58:02", "carlos.gomes@agio",       "wd.approved",      "WD-09A11 Cayman Cove Fund VII $980,000","High tier · EDD attested."],
  ["2026-05-19 07:39:18", "system",                  "wd.auto_approved", "WD-09A0C Camille Bouchard $6,450",  "Low-tier auto-approval."],
  ["2026-05-19 07:21:44", "alva.brennan@agio",       "kyb.share_link",   "ORG-7H22 Helios Maritime",          "Share link created → patricia@helios-mar.vg."],
  ["2026-05-19 06:58:12", "system",                  "wd.auto_approved", "WD-09A0A Verónica del Río $7,800",  "Low-tier auto-approval."],
  ["2026-05-19 06:12:09", "elena.thomas@agio",       "settings.changed", "Risk-tier thresholds",              "High tier threshold $25,000 → $25,000 (no-op)."],
  ["2026-05-19 05:11:33", "system",                  "wd.auto_approved", "WD-09A09 Ana Lucía Ramírez $1,200", "Low-tier auto-approval."],
  ["2026-05-19 04:33:01", "system",                  "wd.auto_approved", "WD-09A07 Aiyana Begay $900",        "Low-tier auto-approval."],
  ["2026-05-19 03:55:22", "alva.brennan@agio",       "review.closed",    "AP-7F31AE Rafael Negroponte",       "On hold: awaiting client response."],
  ["2026-05-18 22:12:09", "alva.brennan@agio",       "kyc.rejected",     "AP-7F31B2 Northern Crest Holdings", "Reject: nominee structure non-attestable per §4.2."],
  ["2026-05-18 18:01:55", "carlos.gomes@agio",       "wd.approved",      "WD-09A02 Lin Chen $4,200",          "Medium tier · standard."],
  ["2026-05-18 17:14:38", "system",                  "kyc.expired",      "AP-7F1E9C Adrián Vega",             "KYC expired on 2026-05-18. Re-verification required."],
];
const A_KEYS = ["ts","actor","action","subject","note"];
const audit = AUDIT.map(row => Object.fromEntries(A_KEYS.map((k,i)=>[k, row[i]])));

// ── Sparkline data (random walk for last 30 days, deterministic) ──────────
function sparkline(seed, n = 30) {
  let s = seed; const out = [];
  for (let i = 0; i < n; i++) { s = (s * 1664525 + 1013904223) >>> 0; out.push((s % 1000) / 1000); }
  return out;
}

// ── Compliance Ops Vitals ─────────────────────────────────────────────────
const VITALS = {
  workstreams: [
    { name: "KYC gates enforced",        state: "green",  hint: "0 mutations without verified KYC (24h)" },
    { name: "Review queue staffed",      state: "amber",  hint: "1 reviewer active · target 2" },
    { name: "Withdrawal SLA",            state: "green",  hint: "Median 4m12s" },
    { name: "UBO ≥10% coverage",         state: "amber",  hint: "4 orgs incomplete · 3 blocking subscription" },
    { name: "Audit trail current",       state: "green",  hint: "Last write 14s ago" },
    { name: "Doc expiry monitor",        state: "amber",  hint: "12 docs expire ≤30 days" },
  ],
  medianDecision: "8m 14s",
  unverifiedMutations: 0,
  slap95: "2d 4h",
  decisionsToday: 23,
  rejectedToday: 1,
  edd: 3,
};

Object.assign(window, {
  COUNTRIES, applicants, withdrawals, ORGS, DOC_EXPIRY, audit, sparkline, VITALS,
});
