/**
 * The Stirling endpoint catalogue.
 *
 * Document types are grouped by vertical (Insurance, Finance, Legal, …).
 * Each entry carries the route path, tier gate, JSON-shape schema, supported
 * regions, and a category accent. The catalogue is the spine the Docs view,
 * the Pipelines composer, and the Document type grid on Home all read from.
 *
 * Ported faithfully from the prototype's DOCUMENT_TYPES. Schema field shapes
 * are kept as the prototype-style "type-or-list-of-type" string for now; a
 * future revision should convert them to Zod schemas so they double as
 * runtime validators.
 */

import type { Tier } from "@app/tokens/tokens";

/** Canonical vertical keys — these map 1:1 to category-accent CSS variables. */
export type VerticalKey =
  | "insurance"
  | "compliance"
  | "finance"
  | "legal"
  | "healthcare"
  | "government"
  | "operations"
  | "hr"
  | "realestate"
  | "energy";

/**
 * Numeric tier requirement on an endpoint.
 *   0 = free
 *   1 = paid (pro / pay-as-you-go and above)
 *   2 = enterprise only
 *
 * Use `isEndpointAvailable(endpoint, currentTier)` for runtime checks rather
 * than comparing numbers directly.
 */
export type EndpointTierGate = 0 | 1 | 2;

export interface EndpointSchema {
  /**
   * Prototype-style field shape. Strings like "string", "number", "date",
   * "boolean", "string?" (optional), "[string]" (array), or an inline shape
   * "{start, end}". Replace with a Zod schema when wiring up real requests.
   */
  [field: string]: string;
}

export interface Endpoint {
  /** Display name shown in cards and docs. */
  name: string;
  /** Route path mounted under the Stirling API. */
  endpoint: string;
  /** Numeric tier gate, see {@link EndpointTierGate}. */
  tier: EndpointTierGate;
  /** One-line description used in cards and docs index. */
  desc: string;
  /** Vertical this endpoint belongs to. */
  vertical: VerticalKey;
  /** Region availability list. "+22" tail means "and N more regions". */
  regions: readonly string[];
  /** Endpoint payload shape. */
  schema: EndpointSchema;
}

export interface Vertical {
  key: VerticalKey;
  label: string;
  /** CSS-variable reference for the category accent. */
  color: string;
  endpoints: readonly Endpoint[];
}

/* ──────────────────────────────────────────────────────────────────────── */
/*  Catalogue                                                                */
/* ──────────────────────────────────────────────────────────────────────── */

const insurance: readonly Endpoint[] = [
  {
    name: "Certificates of Insurance",
    endpoint: "/v1/coi",
    tier: 1,
    vertical: "insurance",
    desc: "Live compliance dashboard with coverage gaps, renewal alerts, and AI Q&A for policy verification",
    regions: ["US", "UK", "CA", "AU", "+22"],
    schema: {
      holder: "string",
      insurer: "string",
      policy_number: "string",
      coverage_types: "[string]",
      general_aggregate: "number",
      expiry_date: "date",
      additional_insured: "boolean",
    },
  },
  {
    name: "Loss Run Reports",
    endpoint: "/v1/loss-run",
    tier: 1,
    vertical: "insurance",
    desc: "Claims timeline with loss ratio trends, carrier comparisons, and underwriting AI chat",
    regions: ["US", "UK", "CA"],
    schema: {
      carrier: "string",
      policy_period: "string",
      total_claims: "number",
      total_incurred: "number",
      loss_ratio: "number",
      claims: "[{date, type, incurred, status}]",
    },
  },
  {
    name: "ACORD Forms",
    endpoint: "/v1/acord",
    tier: 1,
    vertical: "insurance",
    desc: "Multi-carrier coverage view with ACORD compliance badges and reconciliation actions",
    regions: ["US"],
    schema: {
      form_number: "string",
      producer: "string",
      insured: "string",
      carriers: "[{name, naic, policy}]",
      coverages: "[{type, limit, deductible}]",
      effective_date: "date",
    },
  },
  {
    name: "Declarations Pages",
    endpoint: "/v1/dec-page",
    tier: 1,
    vertical: "insurance",
    desc: "Coverage summary with gap highlights, endorsement changes, and premium calculator",
    regions: ["US", "UK", "CA", "AU"],
    schema: {
      named_insured: "string",
      policy_number: "string",
      effective: "date",
      expiry: "date",
      coverages: "[{type, limit, deductible, premium}]",
      total_premium: "number",
      endorsements: "[string]",
    },
  },
  {
    name: "Explanation of Benefits",
    endpoint: "/v1/eob",
    tier: 1,
    vertical: "insurance",
    desc: "Benefit breakdown with denial codes, patient cost visibility, and billing action buttons",
    regions: ["US"],
    schema: {
      patient: "string",
      provider: "string",
      service_date: "date",
      services: "[{code, description, billed, allowed, paid, patient_resp}]",
      denial_codes: "[string]?",
      total_patient_owed: "number",
    },
  },
  {
    name: "Subrogation Notices",
    endpoint: "/v1/subrogation",
    tier: 1,
    vertical: "insurance",
    desc: "Recovery opportunity tracker with status updates, lien tracking, and settlement AI",
    regions: ["US", "UK"],
    schema: {
      claim_number: "string",
      claimant: "string",
      liable_party: "string",
      loss_date: "date",
      recovery_sought: "number",
      lien_amount: "number?",
      status: "string",
    },
  },
  {
    name: "Surety Bonds",
    endpoint: "/v1/surety-bond",
    tier: 1,
    vertical: "insurance",
    desc: "Bond status dashboard showing obligee requirements, renewal dates, and compliance checklist",
    regions: ["US", "UK", "CA", "AU", "+14"],
    schema: {
      bond_number: "string",
      principal: "string",
      obligee: "string",
      surety: "string",
      bond_amount: "number",
      effective_date: "date",
      expiry_date: "date",
      bond_type: "string",
    },
  },
];

