[
  {
    "type": "function",
    "name": "proveL2LeafInclusionShared",
    "inputs": [
      {"name": "_chainId", "type": "uint256", "internalType": "uint256"},
      {
        "name": "_blockOrBatchNumber",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "_leafProofMask",
        "type": "uint256",
        "internalType": "uint256"
      },
      {"name": "_leaf", "type": "bytes32", "internalType": "bytes32"},
      {"name": "_proof", "type": "bytes32[]", "internalType": "bytes32[]"}
    ],
    "outputs": [{"name": "", "type": "bool", "internalType": "bool"}],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "proveL2LogInclusionShared",
    "inputs": [
      {"name": "_chainId", "type": "uint256", "internalType": "uint256"},
      {
        "name": "_blockOrBatchNumber",
        "type": "uint256",
        "internalType": "uint256"
      },
      {"name": "_index", "type": "uint256", "internalType": "uint256"},
      {
        "name": "_log",
        "type": "tuple",
        "internalType": "struct L2Log",
        "components": [
          {"name": "l2ShardId", "type": "uint8", "internalType": "uint8"},
          {"name": "isService", "type": "bool", "internalType": "bool"},
          {
            "name": "txNumberInBatch",
            "type": "uint16",
            "internalType": "uint16"
          },
          {"name": "sender", "type": "address", "internalType": "address"},
          {"name": "key", "type": "bytes32", "internalType": "bytes32"},
          {"name": "value", "type": "bytes32", "internalType": "bytes32"}
        ]
      },
      {"name": "_proof", "type": "bytes32[]", "internalType": "bytes32[]"}
    ],
    "outputs": [{"name": "", "type": "bool", "internalType": "bool"}],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "proveL2MessageInclusionShared",
    "inputs": [
      {"name": "_chainId", "type": "uint256", "internalType": "uint256"},
      {
        "name": "_blockOrBatchNumber",
        "type": "uint256",
        "internalType": "uint256"
      },
      {"name": "_index", "type": "uint256", "internalType": "uint256"},
      {
        "name": "_message",
        "type": "tuple",
        "internalType": "struct L2Message",
        "components": [
          {
            "name": "txNumberInBatch",
            "type": "uint16",
            "internalType": "uint16"
          },
          {"name": "sender", "type": "address", "internalType": "address"},
          {"name": "data", "type": "bytes", "internalType": "bytes"}
        ]
      },
      {"name": "_proof", "type": "bytes32[]", "internalType": "bytes32[]"}
    ],
    "outputs": [{"name": "", "type": "bool", "internalType": "bool"}],
    "stateMutability": "view"
  },
  {"type": "error", "name": "HashedLogIsDefault", "inputs": []},
  {"type": "error", "name": "InvalidProofLengthForFinalNode", "inputs": []},
  {"type": "error", "name": "MerkleIndexOutOfBounds", "inputs": []},
  {"type": "error", "name": "MerklePathEmpty", "inputs": []},
  {"type": "error", "name": "MerklePathOutOfBounds", "inputs": []},
  {
    "type": "error",
    "name": "UnsupportedProofMetadataVersion",
    "inputs": [
      {
        "name": "metadataVersion",
        "type": "uint256",
        "internalType": "uint256"
      }
    ]
  }
]
