{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "defaultRule": {
      "minLength": 20,
      "type": "string"
    },
    "modules": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "allowedProtectedDecisions": {
            "type": "array",
            "uniqueItems": true
          },
          "boundaryRule": {
            "minLength": 10,
            "type": "string"
          },
          "capabilityTags": {
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "deploymentStatus": {
            "const": "not-deployed-not-authorized"
          },
          "module": {
            "type": "string"
          },
          "path": {
            "pattern": "^v3-src/contracts/.+\\.sol$",
            "type": "string"
          },
          "supportStatus": {
            "const": "supported-source"
          }
        },
        "required": [
          "module",
          "path",
          "supportStatus",
          "deploymentStatus",
          "capabilityTags",
          "allowedProtectedDecisions",
          "boundaryRule"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "protectedDecisions": {
      "type": "array",
      "uniqueItems": true
    },
    "schemaVersion": {
      "const": "1.0.0"
    },
    "unsafeCapabilityClasses": {
      "type": "array",
      "uniqueItems": true
    }
  },
  "required": [
    "schemaVersion",
    "unsafeCapabilityClasses",
    "protectedDecisions",
    "defaultRule",
    "modules"
  ],
  "title": "Supported V3 source module manifest",
  "type": "object"
}