const compliance: readonly Endpoint[] = [
  {
    name: "SOC 2 Reports",
    endpoint: "/v1/soc2",
    tier: 1,
    vertical: "compliance",
    desc: "Control assessment view with exception severity ratings, trust criteria status, and remediation notes",
    regions: ["US", "Global"],
    schema: {
      report_type: "string",
      service_org: "string",
      auditor: "string",
      period: "{start, end}",
      opinion: "string",
      exceptions: "[{control, description}]",
      trust_criteria: "[string]",
    },
  },
  {
    name: "Regulatory Filings",
    endpoint: "/v1/regulatory-filing",
    tier: 1,
    vertical: "compliance",
    desc: "Multi-jurisdiction filing calendar with deadline alerts, status tracking, and submission buttons",
    regions: ["US", "UK", "EU", "SG", "HK", "+31"],
    schema: {
      filing_type: "string",
      jurisdiction: "string",
      entity: "string",
      filing_date: "date",
      deadline: "date",
      status: "string",
      reference_number: "string?",
    },
  },
  {
    name: "Consent Orders",
    endpoint: "/v1/consent-order",
    tier: 1,
    vertical: "compliance",
    desc: "Violation timeline with remediation progress bars, deadline countdowns, and compliance history",
    regions: ["US", "UK", "EU"],
    schema: {
      regulatory_body: "string",
      respondent: "string",
      order_date: "date",
      violations: "[{statute, description}]",
      penalties: "number",
      remediation: "[string]",
      compliance_deadline: "date",
    },
  },
  {
    name: "GDPR Processing Agreements",
    endpoint: "/v1/dpa",
    tier: 1,
    vertical: "compliance",
    desc: "Data processing overview with transfer mechanism validation, sub-processor registry, and approval flow",
    regions: ["EU", "UK", "CH", "Global"],
    schema: {
      controller: "string",
      processor: "string",
      data_categories: "[string]",
      purposes: "[string]",
      sub_processors: "[{name, location}]",
      transfer_mechanism: "string",
      retention_period: "string",
    },
  },
  {
    name: "Sanctions Screening Results",
    endpoint: "/v1/sanctions-screen",
    tier: 1,
    vertical: "compliance",
    desc: "Real-time screening results with match confidence scores and one-click disposition",
    regions: ["US", "UK", "EU", "Global"],
    schema: {
      screened_entity: "string",
      lists_checked: "[string]",
      matches: "[{list, name, score, type}]",
      overall_risk: "string",
      disposition: "string",
      screened_date: "date",
    },
  },
  {
    name: "ISO Audit Reports",
    endpoint: "/v1/iso-audit",
    tier: 1,
    vertical: "compliance",
    desc: "Audit findings organized by severity with remediation timelines and compliance tracking",
    regions: ["Global"],
    schema: {
      standard: "string",
      audit_type: "string",
      auditor: "string",
      organization: "string",
      nonconformities: "[{clause, severity, finding}]",
      observations: "[string]",
      recommendation: "string",
    },
  },
  {
    name: "Incident Reports",
    endpoint: "/v1/incident-report",
    tier: 1,
    vertical: "compliance",
    desc: "Incident severity dashboard with root cause analysis, remediation tracking, and escalation status",
    regions: ["Global"],
    schema: {
      incident_id: "string",
      date: "date",
      severity: "string",
      category: "string",
      description: "string",
      root_cause: "string?",
      remediation: "string?",
      reported_by: "string",
    },
  },
];

