{
  "schema": "p31.evmContractSuite/0.1.0",
  "suite": "SMART",
  "suiteExpanded": "Sovereign · Manifest · Access · Root · Treasury",
  "solidity": "0.8.24",
  "package": "packages/p31-sovereign-chain",
  "verifyScript": "verify:sovereign-chain",
  "generatedAt": "2026-05-01T00:08:07.176Z",
  "contracts": [
    {
      "letter": "S",
      "name": "P31TransparencyAnchor",
      "source": "packages/p31-sovereign-chain/src/P31TransparencyAnchor.sol",
      "role": "Sovereign — append-only digest + URI commitments.",
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "digest",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "uri",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "blockNumber",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ],
          "name": "Anchored",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "digest",
              "type": "bytes32"
            },
            {
              "internalType": "string",
              "name": "uri",
              "type": "string"
            }
          ],
          "name": "anchor",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "anchorCount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "getAnchor",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "digest",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "uri",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "blockNumber",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "timestamp",
                  "type": "uint64"
                }
              ],
              "internalType": "struct P31TransparencyAnchor.Anchor",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ]
    },
    {
      "letter": "M",
      "name": "P31ManifestRegistry",
      "source": "packages/p31-sovereign-chain/src/P31ManifestRegistry.sol",
      "role": "Manifest — stable manifest id → latest digest + URI head.",
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "manifestId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "digest",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "uri",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "publisher",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ],
          "name": "ManifestPublished",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "manifestId",
              "type": "bytes32"
            }
          ],
          "name": "head",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "digest",
                  "type": "bytes32"
                },
                {
                  "internalType": "string",
                  "name": "uri",
                  "type": "string"
                },
                {
                  "internalType": "address",
                  "name": "publisher",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "updatedAt",
                  "type": "uint64"
                }
              ],
              "internalType": "struct P31ManifestRegistry.Head",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "manifestId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "digest",
              "type": "bytes32"
            },
            {
              "internalType": "string",
              "name": "uri",
              "type": "string"
            }
          ],
          "name": "publish",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ]
    },
    {
      "letter": "A",
      "name": "P31AccessAllowlist",
      "source": "packages/p31-sovereign-chain/src/P31AccessAllowlist.sol",
      "role": "Access — owner-managed capability allowlist per address.",
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "capability",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "who",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "allowed",
              "type": "bool"
            }
          ],
          "name": "AllowanceSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "capability",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "who",
              "type": "address"
            }
          ],
          "name": "isAllowed",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "capability",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "who",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "allowed",
              "type": "bool"
            }
          ],
          "name": "setAllowed",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "next",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ]
    },
    {
      "letter": "R",
      "name": "P31ContentRoot",
      "source": "packages/p31-sovereign-chain/src/P31ContentRoot.sol",
      "role": "Root — owner-managed key → content CID (IPFS / Arweave).",
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "key",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "string",
              "name": "cid",
              "type": "string"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "RootSet",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "key",
              "type": "bytes32"
            }
          ],
          "name": "cidOf",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "key",
              "type": "bytes32"
            },
            {
              "internalType": "string",
              "name": "cid",
              "type": "string"
            }
          ],
          "name": "setRoot",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "next",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ]
    },
    {
      "letter": "T",
      "name": "P31TreasuryConfig",
      "source": "packages/p31-sovereign-chain/src/P31TreasuryConfig.sol",
      "role": "Treasury — Safe + USDC + home chain id; lockable.",
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [],
          "name": "Locked",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "safe",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "usdc",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "homeChainId",
              "type": "uint256"
            }
          ],
          "name": "TreasuryConfigured",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "safe_",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "usdc_",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "chainId_",
              "type": "uint256"
            }
          ],
          "name": "configure",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "homeChainId",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lock",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "locked",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "safe",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "next",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "usdc",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ]
    }
  ]
}
