{
  "$defs": {
    "Confidentiality": {
      "description": "Cross-cutting confidentiality classification used across privacy,\nsecurity, knowledge, IR pillars. Default rendering rule: `corpospec-report`\nexcludes `Restricted | BoardOnly | InvestorOnly` records from public output\nunless an explicit audience parameter overrides. See BDR 0076 §1.",
      "oneOf": [
        {
          "const": "public",
          "description": "Safe to publish anywhere.",
          "type": "string"
        },
        {
          "const": "customer",
          "description": "Visible to customers under standard ToS.",
          "type": "string"
        },
        {
          "const": "internal",
          "description": "Employees and contractors only.",
          "type": "string"
        },
        {
          "const": "restricted",
          "description": "Need-to-know subset of internal.",
          "type": "string"
        },
        {
          "const": "board_only",
          "description": "Board members and direct staff.",
          "type": "string"
        },
        {
          "const": "investor_only",
          "description": "Existing investors + prospective with NDA.",
          "type": "string"
        }
      ]
    },
    "IsoCountry": {
      "description": "ISO 3166-1 alpha-2 country code.",
      "pattern": "^[A-Z]{2}$",
      "type": "string"
    },
    "IsoCurrency": {
      "description": "ISO 4217 currency code.",
      "pattern": "^[A-Z]{3}$",
      "type": "string"
    },
    "IsoDate": {
      "description": "ISO 8601 date (YYYY-MM-DD).",
      "format": "date",
      "type": "string"
    },
    "LpCommitment": {
      "description": "One LP commitment.",
      "properties": {
        "called_amount": {
          "format": "double",
          "type": "number"
        },
        "commitment_pct": {
          "description": "LP's share of total commitments (informational; derived).",
          "format": "double",
          "type": "number"
        },
        "committed_amount": {
          "format": "double",
          "type": "number"
        },
        "distributed_amount": {
          "format": "double",
          "type": "number"
        },
        "lp": {
          "$ref": "#/$defs/PathRef",
          "description": "PathRef to LP entity (could be a person, family office,\npension fund)."
        },
        "side_letter_summary": {
          "description": "Side-letter terms summary (free-form; signed artefacts\nelsewhere).",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "lp",
        "committed_amount",
        "called_amount",
        "distributed_amount",
        "commitment_pct"
      ],
      "type": "object"
    },
    "ManagementFeeBasis": {
      "description": "Management-fee assessment basis.",
      "oneOf": [
        {
          "const": "committed_capital",
          "description": "Pct of committed capital.",
          "type": "string"
        },
        {
          "const": "called_capital",
          "description": "Pct of called (drawn) capital.",
          "type": "string"
        },
        {
          "const": "nav",
          "description": "Pct of NAV.",
          "type": "string"
        },
        {
          "const": "step_down",
          "description": "Step-down (e.g. on committed during investment period, on\ninvested-cost after).",
          "type": "string"
        },
        {
          "const": "custom",
          "description": "Custom (free-form basis_text).",
          "type": "string"
        }
      ]
    },
    "PathRef": {
      "description": "Path-based cross-reference relative to .corpospec/ root.\nPattern: `^[a-z0-9_-]+(/[a-z0-9_.-]+)+$`",
      "pattern": "^[a-z0-9_-]+(/[a-z0-9_.-]+)+$",
      "type": "string"
    },
    "PortfolioCompany": {
      "description": "Portfolio-company entry.",
      "properties": {
        "current_fair_value": {
          "format": "double",
          "type": "number"
        },
        "entity": {
          "$ref": "#/$defs/PathRef",
          "description": "PathRef to the portfolio entity."
        },
        "invested_amount": {
          "format": "double",
          "type": "number"
        },
        "irr_pct": {
          "description": "Internal Rate of Return %.",
          "format": "double",
          "type": "number"
        },
        "moic": {
          "description": "Multiple of invested capital (MOIC).",
          "format": "double",
          "type": "number"
        },
        "realised": {
          "description": "Whether the position has been realised.",
          "type": "boolean"
        }
      },
      "required": [
        "entity",
        "invested_amount",
        "current_fair_value",
        "moic",
        "irr_pct",
        "realised"
      ],
      "type": "object"
    },
    "VehicleKind": {
      "description": "Vehicle kind — the role an entity plays in the group.\n\nDistinct from `EntityType` (legal form like Corporation/LLC/GmbH) and from\n`EntityClass` (hierarchy role like legal-entity/brand/sub-brand). See\nBDR 0064 §4.",
      "oneOf": [
        {
          "const": "operating_company",
          "description": "Default for most legal entities — actively operating a business.",
          "type": "string"
        },
        {
          "const": "holding_company",
          "description": "Owns controlling stakes in operating subsidiaries; IFRS 10 consolidation\napplies. Beevelop UG → Unstarter GmbH is the canonical example.",
          "type": "string"
        },
        {
          "const": "intermediate_holdco",
          "description": "Wholly-owned intermediate in a chain (often for tax or regulatory\nreasons). Distinct from `HoldingCompany` by intent — intermediate-\nholdcos do not consolidate independent reporting.",
          "type": "string"
        },
        {
          "const": "joint_venture",
          "description": "Jointly controlled per IFRS 11. Replaces the retired\n`EntityType::JointVenture` discriminator.",
          "type": "string"
        },
        {
          "const": "spv",
          "description": "Single-purpose vehicle — typically a Delaware LLC or DE GmbH used for\na narrowly-defined transaction, asset holding, or risk isolation.",
          "type": "string"
        },
        {
          "const": "fund_gp",
          "description": "General partner of a fund. Manages the fund; typically holds a small\neconomic stake.",
          "type": "string"
        },
        {
          "const": "fund_lp",
          "description": "Limited partnership fund itself — the vehicle that pools LP capital.",
          "type": "string"
        },
        {
          "const": "family_office",
          "description": "Family office — multi-generational wealth management vehicle.",
          "type": "string"
        },
        {
          "const": "search_fund",
          "description": "Search fund — operator-investors raising capital to acquire a target.",
          "type": "string"
        },
        {
          "const": "foundation",
          "description": "Mission-driven entity with no equity holders. Surplus retained or\ndistributed to a defined social mission.",
          "type": "string"
        },
        {
          "const": "trust",
          "description": "Trust — beneficial-owner record carries trustee / settlor /\nbeneficiary roles (BDR 0064 OpenQuestion 3).",
          "type": "string"
        },
        {
          "const": "segregated_portfolio",
          "description": "Segregated Portfolio Company structure (Cayman, BVI).",
          "type": "string"
        },
        {
          "const": "protected_cell",
          "description": "Protected Cell Company structure (Guernsey, Jersey, Isle of Man).",
          "type": "string"
        },
        {
          "const": "branch",
          "description": "HGB §13 Zweigniederlassung or equivalent — no separate legal\npersonality from the parent.",
          "type": "string"
        },
        {
          "const": "representative_office",
          "description": "Marketing / liaison office with no commercial activity.",
          "type": "string"
        },
        {
          "const": "permanent_establishment",
          "description": "OECD Model Tax Convention Art. 5 permanent establishment in a\nforeign jurisdiction. No separate legal personality but distinct\ntax presence.",
          "type": "string"
        }
      ]
    },
    "VehicleStatus": {
      "description": "Capital-call status.",
      "oneOf": [
        {
          "const": "forming",
          "description": "Pre-launch (forming, raising).",
          "type": "string"
        },
        {
          "const": "partially_closed",
          "description": "First close passed; raising additional.",
          "type": "string"
        },
        {
          "const": "investing",
          "description": "Final close; investment period running.",
          "type": "string"
        },
        {
          "const": "harvesting",
          "description": "Investment period ended; harvesting (portfolio management +\nexits).",
          "type": "string"
        },
        {
          "const": "winding_down",
          "description": "In wind-down.",
          "type": "string"
        },
        {
          "const": "closed",
          "description": "Fully wound up / dissolved.",
          "type": "string"
        }
      ]
    },
    "WaterfallModel": {
      "description": "Carry waterfall model.",
      "oneOf": [
        {
          "const": "european_whole_fund",
          "description": "European / whole-fund (carry only after entire-fund hurdle).",
          "type": "string"
        },
        {
          "const": "american_deal_by_deal",
          "description": "American / deal-by-deal (carry per realised deal).",
          "type": "string"
        },
        {
          "const": "hybrid",
          "description": "Modified / hybrid.",
          "type": "string"
        },
        {
          "const": "none",
          "description": "No carry (e.g. family-office holding).",
          "type": "string"
        }
      ]
    }
  },
  "$id": "https://corpospec.com/schemas/v0.16.0/investment-vehicle.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "Investment-vehicle record.",
  "properties": {
    "called_capital": {
      "description": "Total called capital (drawn down so far).",
      "format": "double",
      "type": "number"
    },
    "carry_rate_pct": {
      "description": "Carry rate (e.g. 20.0 = 20%).",
      "format": "double",
      "type": "number"
    },
    "catch_up_rate_pct": {
      "description": "GP catch-up rate (e.g. 100% catch-up to 80/20 split).",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "committed_capital": {
      "description": "Total committed capital (sum of commitments).",
      "format": "double",
      "type": "number"
    },
    "confidentiality": {
      "$ref": "#/$defs/Confidentiality"
    },
    "currency": {
      "$ref": "#/$defs/IsoCurrency"
    },
    "distributed_capital": {
      "description": "Total distributed capital (returned to LPs).",
      "format": "double",
      "type": "number"
    },
    "extensions_available": {
      "description": "Number of one-year extensions available.",
      "format": "int32",
      "type": "integer"
    },
    "final_close": {
      "anyOf": [
        {
          "$ref": "#/$defs/IsoDate"
        },
        {
          "type": "null"
        }
      ],
      "description": "Final close date (None if still open)."
    },
    "fund_expiry": {
      "anyOf": [
        {
          "$ref": "#/$defs/IsoDate"
        },
        {
          "type": "null"
        }
      ],
      "description": "Fund expiry (term end)."
    },
    "fund_term_years": {
      "description": "Total fund term (years).",
      "format": "int32",
      "type": "integer"
    },
    "gp_catch_up": {
      "description": "Whether GP catch-up applies after hurdle.",
      "type": "boolean"
    },
    "gp_entity": {
      "anyOf": [
        {
          "$ref": "#/$defs/PathRef"
        },
        {
          "type": "null"
        }
      ],
      "description": "PathRef to the entity acting as General Partner / manager."
    },
    "hurdle_rate_pct": {
      "description": "Preferred return / hurdle (e.g. 8.0).",
      "format": "double",
      "type": "number"
    },
    "id": {
      "$ref": "#/$defs/PathRef"
    },
    "ilpa_aligned": {
      "description": "Whether the LPA aligns with ILPA Principles 3.0.",
      "type": "boolean"
    },
    "investment_period_end": {
      "anyOf": [
        {
          "$ref": "#/$defs/IsoDate"
        },
        {
          "type": "null"
        }
      ],
      "description": "Investment-period end."
    },
    "investment_period_years": {
      "description": "Investment-period length (years).",
      "format": "int32",
      "type": "integer"
    },
    "jurisdiction": {
      "$ref": "#/$defs/IsoCountry"
    },
    "kind": {
      "$ref": "#/$defs/VehicleKind"
    },
    "launched_on": {
      "$ref": "#/$defs/IsoDate"
    },
    "lp_commitments": {
      "description": "LP commitments.",
      "items": {
        "$ref": "#/$defs/LpCommitment"
      },
      "type": "array"
    },
    "management_fee_basis": {
      "$ref": "#/$defs/ManagementFeeBasis"
    },
    "management_fee_basis_text": {
      "description": "Free-form fee narrative for Custom basis.",
      "type": [
        "string",
        "null"
      ]
    },
    "management_fee_pct": {
      "description": "Management-fee pct (annual).",
      "format": "double",
      "type": "number"
    },
    "name": {
      "type": "string"
    },
    "nav": {
      "description": "Current NAV (net asset value).",
      "format": "double",
      "type": "number"
    },
    "portfolio": {
      "items": {
        "$ref": "#/$defs/PortfolioCompany"
      },
      "type": "array"
    },
    "status": {
      "$ref": "#/$defs/VehicleStatus"
    },
    "vintage_year": {
      "format": "int32",
      "type": "integer"
    },
    "waterfall": {
      "$ref": "#/$defs/WaterfallModel"
    }
  },
  "required": [
    "id",
    "name",
    "kind",
    "status",
    "jurisdiction",
    "currency",
    "lp_commitments",
    "vintage_year",
    "committed_capital",
    "called_capital",
    "distributed_capital",
    "nav",
    "carry_rate_pct",
    "hurdle_rate_pct",
    "gp_catch_up",
    "waterfall",
    "management_fee_pct",
    "management_fee_basis",
    "investment_period_years",
    "fund_term_years",
    "extensions_available",
    "portfolio",
    "ilpa_aligned",
    "launched_on",
    "confidentiality"
  ],
  "title": "InvestmentVehicle",
  "type": "object",
  "x-corpospec-pillar": "entity"
}