const finance: readonly Endpoint[] = [
  {
    name: "Letters of Credit",
    endpoint: "/v1/loc",
    tier: 1,
    vertical: "finance",
    desc: "LC tracker with condition verification, expiry alerts, and cash call risk assessment",
    regions: ["US", "UK", "HK", "SG", "+34"],
    schema: {
      lc_number: "string",
      issuing_bank: "string",
      applicant: "string",
      beneficiary: "string",
      amount: "number",
      currency: "string",
      conditions: "[string]",
      expiry_date: "date",
      type: "string",
    },
  },
  {
    name: "Trade Confirmations",
    endpoint: "/v1/trade-confirm",
    tier: 1,
    vertical: "finance",
    desc: "Trade confirmation with counterparty validation, settlement date verification, and matching status",
    regions: ["US", "UK", "EU", "HK", "JP", "+18"],
    schema: {
      trade_date: "date",
      settlement_date: "date",
      security: "string",
      identifier: "string",
      quantity: "number",
      price: "number",
      counterparty: "string",
      account: "string",
    },
  },
  {
    name: "Fund Prospectuses",
    endpoint: "/v1/prospectus",
    tier: 1,
    vertical: "finance",
    desc: "Fund profile with fee breakdown, risk level compliance checks, and mandate alignment flags",
    regions: ["US", "UK", "EU", "LU", "+12"],
    schema: {
      fund_name: "string",
      fund_type: "string",
      objective: "string",
      expense_ratio: "number",
      risk_level: "string",
      min_investment: "number",
      performance: "[{period, return}]",
      manager: "string",
    },
  },
  {
    name: "K-1 Schedules",
    endpoint: "/v1/k1",
    tier: 1,
    vertical: "finance",
    desc: "Partnership income view with equity reconciliation, distribution tracking, and tax line mapping",
    regions: ["US"],
    schema: {
      partnership: "string",
      partner: "string",
      tax_year: "number",
      ordinary_income: "number",
      rental_income: "number?",
      interest_income: "number?",
      capital_gains: "number?",
      distributions: "number",
      capital_account: "number",
    },
  },
  {
    name: "10-K / Annual Reports",
    endpoint: "/v1/10k",
    tier: 1,
    vertical: "finance",
    desc: "Financial summary with risk factor highlights, year-over-year comparisons, and segment performance",
    regions: ["US", "UK", "EU", "JP", "+8"],
    schema: {
      entity: "string",
      fiscal_year: "number",
      revenue: "number",
      net_income: "number",
      total_assets: "number",
      risk_factors: "[string]",
      segments: "[{name, revenue}]",
      auditor: "string",
    },
  },
  {
    name: "Bank Statements",
    endpoint: "/v1/bank-statement",
    tier: 1,
    vertical: "finance",
    desc: "Transaction timeline with anomaly detection, balance reconciliation, and cash flow insights",
    regions: ["US", "UK", "EU", "CA", "AU", "+41"],
    schema: {
      institution: "string",
      account_last_4: "string",
      period: "{start, end}",
      opening_balance: "number",
      closing_balance: "number",
      transactions: "[{date, desc, amount, balance}]",
    },
  },
  {
    name: "Invoices",
    endpoint: "/v1/invoice",
    tier: 1,
    vertical: "finance",
    desc: "Three-way match status, approval actions, and AI chat for line-item disputes",
    regions: ["US", "UK", "EU", "DE", "JP", "BR", "+52"],
    schema: {
      vendor_name: "string",
      invoice_number: "string",
      date: "date",
      line_items: "[{desc, qty, unit_price, total}]",
      subtotal: "number",
      tax: "number",
      total: "number",
      payment_terms: "string",
    },
  },
];

