{
  "$defs": {
    "BoardComposition": {
      "description": "Board composition mandated by the term sheet.",
      "properties": {
        "founder_seats": {
          "format": "int32",
          "type": "integer"
        },
        "independent_seats": {
          "format": "int32",
          "type": "integer"
        },
        "investor_seats": {
          "format": "int32",
          "type": "integer"
        },
        "observer_seats": {
          "format": "int32",
          "type": "integer"
        },
        "seats_total": {
          "format": "int32",
          "type": "integer"
        }
      },
      "required": [
        "seats_total",
        "investor_seats",
        "founder_seats",
        "independent_seats",
        "observer_seats"
      ],
      "type": "object"
    },
    "DividendTerms": {
      "description": "Dividend terms.",
      "properties": {
        "pik": {
          "description": "Whether unpaid dividends compound (Payment-in-Kind).",
          "type": "boolean"
        },
        "rate": {
          "description": "Annual dividend rate as a fraction (e.g. 0.08 = 8%).",
          "format": "double",
          "type": "number"
        },
        "type": {
          "$ref": "#/$defs/DividendType"
        }
      },
      "required": [
        "type",
        "rate",
        "pik"
      ],
      "type": "object"
    },
    "DividendType": {
      "description": "Dividend treatment.",
      "oneOf": [
        {
          "const": "cumulative",
          "description": "Cumulative — unpaid dividends accrue.",
          "type": "string"
        },
        {
          "const": "non_cumulative",
          "description": "Non-cumulative — unpaid dividends do not carry forward.",
          "type": "string"
        },
        {
          "const": "none",
          "description": "No dividend.",
          "type": "string"
        }
      ]
    },
    "DragAlong": {
      "description": "Drag-along terms.",
      "properties": {
        "founder_consent_required": {
          "description": "Whether founder consent is required in addition to threshold.",
          "type": "boolean"
        },
        "threshold_pct": {
          "description": "Approval threshold percentage required to invoke drag-along.",
          "format": "double",
          "type": "number"
        }
      },
      "required": [
        "threshold_pct",
        "founder_consent_required"
      ],
      "type": "object"
    },
    "InfoCadence": {
      "description": "Information rights cadence.",
      "enum": [
        "monthly",
        "quarterly",
        "annual"
      ],
      "type": "string"
    },
    "InfoRights": {
      "description": "Information rights granted to the preferred class.",
      "properties": {
        "board_materials": {
          "type": "boolean"
        },
        "cadence": {
          "$ref": "#/$defs/InfoCadence"
        },
        "financials": {
          "type": "boolean"
        },
        "kpi": {
          "type": "boolean"
        }
      },
      "required": [
        "cadence",
        "financials",
        "kpi",
        "board_materials"
      ],
      "type": "object"
    },
    "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"
    },
    "LiquidationPreference": {
      "description": "Liquidation preference shape.",
      "properties": {
        "multiple": {
          "description": "Preference multiple (e.g. 1.0 = 1x, 2.0 = 2x).",
          "format": "double",
          "type": "number"
        },
        "participating": {
          "description": "Whether participating (double-dip) or non-participating\n(preference OR conversion, not both).",
          "type": "boolean"
        },
        "participation_cap_multiple": {
          "description": "Participation cap multiple (when participating + capped).",
          "format": "double",
          "type": [
            "number",
            "null"
          ]
        },
        "seniority": {
          "description": "Seniority rank — 1 = most senior. Higher numbers = more\nsubordinated.",
          "format": "int32",
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "required": [
        "multiple",
        "participating"
      ],
      "type": "object"
    },
    "MonetaryAmount": {
      "description": "A monetary value with currency.",
      "properties": {
        "amount": {
          "format": "double",
          "type": "number"
        },
        "currency": {
          "$ref": "#/$defs/IsoCurrency"
        }
      },
      "required": [
        "amount",
        "currency"
      ],
      "type": "object"
    },
    "NoShop": {
      "description": "No-shop / exclusivity terms.",
      "properties": {
        "duration_days": {
          "format": "int32",
          "type": "integer"
        },
        "exclusivity": {
          "type": "boolean"
        }
      },
      "required": [
        "duration_days",
        "exclusivity"
      ],
      "type": "object"
    },
    "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"
    },
    "TermSheetAntiDilution": {
      "description": "Anti-dilution protection — Aaker/NVCA standard variants.",
      "oneOf": [
        {
          "const": "broad_based_weighted_average",
          "description": "Broad-based weighted-average (most common NVCA standard).",
          "type": "string"
        },
        {
          "const": "narrow_based_weighted_average",
          "description": "Narrow-based weighted-average.",
          "type": "string"
        },
        {
          "const": "full_ratchet",
          "description": "Full ratchet (rare; very investor-favourable).",
          "type": "string"
        },
        {
          "const": "none",
          "description": "No anti-dilution protection.",
          "type": "string"
        }
      ]
    },
    "VotingBasis": {
      "description": "Voting basis on preferred shares.",
      "oneOf": [
        {
          "const": "as_converted",
          "description": "Preferred votes on an as-converted-to-common basis.",
          "type": "string"
        },
        {
          "const": "per_share",
          "description": "Per-share voting (1 share = 1 vote).",
          "type": "string"
        }
      ]
    },
    "VotingRights": {
      "description": "Voting rights granted to the preferred class.",
      "properties": {
        "board_election": {
          "description": "Free-form prose on board-election mechanics.",
          "type": [
            "string",
            "null"
          ]
        },
        "special_voting_threshold_pct": {
          "description": "Class threshold required to pass certain matters (e.g. 75%).",
          "format": "double",
          "type": [
            "number",
            "null"
          ]
        },
        "voting_basis": {
          "$ref": "#/$defs/VotingBasis"
        }
      },
      "required": [
        "voting_basis"
      ],
      "type": "object"
    }
  },
  "$id": "https://corpospec.com/schemas/v0.16.0/term-sheet.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "Term-sheet record.",
  "properties": {
    "anti_dilution": {
      "anyOf": [
        {
          "$ref": "#/$defs/TermSheetAntiDilution"
        },
        {
          "type": "null"
        }
      ]
    },
    "binding_provisions": {
      "description": "Provisions that bind even on non-final term sheets\n(confidentiality, no-shop, expenses).",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "board_composition": {
      "anyOf": [
        {
          "$ref": "#/$defs/BoardComposition"
        },
        {
          "type": "null"
        }
      ]
    },
    "conversion_ratio": {
      "description": "Conversion ratio (defaults to 1.0).",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "dividend": {
      "anyOf": [
        {
          "$ref": "#/$defs/DividendTerms"
        },
        {
          "type": "null"
        }
      ]
    },
    "drag_along": {
      "anyOf": [
        {
          "$ref": "#/$defs/DragAlong"
        },
        {
          "type": "null"
        }
      ]
    },
    "entity": {
      "$ref": "#/$defs/PathRef"
    },
    "expenses_cap": {
      "anyOf": [
        {
          "$ref": "#/$defs/MonetaryAmount"
        },
        {
          "type": "null"
        }
      ],
      "description": "Cap on company-reimbursed investor legal expenses."
    },
    "expiration_date": {
      "anyOf": [
        {
          "$ref": "#/$defs/IsoDate"
        },
        {
          "type": "null"
        }
      ]
    },
    "governing_law": {
      "$ref": "#/$defs/IsoCountry"
    },
    "id": {
      "$ref": "#/$defs/PathRef"
    },
    "info_rights": {
      "anyOf": [
        {
          "$ref": "#/$defs/InfoRights"
        },
        {
          "type": "null"
        }
      ]
    },
    "issued_date": {
      "$ref": "#/$defs/IsoDate"
    },
    "lead_investor": {
      "$ref": "#/$defs/PathRef"
    },
    "liquidation_preference": {
      "$ref": "#/$defs/LiquidationPreference"
    },
    "new_money": {
      "$ref": "#/$defs/MonetaryAmount"
    },
    "new_share_class": {
      "anyOf": [
        {
          "$ref": "#/$defs/PathRef"
        },
        {
          "type": "null"
        }
      ],
      "description": "PathRef into the StockClass to be created at closing."
    },
    "no_shop": {
      "anyOf": [
        {
          "$ref": "#/$defs/NoShop"
        },
        {
          "type": "null"
        }
      ]
    },
    "note": {
      "type": [
        "string",
        "null"
      ]
    },
    "option_pool_post_close_pct": {
      "description": "Post-close option-pool target as percent of post-money fully-\ndiluted. Drives pre-close pool top-up.",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "post_money_valuation": {
      "$ref": "#/$defs/MonetaryAmount"
    },
    "pre_emptive_rights": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "pre_money_valuation": {
      "$ref": "#/$defs/MonetaryAmount"
    },
    "protective_provisions": {
      "description": "NVCA Section 3 protective-provisions list.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "rofr": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "round_ref": {
      "$ref": "#/$defs/PathRef"
    },
    "signed_date": {
      "anyOf": [
        {
          "$ref": "#/$defs/IsoDate"
        },
        {
          "type": "null"
        }
      ]
    },
    "tag_along": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "voting_rights": {
      "anyOf": [
        {
          "$ref": "#/$defs/VotingRights"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "id",
    "round_ref",
    "entity",
    "issued_date",
    "lead_investor",
    "pre_money_valuation",
    "post_money_valuation",
    "new_money",
    "liquidation_preference",
    "governing_law"
  ],
  "title": "TermSheet",
  "type": "object",
  "x-corpospec-pillar": "entity"
}