{
  "compiler": {
    "version": "0.8.27+commit.40a35a09"
  },
  "language": "Solidity",
  "output": {
    "abi": [
      {
        "inputs": [
          {
            "internalType": "bytes4",
            "name": "_selector",
            "type": "bytes4"
          }
        ],
        "type": "error",
        "name": "CannotAddFunctionToDiamondThatAlreadyExists"
      },
      {
        "inputs": [
          {
            "internalType": "bytes4[]",
            "name": "_selectors",
            "type": "bytes4[]"
          }
        ],
        "type": "error",
        "name": "CannotAddSelectorsToZeroAddress"
      },
      {
        "inputs": [
          {
            "internalType": "bytes4",
            "name": "_selector",
            "type": "bytes4"
          }
        ],
        "type": "error",
        "name": "CannotRemoveFunctionThatDoesNotExist"
      },
      {
        "inputs": [
          {
            "internalType": "bytes4",
            "name": "_selector",
            "type": "bytes4"
          }
        ],
        "type": "error",
        "name": "CannotRemoveImmutableFunction"
      },
      {
        "inputs": [
          {
            "internalType": "bytes4",
            "name": "_selector",
            "type": "bytes4"
          }
        ],
        "type": "error",
        "name": "CannotReplaceFunctionThatDoesNotExists"
      },
      {
        "inputs": [
          {
            "internalType": "bytes4",
            "name": "_selector",
            "type": "bytes4"
          }
        ],
        "type": "error",
        "name": "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet"
      },
      {
        "inputs": [
          {
            "internalType": "bytes4[]",
            "name": "_selectors",
            "type": "bytes4[]"
          }
        ],
        "type": "error",
        "name": "CannotReplaceFunctionsFromFacetWithZeroAddress"
      },
      {
        "inputs": [
          {
            "internalType": "bytes4",
            "name": "_selector",
            "type": "bytes4"
          }
        ],
        "type": "error",
        "name": "CannotReplaceImmutableFunction"
      },
      {
        "inputs": [
          {
            "internalType": "uint8",
            "name": "_action",
            "type": "uint8"
          }
        ],
        "type": "error",
        "name": "IncorrectFacetCutAction"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "_initializationContractAddress",
            "type": "address"
          },
          {
            "internalType": "bytes",
            "name": "_calldata",
            "type": "bytes"
          }
        ],
        "type": "error",
        "name": "InitializationFunctionReverted"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "_contractAddress",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "_message",
            "type": "string"
          }
        ],
        "type": "error",
        "name": "NoBytecodeAtAddress"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "_facetAddress",
            "type": "address"
          }
        ],
        "type": "error",
        "name": "NoSelectorsProvidedForFacetForCut"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "_user",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "_contractOwner",
            "type": "address"
          }
        ],
        "type": "error",
        "name": "NotContractOwner"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "_facetAddress",
            "type": "address"
          }
        ],
        "type": "error",
        "name": "RemoveFacetAddressMustBeZeroAddress"
      },
      {
        "inputs": [
          {
            "internalType": "struct IDiamond.FacetCut[]",
            "name": "_diamondCut",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "address",
                "name": "facetAddress",
                "type": "address"
              },
              {
                "internalType": "enum IDiamond.FacetCutAction",
                "name": "action",
                "type": "uint8"
              },
              {
                "internalType": "bytes4[]",
                "name": "functionSelectors",
                "type": "bytes4[]"
              }
            ],
            "indexed": false
          },
          {
            "internalType": "address",
            "name": "_init",
            "type": "address",
            "indexed": false
          },
          {
            "internalType": "bytes",
            "name": "_calldata",
            "type": "bytes",
            "indexed": false
          }
        ],
        "type": "event",
        "name": "DiamondCut",
        "anonymous": false
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "previousOwner",
            "type": "address",
            "indexed": true
          },
          {
            "internalType": "address",
            "name": "newOwner",
            "type": "address",
            "indexed": true
          }
        ],
        "type": "event",
        "name": "OwnershipTransferred",
        "anonymous": false
      },
      {
        "inputs": [],
        "stateMutability": "view",
        "type": "function",
        "name": "contractOwner",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ]
      },
      {
        "inputs": [
          {
            "internalType": "struct IDiamond.FacetCut[]",
            "name": "_diamondCut",
            "type": "tuple[]",
            "components": [
              {
                "internalType": "address",
                "name": "facetAddress",
                "type": "address"
              },
              {
                "internalType": "enum IDiamond.FacetCutAction",
                "name": "action",
                "type": "uint8"
              },
              {
                "internalType": "bytes4[]",
                "name": "functionSelectors",
                "type": "bytes4[]"
              }
            ]
          },
          {
            "internalType": "address",
            "name": "_init",
            "type": "address"
          },
          {
            "internalType": "bytes",
            "name": "_calldata",
            "type": "bytes"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function",
        "name": "diamondCut"
      },
      {
        "inputs": [],
        "stateMutability": "view",
        "type": "function",
        "name": "enforceIsContractOwner"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "_newOwner",
            "type": "address"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function",
        "name": "setContractOwner"
      }
    ],
    "devdoc": {
      "kind": "dev",
      "methods": {},
      "version": 1
    },
    "userdoc": {
      "kind": "user",
      "methods": {},
      "version": 1
    }
  },
  "settings": {
    "remappings": [
      "@openzeppelin/=node_modules/@openzeppelin/",
      "@prb/math/=node_modules/@prb/math/",
      "eth-gas-reporter/=node_modules/eth-gas-reporter/",
      "forge-std/=lib/forge-std/src/",
      "hardhat/=node_modules/hardhat/"
    ],
    "optimizer": {
      "enabled": true,
      "runs": 10000
    },
    "metadata": {
      "bytecodeHash": "ipfs"
    },
    "compilationTarget": {
      "contracts/DiamondTestContract.sol": "DiamondTestContract"
    },
    "evmVersion": "cancun",
    "libraries": {},
    "viaIR": true
  },
  "sources": {
    "contracts/DiamondTestContract.sol": {
      "keccak256": "0x458334615fdefe82776d9b6789cd34b53ea86025f89acb6ac73a9a199863ac45",
      "urls": [
        "bzz-raw://bfa8b3c63875236b813dd7d045289c26f94d49de02a965259156a78de54d8a02",
        "dweb:/ipfs/QmPi9d3dBLzke1c1pUXYiyNegbsFyWX4YMs5eD8WJXyY3P"
      ],
      "license": "FSL-1.1-MIT"
    },
    "contracts/interfaces/IDiamond.sol": {
      "keccak256": "0xf6ea8172fc4ca7f19387dcab713a7c2d3c7453540ec8ea9bbf8fa29fce272d4b",
      "urls": [
        "bzz-raw://57c74c3e17114c0aa5982815aab8cff5264c00317af1abe3620ee8acaca49ff9",
        "dweb:/ipfs/Qma45nAPXZU1MCDfuEBe1Fub6Qd7oumdyEqonGeqsPHXMQ"
      ],
      "license": "FSL-1.1-MIT"
    },
    "contracts/interfaces/IDiamondCut.sol": {
      "keccak256": "0xe30dd72352453957dbc5d9f6b96369b1630c7abac4c2eb6fd49fc858317f99e3",
      "urls": [
        "bzz-raw://55940b6e5e3ae666f6851b2deac40b10173a2636fcef15dbe7e44b94542e9cfa",
        "dweb:/ipfs/QmeVaPtmffSzEz3x4NgAJVjdjMTosM85JyCcX3eGF1Qpo1"
      ],
      "license": "FSL-1.1-MIT"
    },
    "contracts/libraries/LibDiamond.sol": {
      "keccak256": "0xe411f7691d0554f8f01260065f249abda18eaa17697b626272c4e0554a2244b1",
      "urls": [
        "bzz-raw://a116a9dcfd5dc8cef470e6c53c69bbaada930ebe9a7373a0a4a6c3924b77d7e8",
        "dweb:/ipfs/QmRxGt99hosAR5wxJpuTeXpyEV6DNb5fnxs76P2L2Bd34Y"
      ],
      "license": "FSL-1.1-MIT"
    }
  },
  "version": 1
}