const legal: readonly Endpoint[] = [
  {
    name: "Contracts",
    endpoint: "/v1/contract",
    tier: 1,
    vertical: "legal",
    desc: "Clause-by-clause risk highlights, renewal countdown, and negotiation AI",
    regions: ["Global"],
    schema: {
      parties: "[{name, role}]",
      effective_date: "date",
      term_months: "number",
      renewal: "string",
      governing_law: "string",
      signature_status: "string",
    },
  },
  {
    name: "Court Filings",
    endpoint: "/v1/court-filing",
    tier: 1,
    vertical: "legal",
    desc: "Docket event timeline with deadline alerts, motion status, and counsel response tracking",
    regions: ["US", "UK", "CA", "AU", "+16"],
    schema: {
      case_number: "string",
      court: "string",
      parties: "[{name, role}]",
      filing_date: "date",
      document_class: "string",
      docket_entries: "[{date, description}]",
    },
  },
  {
    name: "Corporate Formation Docs",
    endpoint: "/v1/corp-formation",
    tier: 1,
    vertical: "legal",
    desc: "Entity status dashboard with good standing checks, officer compliance, and filing tracker",
    regions: ["US", "UK", "DE", "SG", "HK", "+28"],
    schema: {
      entity_name: "string",
      entity_type: "string",
      jurisdiction: "string",
      formation_date: "date",
      officers: "[{name, title}]",
      registered_agent: "string",
      authorized_shares: "number?",
    },
  },
  {
    name: "UCC Filings",
    endpoint: "/v1/ucc",
    tier: 1,
    vertical: "legal",
    desc: "UCC status view with lapse countdown, priority verification, and collateral tracking",
    regions: ["US"],
    schema: {
      filing_number: "string",
      filing_date: "date",
      secured_party: "string",
      debtor: "string",
      collateral: "string",
      filing_office: "string",
      status: "string",
      lapse_date: "date",
    },
  },
  {
    name: "Powers of Attorney",
    endpoint: "/v1/poa",
    tier: 1,
    vertical: "legal",
    desc: "Agent authority scope with durable status verification, witness records, and action permissions",
    regions: ["US", "UK", "EU", "Global"],
    schema: {
      principal: "string",
      agent: "string",
      scope: "[string]",
      effective_date: "date",
      durable: "boolean",
      expiry_date: "date?",
      witnesses: "[string]",
    },
  },
  {
    name: "Patent Applications",
    endpoint: "/v1/patent",
    tier: 1,
    vertical: "legal",
    desc: "Patent prosecution timeline with office action tracking, fee deadlines, and claim status",
    regions: ["US", "EU", "JP", "CN", "KR", "+8"],
    schema: {
      application_number: "string",
      title: "string",
      inventors: "[string]",
      assignee: "string",
      priority_date: "date",
      classifications: "[string]",
      claims_count: "number",
      status: "string",
    },
  },
];

const healthcare: readonly Endpoint[] = [
  {
    name: "Prior Authorizations",
    endpoint: "/v1/prior-auth",
    tier: 1,
    vertical: "healthcare",
    desc: "Decision tracking, medical necessity AI, and automatic payer follow-up notifications",
    regions: ["US"],
    schema: {
      patient_id: "string",
      provider_npi: "string",
      payer: "string",
      procedure_codes: "[string]",
      diagnosis_codes: "[string]",
      medical_necessity: "string",
      decision: "string",
      auth_number: "string?",
    },
  },
  {
    name: "Discharge Summaries",
    endpoint: "/v1/discharge",
    tier: 1,
    vertical: "healthcare",
    desc: "Discharge plan with follow-up order checklist, medication list, and continuity of care actions",
    regions: ["US", "UK", "CA", "AU"],
    schema: {
      patient_id: "string",
      admission_date: "date",
      discharge_date: "date",
      diagnoses: "[{code, description}]",
      procedures: "[string]",
      medications: "[{name, dose, frequency}]",
      follow_up: "[string]",
    },
  },
  {
    name: "Clinical Trial Documents",
    endpoint: "/v1/clinical-trial",
    tier: 1,
    vertical: "healthcare",
    desc: "Trial progress view with enrollment metrics, site performance, and endpoint tracking",
    regions: ["US", "EU", "UK", "JP", "+12"],
    schema: {
      trial_id: "string",
      phase: "string",
      sponsor: "string",
      indication: "string",
      primary_endpoint: "string",
      enrollment: "number",
      sites: "number",
      status: "string",
    },
  },
  {
    name: "FDA Submissions",
    endpoint: "/v1/fda-submission",
    tier: 1,
    vertical: "healthcare",
    desc: "Submission status timeline with decision tracking, reviewer feedback, and compliance alerts",
    regions: ["US"],
    schema: {
      submission_type: "string",
      submission_number: "string",
      applicant: "string",
      product_name: "string",
      classification: "string",
      predicate_device: "string?",
      decision: "string",
      decision_date: "date?",
    },
  },
  {
    name: "Pathology Reports",
    endpoint: "/v1/pathology",
    tier: 1,
    vertical: "healthcare",
    desc: "Pathology summary with diagnostic alerts, biomarker results, and tumor board routing",
    regions: ["US", "UK", "EU", "Global"],
    schema: {
      patient_id: "string",
      specimen_type: "string",
      diagnosis: "string",
      staging: "string?",
      margins: "string",
      biomarkers: "[{marker, result}]",
      pathologist: "string",
    },
  },
  {
    name: "Patient Intake Forms",
    endpoint: "/v1/patient-intake",
    tier: 1,
    vertical: "healthcare",
    desc: "Patient profile with allergy alerts, medication conflict detection, and insurance verification",
    regions: ["US", "UK", "CA", "AU", "+18"],
    schema: {
      patient_name: "string",
      dob: "date",
      insurance_provider: "string",
      policy_number: "string",
      allergies: "[string]",
      medications: "[string]",
      chief_complaint: "string",
    },
  },
];

