{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:reconstruct:scene:v1",
  "title": "Platform-neutral Reconstruct interface scene",
  "description": "Generated from Scene DTOs. SceneValidator additionally enforces graph, geometry, privacy and motion semantics.",
  "$ref": "#/$defs/SceneDocument",
  "$defs": {
    "SceneAction": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "kind": {
          "$ref": "#/$defs/SceneActionKind"
        },
        "destination": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "id",
        "kind"
      ]
    },
    "SceneActionKind": {
      "type": "string",
      "enum": [
        "unknown",
        "activate",
        "edit",
        "scroll",
        "navigate",
        "focus",
        "hover",
        "back"
      ]
    },
    "SceneAlignment": {
      "type": "string",
      "enum": [
        "unknown",
        "start",
        "center",
        "end",
        "stretch",
        "spaceBetween",
        "spaceAround",
        "spaceEvenly",
        "baseline"
      ]
    },
    "SceneAnchors": {
      "type": "object",
      "properties": {
        "referenceId": {
          "type": "string"
        },
        "top": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "right": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "bottom": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "left": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "referenceId"
      ]
    },
    "SceneArrangement": {
      "type": "string",
      "enum": [
        "unknown",
        "row",
        "column",
        "grid",
        "stack",
        "free"
      ]
    },
    "SceneAxisConstraint": {
      "type": "object",
      "properties": {
        "policy": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneSizePolicy"
            },
            {
              "type": "null"
            }
          ]
        },
        "value": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        },
        "minimum": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        },
        "maximum": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "SceneBounds": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number"
        },
        "y": {
          "type": "number"
        },
        "width": {
          "type": "number"
        },
        "height": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "required": [
        "x",
        "y",
        "width",
        "height"
      ]
    },
    "SceneClip": {
      "type": "string",
      "enum": [
        "none",
        "bounds",
        "scroll"
      ]
    },
    "SceneCodepointRange": {
      "type": "object",
      "properties": {
        "start": {
          "type": "integer"
        },
        "end": {
          "type": "integer"
        }
      },
      "additionalProperties": false,
      "required": [
        "start",
        "end"
      ]
    },
    "SceneColor": {
      "type": "object",
      "properties": {
        "red": {
          "type": "number"
        },
        "green": {
          "type": "number"
        },
        "blue": {
          "type": "number"
        },
        "alpha": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "required": [
        "red",
        "green",
        "blue"
      ]
    },
    "SceneCoordinateSpace": {
      "type": "string",
      "enum": [
        "document",
        "screen",
        "viewport"
      ]
    },
    "SceneCorrespondence": {
      "type": "object",
      "properties": {
        "fromFrameId": {
          "type": "string"
        },
        "fromNodeId": {
          "type": "string"
        },
        "toFrameId": {
          "type": "string"
        },
        "toNodeId": {
          "type": "string"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "confidence": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "fromFrameId",
        "fromNodeId",
        "toFrameId",
        "toNodeId",
        "kind",
        "evidence"
      ]
    },
    "SceneDocument": {
      "type": "object",
      "properties": {
        "schema": {
          "const": "reconstruct.scene.v1"
        },
        "id": {
          "type": "string"
        },
        "platform": {
          "$ref": "#/$defs/ScenePlatform"
        },
        "entryFrameId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "profiles": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneProfile"
          }
        },
        "frames": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneFrame"
          }
        },
        "resources": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneResource"
          }
        },
        "transitions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneTransition"
          }
        },
        "correspondences": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneCorrespondence"
          }
        },
        "issues": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneIssue"
          }
        }
      },
      "additionalProperties": false,
      "required": [
        "id",
        "platform",
        "schema"
      ]
    },
    "SceneEasing": {
      "type": "object",
      "properties": {
        "x1": {
          "type": "number"
        },
        "y1": {
          "type": "number"
        },
        "x2": {
          "type": "number"
        },
        "y2": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "required": [
        "x1",
        "y1",
        "x2",
        "y2"
      ]
    },
    "SceneEdge": {
      "type": "string",
      "enum": [
        "top",
        "right",
        "bottom",
        "left"
      ]
    },
    "SceneEvidenceKind": {
      "type": "string",
      "enum": [
        "measured",
        "declared",
        "inferred"
      ]
    },
    "SceneFact_IReadOnlyList_SceneTextDecoration_": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneTextDecoration"
          }
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_IReadOnlyList_double_": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneAlignment": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneAlignment"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneAnchors": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneAnchors"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneArrangement": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneArrangement"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneBounds": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneBounds"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneClip": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneClip"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneColor": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneColor"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneInsets": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneInsets"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneMediaFit": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneMediaFit"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneMediaPlacement": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneMediaPlacement"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_ScenePlacement": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/ScenePlacement"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_ScenePoint": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/ScenePoint"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneSizePolicy": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneSizePolicy"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneTextAlignment": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneTextAlignment"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneTextCase": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneTextCase"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneTextDirection": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneTextDirection"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_SceneTextWrapping": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "$ref": "#/$defs/SceneTextWrapping"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_bool": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "type": "boolean"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_double": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "type": "number"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_double__": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_int": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "type": "integer"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFact_string": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "type": "string"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "confidence": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "value",
        "kind",
        "evidence"
      ]
    },
    "SceneFontFace": {
      "type": "object",
      "properties": {
        "family": {
          "type": "string"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "weightMinimum": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "weightMaximum": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "italic": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "coverage": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/SceneCodepointRange"
              }
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "family",
        "kind",
        "evidence"
      ]
    },
    "SceneFrame": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "profileId": {
          "type": "string"
        },
        "stateId": {
          "type": "string"
        },
        "coordinateSpace": {
          "$ref": "#/$defs/SceneCoordinateSpace"
        },
        "extent": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneBounds"
            },
            {
              "type": "null"
            }
          ]
        },
        "viewportBounds": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneBounds"
            },
            {
              "type": "null"
            }
          ]
        },
        "truncated": {
          "type": "boolean"
        },
        "nodes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneNode"
          }
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "required": [
        "id",
        "profileId",
        "stateId",
        "coordinateSpace"
      ]
    },
    "SceneGeometry": {
      "type": "object",
      "properties": {
        "visualBounds": {
          "$ref": "#/$defs/SceneFact_SceneBounds"
        },
        "layoutBounds": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneBounds"
            },
            {
              "type": "null"
            }
          ]
        },
        "transform": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double__"
            },
            {
              "type": "null"
            }
          ]
        },
        "stackingContextId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "paintOrder": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_int"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "visualBounds"
      ]
    },
    "SceneInsets": {
      "type": "object",
      "properties": {
        "top": {
          "type": "number"
        },
        "right": {
          "type": "number"
        },
        "bottom": {
          "type": "number"
        },
        "left": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "required": [
        "top",
        "right",
        "bottom",
        "left"
      ]
    },
    "SceneIssue": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "frameId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "nodeId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "code",
        "message"
      ]
    },
    "SceneKeyframe": {
      "type": "object",
      "properties": {
        "offset": {
          "type": "number"
        },
        "value": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "additionalProperties": false,
      "required": [
        "offset",
        "value"
      ]
    },
    "SceneLayout": {
      "type": "object",
      "properties": {
        "arrangement": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneArrangement"
            },
            {
              "type": "null"
            }
          ]
        },
        "placement": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_ScenePlacement"
            },
            {
              "type": "null"
            }
          ]
        },
        "wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_bool"
            },
            {
              "type": "null"
            }
          ]
        },
        "reverse": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_bool"
            },
            {
              "type": "null"
            }
          ]
        },
        "padding": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneInsets"
            },
            {
              "type": "null"
            }
          ]
        },
        "rowGap": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        },
        "columnGap": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        },
        "mainAlignment": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneAlignment"
            },
            {
              "type": "null"
            }
          ]
        },
        "crossAlignment": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneAlignment"
            },
            {
              "type": "null"
            }
          ]
        },
        "columnTracks": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_IReadOnlyList_double_"
            },
            {
              "type": "null"
            }
          ]
        },
        "rowTracks": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_IReadOnlyList_double_"
            },
            {
              "type": "null"
            }
          ]
        },
        "horizontal": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneAxisConstraint"
            },
            {
              "type": "null"
            }
          ]
        },
        "vertical": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneAxisConstraint"
            },
            {
              "type": "null"
            }
          ]
        },
        "clip": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneClip"
            },
            {
              "type": "null"
            }
          ]
        },
        "anchors": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneAnchors"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "SceneMediaFit": {
      "type": "string",
      "enum": [
        "unknown",
        "contain",
        "cover",
        "stretch",
        "original"
      ]
    },
    "SceneMediaPlacement": {
      "type": "string",
      "enum": [
        "content",
        "background",
        "surface"
      ]
    },
    "SceneMotion": {
      "type": "object",
      "properties": {
        "property": {
          "$ref": "#/$defs/SceneMotionProperty"
        },
        "durationMs": {
          "type": "number"
        },
        "keyframes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneKeyframe"
          }
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "delayMs": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "iterations": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "easing": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneEasing"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "property",
        "durationMs",
        "keyframes",
        "kind",
        "evidence"
      ]
    },
    "SceneMotionProperty": {
      "type": "string",
      "enum": [
        "opacity",
        "translation",
        "scale",
        "rotation",
        "bounds",
        "color"
      ]
    },
    "SceneNode": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "parentId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "kind": {
          "$ref": "#/$defs/SceneNodeKind"
        },
        "semantics": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneSemantics"
            },
            {
              "type": "null"
            }
          ]
        },
        "visible": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_bool"
            },
            {
              "type": "null"
            }
          ]
        },
        "geometry": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneGeometry"
            },
            {
              "type": "null"
            }
          ]
        },
        "layout": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneLayout"
            },
            {
              "type": "null"
            }
          ]
        },
        "paint": {
          "anyOf": [
            {
              "$ref": "#/$defs/ScenePaint"
            },
            {
              "type": "null"
            }
          ]
        },
        "text": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneTextRun"
          }
        },
        "mediaResourceId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneAction"
          }
        },
        "motion": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneMotion"
          }
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "required": [
        "id"
      ]
    },
    "SceneNodeKind": {
      "type": "string",
      "enum": [
        "unknown",
        "container",
        "text",
        "media",
        "control",
        "surface"
      ]
    },
    "ScenePaint": {
      "type": "object",
      "properties": {
        "fill": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneColor"
            },
            {
              "type": "null"
            }
          ]
        },
        "opacity": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        },
        "cornerRadii": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneInsets"
            },
            {
              "type": "null"
            }
          ]
        },
        "strokes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneStroke"
          }
        },
        "shadows": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SceneShadow"
          }
        },
        "blur": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        },
        "backdropBlur": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        },
        "mediaPlacement": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneMediaPlacement"
            },
            {
              "type": "null"
            }
          ]
        },
        "mediaPosition": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_ScenePoint"
            },
            {
              "type": "null"
            }
          ]
        },
        "mediaFit": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneMediaFit"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "ScenePlacement": {
      "type": "string",
      "enum": [
        "unknown",
        "flow",
        "anchored",
        "overlay",
        "sticky"
      ]
    },
    "ScenePlatform": {
      "type": "string",
      "enum": [
        "unknown",
        "web",
        "android"
      ]
    },
    "ScenePoint": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number"
        },
        "y": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "required": [
        "x",
        "y"
      ]
    },
    "SceneProfile": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "width": {
          "type": "number"
        },
        "height": {
          "type": "number"
        },
        "pixelDensity": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "fontScale": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "safeInsets": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneInsets"
            },
            {
              "type": "null"
            }
          ]
        },
        "locale": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "theme": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "id",
        "width",
        "height"
      ]
    },
    "SceneResource": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "kind": {
          "$ref": "#/$defs/SceneResourceKind"
        },
        "uri": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "mimeType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "sha256": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "bytes": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ]
        },
        "fontFaces": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/SceneFontFace"
              }
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "id",
        "kind"
      ]
    },
    "SceneResourceKind": {
      "type": "string",
      "enum": [
        "unknown",
        "image",
        "vector",
        "font",
        "video",
        "audio",
        "paint"
      ]
    },
    "SceneSemantics": {
      "type": "object",
      "properties": {
        "role": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "enabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "selected": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "editable": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "sensitive": {
          "type": "boolean"
        },
        "checked": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "expanded": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "modal": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "SceneShadow": {
      "type": "object",
      "properties": {
        "color": {
          "$ref": "#/$defs/SceneColor"
        },
        "x": {
          "type": "number"
        },
        "y": {
          "type": "number"
        },
        "blur": {
          "type": "number"
        },
        "spread": {
          "type": "number"
        },
        "inset": {
          "type": "boolean"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "required": [
        "color",
        "x",
        "y",
        "blur",
        "spread",
        "inset",
        "kind",
        "evidence"
      ]
    },
    "SceneSizePolicy": {
      "type": "string",
      "enum": [
        "unknown",
        "intrinsic",
        "fixed",
        "fill",
        "proportional"
      ]
    },
    "SceneStroke": {
      "type": "object",
      "properties": {
        "color": {
          "$ref": "#/$defs/SceneColor"
        },
        "width": {
          "type": "number"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "edges": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/SceneEdge"
              }
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "color",
        "width",
        "kind",
        "evidence"
      ]
    },
    "SceneTextAlignment": {
      "type": "string",
      "enum": [
        "start",
        "end",
        "left",
        "right",
        "center",
        "justify"
      ]
    },
    "SceneTextCase": {
      "type": "string",
      "enum": [
        "none",
        "uppercase",
        "lowercase",
        "capitalize"
      ]
    },
    "SceneTextDecoration": {
      "type": "string",
      "enum": [
        "underline",
        "strikethrough",
        "overline"
      ]
    },
    "SceneTextDirection": {
      "type": "string",
      "enum": [
        "auto",
        "ltr",
        "rtl"
      ]
    },
    "SceneTextRun": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string"
        },
        "typography": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneTypography"
            },
            {
              "type": "null"
            }
          ]
        },
        "bounds": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneBounds"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "text"
      ]
    },
    "SceneTextWrapping": {
      "type": "string",
      "enum": [
        "wrap",
        "noWrap",
        "preserve"
      ]
    },
    "SceneTransition": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "fromFrameId": {
          "type": "string"
        },
        "toFrameId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "nodeId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "action": {
          "$ref": "#/$defs/SceneActionKind"
        },
        "outcome": {
          "$ref": "#/$defs/SceneTransitionOutcome"
        },
        "kind": {
          "$ref": "#/$defs/SceneEvidenceKind"
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "motion": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/SceneMotion"
              }
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "id",
        "fromFrameId",
        "action",
        "outcome",
        "kind",
        "evidence"
      ]
    },
    "SceneTransitionOutcome": {
      "type": "string",
      "enum": [
        "unknown",
        "changed",
        "unchanged",
        "failed",
        "performedUnverified"
      ]
    },
    "SceneTypography": {
      "type": "object",
      "properties": {
        "casing": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneTextCase"
            },
            {
              "type": "null"
            }
          ]
        },
        "alignment": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneTextAlignment"
            },
            {
              "type": "null"
            }
          ]
        },
        "direction": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneTextDirection"
            },
            {
              "type": "null"
            }
          ]
        },
        "italic": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_bool"
            },
            {
              "type": "null"
            }
          ]
        },
        "decorations": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_IReadOnlyList_SceneTextDecoration_"
            },
            {
              "type": "null"
            }
          ]
        },
        "wrapping": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneTextWrapping"
            },
            {
              "type": "null"
            }
          ]
        },
        "maximumLines": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_int"
            },
            {
              "type": "null"
            }
          ]
        },
        "family": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_string"
            },
            {
              "type": "null"
            }
          ]
        },
        "fontResourceId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "size": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        },
        "weight": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        },
        "lineHeight": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        },
        "letterSpacing": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_double"
            },
            {
              "type": "null"
            }
          ]
        },
        "color": {
          "anyOf": [
            {
              "$ref": "#/$defs/SceneFact_SceneColor"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    }
  }
}
