{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://quantumetzchaim.com/schemas/ivritcode-openqasm-v0.1.schema.json",
  "title": "IvritCode to OpenQASM 3 projection profile 0.1",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "$schema",
    "id",
    "status",
    "sourceLanguage",
    "targetLanguage",
    "targetLibrary",
    "minimumQubits",
    "executionPolicy",
    "scientificBoundary",
    "addressing",
    "measurement",
    "mappings"
  ],
  "properties": {
    "$schema": {
      "const": "https://quantumetzchaim.com/schemas/ivritcode-openqasm-v0.1.schema.json"
    },
    "id": { "const": "ivritcode-openqasm-0.1" },
    "status": { "const": "deterministic-translation-profile" },
    "sourceLanguage": { "const": "IvritCode" },
    "targetLanguage": { "const": "OpenQASM 3" },
    "targetLibrary": { "const": "stdgates.inc" },
    "minimumQubits": { "type": "integer", "minimum": 3, "maximum": 32 },
    "executionPolicy": { "const": "emit-only" },
    "scientificBoundary": { "type": "string", "minLength": 80 },
    "addressing": { "type": "string", "minLength": 20 },
    "measurement": {
      "const": "Every emitted program ends with result = measure q;"
    },
    "mappings": {
      "type": "array",
      "minItems": 22,
      "maxItems": 22,
      "uniqueItems": true,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["letter", "operation", "label", "arity"],
        "properties": {
          "letter": {
            "type": "string",
            "pattern": "^[אבגדהוזחטיכלמנסעפצקרשת]$"
          },
          "operation": { "type": "string", "minLength": 1 },
          "label": { "type": "string", "minLength": 2 },
          "arity": { "type": "integer", "minimum": 1, "maximum": 3 }
        }
      }
    }
  }
}