const government: readonly Endpoint[] = [
  {
    name: "Tax Forms",
    endpoint: "/v1/tax-form",
    tier: 1,
    vertical: "government",
    desc: "Tax liability view with filing deadline alerts, jurisdiction tracker, and e-file actions",
    regions: ["US", "UK", "DE", "FR", "BR", "JP", "IN", "+43"],
    schema: {
      form_type: "string",
      jurisdiction: "string",
      tax_year: "number",
      entity: "string",
      gross_income: "number",
      tax_withheld: "number",
      filing_status: "string",
    },
  },
  {
    name: "Permits & Licenses",
    endpoint: "/v1/permit",
    tier: 1,
    vertical: "government",
    desc: "Permit dashboard showing status, conditions, renewal dates, and compliance checklist",
    regions: ["US", "UK", "EU", "CA", "AU", "+32"],
    schema: {
      permit_type: "string",
      permit_number: "string",
      issuing_authority: "string",
      holder: "string",
      issue_date: "date",
      expiry_date: "date",
      conditions: "[string]",
      status: "string",
    },
  },
  {
    name: "Grant Applications",
    endpoint: "/v1/grant",
    tier: 1,
    vertical: "government",
    desc: "Grant status with approval workflow, funding milestones, and compliance audit tracking",
    regions: ["US", "UK", "EU"],
    schema: {
      applicant: "string",
      program: "string",
      amount_requested: "number",
      project_title: "string",
      period: "{start, end}",
      budget_categories: "[{category, amount}]",
      status: "string",
    },
  },
  {
    name: "FOIA Responses",
    endpoint: "/v1/foia",
    tier: 1,
    vertical: "government",
    desc: "Request status with exemption review, redaction tracker, and disclosure timeline",
    regions: ["US", "UK", "CA", "AU"],
    schema: {
      request_number: "string",
      agency: "string",
      requester: "string",
      responsive_pages: "number",
      redacted_pages: "number",
      exemptions_cited: "[string]",
      disposition: "string",
    },
  },
  {
    name: "Municipal Filings",
    endpoint: "/v1/municipal-filing",
    tier: 1,
    vertical: "government",
    desc: "Filing timeline with hearing date alerts, public comment deadline, and status updates",
    regions: ["US", "UK", "CA", "+18"],
    schema: {
      filing_type: "string",
      municipality: "string",
      applicant: "string",
      property_address: "string?",
      date: "date",
      status: "string",
      hearing_date: "date?",
    },
  },
  {
    name: "Customs Declarations",
    endpoint: "/v1/customs",
    tier: 1,
    vertical: "government",
    desc: "Customs entry view with HS code mapping, duty calculation, and tariff classification AI",
    regions: ["US", "UK", "EU", "CN", "JP", "SG", "+48"],
    schema: {
      entry_number: "string",
      importer: "string",
      country_origin: "string",
      items: "[{hs_code, description, value, duty}]",
      total_value: "number",
      total_duty: "number",
      port: "string",
    },
  },
];

