[
  {
    "type": "constructor",
    "inputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "blockInfo",
    "inputs": [
      {
        "name": "squeekBlock",
        "type": "uint64",
        "internalType": "uint64"
      }
    ],
    "outputs": [
      {
        "name": "result",
        "type": "tuple",
        "internalType": "struct BlockInfo",
        "components": [
          {
            "name": "roundId",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "workThreshold",
            "type": "uint64",
            "internalType": "uint64"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "configuration",
    "inputs": [],
    "outputs": [
      {
        "name": "result",
        "type": "tuple",
        "internalType": "struct CoreConfiguration",
        "components": [
          {
            "name": "streamId",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "genesisTimestamp",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "roundDuration",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "maxWorkPerRound",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "maxRoundsPerBatch",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "guardian",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "reporter",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "initialWorkPerThousandBlocks",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "targetBlocksPerActiveRound",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "difficultySmoothingRounds",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "blockUnitsPerBlock",
            "type": "uint96",
            "internalType": "uint96"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "eip712Domain",
    "inputs": [],
    "outputs": [
      {
        "name": "fields",
        "type": "bytes1",
        "internalType": "bytes1"
      },
      {
        "name": "name",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "version",
        "type": "string",
        "internalType": "string"
      },
      {
        "name": "chainId",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "verifyingContract",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "salt",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "extensions",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "hasEverBeenReporter",
    "inputs": [
      {
        "name": "candidate",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "implementationCodeAddress",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "implementationCodeVersion",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint64",
        "internalType": "uint64"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "implementationStorageLayoutDigest",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "initialize",
    "inputs": [
      {
        "name": "config",
        "type": "tuple",
        "internalType": "struct SqueekLaunchConfig",
        "components": [
          {
            "name": "streamId",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "guardian",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "initialReporter",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "genesisTimestamp",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "initialWorkPerThousandBlocks",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "maxWorkPerRound",
            "type": "uint64",
            "internalType": "uint64"
          }
        ]
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "pause",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "paused",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "proxyAdmin",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "roundPage",
    "inputs": [
      {
        "name": "afterRound",
        "type": "uint64",
        "internalType": "uint64"
      },
      {
        "name": "throughRound",
        "type": "uint64",
        "internalType": "uint64"
      },
      {
        "name": "maxRecords",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "result",
        "type": "tuple",
        "internalType": "struct RoundPage",
        "components": [
          {
            "name": "certifiedThroughRound",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "start",
            "type": "tuple",
            "internalType": "struct LedgerPosition",
            "components": [
              {
                "name": "cumulativeWork",
                "type": "uint64",
                "internalType": "uint64"
              },
              {
                "name": "cumulativeBlockUnits",
                "type": "uint96",
                "internalType": "uint96"
              },
              {
                "name": "workPerThousandBlocks",
                "type": "uint32",
                "internalType": "uint32"
              }
            ]
          },
          {
            "name": "end",
            "type": "tuple",
            "internalType": "struct LedgerPosition",
            "components": [
              {
                "name": "cumulativeWork",
                "type": "uint64",
                "internalType": "uint64"
              },
              {
                "name": "cumulativeBlockUnits",
                "type": "uint96",
                "internalType": "uint96"
              },
              {
                "name": "workPerThousandBlocks",
                "type": "uint32",
                "internalType": "uint32"
              }
            ]
          },
          {
            "name": "rounds",
            "type": "tuple[]",
            "internalType": "struct RoundCheckpoint[]",
            "components": [
              {
                "name": "roundId",
                "type": "uint64",
                "internalType": "uint64"
              },
              {
                "name": "cumulativeWork",
                "type": "uint64",
                "internalType": "uint64"
              },
              {
                "name": "cumulativeBlockUnits",
                "type": "uint96",
                "internalType": "uint96"
              },
              {
                "name": "workPerThousandBlocks",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "dataHash",
                "type": "bytes32",
                "internalType": "bytes32"
              }
            ]
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "setReporter",
    "inputs": [
      {
        "name": "newReporter",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "state",
    "inputs": [],
    "outputs": [
      {
        "name": "result",
        "type": "tuple",
        "internalType": "struct CoreState",
        "components": [
          {
            "name": "settledThroughRound",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "cumulativeWork",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "cumulativeBlockUnits",
            "type": "uint96",
            "internalType": "uint96"
          },
          {
            "name": "blockHeight",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "blockProgress",
            "type": "uint96",
            "internalType": "uint96"
          },
          {
            "name": "workPerThousandBlocks",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "authorizationNonce",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "paused",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "submitRounds",
    "inputs": [
      {
        "name": "rounds",
        "type": "tuple[]",
        "internalType": "struct Round[]",
        "components": [
          {
            "name": "roundId",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "work",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "dataHash",
            "type": "bytes32",
            "internalType": "bytes32"
          }
        ]
      },
      {
        "name": "settledThroughRound",
        "type": "uint64",
        "internalType": "uint64"
      },
      {
        "name": "expectedNonce",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "deadline",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "signature",
        "type": "bytes",
        "internalType": "bytes"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "unpause",
    "inputs": [],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "event",
    "name": "BatchSettled",
    "inputs": [
      {
        "name": "digest",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "reporter",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "settledThroughRound",
        "type": "uint64",
        "indexed": true,
        "internalType": "uint64"
      },
      {
        "name": "nonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "previousSettledThroughRound",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      },
      {
        "name": "activeRoundCount",
        "type": "uint16",
        "indexed": false,
        "internalType": "uint16"
      },
      {
        "name": "cumulativeWork",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      },
      {
        "name": "cumulativeBlockUnits",
        "type": "uint96",
        "indexed": false,
        "internalType": "uint96"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "CoreInitialized",
    "inputs": [
      {
        "name": "streamId",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "guardian",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "reporter",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "genesisTimestamp",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      },
      {
        "name": "initialWorkPerThousandBlocks",
        "type": "uint32",
        "indexed": false,
        "internalType": "uint32"
      },
      {
        "name": "maxWorkPerRound",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "EIP712DomainChanged",
    "inputs": [],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Initialized",
    "inputs": [
      {
        "name": "version",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Paused",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "ReporterUpdated",
    "inputs": [
      {
        "name": "previousReporter",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "newReporter",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RoundRecorded",
    "inputs": [
      {
        "name": "roundId",
        "type": "uint64",
        "indexed": true,
        "internalType": "uint64"
      },
      {
        "name": "work",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      },
      {
        "name": "cumulativeWork",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      },
      {
        "name": "cumulativeBlockUnits",
        "type": "uint96",
        "indexed": false,
        "internalType": "uint96"
      },
      {
        "name": "workPerThousandBlocks",
        "type": "uint32",
        "indexed": false,
        "internalType": "uint32"
      },
      {
        "name": "dataHash",
        "type": "bytes32",
        "indexed": false,
        "internalType": "bytes32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Unpaused",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "AuthorizationNonceMismatch",
    "inputs": []
  },
  {
    "type": "error",
    "name": "BatchTooLarge",
    "inputs": []
  },
  {
    "type": "error",
    "name": "BlockNotSettled",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ECDSAInvalidSignature",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ECDSAInvalidSignatureLength",
    "inputs": [
      {
        "name": "length",
        "type": "uint256",
        "internalType": "uint256"
      }
    ]
  },
  {
    "type": "error",
    "name": "ECDSAInvalidSignatureS",
    "inputs": [
      {
        "name": "s",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ]
  },
  {
    "type": "error",
    "name": "EnforcedPause",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ExpectedPause",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ExpiredAuthorization",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidActiveRound",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidGenesisTimestamp",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidGuardian",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidImplementationCodeAddress",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidInitialization",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidProxyAdmin",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidReporter",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidReporterSignature",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidRoundId",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidRoundPageBounds",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidStreamId",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidWorkCap",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidWorkPerThousandBlocks",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NonIncreasingRoundId",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotInitializing",
    "inputs": []
  },
  {
    "type": "error",
    "name": "ReporterAlreadyUsed",
    "inputs": []
  },
  {
    "type": "error",
    "name": "RoundNotElapsed",
    "inputs": []
  },
  {
    "type": "error",
    "name": "SafeCastOverflowedUintDowncast",
    "inputs": [
      {
        "name": "bits",
        "type": "uint8",
        "internalType": "uint8"
      },
      {
        "name": "value",
        "type": "uint256",
        "internalType": "uint256"
      }
    ]
  },
  {
    "type": "error",
    "name": "SettledThroughRoundNotAdvanced",
    "inputs": []
  },
  {
    "type": "error",
    "name": "UnauthorizedGuardian",
    "inputs": []
  },
  {
    "type": "error",
    "name": "WorkExceeded",
    "inputs": []
  }
]
