{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/asteroidxrpl-com/json-schema/asteroidxrpl-com-lp-lock-verification-schema.json",
  "title": "ASTEROID LP-lock verification",
  "description": "Live verification of the signing paths on each project-declared LP-holding account, with LP balances and pro-rata implied reserves. A closed signing path is an observation at one validated ledger, not a permanence guarantee.",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/asteroidxrpl-com-openapi.json#/components/schemas/lp-lock-verification",
  "type": "object",
  "required": [
    "tokenId",
    "methodologyId",
    "methodologyVersion",
    "ammAccount",
    "lpTokenCurrency",
    "lpTokenIssuer",
    "lpTokenSupply",
    "accountsChecked",
    "accountsWithNoKnownSigningPath",
    "accountsWithSigningPathRemaining",
    "accountsUnknown",
    "accounts",
    "lockedLpTotal",
    "lockedLpSharePct",
    "communityLpSharePct",
    "verdict",
    "verdictNote",
    "methodology",
    "limitations"
  ],
  "additionalProperties": false,
  "properties": {
    "tokenId": {
      "type": "string"
    },
    "methodologyId": {
      "type": "string"
    },
    "methodologyVersion": {
      "type": "string"
    },
    "ammAccount": {
      "type": [
        "string",
        "null"
      ]
    },
    "lpTokenCurrency": {
      "type": [
        "string",
        "null"
      ]
    },
    "lpTokenIssuer": {
      "type": [
        "string",
        "null"
      ]
    },
    "lpTokenSupply": {
      "type": [
        "string",
        "null"
      ],
      "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
      "description": "Exact decimal string. Never rounded for transport. Null means unreadable, not zero."
    },
    "accountsChecked": {
      "type": "integer",
      "minimum": 0
    },
    "accountsWithNoKnownSigningPath": {
      "type": "integer",
      "minimum": 0
    },
    "accountsWithSigningPathRemaining": {
      "type": "integer",
      "minimum": 0
    },
    "accountsUnknown": {
      "type": "integer",
      "minimum": 0
    },
    "accounts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "address",
          "roleClaimStatus",
          "lpBalance",
          "shareOfLpSupplyPct",
          "impliedXrp",
          "impliedAsteroid",
          "control",
          "accessibilityNote"
        ],
        "additionalProperties": false,
        "properties": {
          "address": {
            "type": "string"
          },
          "roleClaimStatus": {
            "type": "string",
            "enum": [
              "ledger-verified",
              "owner-confirmed",
              "independently-sourced",
              "derived",
              "aspirational",
              "unresolved"
            ]
          },
          "lpBalance": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
            "description": "Exact decimal string. Never rounded for transport. Null means unreadable, not zero."
          },
          "shareOfLpSupplyPct": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
            "description": "Exact decimal string. Never rounded for transport. Null means unreadable, not zero."
          },
          "impliedXrp": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
            "description": "Exact decimal string. Never rounded for transport. Null means unreadable, not zero."
          },
          "impliedAsteroid": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
            "description": "Exact decimal string. Never rounded for transport. Null means unreadable, not zero."
          },
          "control": {
            "type": "object",
            "required": [
              "masterKeyDisabled",
              "regularKeyUnusable",
              "signerListActive",
              "verdict"
            ],
            "additionalProperties": false,
            "properties": {
              "masterKeyDisabled": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "regularKeyUnusable": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "signerListActive": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "verdict": {
                "type": "string",
                "enum": [
                  "no-known-signing-path",
                  "signing-path-remains",
                  "unknown"
                ]
              }
            }
          },
          "accessibilityNote": {
            "type": "string"
          }
        }
      }
    },
    "lockedLpTotal": {
      "type": [
        "string",
        "null"
      ],
      "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
      "description": "Exact decimal string. Never rounded for transport. Null means unreadable, not zero."
    },
    "lockedLpSharePct": {
      "type": [
        "string",
        "null"
      ],
      "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
      "description": "Exact decimal string. Never rounded for transport. Null means unreadable, not zero."
    },
    "communityLpSharePct": {
      "type": [
        "string",
        "null"
      ],
      "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
      "description": "Exact decimal string. Never rounded for transport. Null means unreadable, not zero."
    },
    "verdict": {
      "type": "string",
      "enum": [
        "all-checked-accounts-have-no-known-signing-path",
        "some-checked-accounts-retain-a-signing-path",
        "no-checked-account-has-a-closed-signing-path",
        "unknown"
      ]
    },
    "verdictNote": {
      "type": "string"
    },
    "methodology": {
      "type": "string"
    },
    "limitations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}