{
  "name": "Cremora",
  "chain": {
    "name": "Robinhood Chain",
    "id": 4663,
    "rpc": "https://rpc.mainnet.chain.robinhood.com",
    "explorer": "https://robinhoodchain.blockscout.com"
  },
  "contracts": {
    "CremoraOriginBook": {
      "address": null,
      "deployedBlock": null,
      "status": "not deployed yet",
      "abi": [
        {
          "type": "function",
          "name": "KIND_COUNT",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_LABEL",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_PAGE",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_URI",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_VERSIONS",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "acceptAuthor",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "addVersion",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "contentHash",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "label",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "uri",
              "type": "string",
              "internalType": "string"
            }
          ],
          "outputs": [
            {
              "name": "versionIndex",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "anchor",
          "inputs": [
            {
              "name": "contentHash",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "kind",
              "type": "uint8",
              "internalType": "uint8"
            },
            {
              "name": "label",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "uri",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "parentId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "attest",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "versionIndex",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "attestTotal",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "attestersOf",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "versionIndex",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "offset",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "limit",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "out",
              "type": "address[]",
              "internalType": "address[]"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "authorsOf",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address[]",
              "internalType": "address[]"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "cancelOffer",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "chainBlock",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint64",
              "internalType": "uint64"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "creationCount",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "creations",
          "inputs": [
            {
              "name": "from",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "limit",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "out",
              "type": "tuple[]",
              "internalType": "struct CremoraOriginBook.Creation[]",
              "components": [
                {
                  "name": "author",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "anchoredAt",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "kind",
                  "type": "uint8",
                  "internalType": "uint8"
                },
                {
                  "name": "status",
                  "type": "uint8",
                  "internalType": "enum CremoraOriginBook.Status"
                },
                {
                  "name": "versionCount",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "pendingAuthor",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "chainBlockAtAnchor",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "firstAuthor",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "remixCount",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "editorCount",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "attestCount",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "parentId",
                  "type": "uint256",
                  "internalType": "uint256"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "getCreation",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct CremoraOriginBook.Creation",
              "components": [
                {
                  "name": "author",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "anchoredAt",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "kind",
                  "type": "uint8",
                  "internalType": "uint8"
                },
                {
                  "name": "status",
                  "type": "uint8",
                  "internalType": "enum CremoraOriginBook.Status"
                },
                {
                  "name": "versionCount",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "pendingAuthor",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "chainBlockAtAnchor",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "firstAuthor",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "remixCount",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "editorCount",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "attestCount",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "parentId",
                  "type": "uint256",
                  "internalType": "uint256"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "getVersion",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "versionIndex",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct CremoraOriginBook.Version",
              "components": [
                {
                  "name": "contentHash",
                  "type": "bytes32",
                  "internalType": "bytes32"
                },
                {
                  "name": "addedBy",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "at",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "chainBlock",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "attestCount",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "label",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "uri",
                  "type": "string",
                  "internalType": "string"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "hasAttested",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "versionIndex",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "who",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "hashEntries",
          "inputs": [
            {
              "name": "contentHash",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "offset",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "limit",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "out",
              "type": "tuple[]",
              "internalType": "struct CremoraOriginBook.HashEntry[]",
              "components": [
                {
                  "name": "creationId",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "versionIndex",
                  "type": "uint32",
                  "internalType": "uint32"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "hashEntryCount",
          "inputs": [
            {
              "name": "contentHash",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "idCountOf",
          "inputs": [
            {
              "name": "who",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "idsOf",
          "inputs": [
            {
              "name": "who",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "offset",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "limit",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]",
              "internalType": "uint256[]"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "isEditor",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "who",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "isInsider",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "who",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "latestVersion",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct CremoraOriginBook.Version",
              "components": [
                {
                  "name": "contentHash",
                  "type": "bytes32",
                  "internalType": "bytes32"
                },
                {
                  "name": "addedBy",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "at",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "chainBlock",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "attestCount",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "label",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "uri",
                  "type": "string",
                  "internalType": "string"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "offerAuthor",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "to",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "remixesOf",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "offset",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "limit",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]",
              "internalType": "uint256[]"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "retire",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "retiredTotal",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "setEditor",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "who",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "allowed",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "versionTotal",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "versions",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "offset",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "limit",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "out",
              "type": "tuple[]",
              "internalType": "struct CremoraOriginBook.Version[]",
              "components": [
                {
                  "name": "contentHash",
                  "type": "bytes32",
                  "internalType": "bytes32"
                },
                {
                  "name": "addedBy",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "at",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "chainBlock",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "attestCount",
                  "type": "uint32",
                  "internalType": "uint32"
                },
                {
                  "name": "label",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "uri",
                  "type": "string",
                  "internalType": "string"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "withdrawAttest",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "versionIndex",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "event",
          "name": "AttestWithdrawn",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "versionIndex",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "by",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "Attested",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "versionIndex",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "by",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "chainBlock",
              "type": "uint64",
              "indexed": false,
              "internalType": "uint64"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "AuthorChanged",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "from",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "to",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "chainBlock",
              "type": "uint64",
              "indexed": false,
              "internalType": "uint64"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "AuthorOfferCancelled",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "to",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "AuthorOffered",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "from",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "to",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "CreationAnchored",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "author",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "contentHash",
              "type": "bytes32",
              "indexed": true,
              "internalType": "bytes32"
            },
            {
              "name": "kind",
              "type": "uint8",
              "indexed": false,
              "internalType": "uint8"
            },
            {
              "name": "parentId",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "label",
              "type": "string",
              "indexed": false,
              "internalType": "string"
            },
            {
              "name": "uri",
              "type": "string",
              "indexed": false,
              "internalType": "string"
            },
            {
              "name": "chainBlock",
              "type": "uint64",
              "indexed": false,
              "internalType": "uint64"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "EditorSet",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "who",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "allowed",
              "type": "bool",
              "indexed": false,
              "internalType": "bool"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "Retired",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "by",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "chainBlock",
              "type": "uint64",
              "indexed": false,
              "internalType": "uint64"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "VersionAdded",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "versionIndex",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "contentHash",
              "type": "bytes32",
              "indexed": true,
              "internalType": "bytes32"
            },
            {
              "name": "addedBy",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            },
            {
              "name": "label",
              "type": "string",
              "indexed": false,
              "internalType": "string"
            },
            {
              "name": "uri",
              "type": "string",
              "indexed": false,
              "internalType": "string"
            },
            {
              "name": "chainBlock",
              "type": "uint64",
              "indexed": false,
              "internalType": "uint64"
            }
          ],
          "anonymous": false
        },
        {
          "type": "error",
          "name": "AlreadyAttested",
          "inputs": []
        },
        {
          "type": "error",
          "name": "AlreadyRetired",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BadAddress",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BadHash",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BadKind",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BadLabel",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BadUri",
          "inputs": []
        },
        {
          "type": "error",
          "name": "InsiderCannotAttest",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NoChange",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NoOffer",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotAttested",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotAuthor",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotOffered",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotWriter",
          "inputs": []
        },
        {
          "type": "error",
          "name": "SameAsLatest",
          "inputs": []
        },
        {
          "type": "error",
          "name": "TooManyVersions",
          "inputs": []
        },
        {
          "type": "error",
          "name": "UnknownCreation",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "UnknownVersion",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "versionIndex",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        }
      ]
    }
  },
  "notes": "contentHash is keccak256 of the file bytes. A record proves a wallet published a hash at a time, not that it made the work. No owner, no fees, never holds funds."
}