[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_epochHandler",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_submitHandler",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_etherToken",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "_development",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "_NRELength",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "_statesRoot",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_transactionsRoot",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_receiptsRoot",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "blockNumber",
        "type": "uint256"
      }
    ],
    "name": "BlockFinalized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "fork",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "epochNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "blockNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isRequest",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "userActivated",
        "type": "bool"
      }
    ],
    "name": "BlockSubmitted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "requestId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "requestor",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "trieKey",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "trieValue",
        "type": "bytes32"
      }
    ],
    "name": "ERUCreated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "epochNumber",
        "type": "uint256"
      }
    ],
    "name": "EpochFilled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "epochNumber",
        "type": "uint256"
      }
    ],
    "name": "EpochFilling",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "epochNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "startBlockNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "endBlockNumber",
        "type": "uint256"
      }
    ],
    "name": "EpochFinalized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "epochNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "startBlockNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "endBlockNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "requestStart",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "requestEnd",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "epochIsEmpty",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isRequest",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "userActivated",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "rebase",
        "type": "bool"
      }
    ],
    "name": "EpochPrepared",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "epochNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "startBlockNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "endBlockNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "requestStart",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "requestEnd",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "epochIsEmpty",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isRequest",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "userActivated",
        "type": "bool"
      }
    ],
    "name": "EpochRebased",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "newFork",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "epochNumber",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "forkedBlockNumber",
        "type": "uint256"
      }
    ],
    "name": "Forked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "MapperAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "MapperRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "_newOperator",
        "type": "address"
      }
    ],
    "name": "OperatorChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "requestId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "userActivated",
        "type": "bool"
      }
    ],
    "name": "RequestApplied",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "requestId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "userActivated",
        "type": "bool"
      }
    ],
    "name": "RequestChallenged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "requestId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "requestor",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "weiAmount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "trieKey",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "trieValue",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isExit",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "userActivated",
        "type": "bool"
      }
    ],
    "name": "RequestCreated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "requestId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "userActivated",
        "type": "bool"
      }
    ],
    "name": "RequestFinalized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "contractInRootchain",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "contractInChildchain",
        "type": "address"
      }
    ],
    "name": "RequestableContractMapped",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bool",
        "name": "userActivated",
        "type": "bool"
      }
    ],
    "name": "SessionTimeout",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "SubmitterAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "SubmitterRemoved",
    "type": "event"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "COST_ERO",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "COST_ERU",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "COST_NRB",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "COST_ORB",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "COST_URB",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "COST_URB_PREPARE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "CP_COMPUTATION",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "CP_EXIT",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "CP_WITHHOLDING",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "EROIdToFinalize",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "EROs",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "timestamp",
        "type": "uint64"
      },
      {
        "internalType": "bool",
        "name": "isExit",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "isTransfer",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "finalized",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "challenged",
        "type": "bool"
      },
      {
        "internalType": "uint128",
        "name": "value",
        "type": "uint128"
      },
      {
        "internalType": "address payable",
        "name": "requestor",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "trieKey",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "hash",
        "type": "bytes32"
      },
      {
        "internalType": "bytes",
        "name": "trieValue",
        "type": "bytes"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "ERUIdToFinalize",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "ERUs",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "timestamp",
        "type": "uint64"
      },
      {
        "internalType": "bool",
        "name": "isExit",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "isTransfer",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "finalized",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "challenged",
        "type": "bool"
      },
      {
        "internalType": "uint128",
        "name": "value",
        "type": "uint128"
      },
      {
        "internalType": "address payable",
        "name": "requestor",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "trieKey",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "hash",
        "type": "bytes32"
      },
      {
        "internalType": "bytes",
        "name": "trieValue",
        "type": "bytes"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "NRELength",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "NULL_ADDRESS",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "ORBs",
    "outputs": [
      {
        "internalType": "bool",
        "name": "submitted",
        "type": "bool"
      },
      {
        "internalType": "uint64",
        "name": "numEnter",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "epochNumber",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "requestStart",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "requestEnd",
        "type": "uint64"
      },
      {
        "internalType": "address",
        "name": "trie",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "PREPARE_TIMEOUT",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "REQUEST_GAS",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "URBs",
    "outputs": [
      {
        "internalType": "bool",
        "name": "submitted",
        "type": "bool"
      },
      {
        "internalType": "uint64",
        "name": "numEnter",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "epochNumber",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "requestStart",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "requestEnd",
        "type": "uint64"
      },
      {
        "internalType": "address",
        "name": "trie",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "currentFork",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "development",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "epochHandler",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "etherToken",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "firstFilledORENumber",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "firstNonEmptyRequestEpoch",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "forks",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "forkedBlock",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "firstEpoch",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "lastEpoch",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "firstBlock",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "lastBlock",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "lastFinalizedEpoch",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "lastFinalizedBlock",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "timestamp",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "firstEnterEpoch",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "lastEnterEpoch",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "nextBlockToRebase",
        "type": "uint64"
      },
      {
        "internalType": "bool",
        "name": "rebased",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "isLayer2",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "isMapper",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "isSubmitter",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "lastAppliedBlockNumber",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "lastAppliedEpochNumber",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "lastAppliedForkNumber",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "lastNonEmptyRequestEpoch",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "numEnterForORB",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "operator",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [],
    "name": "renounceMapper",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [],
    "name": "renounceSubmitter",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "requestableContracts",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "seigManager",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "submitHandler",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "address",
        "name": "_operator",
        "type": "address"
      }
    ],
    "name": "changeOperator",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "addSubmitter",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "addMapper",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "setSeigManager",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "address",
        "name": "_layer2",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_childchain",
        "type": "address"
      }
    ],
    "name": "mapRequestableContractByOperator",
    "outputs": [
      {
        "internalType": "bool",
        "name": "success",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "getNumEROs",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "getNumORBs",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_requestId",
        "type": "uint256"
      }
    ],
    "name": "getEROBytes",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "out",
        "type": "bytes"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [],
    "name": "prepareToSubmitURB",
    "outputs": [],
    "payable": true,
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_pos1",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_pos2",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "_epochStateRoot",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_epochTransactionsRoot",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_epochReceiptsRoot",
        "type": "bytes32"
      }
    ],
    "name": "submitNRE",
    "outputs": [
      {
        "internalType": "bool",
        "name": "success",
        "type": "bool"
      }
    ],
    "payable": true,
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_pos",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "_statesRoot",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_transactionsRoot",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_receiptsRoot",
        "type": "bytes32"
      }
    ],
    "name": "submitORB",
    "outputs": [
      {
        "internalType": "bool",
        "name": "success",
        "type": "bool"
      }
    ],
    "payable": true,
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_pos",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "_statesRoot",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_transactionsRoot",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_receiptsRoot",
        "type": "bytes32"
      }
    ],
    "name": "submitURB",
    "outputs": [
      {
        "internalType": "bool",
        "name": "success",
        "type": "bool"
      }
    ],
    "payable": true,
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [],
    "name": "finalizeBlock",
    "outputs": [
      {
        "internalType": "bool",
        "name": "success",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_forkNumber",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_blockNumber",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_index",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_receiptData",
        "type": "bytes"
      },
      {
        "internalType": "bytes",
        "name": "_proof",
        "type": "bytes"
      }
    ],
    "name": "challengeExit",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_blockNumber",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_key",
        "type": "bytes"
      },
      {
        "internalType": "bytes",
        "name": "_txByte",
        "type": "bytes"
      },
      {
        "internalType": "uint256",
        "name": "_branchMask",
        "type": "uint256"
      },
      {
        "internalType": "bytes32[]",
        "name": "_siblings",
        "type": "bytes32[]"
      }
    ],
    "name": "challengeNullAddress",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "_trieKey",
        "type": "bytes32"
      },
      {
        "internalType": "bytes",
        "name": "_trieValue",
        "type": "bytes"
      }
    ],
    "name": "startExit",
    "outputs": [
      {
        "internalType": "bool",
        "name": "success",
        "type": "bool"
      }
    ],
    "payable": true,
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "_trieKey",
        "type": "bytes32"
      },
      {
        "internalType": "bytes",
        "name": "_trieValue",
        "type": "bytes"
      }
    ],
    "name": "startEnter",
    "outputs": [
      {
        "internalType": "bool",
        "name": "success",
        "type": "bool"
      }
    ],
    "payable": true,
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "_trieKey",
        "type": "bytes32"
      },
      {
        "internalType": "bytes",
        "name": "_trieValue",
        "type": "bytes"
      }
    ],
    "name": "makeERU",
    "outputs": [
      {
        "internalType": "bool",
        "name": "success",
        "type": "bool"
      }
    ],
    "payable": true,
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [],
    "name": "finalizeRequest",
    "outputs": [
      {
        "internalType": "bool",
        "name": "success",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "n",
        "type": "uint256"
      }
    ],
    "name": "finalizeRequests",
    "outputs": [
      {
        "internalType": "bool",
        "name": "success",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "MAX_REQUESTS",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "maxRequests",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      }
    ],
    "name": "lastBlock",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "lastBlock",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      }
    ],
    "name": "lastEpoch",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "lastBlock",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "epochNumber",
        "type": "uint256"
      }
    ],
    "name": "getEpoch",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint64",
            "name": "startBlockNumber",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "endBlockNumber",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "isEmpty",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "initialized",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "isRequest",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "userActivated",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "rebase",
            "type": "bool"
          },
          {
            "components": [
              {
                "internalType": "uint64",
                "name": "requestStart",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "requestEnd",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "firstRequestBlockId",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "numEnter",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "nextEnterEpoch",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "nextEpoch",
                "type": "uint64"
              }
            ],
            "internalType": "struct Data.RequestEpochMeta",
            "name": "RE",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "bytes32",
                "name": "epochStateRoot",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "epochTransactionsRoot",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "epochReceiptsRoot",
                "type": "bytes32"
              },
              {
                "internalType": "uint64",
                "name": "submittedAt",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "finalizedAt",
                "type": "uint64"
              },
              {
                "internalType": "bool",
                "name": "finalized",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "challenging",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "challenged",
                "type": "bool"
              }
            ],
            "internalType": "struct Data.NonRequestEpochMeta",
            "name": "NRE",
            "type": "tuple"
          }
        ],
        "internalType": "struct Data.Epoch",
        "name": "epoch",
        "type": "tuple"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "getLastEpoch",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint64",
            "name": "startBlockNumber",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "endBlockNumber",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "isEmpty",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "initialized",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "isRequest",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "userActivated",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "rebase",
            "type": "bool"
          },
          {
            "components": [
              {
                "internalType": "uint64",
                "name": "requestStart",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "requestEnd",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "firstRequestBlockId",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "numEnter",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "nextEnterEpoch",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "nextEpoch",
                "type": "uint64"
              }
            ],
            "internalType": "struct Data.RequestEpochMeta",
            "name": "RE",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "bytes32",
                "name": "epochStateRoot",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "epochTransactionsRoot",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "epochReceiptsRoot",
                "type": "bytes32"
              },
              {
                "internalType": "uint64",
                "name": "submittedAt",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "finalizedAt",
                "type": "uint64"
              },
              {
                "internalType": "bool",
                "name": "finalized",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "challenging",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "challenged",
                "type": "bool"
              }
            ],
            "internalType": "struct Data.NonRequestEpochMeta",
            "name": "NRE",
            "type": "tuple"
          }
        ],
        "internalType": "struct Data.Epoch",
        "name": "",
        "type": "tuple"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "blockNumber",
        "type": "uint256"
      }
    ],
    "name": "getBlock",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint64",
            "name": "epochNumber",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "requestBlockId",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "finalizedAt",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "referenceBlock",
            "type": "uint64"
          },
          {
            "internalType": "bytes32",
            "name": "statesRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "transactionsRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "receiptsRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bool",
            "name": "isRequest",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "userActivated",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "challenged",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "challenging",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "finalized",
            "type": "bool"
          }
        ],
        "internalType": "struct Data.PlasmaBlock",
        "name": "",
        "type": "tuple"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "blockNumber",
        "type": "uint256"
      }
    ],
    "name": "getBlockFinalizedAt",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      }
    ],
    "name": "getLastFinalizedBlock",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "forkNumber",
        "type": "uint256"
      }
    ],
    "name": "getLastFinalizedEpoch",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_forkNumber",
        "type": "uint256"
      }
    ],
    "name": "forked",
    "outputs": [
      {
        "internalType": "bool",
        "name": "result",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_requestId",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "_userActivated",
        "type": "bool"
      }
    ],
    "name": "getRequestFinalized",
    "outputs": [
      {
        "internalType": "bool",
        "name": "finalized",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  }
]
