{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/crawlhive-xyz/json-schema/crawlhive-xyz-wallet-report-schema.json",
  "title": "WalletReport",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/crawlhive-xyz-brain-openapi.yml#/components/schemas/WalletReport",
  "type": "object",
  "properties": {
    "wallet": {
      "type": "string"
    },
    "seen": {
      "type": "boolean"
    },
    "tokens": {
      "type": "integer"
    },
    "chains": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "solana",
          "bsc",
          "base",
          "robinhood"
        ]
      }
    },
    "roles": {
      "$ref": "#/$defs/Roles"
    },
    "outcomes": {
      "$ref": "#/$defs/Outcomes"
    },
    "dumpRate": {
      "type": [
        "number",
        "null"
      ]
    },
    "baselineDumpRate": {
      "type": [
        "number",
        "null"
      ]
    },
    "risk": {
      "$ref": "#/$defs/Risk"
    },
    "operator": {
      "$ref": "#/$defs/OperatorBrief"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "chain": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "sniper",
              "bundle",
              "dev",
              "factory",
              "pool",
              "funder",
              "holder",
              "linked"
            ]
          },
          "evidence": {
            "$ref": "#/$defs/Evidence"
          },
          "symbol": {
            "type": [
              "string",
              "null"
            ]
          },
          "verdict": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "CLEAN",
              "OK",
              "RISKY",
              "DANGER",
              "TOO_EARLY",
              null
            ]
          },
          "score": {
            "type": [
              "integer",
              "null"
            ]
          },
          "scannedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "outcome": {
            "$ref": "#/$defs/Outcome"
          }
        }
      }
    },
    "memory": {
      "type": "object",
      "properties": {
        "wallets": {
          "type": "integer"
        },
        "cap": {
          "type": [
            "integer",
            "null"
          ],
          "description": "null when memory has no cap"
        },
        "tokensPerWallet": {
          "type": [
            "integer",
            "null"
          ]
        },
        "store": {
          "type": "string",
          "enum": [
            "sqlite",
            "meta"
          ]
        }
      }
    },
    "notes": {
      "type": "string"
    }
  },
  "$defs": {
    "Evidence": {
      "type": [
        "object",
        "null"
      ],
      "description": "Launch evidence for dev, factory and pool entries. Null fields were not proven.",
      "properties": {
        "tx": {
          "type": [
            "string",
            "null"
          ]
        },
        "txUrl": {
          "type": [
            "string",
            "null"
          ]
        },
        "launchedAt": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "seenBySwarmAt": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "when the swarm first saw the coin"
        },
        "deployer": {
          "type": [
            "string",
            "null"
          ],
          "description": "wallet that signed the launch"
        },
        "factory": {
          "type": [
            "string",
            "null"
          ],
          "description": "launchpad or factory contract"
        },
        "poolCreator": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "OperatorBrief": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "wallets": {
          "type": "integer"
        },
        "tokens": {
          "type": "integer"
        },
        "dumpRate": {
          "type": [
            "number",
            "null"
          ]
        },
        "settled": {
          "type": "integer"
        },
        "strong": {
          "type": "boolean",
          "description": "true when the operator has bundles or dev money; false when it is linked mostly by shared funders (a connection",
          "not proof of common control)": null
        }
      }
    },
    "Outcome": {
      "type": "string",
      "enum": [
        "rugged",
        "dumped",
        "survived",
        "open",
        "untracked"
      ]
    },
    "Outcomes": {
      "type": "object",
      "properties": {
        "settled": {
          "type": "integer",
          "description": "dumped + survived"
        },
        "dumped": {
          "type": "integer",
          "description": "rugs included"
        },
        "rugged": {
          "type": "integer"
        },
        "survived": {
          "type": "integer"
        },
        "open": {
          "type": "integer",
          "description": "tracked",
          "less than 24h old": null
        },
        "untracked": {
          "type": "integer",
          "description": "the swarm did not follow this token's price"
        }
      }
    },
    "Risk": {
      "type": "object",
      "description": "0-100 reading of past behaviour: dump rate shrunk toward the baseline (prior of 4 coins), heaviest role weight and operator record. high >= 65, medium 50-64, low < 50, unknown when nothing is graded.",
      "properties": {
        "score": {
          "type": [
            "integer",
            "null"
          ]
        },
        "level": {
          "type": "string",
          "enum": [
            "low",
            "medium",
            "high",
            "unknown"
          ]
        },
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Roles": {
      "type": "object",
      "description": "count of tokens per role",
      "additionalProperties": {
        "type": "integer"
      }
    }
  }
}