const operations: readonly Endpoint[] = [
  {
    name: "Bills of Lading",
    endpoint: "/v1/bol",
    tier: 1,
    vertical: "operations",
    desc: "Shipping document view with incoterm validation, port tracking, and cargo checklist",
    regions: ["Global"],
    schema: {
      bol_number: "string",
      shipper: "string",
      consignee: "string",
      carrier: "string",
      vessel: "string?",
      port_loading: "string",
      port_discharge: "string",
      goods: "[{description, weight, packages}]",
    },
  },
  {
    name: "Certificates of Origin",
    endpoint: "/v1/cert-origin",
    tier: 1,
    vertical: "operations",
    desc: "Certificate details with tariff eligibility verification, rules of origin check, and compliance badges",
    regions: ["US", "EU", "UK", "MX", "CA", "+38"],
    schema: {
      certificate_number: "string",
      exporter: "string",
      importer: "string",
      country_origin: "string",
      goods: "[{description, hs_code, value}]",
      trade_agreement: "string?",
      issued_by: "string",
    },
  },
  {
    name: "Warehouse Receipts",
    endpoint: "/v1/warehouse-receipt",
    tier: 1,
    vertical: "operations",
    desc: "Warehouse inventory view with lien holder tracking, withdrawal requests, and storage timeline",
    regions: ["US", "UK", "EU", "+22"],
    schema: {
      receipt_number: "string",
      warehouse: "string",
      depositor: "string",
      goods: "[{description, quantity, unit}]",
      storage_date: "date",
      location: "string",
      lien_status: "string",
    },
  },
  {
    name: "Inspection Reports",
    endpoint: "/v1/inspection",
    tier: 1,
    vertical: "operations",
    desc: "Inspection findings with remediation actions, re-audit scheduling, and compliance status",
    regions: ["Global"],
    schema: {
      inspector: "string",
      date: "date",
      location: "string",
      findings: "[{item, status, note}]",
      overall_status: "string",
      next_inspection: "date?",
    },
  },
  {
    name: "Purchase Orders",
    endpoint: "/v1/purchase-order",
    tier: 1,
    vertical: "operations",
    desc: "PO status with approval workflow, invoice matching, and delivery tracking buttons",
    regions: ["Global"],
    schema: {
      po_number: "string",
      vendor: "string",
      date: "date",
      line_items: "[{desc, qty, unit_price, total}]",
      total: "number",
      delivery_terms: "string",
      approved_by: "string?",
    },
  },
  {
    name: "Packing Lists",
    endpoint: "/v1/packing-list",
    tier: 1,
    vertical: "operations",
    desc: "Shipment manifest with PO reconciliation, receiving report actions, and discrepancy alerts",
    regions: ["Global"],
    schema: {
      shipment_id: "string",
      shipper: "string",
      packages: "[{package_id, contents, weight, dimensions}]",
      total_packages: "number",
      total_weight: "string",
      po_reference: "string?",
    },
  },
];

const hr: readonly Endpoint[] = [
  {
    name: "I-9 / Right to Work",
    endpoint: "/v1/i9",
    tier: 1,
    vertical: "hr",
    desc: "Verification status with document validity tracking, expiry alerts, and re-verification scheduler",
    regions: ["US", "UK", "EU", "AU", "CA"],
    schema: {
      employee_name: "string",
      document_type: "string",
      document_number: "string",
      expiration_date: "date?",
      issuing_authority: "string",
      verified: "boolean",
    },
  },
  {
    name: "Employment Verification Letters",
    endpoint: "/v1/employment-verification",
    tier: 1,
    vertical: "hr",
    desc: "Employment history view with title verification, salary details, and underwriting status",
    regions: ["US", "UK", "CA", "AU", "+14"],
    schema: {
      employer: "string",
      employee: "string",
      start_date: "date",
      end_date: "date?",
      title: "string",
      salary: "number?",
      employment_status: "string",
    },
  },
  {
    name: "Workers Comp Claims",
    endpoint: "/v1/workers-comp",
    tier: 1,
    vertical: "hr",
    desc: "Claim status with injury timeline, return-to-work plan, and case management actions",
    regions: ["US", "UK", "CA", "AU"],
    schema: {
      claim_number: "string",
      employee: "string",
      injury_date: "date",
      injury_type: "string",
      body_part: "string",
      provider: "string",
      lost_days: "number",
      claim_status: "string",
    },
  },
  {
    name: "Benefits Enrollment",
    endpoint: "/v1/benefits-enrollment",
    tier: 1,
    vertical: "hr",
    desc: "Enrollment status with dependent tracking, plan comparison, and open enrollment countdown",
    regions: ["US", "UK", "CA"],
    schema: {
      employee: "string",
      plan_type: "string",
      coverage_tier: "string",
      dependents: "[{name, relationship}]",
      effective_date: "date",
      employee_contribution: "number",
    },
  },
  {
    name: "Separation Agreements",
    endpoint: "/v1/separation",
    tier: 1,
    vertical: "hr",
    desc: "Separation terms dashboard with non-compete tracking, severance payment status, and sign-off",
    regions: ["US", "UK", "EU", "Global"],
    schema: {
      employee: "string",
      employer: "string",
      separation_date: "date",
      severance_amount: "number",
      non_compete_months: "number?",
      release_scope: "string",
      consideration_period_days: "number",
    },
  },
  {
    name: "Resumes / CVs",
    endpoint: "/v1/resume",
    tier: 1,
    vertical: "hr",
    desc: "Candidate profile with skill matching, experience summary, and hiring endpoint status",
    regions: ["Global"],
    schema: {
      name: "string",
      email: "string",
      phone: "string?",
      experience: "[{company, title, start, end}]",
      education: "[{school, degree, year}]",
      skills: "[string]",
    },
  },
];

