{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "ExternalClaim",
  "description": "Submit arbitrary data along with a quorum of signatures from external verifiers",
  "type": "object",
  "properties": {
    "claim": {
      "description": "The claim itself plus the required verifier quorum",
      "$ref": "#/$defs/ExternalClaimBody"
    },
    "signatures": {
      "description": "At least `claim.verifier_quorum` signatures over the enclosing `Transaction` (with this field set to the empty list) by members of `claim.verifier_committee`",
      "type": "array",
      "items": {
        "$ref": "#/$defs/VerifierSig"
      }
    }
  },
  "required": [
    "claim",
    "signatures"
  ],
  "$defs": {
    "ExternalClaimBody": {
      "type": "object",
      "properties": {
        "verifier_committee": {
          "description": "Set of verifiers (regular  FastSet addresses) that can sign for this ExternalClaim",
          "type": "array",
          "items": {
            "$ref": "#/$defs/PublicKeyBytes"
          }
        },
        "verifier_quorum": {
          "description": "Minimum number of verifiers in `verifier_committee` for which fastset validators will sign\nthis transaction",
          "$ref": "#/$defs/Quorum"
        },
        "claim_data": {
          "description": "Arbitrary data that the verifiers are signing.",
          "$ref": "#/$defs/ClaimData"
        }
      },
      "required": [
        "verifier_committee",
        "verifier_quorum",
        "claim_data"
      ]
    },
    "PublicKeyBytes": {
      "description": "A byte sequence that names an entity on or off the FastSet network,\ndepending on the name of type which stores this value;\ntypically encoded as an Ed25519 public key,\nbut may have other formats including but not limited to:\n(a) Burn Address - a 32-byte string composed of all 0x00 bytes.\nNote: any funds sent to the burn address will be permenantly lost!",
      "type": "array",
      "items": {
        "type": "integer",
        "format": "uint8",
        "minimum": 0,
        "maximum": 255
      },
      "minItems": 32,
      "maxItems": 32
    },
    "Quorum": {
      "type": "integer",
      "format": "uint64",
      "minimum": 0
    },
    "ClaimData": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "uint8",
        "minimum": 0,
        "maximum": 255
      }
    },
    "VerifierSig": {
      "type": "object",
      "properties": {
        "verifier_addr": {
          "$ref": "#/$defs/PublicKeyBytes"
        },
        "sig": {
          "$ref": "#/$defs/Signature"
        }
      },
      "required": [
        "verifier_addr",
        "sig"
      ]
    },
    "Signature": {
      "description": "An Ed25519 signature",
      "type": "array",
      "items": {
        "type": "integer",
        "format": "uint8"
      },
      "minItems": 64,
      "maxItems": 64
    }
  }
}