[
  {
    "type": "function",
    "name": "project",
    "inputs": [
      {
        "name": "id",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct LauncherProjectFactory037.Project",
        "components": [
          {
            "name": "owner",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "entitlementId",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "commitment",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "finalConfigurationHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "recipe",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "quote",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "mode",
            "type": "uint8",
            "internalType": "enum LocalLifecycle.Mode"
          },
          {
            "name": "token",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "curve",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "escrow",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "companion",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "inbox",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "rewards",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "royaltyVault",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "distributor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "receivers",
            "type": "address[6]",
            "internalType": "address[6]"
          },
          {
            "name": "localSource",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "globalAdapter",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "localBuyback",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "otoBuyback",
            "type": "address",
            "internalType": "address"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "recipeEnabled",
    "inputs": [
      {
        "name": "version",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "recipeHash",
    "inputs": [
      {
        "name": "version",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "requireAdmission",
    "inputs": [],
    "outputs": [
      {
        "name": "revision",
        "type": "uint64",
        "internalType": "uint64"
      },
      {
        "name": "graphHash",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "event",
    "name": "ProjectCreated",
    "inputs": [
      {
        "name": "entitlementId",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "owner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "token",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "commitment",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      },
      {
        "name": "finalConfigurationHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      },
      {
        "name": "recipe",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "function",
    "name": "infrastructure",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct LauncherProjectFactory037.Infrastructure",
        "components": [
          {
            "name": "entitlement",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "market",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "forge",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "policy",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "burner",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "royaltyHelper",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "validator",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "assignmentOperator",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "globalIngress",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "globalEngine",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "oto",
            "type": "address",
            "internalType": "address"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "event",
    "name": "RecipeAdded",
    "inputs": [
      {
        "name": "version",
        "type": "uint256",
        "indexed": true,
        "internalType": "uint256"
      },
      {
        "name": "graphHash",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "recipeHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      }
    ],
    "anonymous": false
  }
]