const realestate: readonly Endpoint[] = [
  {
    name: "Title Reports",
    endpoint: "/v1/title-report",
    tier: 1,
    vertical: "realestate",
    desc: "Title status with defect highlights, lien tracker, and insurance coverage verification",
    regions: ["US", "UK", "CA", "AU"],
    schema: {
      property_address: "string",
      owner: "string",
      legal_description: "string",
      liens: "[{type, holder, amount}]",
      easements: "[string]",
      exceptions: "[string]",
      effective_date: "date",
    },
  },
  {
    name: "Appraisals",
    endpoint: "/v1/appraisal",
    tier: 1,
    vertical: "realestate",
    desc: "Property valuation with comparable analysis, condition assessment, and underwriting routing",
    regions: ["US", "UK", "CA", "AU", "+8"],
    schema: {
      property_address: "string",
      appraised_value: "number",
      approach: "string",
      comparables: "[{address, sale_price, adjustments}]",
      condition: "string",
      appraiser: "string",
      date: "date",
    },
  },
  {
    name: "Environmental Assessments",
    endpoint: "/v1/environmental",
    tier: 1,
    vertical: "realestate",
    desc: "Phase assessment with liability findings, remediation recommendations, and insurance buttons",
    regions: ["US", "UK", "EU", "CA"],
    schema: {
      property_address: "string",
      phase: "string",
      findings: "[{condition, severity, description}]",
      recs: "[{condition, severity}]",
      consultant: "string",
      date: "date",
      clean: "boolean",
    },
  },
  {
    name: "Lease Abstracts",
    endpoint: "/v1/lease-abstract",
    tier: 1,
    vertical: "realestate",
    desc: "Lease timeline with expiration alerts, renewal option tracking, and rent escalation calculator",
    regions: ["US", "UK", "EU", "AU", "+12"],
    schema: {
      tenant: "string",
      landlord: "string",
      premises: "string",
      commencement: "date",
      expiry: "date",
      base_rent: "number",
      escalation: "string",
      renewal_options: "[{term, notice_period}]",
    },
  },
  {
    name: "Closing Disclosures",
    endpoint: "/v1/closing-disclosure",
    tier: 1,
    vertical: "realestate",
    desc: "Closing costs view with TRID compliance check, fee comparison, and settlement team routing",
    regions: ["US"],
    schema: {
      borrower: "string",
      property: "string",
      loan_amount: "number",
      interest_rate: "number",
      monthly_payment: "number",
      closing_costs: "number",
      cash_to_close: "number",
      closing_date: "date",
    },
  },
  {
    name: "Zoning Documents",
    endpoint: "/v1/zoning",
    tier: 1,
    vertical: "realestate",
    desc: "Zoning summary with use restrictions, setback requirements, and variance application buttons",
    regions: ["US", "UK", "CA"],
    schema: {
      property_address: "string",
      zone_class: "string",
      permitted_uses: "[string]",
      setbacks: "{front, side, rear}",
      far: "number",
      max_height: "string",
      variances: "[string]?",
    },
  },
];

