[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "ArrayLengthsDoNotMatch",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "emptyBlobIndex",
        "type": "uint256"
      }
    ],
    "name": "BlobSubmissionDataEmpty",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BlobSubmissionDataIsMissing",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BytesLengthNotMultipleOf32",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "bytesLength",
        "type": "uint256"
      }
    ],
    "name": "BytesLengthNotMultipleOfTwo",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "currentDataHash",
        "type": "bytes32"
      }
    ],
    "name": "DataAlreadySubmitted",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "EmptyBlobDataAtIndex",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "EmptySubmissionData",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      }
    ],
    "name": "FeePaymentFailed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "FeeTooLow",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "shnarf",
        "type": "bytes32"
      }
    ],
    "name": "FinalBlobNotSubmitted",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "finalBlockNumber",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "lastFinalizedBlock",
        "type": "uint256"
      }
    ],
    "name": "FinalBlockNumberLessThanOrEqualToLastFinalizedBlock",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "FinalBlockStateEqualsZeroHash",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "expected",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "value",
        "type": "bytes32"
      }
    ],
    "name": "FinalShnarfWrong",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "l2BlockTimestamp",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "currentBlockTimestamp",
        "type": "uint256"
      }
    ],
    "name": "FinalizationInTheFuture",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "expected",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "value",
        "type": "bytes32"
      }
    ],
    "name": "FinalizationStateIncorrect",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "FirstByteIsNotZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidMerkleProof",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidProof",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "errorReason",
        "type": "string"
      }
    ],
    "name": "InvalidProofOrProofVerificationRanOutOfGas",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidProofType",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "enum IPauseManager.PauseType",
        "name": "pauseType",
        "type": "uint8"
      }
    ],
    "name": "IsNotPaused",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "enum IPauseManager.PauseType",
        "name": "pauseType",
        "type": "uint8"
      }
    ],
    "name": "IsPaused",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "messageNumber",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "rollingHash",
        "type": "bytes32"
      }
    ],
    "name": "L1RollingHashDoesNotExistOnL1",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "merkleRoot",
        "type": "bytes32"
      }
    ],
    "name": "L2MerkleRootAlreadyAnchored",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "L2MerkleRootDoesNotExist",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LastFinalizationTimeNotLapsed",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint32",
        "name": "leafIndex",
        "type": "uint32"
      },
      {
        "internalType": "uint32",
        "name": "maxAllowedIndex",
        "type": "uint32"
      }
    ],
    "name": "LeafIndexOutOfBounds",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LimitIsZero",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "messageIndex",
        "type": "uint256"
      }
    ],
    "name": "MessageAlreadyClaimed",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "messageHash",
        "type": "bytes32"
      }
    ],
    "name": "MessageDoesNotExistOrHasAlreadyBeenClaimed",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "destination",
        "type": "address"
      }
    ],
    "name": "MessageSendingFailed",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "rollingHash",
        "type": "bytes32"
      }
    ],
    "name": "MissingMessageNumberForRollingHash",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "messageNumber",
        "type": "uint256"
      }
    ],
    "name": "MissingRollingHashForMessageNumber",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OnlyNonFallbackOperator",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "shnarf",
        "type": "bytes32"
      }
    ],
    "name": "ParentBlobNotSubmitted",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PeriodIsZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PointEvaluationFailed",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "fieldElements",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "blsCurveModulus",
        "type": "uint256"
      }
    ],
    "name": "PointEvaluationResponseInvalid",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "expected",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "actual",
        "type": "uint256"
      }
    ],
    "name": "PrecompileReturnDataLengthWrong",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ProofIsEmpty",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "actual",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "expected",
        "type": "uint256"
      }
    ],
    "name": "ProofLengthDifferentThanMerkleDepth",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "RateLimitExceeded",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ReentrantCall",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "bits",
        "type": "uint8"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "SafeCastOverflowedUintDowncast",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "StartingRootHashDoesNotMatch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ValueSentTooLow",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroAddressNotAllowed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroHashNotAllowed",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "resettingAddress",
        "type": "address"
      }
    ],
    "name": "AmountUsedInPeriodReset",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "startBlockNumber",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "endBlockNumber",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "shnarf",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "parentStateRootHash",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "finalStateRootHash",
        "type": "bytes32"
      }
    ],
    "name": "DataFinalizedV3",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "parentShnarf",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "shnarf",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "finalStateRootHash",
        "type": "bytes32"
      }
    ],
    "name": "DataSubmittedV3",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "caller",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fallbackOperator",
        "type": "address"
      }
    ],
    "name": "FallbackOperatorAddressSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "caller",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fallbackOperator",
        "type": "address"
      }
    ],
    "name": "FallbackOperatorRoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "l2MerkleRoot",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "treeDepth",
        "type": "uint256"
      }
    ],
    "name": "L2MerkleRootAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "l2Block",
        "type": "uint256"
      }
    ],
    "name": "L2MessagingBlockAnchored",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "amountChangeBy",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "amountUsedLoweredToLimit",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "usedAmountResetToZero",
        "type": "bool"
      }
    ],
    "name": "LimitAmountChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes8",
        "name": "previousVersion",
        "type": "bytes8"
      },
      {
        "indexed": true,
        "internalType": "bytes8",
        "name": "newVersion",
        "type": "bytes8"
      }
    ],
    "name": "LineaRollupVersionChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "_messageHash",
        "type": "bytes32"
      }
    ],
    "name": "MessageClaimed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "_from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "_fee",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "_value",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "_nonce",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "_calldata",
        "type": "bytes"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "_messageHash",
        "type": "bytes32"
      }
    ],
    "name": "MessageSent",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "enum IPauseManager.PauseType",
        "name": "pauseType",
        "type": "uint8"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "PauseTypeRoleSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "messageSender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "enum IPauseManager.PauseType",
        "name": "pauseType",
        "type": "uint8"
      }
    ],
    "name": "Paused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "periodInSeconds",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "limitInWei",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "currentPeriodEnd",
        "type": "uint256"
      }
    ],
    "name": "RateLimitInitialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousAdminRole",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newAdminRole",
        "type": "bytes32"
      }
    ],
    "name": "RoleAdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleRevoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "messageNumber",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "rollingHash",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "messageHash",
        "type": "bytes32"
      }
    ],
    "name": "RollingHashUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "enum IPauseManager.PauseType",
        "name": "unPauseType",
        "type": "uint8"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "UnPauseTypeRoleSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "messageSender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "enum IPauseManager.PauseType",
        "name": "pauseType",
        "type": "uint8"
      }
    ],
    "name": "UnPaused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "verifierAddress",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "proofType",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "verifierSetBy",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "oldVerifierAddress",
        "type": "address"
      }
    ],
    "name": "VerifierAddressChanged",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "CONTRACT_VERSION",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "INBOX_STATUS_RECEIVED",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "INBOX_STATUS_UNKNOWN",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "OPERATOR_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "OUTBOX_STATUS_RECEIVED",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "OUTBOX_STATUS_SENT",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "OUTBOX_STATUS_UNKNOWN",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PAUSE_ALL_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PAUSE_BLOB_SUBMISSION_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PAUSE_FINALIZATION_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PAUSE_L1_L2_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PAUSE_L2_L1_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "RATE_LIMIT_SETTER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "UNPAUSE_ALL_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "UNPAUSE_BLOB_SUBMISSION_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "UNPAUSE_FINALIZATION_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "UNPAUSE_L1_L2_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "UNPAUSE_L2_L1_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "USED_RATE_LIMIT_RESETTER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "VERIFIER_SETTER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "VERIFIER_UNSETTER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "shnarf",
        "type": "bytes32"
      }
    ],
    "name": "blobShnarfExists",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "exists",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_fee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_value",
        "type": "uint256"
      },
      {
        "internalType": "address payable",
        "name": "_feeRecipient",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "_calldata",
        "type": "bytes"
      },
      {
        "internalType": "uint256",
        "name": "_nonce",
        "type": "uint256"
      }
    ],
    "name": "claimMessage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "bytes32[]",
            "name": "proof",
            "type": "bytes32[]"
          },
          {
            "internalType": "uint256",
            "name": "messageNumber",
            "type": "uint256"
          },
          {
            "internalType": "uint32",
            "name": "leafIndex",
            "type": "uint32"
          },
          {
            "internalType": "address",
            "name": "from",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "fee",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "value",
            "type": "uint256"
          },
          {
            "internalType": "address payable",
            "name": "feeRecipient",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "merkleRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bytes",
            "name": "data",
            "type": "bytes"
          }
        ],
        "internalType": "struct IL1MessageService.ClaimMessageWithProofParams",
        "name": "_params",
        "type": "tuple"
      }
    ],
    "name": "claimMessageWithProof",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentFinalizedShnarf",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentFinalizedState",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentL2BlockNumber",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentL2StoredL1MessageNumber",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentL2StoredL1RollingHash",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentPeriodAmountInWei",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentPeriodEnd",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentTimestamp",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "dataHash",
        "type": "bytes32"
      }
    ],
    "name": "dataEndingBlock",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "endingBlock",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "dataHash",
        "type": "bytes32"
      }
    ],
    "name": "dataFinalStateRootHashes",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "finalStateRootHash",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "dataHash",
        "type": "bytes32"
      }
    ],
    "name": "dataParents",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "parentHash",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "dataHash",
        "type": "bytes32"
      }
    ],
    "name": "dataShnarfHashes",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "shnarfHash",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "dataHash",
        "type": "bytes32"
      }
    ],
    "name": "dataStartingBlock",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "startingBlock",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "fallbackOperator",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes",
        "name": "_aggregatedProof",
        "type": "bytes"
      },
      {
        "internalType": "uint256",
        "name": "_proofType",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "bytes32",
            "name": "parentStateRootHash",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "endBlockNumber",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "bytes32",
                "name": "parentShnarf",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "snarkHash",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "finalStateRootHash",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "dataEvaluationPoint",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "dataEvaluationClaim",
                "type": "bytes32"
              }
            ],
            "internalType": "struct ILineaRollup.ShnarfData",
            "name": "shnarfData",
            "type": "tuple"
          },
          {
            "internalType": "uint256",
            "name": "lastFinalizedTimestamp",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "finalTimestamp",
            "type": "uint256"
          },
          {
            "internalType": "bytes32",
            "name": "lastFinalizedL1RollingHash",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "l1RollingHash",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "lastFinalizedL1RollingHashMessageNumber",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "l1RollingHashMessageNumber",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "l2MerkleTreesDepth",
            "type": "uint256"
          },
          {
            "internalType": "bytes32[]",
            "name": "l2MerkleRoots",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes",
            "name": "l2MessagingBlocksOffsets",
            "type": "bytes"
          }
        ],
        "internalType": "struct ILineaRollup.FinalizationDataV3",
        "name": "_finalizationData",
        "type": "tuple"
      }
    ],
    "name": "finalizeBlocks",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "messageHash",
        "type": "bytes32"
      }
    ],
    "name": "inboxL2L1MessageStatus",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "messageStatus",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "bytes32",
            "name": "initialStateRootHash",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "initialL2BlockNumber",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "genesisTimestamp",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "defaultVerifier",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "rateLimitPeriodInSeconds",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rateLimitAmountInWei",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "address",
                "name": "addressWithRole",
                "type": "address"
              },
              {
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
              }
            ],
            "internalType": "struct IPermissionsManager.RoleAddress[]",
            "name": "roleAddresses",
            "type": "tuple[]"
          },
          {
            "components": [
              {
                "internalType": "enum IPauseManager.PauseType",
                "name": "pauseType",
                "type": "uint8"
              },
              {
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
              }
            ],
            "internalType": "struct IPauseManager.PauseTypeRole[]",
            "name": "pauseTypeRoles",
            "type": "tuple[]"
          },
          {
            "components": [
              {
                "internalType": "enum IPauseManager.PauseType",
                "name": "pauseType",
                "type": "uint8"
              },
              {
                "internalType": "bytes32",
                "name": "role",
                "type": "bytes32"
              }
            ],
            "internalType": "struct IPauseManager.PauseTypeRole[]",
            "name": "unpauseTypeRoles",
            "type": "tuple[]"
          },
          {
            "internalType": "address",
            "name": "fallbackOperator",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "defaultAdmin",
            "type": "address"
          }
        ],
        "internalType": "struct ILineaRollup.InitializationData",
        "name": "_initializationData",
        "type": "tuple"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_messageNumber",
        "type": "uint256"
      }
    ],
    "name": "isMessageClaimed",
    "outputs": [
      {
        "internalType": "bool",
        "name": "isClaimed",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "enum IPauseManager.PauseType",
        "name": "_pauseType",
        "type": "uint8"
      }
    ],
    "name": "isPaused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "pauseTypeIsPaused",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "merkleRoot",
        "type": "bytes32"
      }
    ],
    "name": "l2MerkleRootsDepths",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "treeDepth",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "limitInWei",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "nextMessageNumber",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "messageHash",
        "type": "bytes32"
      }
    ],
    "name": "outboxL1L2MessageStatus",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "messageStatus",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "enum IPauseManager.PauseType",
        "name": "_pauseType",
        "type": "uint8"
      }
    ],
    "name": "pauseByType",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "pauseType",
        "type": "bytes32"
      }
    ],
    "name": "pauseTypeStatuses",
    "outputs": [
      {
        "internalType": "bool",
        "name": "pauseStatus",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "periodInSeconds",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "addressWithRole",
            "type": "address"
          },
          {
            "internalType": "bytes32",
            "name": "role",
            "type": "bytes32"
          }
        ],
        "internalType": "struct IPermissionsManager.RoleAddress[]",
        "name": "_roleAddresses",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "enum IPauseManager.PauseType",
            "name": "pauseType",
            "type": "uint8"
          },
          {
            "internalType": "bytes32",
            "name": "role",
            "type": "bytes32"
          }
        ],
        "internalType": "struct IPauseManager.PauseTypeRole[]",
        "name": "_pauseTypeRoles",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "enum IPauseManager.PauseType",
            "name": "pauseType",
            "type": "uint8"
          },
          {
            "internalType": "bytes32",
            "name": "role",
            "type": "bytes32"
          }
        ],
        "internalType": "struct IPauseManager.PauseTypeRole[]",
        "name": "_unpauseTypeRoles",
        "type": "tuple[]"
      },
      {
        "internalType": "address",
        "name": "_fallbackOperator",
        "type": "address"
      }
    ],
    "name": "reinitializeLineaRollupV6",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "_role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "_account",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "resetAmountUsedInPeriod",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "name": "resetRateLimitAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "messageNumber",
        "type": "uint256"
      }
    ],
    "name": "rollingHashes",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "rollingHash",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_fee",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_calldata",
        "type": "bytes"
      }
    ],
    "name": "sendMessage",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "sender",
    "outputs": [
      {
        "internalType": "address",
        "name": "originalSender",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_messageNumber",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "_rollingHash",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "_lastFinalizedTimestamp",
        "type": "uint256"
      }
    ],
    "name": "setFallbackOperator",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_newVerifierAddress",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_proofType",
        "type": "uint256"
      }
    ],
    "name": "setVerifierAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "blockNumber",
        "type": "uint256"
      }
    ],
    "name": "stateRootHashes",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "stateRootHash",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "dataEvaluationClaim",
            "type": "uint256"
          },
          {
            "internalType": "bytes",
            "name": "kzgCommitment",
            "type": "bytes"
          },
          {
            "internalType": "bytes",
            "name": "kzgProof",
            "type": "bytes"
          },
          {
            "internalType": "bytes32",
            "name": "finalStateRootHash",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "snarkHash",
            "type": "bytes32"
          }
        ],
        "internalType": "struct ILineaRollup.BlobSubmission[]",
        "name": "_blobSubmissions",
        "type": "tuple[]"
      },
      {
        "internalType": "bytes32",
        "name": "_parentShnarf",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_finalBlobShnarf",
        "type": "bytes32"
      }
    ],
    "name": "submitBlobs",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "bytes32",
            "name": "finalStateRootHash",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "snarkHash",
            "type": "bytes32"
          },
          {
            "internalType": "bytes",
            "name": "compressedData",
            "type": "bytes"
          }
        ],
        "internalType": "struct ILineaRollup.CompressedCalldataSubmission",
        "name": "_submission",
        "type": "tuple"
      },
      {
        "internalType": "bytes32",
        "name": "_parentShnarf",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_expectedShnarf",
        "type": "bytes32"
      }
    ],
    "name": "submitDataAsCalldata",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "systemMigrationBlock",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "enum IPauseManager.PauseType",
        "name": "_pauseType",
        "type": "uint8"
      }
    ],
    "name": "unPauseByType",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_proofType",
        "type": "uint256"
      }
    ],
    "name": "unsetVerifierAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "proofType",
        "type": "uint256"
      }
    ],
    "name": "verifiers",
    "outputs": [
      {
        "internalType": "address",
        "name": "verifierAddress",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]