{
  "name": "Deplo",
  "chain": {
    "name": "Robinhood Chain",
    "id": 4663,
    "rpc": "https://rpc.mainnet.chain.robinhood.com",
    "explorer": "https://robinhoodchain.blockscout.com"
  },
  "contracts": {
    "DeploReleaseBook": {
      "address": "0x58e88d61aa2ef8e42a30b953f8b7989d436aab9e",
      "deployedBlock": 100400811,
      "status": "deployed",
      "abi": [
        {
          "name": "ENV_PREVIEW",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint8"
            }
          ]
        },
        {
          "name": "ENV_PRODUCTION",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint8"
            }
          ]
        },
        {
          "name": "MAX_REPO_LENGTH",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "MAX_URL_LENGTH",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "MAX_LABEL_LENGTH",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "MAX_PAGE",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "liveReleaseCount",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "rollbackCount",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "ownerCount",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "registerProject",
          "type": "function",
          "stateMutability": "nonpayable",
          "inputs": [
            {
              "type": "string",
              "name": "repo"
            }
          ],
          "outputs": [
            {
              "type": "uint256",
              "name": "projectId"
            }
          ]
        },
        {
          "name": "recordRelease",
          "type": "function",
          "stateMutability": "nonpayable",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            },
            {
              "type": "bytes20",
              "name": "commit"
            },
            {
              "type": "bytes32",
              "name": "artifactHash"
            },
            {
              "type": "string",
              "name": "url"
            },
            {
              "type": "string",
              "name": "label"
            },
            {
              "type": "uint8",
              "name": "env"
            }
          ],
          "outputs": [
            {
              "type": "uint256",
              "name": "releaseId"
            }
          ]
        },
        {
          "name": "promote",
          "type": "function",
          "stateMutability": "nonpayable",
          "inputs": [
            {
              "type": "uint256",
              "name": "previewId"
            }
          ],
          "outputs": [
            {
              "type": "uint256",
              "name": "releaseId"
            }
          ]
        },
        {
          "name": "rollback",
          "type": "function",
          "stateMutability": "nonpayable",
          "inputs": [
            {
              "type": "uint256",
              "name": "releaseId"
            }
          ],
          "outputs": []
        },
        {
          "name": "projectCount",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "releaseCount",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "getProject",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            }
          ],
          "outputs": [
            {
              "type": "tuple",
              "name": "v",
              "components": [
                {
                  "type": "uint256",
                  "name": "id"
                },
                {
                  "type": "address",
                  "name": "owner"
                },
                {
                  "type": "uint64",
                  "name": "registeredBlock"
                },
                {
                  "type": "uint64",
                  "name": "registeredAt"
                },
                {
                  "type": "uint64",
                  "name": "current"
                },
                {
                  "type": "uint64",
                  "name": "latestPreview"
                },
                {
                  "type": "uint256",
                  "name": "releaseCount"
                },
                {
                  "type": "bytes32",
                  "name": "repoHash"
                },
                {
                  "type": "string",
                  "name": "repo"
                }
              ]
            }
          ]
        },
        {
          "name": "projects",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "uint256",
              "name": "fromId"
            },
            {
              "type": "uint256",
              "name": "limit"
            }
          ],
          "outputs": [
            {
              "type": "tuple[]",
              "name": "out",
              "components": [
                {
                  "type": "uint256",
                  "name": "id"
                },
                {
                  "type": "address",
                  "name": "owner"
                },
                {
                  "type": "uint64",
                  "name": "registeredBlock"
                },
                {
                  "type": "uint64",
                  "name": "registeredAt"
                },
                {
                  "type": "uint64",
                  "name": "current"
                },
                {
                  "type": "uint64",
                  "name": "latestPreview"
                },
                {
                  "type": "uint256",
                  "name": "releaseCount"
                },
                {
                  "type": "bytes32",
                  "name": "repoHash"
                },
                {
                  "type": "string",
                  "name": "repo"
                }
              ]
            }
          ]
        },
        {
          "name": "getRelease",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "uint256",
              "name": "releaseId"
            }
          ],
          "outputs": [
            {
              "type": "tuple",
              "name": "v",
              "components": [
                {
                  "type": "uint256",
                  "name": "id"
                },
                {
                  "type": "uint64",
                  "name": "projectId"
                },
                {
                  "type": "uint8",
                  "name": "env"
                },
                {
                  "type": "bool",
                  "name": "everLive"
                },
                {
                  "type": "bool",
                  "name": "isCurrent"
                },
                {
                  "type": "uint64",
                  "name": "recordedBlock"
                },
                {
                  "type": "uint64",
                  "name": "recordedAt"
                },
                {
                  "type": "uint64",
                  "name": "promotedFrom"
                },
                {
                  "type": "bytes20",
                  "name": "commit"
                },
                {
                  "type": "bytes32",
                  "name": "artifactHash"
                },
                {
                  "type": "string",
                  "name": "url"
                },
                {
                  "type": "string",
                  "name": "label"
                }
              ]
            }
          ]
        },
        {
          "name": "releases",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "uint256",
              "name": "fromId"
            },
            {
              "type": "uint256",
              "name": "limit"
            }
          ],
          "outputs": [
            {
              "type": "tuple[]",
              "name": "out",
              "components": [
                {
                  "type": "uint256",
                  "name": "id"
                },
                {
                  "type": "uint64",
                  "name": "projectId"
                },
                {
                  "type": "uint8",
                  "name": "env"
                },
                {
                  "type": "bool",
                  "name": "everLive"
                },
                {
                  "type": "bool",
                  "name": "isCurrent"
                },
                {
                  "type": "uint64",
                  "name": "recordedBlock"
                },
                {
                  "type": "uint64",
                  "name": "recordedAt"
                },
                {
                  "type": "uint64",
                  "name": "promotedFrom"
                },
                {
                  "type": "bytes20",
                  "name": "commit"
                },
                {
                  "type": "bytes32",
                  "name": "artifactHash"
                },
                {
                  "type": "string",
                  "name": "url"
                },
                {
                  "type": "string",
                  "name": "label"
                }
              ]
            }
          ]
        },
        {
          "name": "releaseCountOf",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            }
          ],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "releaseIdsOf",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            },
            {
              "type": "uint256",
              "name": "offset"
            },
            {
              "type": "uint256",
              "name": "limit"
            }
          ],
          "outputs": [
            {
              "type": "uint256[]"
            }
          ]
        },
        {
          "name": "projectCountOf",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "address",
              "name": "owner"
            }
          ],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "projectIdsOf",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "address",
              "name": "owner"
            },
            {
              "type": "uint256",
              "name": "offset"
            },
            {
              "type": "uint256",
              "name": "limit"
            }
          ],
          "outputs": [
            {
              "type": "uint256[]"
            }
          ]
        },
        {
          "name": "projectIdOf",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "address",
              "name": "owner"
            },
            {
              "type": "bytes32",
              "name": "repoHash"
            }
          ],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "projectCountForRepo",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "bytes32",
              "name": "repoHash"
            }
          ],
          "outputs": [
            {
              "type": "uint256"
            }
          ]
        },
        {
          "name": "projectIdsForRepo",
          "type": "function",
          "stateMutability": "view",
          "inputs": [
            {
              "type": "bytes32",
              "name": "repoHash"
            },
            {
              "type": "uint256",
              "name": "offset"
            },
            {
              "type": "uint256",
              "name": "limit"
            }
          ],
          "outputs": [
            {
              "type": "uint256[]"
            }
          ]
        },
        {
          "name": "chainBlock",
          "type": "function",
          "stateMutability": "view",
          "inputs": [],
          "outputs": [
            {
              "type": "uint64"
            }
          ]
        },
        {
          "name": "ProjectRegistered",
          "type": "event",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId",
              "indexed": true
            },
            {
              "type": "address",
              "name": "owner",
              "indexed": true
            },
            {
              "type": "bytes32",
              "name": "repoHash",
              "indexed": true
            },
            {
              "type": "string",
              "name": "repo"
            },
            {
              "type": "uint64",
              "name": "chainBlock"
            }
          ]
        },
        {
          "name": "ReleaseRecorded",
          "type": "event",
          "inputs": [
            {
              "type": "uint256",
              "name": "releaseId",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "projectId",
              "indexed": true
            },
            {
              "type": "uint8",
              "name": "env",
              "indexed": true
            },
            {
              "type": "bytes20",
              "name": "commit"
            },
            {
              "type": "bytes32",
              "name": "artifactHash"
            },
            {
              "type": "string",
              "name": "url"
            },
            {
              "type": "string",
              "name": "label"
            },
            {
              "type": "uint64",
              "name": "chainBlock"
            }
          ]
        },
        {
          "name": "Promoted",
          "type": "event",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "releaseId",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "previewId",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "previous"
            },
            {
              "type": "uint64",
              "name": "chainBlock"
            }
          ]
        },
        {
          "name": "RolledBack",
          "type": "event",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "releaseId",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "previous",
              "indexed": true
            },
            {
              "type": "uint64",
              "name": "chainBlock"
            }
          ]
        },
        {
          "name": "BadRepo",
          "type": "error",
          "inputs": []
        },
        {
          "name": "BadUrl",
          "type": "error",
          "inputs": []
        },
        {
          "name": "BadLabel",
          "type": "error",
          "inputs": []
        },
        {
          "name": "BadCommit",
          "type": "error",
          "inputs": []
        },
        {
          "name": "BadEnv",
          "type": "error",
          "inputs": [
            {
              "type": "uint8",
              "name": "env"
            }
          ]
        },
        {
          "name": "AlreadyRegistered",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            }
          ]
        },
        {
          "name": "UnknownProject",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            }
          ]
        },
        {
          "name": "UnknownRelease",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "releaseId"
            }
          ]
        },
        {
          "name": "NotProjectOwner",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "projectId"
            }
          ]
        },
        {
          "name": "NotPreview",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "releaseId"
            }
          ]
        },
        {
          "name": "AlreadyPromoted",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "releaseId"
            }
          ]
        },
        {
          "name": "NeverLive",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "releaseId"
            }
          ]
        },
        {
          "name": "AlreadyCurrent",
          "type": "error",
          "inputs": [
            {
              "type": "uint256",
              "name": "releaseId"
            }
          ]
        }
      ]
    }
  },
  "notes": "Environments: 0 = preview, 1 = production. repoHash = keccak256(lower-case owner/name). No owner, no fees, never holds funds."
}