const energy: readonly Endpoint[] = [
  {
    name: "Environmental Impact Statements",
    endpoint: "/v1/eis",
    tier: 1,
    vertical: "energy",
    desc: "Impact assessment with alternatives comparison, mitigation tracking, and public comment dashboard",
    regions: ["US", "UK", "EU", "CA", "AU", "+14"],
    schema: {
      project: "string",
      lead_agency: "string",
      alternatives: "[{name, description}]",
      impacts: "[{resource, severity, mitigation}]",
      public_comments: "number",
      record_of_decision: "string?",
    },
  },
  {
    name: "Pipeline Permits",
    endpoint: "/v1/pipeline-permit",
    tier: 1,
    vertical: "energy",
    desc: "Permit status with compliance conditions, route visualization, and segment monitoring tools",
    regions: ["US", "UK", "CA", "AU"],
    schema: {
      permit_number: "string",
      operator: "string",
      route: "string",
      capacity: "string",
      material: "string",
      length_miles: "number",
      conditions: "[string]",
      expiry_date: "date",
    },
  },
  {
    name: "NERC Compliance",
    endpoint: "/v1/nerc",
    tier: 1,
    vertical: "energy",
    desc: "Violation dashboard organized by severity, remediation plan tracking, and completion status",
    regions: ["US", "CA"],
    schema: {
      entity: "string",
      standard: "string",
      finding: "string",
      severity: "string",
      violation_date: "date",
      mitigation_plan: "string",
      completion_date: "date?",
    },
  },
  {
    name: "Interconnection Agreements",
    endpoint: "/v1/interconnection",
    tier: 1,
    vertical: "energy",
    desc: "Generator connection agreement with network upgrade checklist and commercial operation date tracker",
    regions: ["US", "UK", "EU", "AU"],
    schema: {
      generator: "string",
      utility: "string",
      capacity_mw: "number",
      poi: "string",
      voltage: "string",
      commercial_operation_date: "date",
      term_years: "number",
      network_upgrades: "[string]",
    },
  },
  {
    name: "Well Logs",
    endpoint: "/v1/well-log",
    tier: 1,
    vertical: "energy",
    desc: "Well section with formation breakdown, depth tracking, and development planning actions",
    regions: ["US", "CA", "UK", "AU", "+12"],
    schema: {
      well_name: "string",
      api_number: "string",
      operator: "string",
      spud_date: "date",
      total_depth: "number",
      formations: "[{name, top, bottom, lithology}]",
      status: "string",
    },
  },
  {
    name: "Decommissioning Reports",
    endpoint: "/v1/decommissioning",
    tier: 1,
    vertical: "energy",
    desc: "Decommission budget dashboard with remediation items, timeline, and regulatory approval flow",
    regions: ["US", "UK", "EU", "CA"],
    schema: {
      facility: "string",
      operator: "string",
      asset_count: "number",
      estimated_cost: "number",
      timeline: "{start, end}",
      remediation_items: "[{item, status}]",
      regulatory_approval: "string",
    },
  },
];

export const VERTICALS: readonly Vertical[] = [
  {
    key: "insurance",
    label: "Insurance",
    color: "var(--color-cat-insurance)",
    endpoints: insurance,
  },
  {
    key: "compliance",
    label: "Compliance",
    color: "var(--color-cat-compliance)",
    endpoints: compliance,
  },
  {
    key: "finance",
    label: "Finance",
    color: "var(--color-cat-finance)",
    endpoints: finance,
  },
  {
    key: "legal",
    label: "Legal",
    color: "var(--color-cat-legal)",
    endpoints: legal,
  },
  {
    key: "healthcare",
    label: "Healthcare",
    color: "var(--color-cat-healthcare)",
    endpoints: healthcare,
  },
  {
    key: "government",
    label: "Government",
    color: "var(--color-cat-government)",
    endpoints: government,
  },
  {
    key: "operations",
    label: "Supply Chain",
    color: "var(--color-cat-operations)",
    endpoints: operations,
  },
  { key: "hr", label: "HR", color: "var(--color-cat-hr)", endpoints: hr },
  {
    key: "realestate",
    label: "Real Estate",
    color: "var(--color-cat-realestate)",
    endpoints: realestate,
  },
  {
    key: "energy",
    label: "Energy & Infrastructure",
    color: "var(--color-cat-energy)",
    endpoints: energy,
  },
];

/** Flat list of every endpoint across all verticals. */
export const ALL_ENDPOINTS: readonly Endpoint[] = VERTICALS.flatMap(
  (v) => v.endpoints,
);

/** Index by path, e.g. ENDPOINTS_BY_PATH['/v1/coi']. */
export const ENDPOINTS_BY_PATH: Record<string, Endpoint> = Object.fromEntries(
  ALL_ENDPOINTS.map((e) => [e.endpoint, e]),
);

/** Lookup a vertical by its key. */
export const lookupVertical = (key: VerticalKey): Vertical | null =>
  VERTICALS.find((v) => v.key === key) ?? null;

/** Lookup an endpoint by its route path. */
export const lookupEndpoint = (path: string): Endpoint | null =>
  ENDPOINTS_BY_PATH[path] ?? null;

/** Tier-availability gate used by the docs / cards / picker. */
export function isEndpointAvailable(endpoint: Endpoint, tier: Tier): boolean {
  if (endpoint.tier === 0) return true;
  if (endpoint.tier === 1) return tier === "pro" || tier === "enterprise";
  return tier === "enterprise";
}
