{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://finance.entelekron.org/schemas/tvkusd-reserve-snapshot.schema.json",
  "title": "TVKUSD Reserve Snapshot",
  "description": "Public reserve and liability snapshot format. Pre-issuance snapshots must remain a zero-state and are not attestations.",
  "type": "object",
  "additionalProperties": false,
  "required": ["$schema", "schemaVersion", "canonicalAssetId", "snapshotId", "status", "asOf", "denomination", "liabilities", "eligibleReserves", "coverage", "reconciliation", "attestation", "controls", "notice"],
  "properties": {
    "$schema": { "type": "string", "format": "uri" },
    "schemaVersion": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
    "canonicalAssetId": { "const": "tvk-group:tvkusd" },
    "snapshotId": { "type": "string", "pattern": "^tvkusd-reserve-[a-z0-9-]+$" },
    "status": { "enum": ["pre-issuance-zero", "operational"] },
    "asOf": { "type": "string", "format": "date-time" },
    "denomination": { "const": "USD" },
    "liabilities": {
      "type": "object",
      "additionalProperties": false,
      "required": ["issuedSupply", "issuedSupplyUnit", "redeemableLiabilityUsd", "pendingMintLiabilityUsd", "pendingRedemptionLiabilityUsd"],
      "properties": {
        "issuedSupply": { "$ref": "#/$defs/nonNegativeDecimal" },
        "issuedSupplyUnit": { "const": "TVKUSD" },
        "redeemableLiabilityUsd": { "$ref": "#/$defs/nonNegativeMoney" },
        "pendingMintLiabilityUsd": { "$ref": "#/$defs/nonNegativeMoney" },
        "pendingRedemptionLiabilityUsd": { "$ref": "#/$defs/nonNegativeMoney" }
      }
    },
    "eligibleReserves": {
      "type": "object",
      "additionalProperties": false,
      "required": ["totalUsd", "composition", "custodians", "accountsPublished"],
      "properties": {
        "totalUsd": { "$ref": "#/$defs/nonNegativeMoney" },
        "composition": { "type": "array", "items": { "type": "object" } },
        "custodians": { "type": "array", "items": { "type": "string", "minLength": 1 } },
        "accountsPublished": { "type": "boolean" }
      }
    },
    "coverage": {
      "type": "object",
      "additionalProperties": false,
      "required": ["applicable", "ratioBps", "minimumPolicyBps", "reason"],
      "properties": {
        "applicable": { "type": "boolean" },
        "ratioBps": { "type": ["integer", "null"], "minimum": 0 },
        "minimumPolicyBps": { "type": "integer", "minimum": 10000 },
        "reason": { "type": "string", "minLength": 1 }
      }
    },
    "reconciliation": {
      "type": "object",
      "additionalProperties": false,
      "required": ["onchainCanonicalSupply", "ledgerIssuedSupply", "customerAndInstitutionLiability", "difference", "state"],
      "properties": {
        "onchainCanonicalSupply": { "$ref": "#/$defs/nonNegativeDecimal" },
        "ledgerIssuedSupply": { "$ref": "#/$defs/nonNegativeDecimal" },
        "customerAndInstitutionLiability": { "$ref": "#/$defs/nonNegativeDecimal" },
        "difference": { "type": "string", "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$" },
        "state": { "enum": ["pre-issuance-balanced", "balanced", "exception"] }
      }
    },
    "attestation": {
      "type": "object",
      "additionalProperties": false,
      "required": ["status", "provider", "reportUrl", "periodStart", "periodEnd"],
      "properties": {
        "status": { "enum": ["not-applicable-prelaunch", "pending", "published", "expired", "withdrawn"] },
        "provider": { "type": ["string", "null"] },
        "reportUrl": { "type": ["string", "null"], "format": "uri" },
        "periodStart": { "type": ["string", "null"], "format": "date-time" },
        "periodEnd": { "type": ["string", "null"], "format": "date-time" }
      }
    },
    "controls": {
      "type": "object",
      "additionalProperties": false,
      "required": ["statusSource", "controlManifest", "independentlyApproved", "productionAuthority"],
      "properties": {
        "statusSource": { "type": "string", "format": "uri" },
        "controlManifest": { "type": "string", "format": "uri" },
        "independentlyApproved": { "type": "boolean" },
        "productionAuthority": { "type": "boolean" }
      }
    },
    "notice": { "type": "string", "minLength": 1 }
  },
  "$defs": {
    "nonNegativeDecimal": { "type": "string", "pattern": "^[0-9]+(?:\\.[0-9]+)?$" },
    "nonNegativeMoney": { "type": "string", "pattern": "^[0-9]+\\.[0-9]{2}$" }
  }
}
