{"abi":[{"type":"function","name":"addLocalData","inputs":[{"name":"_ident","type":"uint256","internalType":"uint256"},{"name":"_execLeafIdx","type":"uint256","internalType":"uint256"},{"name":"_partOffset","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"attack","inputs":[{"name":"_disputed","type":"bytes32","internalType":"Claim"},{"name":"_parentIndex","type":"uint256","internalType":"uint256"},{"name":"_claim","type":"bytes32","internalType":"Claim"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"createdAt","inputs":[],"outputs":[{"name":"createdAt_","type":"uint64","internalType":"Timestamp"}],"stateMutability":"view"},{"type":"function","name":"defend","inputs":[{"name":"_disputed","type":"bytes32","internalType":"Claim"},{"name":"_parentIndex","type":"uint256","internalType":"uint256"},{"name":"_claim","type":"bytes32","internalType":"Claim"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"extraData","inputs":[],"outputs":[{"name":"extraData_","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"gameCreator","inputs":[],"outputs":[{"name":"creator_","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"gameData","inputs":[],"outputs":[{"name":"gameType_","type":"uint32","internalType":"GameType"},{"name":"rootClaim_","type":"bytes32","internalType":"Claim"},{"name":"extraData_","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"gameType","inputs":[],"outputs":[{"name":"gameType_","type":"uint32","internalType":"GameType"}],"stateMutability":"view"},{"type":"function","name":"getNumToResolve","inputs":[{"name":"_claimIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"numRemainingChildren_","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"l1Head","inputs":[],"outputs":[{"name":"l1Head_","type":"bytes32","internalType":"Hash"}],"stateMutability":"pure"},{"type":"function","name":"l2BlockNumber","inputs":[],"outputs":[{"name":"l2BlockNumber_","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"resolve","inputs":[],"outputs":[{"name":"status_","type":"uint8","internalType":"enum GameStatus"}],"stateMutability":"nonpayable"},{"type":"function","name":"resolveClaim","inputs":[{"name":"_claimIndex","type":"uint256","internalType":"uint256"},{"name":"_numToResolve","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resolvedAt","inputs":[],"outputs":[{"name":"resolvedAt_","type":"uint64","internalType":"Timestamp"}],"stateMutability":"view"},{"type":"function","name":"rootClaim","inputs":[],"outputs":[{"name":"rootClaim_","type":"bytes32","internalType":"Claim"}],"stateMutability":"pure"},{"type":"function","name":"startingBlockNumber","inputs":[],"outputs":[{"name":"startingBlockNumber_","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"startingOutputRoot","inputs":[],"outputs":[{"name":"startingRoot_","type":"bytes32","internalType":"Hash"},{"name":"l2BlockNumber_","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"startingRootHash","inputs":[],"outputs":[{"name":"startingRootHash_","type":"bytes32","internalType":"Hash"}],"stateMutability":"view"},{"type":"function","name":"status","inputs":[],"outputs":[{"name":"status_","type":"uint8","internalType":"enum GameStatus"}],"stateMutability":"view"},{"type":"function","name":"step","inputs":[{"name":"_claimIndex","type":"uint256","internalType":"uint256"},{"name":"_isAttack","type":"bool","internalType":"bool"},{"name":"_stateData","type":"bytes","internalType":"bytes"},{"name":"_proof","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Move","inputs":[{"name":"parentIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"claim","type":"bytes32","indexed":true,"internalType":"Claim"},{"name":"claimant","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Resolved","inputs":[{"name":"status","type":"uint8","indexed":true,"internalType":"enum GameStatus"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addLocalData(uint256,uint256,uint256)":"f8f43ff6","attack(bytes32,uint256,bytes32)":"472777c6","createdAt()":"cf09e0d0","defend(bytes32,uint256,bytes32)":"7b0f0adc","extraData()":"609d3334","gameCreator()":"37b1b229","gameData()":"fa24f743","gameType()":"bbdc02db","getNumToResolve(uint256)":"5a5fa2d9","initialize()":"8129fc1c","l1Head()":"6361506d","l2BlockNumber()":"8b85902b","resolve()":"2810e1d6","resolveClaim(uint256,uint256)":"03c2924d","resolvedAt()":"19effeb4","rootClaim()":"bcef3b55","startingBlockNumber()":"70872aa5","startingOutputRoot()":"57da950e","startingRootHash()":"25fc2ace","status()":"200d2ed2","step(uint256,bool,bytes,bytes)":"d8cc1a3c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"parentIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimant\",\"type\":\"address\"}],\"name\":\"Move\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enum GameStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Resolved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ident\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_execLeafIdx\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_partOffset\",\"type\":\"uint256\"}],\"name\":\"addLocalData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Claim\",\"name\":\"_disputed\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"attack\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createdAt\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"createdAt_\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Claim\",\"name\":\"_disputed\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"defend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"extraData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"creator_\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameData\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint32\"},{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameType\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_claimIndex\",\"type\":\"uint256\"}],\"name\":\"getNumToResolve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"numRemainingChildren_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Head\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"l1Head_\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l2BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"enum GameStatus\",\"name\":\"status_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_claimIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_numToResolve\",\"type\":\"uint256\"}],\"name\":\"resolveClaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolvedAt\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"resolvedAt_\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rootClaim\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startingBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"startingBlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startingOutputRoot\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"startingRoot_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"l2BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startingRootHash\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"startingRootHash_\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"enum GameStatus\",\"name\":\"status_\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_claimIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_stateData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Move(uint256,bytes32,address)\":{\"params\":{\"claim\":\"The claim being added\",\"claimant\":\"The address of the claimant\",\"parentIndex\":\"The index within the `claimData` array of the parent claim\"}}},\"kind\":\"dev\",\"methods\":{\"addLocalData(uint256,uint256,uint256)\":{\"params\":{\"_execLeafIdx\":\"The index of the leaf claim in an execution subgame that requires the local data for a step.\",\"_ident\":\"The local identifier of the data to post.\",\"_partOffset\":\"The offset of the data to post.\"}},\"attack(bytes32,uint256,bytes32)\":{\"params\":{\"_claim\":\"The `Claim` at the relative attack position.\",\"_disputed\":\"The `Claim` being attacked.\",\"_parentIndex\":\"Index of the `Claim` to attack in the `claimData` array. This must match the `_disputed` claim.\"}},\"createdAt()\":{\"returns\":{\"createdAt_\":\"The timestamp that the DisputeGame contract was created at.\"}},\"defend(bytes32,uint256,bytes32)\":{\"params\":{\"_claim\":\"The `Claim` at the relative defense position.\",\"_parentIndex\":\"Index of the claim to defend in the `claimData` array. This must match the `_disputed` claim.\"}},\"extraData()\":{\"details\":\"`clones-with-immutable-args` argument #4\",\"returns\":{\"extraData_\":\"Any extra data supplied to the dispute game contract by the creator.\"}},\"gameCreator()\":{\"details\":\"`clones-with-immutable-args` argument #1\",\"returns\":{\"creator_\":\"The creator of the dispute game.\"}},\"gameData()\":{\"returns\":{\"extraData_\":\"Any extra data supplied to the dispute game contract by the creator.\",\"gameType_\":\"The type of proof system being used.\",\"rootClaim_\":\"The root claim of the DisputeGame.\"}},\"gameType()\":{\"details\":\"The reference impl should be entirely different depending on the type (fault, validity)      i.e. The game type should indicate the security model.\",\"returns\":{\"gameType_\":\"The type of proof system being used.\"}},\"getNumToResolve(uint256)\":{\"params\":{\"_claimIndex\":\"The subgame root claim's index within `claimData`.\"},\"returns\":{\"numRemainingChildren_\":\"The number of children that still need to be checked to resolve the subgame.\"}},\"initialize()\":{\"details\":\"This function may only be called once.\"},\"l1Head()\":{\"details\":\"`clones-with-immutable-args` argument #3\",\"returns\":{\"l1Head_\":\"The parent hash of the L1 block when the dispute game was created.\"}},\"resolve()\":{\"details\":\"May only be called if the `status` is `IN_PROGRESS`.\",\"returns\":{\"status_\":\"The status of the game after resolution.\"}},\"resolveClaim(uint256,uint256)\":{\"details\":\"This function must be called bottom-up in the DAG      A subgame is a tree of claims that has a maximum depth of 1.      A subgame root claims is valid if, and only if, all of its child claims are invalid.      At the deepest level in the DAG, a claim is invalid if there's a successful step against it.\",\"params\":{\"_claimIndex\":\"The index of the subgame root claim to resolve.\",\"_numToResolve\":\"The number of subgames to resolve in this call. If the input is `0`, and this is the first                      page, this function will attempt to check all of the subgame's children at once.\"}},\"resolvedAt()\":{\"returns\":{\"resolvedAt_\":\"The timestamp that the DisputeGame contract was resolved at.\"}},\"rootClaim()\":{\"details\":\"`clones-with-immutable-args` argument #2\",\"returns\":{\"rootClaim_\":\"The root claim of the DisputeGame.\"}},\"status()\":{\"returns\":{\"status_\":\"The current status of the game.\"}},\"step(uint256,bool,bytes,bytes)\":{\"details\":\"This function should point to a fault proof processor in order to execute      a step in the fault proof program on-chain. The interface of the fault proof      processor contract should adhere to the `IBigStepper` interface.\",\"params\":{\"_claimIndex\":\"The index of the challenged claim within `claimData`.\",\"_isAttack\":\"Whether or not the step is an attack or a defense.\",\"_proof\":\"Proof to access memory nodes in the VM's merkle state tree.\",\"_stateData\":\"The stateData of the step is the preimage of the claim at the given        prestate, which is at `_stateIndex` if the move is an attack and `_claimIndex` if        the move is a defense. If the step is an attack on the first instruction, it is        the absolute prestate of the fault proof VM.\"}}},\"title\":\"IFaultDisputeGame\",\"version\":1},\"userdoc\":{\"events\":{\"Move(uint256,bytes32,address)\":{\"notice\":\"Emitted when a new claim is added to the DAG by `claimant`\"},\"Resolved(uint8)\":{\"notice\":\"Emitted when the game is resolved.\"}},\"kind\":\"user\",\"methods\":{\"addLocalData(uint256,uint256,uint256)\":{\"notice\":\"Posts the requested local data to the VM's `PreimageOralce`.\"},\"attack(bytes32,uint256,bytes32)\":{\"notice\":\"Attack a disagreed upon `Claim`.\"},\"createdAt()\":{\"notice\":\"Returns the timestamp that the DisputeGame contract was created at.\"},\"defend(bytes32,uint256,bytes32)\":{\"notice\":\"Defend an agreed upon `Claim`._disputed The `Claim` being defended.\"},\"extraData()\":{\"notice\":\"Getter for the extra data.\"},\"gameCreator()\":{\"notice\":\"Getter for the creator of the dispute game.\"},\"gameData()\":{\"notice\":\"A compliant implementation of this interface should return the components of the         game UUID's preimage provided in the cwia payload. The preimage of the UUID is         constructed as `keccak256(gameType . rootClaim . extraData)` where `.` denotes         concatenation.\"},\"gameType()\":{\"notice\":\"Getter for the game type.\"},\"getNumToResolve(uint256)\":{\"notice\":\"Returns the number of children that still need to be resolved in order to fully resolve a subgame rooted         at `_claimIndex`.\"},\"initialize()\":{\"notice\":\"Initializes the contract.\"},\"l1Head()\":{\"notice\":\"Getter for the parent hash of the L1 block when the dispute game was created.\"},\"l2BlockNumber()\":{\"notice\":\"The l2BlockNumber of the disputed output root in the `L2OutputOracle`.\"},\"resolve()\":{\"notice\":\"If all necessary information has been gathered, this function should mark the game         status as either `CHALLENGER_WINS` or `DEFENDER_WINS` and return the status of         the resolved game. It is at this stage that the bonds should be awarded to the         necessary parties.\"},\"resolveClaim(uint256,uint256)\":{\"notice\":\"Resolves the subgame rooted at the given claim index. `_numToResolve` specifies how many children of         the subgame will be checked in this call. If `_numToResolve` is less than the number of children, an         internal cursor will be updated and this function may be called again to complete resolution of the         subgame.\"},\"resolvedAt()\":{\"notice\":\"Returns the timestamp that the DisputeGame contract was resolved at.\"},\"rootClaim()\":{\"notice\":\"Getter for the root claim.\"},\"startingBlockNumber()\":{\"notice\":\"Only the starting block number of the game.\"},\"startingOutputRoot()\":{\"notice\":\"Starting output root and block number of the game.\"},\"startingRootHash()\":{\"notice\":\"Only the starting output root of the game.\"},\"status()\":{\"notice\":\"Returns the current status of the game.\"},\"step(uint256,bool,bytes,bytes)\":{\"notice\":\"Perform an instruction step via an on-chain fault proof processor.\"}},\"notice\":\"The interface for a fault proof backed dispute game.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/dispute/interfaces/IFaultDisputeGame.sol\":\"IFaultDisputeGame\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/dispute/interfaces/IDisputeGame.sol\":{\"keccak256\":\"0xa4d3617892dfee02890ea135e778ed0207aa8545c97cb2a421bae7c1a659baa0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e31653e3463dbc3f3b572ca4a1198d9aadc7d8606a2b690a58e2c082a0d0090\",\"dweb:/ipfs/QmdbxJK4T5Hu652cSkxpAjYPxrK1i5ZM62oyopzmAzRn6M\"]},\"src/dispute/interfaces/IFaultDisputeGame.sol\":{\"keccak256\":\"0x9655abdda7d33496f012e5a8bf492c7733573024cc7779dc79fb4553f11e9f0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f8f0acce831c36385a4b06a5142ddfc2dbe2e7c403193df2585293ef2821c03\",\"dweb:/ipfs/QmR4XJ8rG1aiR7NgyTNbQ4swe8CFWkytudbWiKKMaqiCMH\"]},\"src/dispute/interfaces/IInitializable.sol\":{\"keccak256\":\"0xbc553af6501a972850a98fc6284943f8e95a5183a7b4f64198c16fca2338c9dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1f1c422ce4a9e72f0bbdec36434206da4af3a32d38f922acab957942e994ce5\",\"dweb:/ipfs/QmNQGWBceLxx1CKSMLfwTM584q8UCgUpF4rrFe8pdbWYtj\"]},\"src/dispute/lib/LibPosition.sol\":{\"keccak256\":\"0x7c5f19f8f54f06de2ce1c6cdcc5c7af65ac405130a4066cdaf146ca315818241\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06905e5ede94784e32748ad60557cb0b0829089d65430518e7042b80d2f64e2d\",\"dweb:/ipfs/QmeGKMmnFnow2VrRvTSPavCrToqQ3qDpEaR1tVoK6Hzg8K\"]},\"src/dispute/lib/LibUDT.sol\":{\"keccak256\":\"0x02eef648a47889c21c8261101c99a491e8497f9f7d088b66dffa4ded6afd7855\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88001eed40a7dbbc5193d9671e1c05273dce1ab2a95bb866543421d2863ed04e\",\"dweb:/ipfs/QmSNU8mFUFxhVdLBToL8r3v7tpugyvPDbDU4vkc3Xd4omX\"]},\"src/dispute/lib/Types.sol\":{\"keccak256\":\"0x227948243b4be041de133e1adc4b1dd49e9c1f519e4b5ab7f18c5bc9740539b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae2584956303586801a4c721ad39db90b8929101594f5bed10d77b28e66b3c11\",\"dweb:/ipfs/QmdoKT3UiTfBY3nBLjKRGJkngS7vq6exVQbuPqo5GwDCM1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"parentIndex","type":"uint256","indexed":true},{"internalType":"Claim","name":"claim","type":"bytes32","indexed":true},{"internalType":"address","name":"claimant","type":"address","indexed":true}],"type":"event","name":"Move","anonymous":false},{"inputs":[{"internalType":"enum GameStatus","name":"status","type":"uint8","indexed":true}],"type":"event","name":"Resolved","anonymous":false},{"inputs":[{"internalType":"uint256","name":"_ident","type":"uint256"},{"internalType":"uint256","name":"_execLeafIdx","type":"uint256"},{"internalType":"uint256","name":"_partOffset","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addLocalData"},{"inputs":[{"internalType":"Claim","name":"_disputed","type":"bytes32"},{"internalType":"uint256","name":"_parentIndex","type":"uint256"},{"internalType":"Claim","name":"_claim","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"attack"},{"inputs":[],"stateMutability":"view","type":"function","name":"createdAt","outputs":[{"internalType":"Timestamp","name":"createdAt_","type":"uint64"}]},{"inputs":[{"internalType":"Claim","name":"_disputed","type":"bytes32"},{"internalType":"uint256","name":"_parentIndex","type":"uint256"},{"internalType":"Claim","name":"_claim","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"defend"},{"inputs":[],"stateMutability":"pure","type":"function","name":"extraData","outputs":[{"internalType":"bytes","name":"extraData_","type":"bytes"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"gameCreator","outputs":[{"internalType":"address","name":"creator_","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"gameData","outputs":[{"internalType":"GameType","name":"gameType_","type":"uint32"},{"internalType":"Claim","name":"rootClaim_","type":"bytes32"},{"internalType":"bytes","name":"extraData_","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"gameType","outputs":[{"internalType":"GameType","name":"gameType_","type":"uint32"}]},{"inputs":[{"internalType":"uint256","name":"_claimIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getNumToResolve","outputs":[{"internalType":"uint256","name":"numRemainingChildren_","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"pure","type":"function","name":"l1Head","outputs":[{"internalType":"Hash","name":"l1Head_","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"l2BlockNumber","outputs":[{"internalType":"uint256","name":"l2BlockNumber_","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resolve","outputs":[{"internalType":"enum GameStatus","name":"status_","type":"uint8"}]},{"inputs":[{"internalType":"uint256","name":"_claimIndex","type":"uint256"},{"internalType":"uint256","name":"_numToResolve","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"resolveClaim"},{"inputs":[],"stateMutability":"view","type":"function","name":"resolvedAt","outputs":[{"internalType":"Timestamp","name":"resolvedAt_","type":"uint64"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"rootClaim","outputs":[{"internalType":"Claim","name":"rootClaim_","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"startingBlockNumber","outputs":[{"internalType":"uint256","name":"startingBlockNumber_","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"startingOutputRoot","outputs":[{"internalType":"Hash","name":"startingRoot_","type":"bytes32"},{"internalType":"uint256","name":"l2BlockNumber_","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"startingRootHash","outputs":[{"internalType":"Hash","name":"startingRootHash_","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"status","outputs":[{"internalType":"enum GameStatus","name":"status_","type":"uint8"}]},{"inputs":[{"internalType":"uint256","name":"_claimIndex","type":"uint256"},{"internalType":"bool","name":"_isAttack","type":"bool"},{"internalType":"bytes","name":"_stateData","type":"bytes"},{"internalType":"bytes","name":"_proof","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"step"}],"devdoc":{"kind":"dev","methods":{"addLocalData(uint256,uint256,uint256)":{"params":{"_execLeafIdx":"The index of the leaf claim in an execution subgame that requires the local data for a step.","_ident":"The local identifier of the data to post.","_partOffset":"The offset of the data to post."}},"attack(bytes32,uint256,bytes32)":{"params":{"_claim":"The `Claim` at the relative attack position.","_disputed":"The `Claim` being attacked.","_parentIndex":"Index of the `Claim` to attack in the `claimData` array. This must match the `_disputed` claim."}},"createdAt()":{"returns":{"createdAt_":"The timestamp that the DisputeGame contract was created at."}},"defend(bytes32,uint256,bytes32)":{"params":{"_claim":"The `Claim` at the relative defense position.","_parentIndex":"Index of the claim to defend in the `claimData` array. This must match the `_disputed` claim."}},"extraData()":{"details":"`clones-with-immutable-args` argument #4","returns":{"extraData_":"Any extra data supplied to the dispute game contract by the creator."}},"gameCreator()":{"details":"`clones-with-immutable-args` argument #1","returns":{"creator_":"The creator of the dispute game."}},"gameData()":{"returns":{"extraData_":"Any extra data supplied to the dispute game contract by the creator.","gameType_":"The type of proof system being used.","rootClaim_":"The root claim of the DisputeGame."}},"gameType()":{"details":"The reference impl should be entirely different depending on the type (fault, validity)      i.e. The game type should indicate the security model.","returns":{"gameType_":"The type of proof system being used."}},"getNumToResolve(uint256)":{"params":{"_claimIndex":"The subgame root claim's index within `claimData`."},"returns":{"numRemainingChildren_":"The number of children that still need to be checked to resolve the subgame."}},"initialize()":{"details":"This function may only be called once."},"l1Head()":{"details":"`clones-with-immutable-args` argument #3","returns":{"l1Head_":"The parent hash of the L1 block when the dispute game was created."}},"resolve()":{"details":"May only be called if the `status` is `IN_PROGRESS`.","returns":{"status_":"The status of the game after resolution."}},"resolveClaim(uint256,uint256)":{"details":"This function must be called bottom-up in the DAG      A subgame is a tree of claims that has a maximum depth of 1.      A subgame root claims is valid if, and only if, all of its child claims are invalid.      At the deepest level in the DAG, a claim is invalid if there's a successful step against it.","params":{"_claimIndex":"The index of the subgame root claim to resolve.","_numToResolve":"The number of subgames to resolve in this call. If the input is `0`, and this is the first                      page, this function will attempt to check all of the subgame's children at once."}},"resolvedAt()":{"returns":{"resolvedAt_":"The timestamp that the DisputeGame contract was resolved at."}},"rootClaim()":{"details":"`clones-with-immutable-args` argument #2","returns":{"rootClaim_":"The root claim of the DisputeGame."}},"status()":{"returns":{"status_":"The current status of the game."}},"step(uint256,bool,bytes,bytes)":{"details":"This function should point to a fault proof processor in order to execute      a step in the fault proof program on-chain. The interface of the fault proof      processor contract should adhere to the `IBigStepper` interface.","params":{"_claimIndex":"The index of the challenged claim within `claimData`.","_isAttack":"Whether or not the step is an attack or a defense.","_proof":"Proof to access memory nodes in the VM's merkle state tree.","_stateData":"The stateData of the step is the preimage of the claim at the given        prestate, which is at `_stateIndex` if the move is an attack and `_claimIndex` if        the move is a defense. If the step is an attack on the first instruction, it is        the absolute prestate of the fault proof VM."}}},"version":1},"userdoc":{"kind":"user","methods":{"addLocalData(uint256,uint256,uint256)":{"notice":"Posts the requested local data to the VM's `PreimageOralce`."},"attack(bytes32,uint256,bytes32)":{"notice":"Attack a disagreed upon `Claim`."},"createdAt()":{"notice":"Returns the timestamp that the DisputeGame contract was created at."},"defend(bytes32,uint256,bytes32)":{"notice":"Defend an agreed upon `Claim`._disputed The `Claim` being defended."},"extraData()":{"notice":"Getter for the extra data."},"gameCreator()":{"notice":"Getter for the creator of the dispute game."},"gameData()":{"notice":"A compliant implementation of this interface should return the components of the         game UUID's preimage provided in the cwia payload. The preimage of the UUID is         constructed as `keccak256(gameType . rootClaim . extraData)` where `.` denotes         concatenation."},"gameType()":{"notice":"Getter for the game type."},"getNumToResolve(uint256)":{"notice":"Returns the number of children that still need to be resolved in order to fully resolve a subgame rooted         at `_claimIndex`."},"initialize()":{"notice":"Initializes the contract."},"l1Head()":{"notice":"Getter for the parent hash of the L1 block when the dispute game was created."},"l2BlockNumber()":{"notice":"The l2BlockNumber of the disputed output root in the `L2OutputOracle`."},"resolve()":{"notice":"If all necessary information has been gathered, this function should mark the game         status as either `CHALLENGER_WINS` or `DEFENDER_WINS` and return the status of         the resolved game. It is at this stage that the bonds should be awarded to the         necessary parties."},"resolveClaim(uint256,uint256)":{"notice":"Resolves the subgame rooted at the given claim index. `_numToResolve` specifies how many children of         the subgame will be checked in this call. If `_numToResolve` is less than the number of children, an         internal cursor will be updated and this function may be called again to complete resolution of the         subgame."},"resolvedAt()":{"notice":"Returns the timestamp that the DisputeGame contract was resolved at."},"rootClaim()":{"notice":"Getter for the root claim."},"startingBlockNumber()":{"notice":"Only the starting block number of the game."},"startingOutputRoot()":{"notice":"Starting output root and block number of the game."},"startingRootHash()":{"notice":"Only the starting output root of the game."},"status()":{"notice":"Returns the current status of the game."},"step(uint256,bool,bytes,bytes)":{"notice":"Perform an instruction step via an on-chain fault proof processor."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/dispute/interfaces/IFaultDisputeGame.sol":"IFaultDisputeGame"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/dispute/interfaces/IDisputeGame.sol":{"keccak256":"0xa4d3617892dfee02890ea135e778ed0207aa8545c97cb2a421bae7c1a659baa0","urls":["bzz-raw://0e31653e3463dbc3f3b572ca4a1198d9aadc7d8606a2b690a58e2c082a0d0090","dweb:/ipfs/QmdbxJK4T5Hu652cSkxpAjYPxrK1i5ZM62oyopzmAzRn6M"],"license":"MIT"},"src/dispute/interfaces/IFaultDisputeGame.sol":{"keccak256":"0x9655abdda7d33496f012e5a8bf492c7733573024cc7779dc79fb4553f11e9f0a","urls":["bzz-raw://4f8f0acce831c36385a4b06a5142ddfc2dbe2e7c403193df2585293ef2821c03","dweb:/ipfs/QmR4XJ8rG1aiR7NgyTNbQ4swe8CFWkytudbWiKKMaqiCMH"],"license":"MIT"},"src/dispute/interfaces/IInitializable.sol":{"keccak256":"0xbc553af6501a972850a98fc6284943f8e95a5183a7b4f64198c16fca2338c9dc","urls":["bzz-raw://b1f1c422ce4a9e72f0bbdec36434206da4af3a32d38f922acab957942e994ce5","dweb:/ipfs/QmNQGWBceLxx1CKSMLfwTM584q8UCgUpF4rrFe8pdbWYtj"],"license":"MIT"},"src/dispute/lib/LibPosition.sol":{"keccak256":"0x7c5f19f8f54f06de2ce1c6cdcc5c7af65ac405130a4066cdaf146ca315818241","urls":["bzz-raw://06905e5ede94784e32748ad60557cb0b0829089d65430518e7042b80d2f64e2d","dweb:/ipfs/QmeGKMmnFnow2VrRvTSPavCrToqQ3qDpEaR1tVoK6Hzg8K"],"license":"MIT"},"src/dispute/lib/LibUDT.sol":{"keccak256":"0x02eef648a47889c21c8261101c99a491e8497f9f7d088b66dffa4ded6afd7855","urls":["bzz-raw://88001eed40a7dbbc5193d9671e1c05273dce1ab2a95bb866543421d2863ed04e","dweb:/ipfs/QmSNU8mFUFxhVdLBToL8r3v7tpugyvPDbDU4vkc3Xd4omX"],"license":"MIT"},"src/dispute/lib/Types.sol":{"keccak256":"0x227948243b4be041de133e1adc4b1dd49e9c1f519e4b5ab7f18c5bc9740539b9","urls":["bzz-raw://ae2584956303586801a4c721ad39db90b8929101594f5bed10d77b28e66b3c11","dweb:/ipfs/QmdoKT3UiTfBY3nBLjKRGJkngS7vq6exVQbuPqo5GwDCM1"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user","methods":{"addLocalData(uint256,uint256,uint256)":{"notice":"Posts the requested local data to the VM's `PreimageOralce`."},"attack(bytes32,uint256,bytes32)":{"notice":"Attack a disagreed upon `Claim`."},"createdAt()":{"notice":"Returns the timestamp that the DisputeGame contract was created at."},"defend(bytes32,uint256,bytes32)":{"notice":"Defend an agreed upon `Claim`._disputed The `Claim` being defended."},"extraData()":{"notice":"Getter for the extra data."},"gameCreator()":{"notice":"Getter for the creator of the dispute game."},"gameData()":{"notice":"A compliant implementation of this interface should return the components of the         game UUID's preimage provided in the cwia payload. The preimage of the UUID is         constructed as `keccak256(gameType . rootClaim . extraData)` where `.` denotes         concatenation."},"gameType()":{"notice":"Getter for the game type."},"getNumToResolve(uint256)":{"notice":"Returns the number of children that still need to be resolved in order to fully resolve a subgame rooted         at `_claimIndex`."},"initialize()":{"notice":"Initializes the contract."},"l1Head()":{"notice":"Getter for the parent hash of the L1 block when the dispute game was created."},"l2BlockNumber()":{"notice":"The l2BlockNumber of the disputed output root in the `L2OutputOracle`."},"resolve()":{"notice":"If all necessary information has been gathered, this function should mark the game         status as either `CHALLENGER_WINS` or `DEFENDER_WINS` and return the status of         the resolved game. It is at this stage that the bonds should be awarded to the         necessary parties."},"resolveClaim(uint256,uint256)":{"notice":"Resolves the subgame rooted at the given claim index. `_numToResolve` specifies how many children of         the subgame will be checked in this call. If `_numToResolve` is less than the number of children, an         internal cursor will be updated and this function may be called again to complete resolution of the         subgame."},"resolvedAt()":{"notice":"Returns the timestamp that the DisputeGame contract was resolved at."},"rootClaim()":{"notice":"Getter for the root claim."},"startingBlockNumber()":{"notice":"Only the starting block number of the game."},"startingOutputRoot()":{"notice":"Starting output root and block number of the game."},"startingRootHash()":{"notice":"Only the starting output root of the game."},"status()":{"notice":"Returns the current status of the game."},"step(uint256,bool,bytes,bytes)":{"notice":"Perform an instruction step via an on-chain fault proof processor."}},"events":{"Move(uint256,bytes32,address)":{"notice":"Emitted when a new claim is added to the DAG by `claimant`"},"Resolved(uint8)":{"notice":"Emitted when the game is resolved."}},"notice":"The interface for a fault proof backed dispute game."},"devdoc":{"version":1,"kind":"dev","methods":{"addLocalData(uint256,uint256,uint256)":{"params":{"_execLeafIdx":"The index of the leaf claim in an execution subgame that requires the local data for a step.","_ident":"The local identifier of the data to post.","_partOffset":"The offset of the data to post."}},"attack(bytes32,uint256,bytes32)":{"params":{"_claim":"The `Claim` at the relative attack position.","_disputed":"The `Claim` being attacked.","_parentIndex":"Index of the `Claim` to attack in the `claimData` array. This must match the `_disputed` claim."}},"createdAt()":{"returns":{"createdAt_":"The timestamp that the DisputeGame contract was created at."}},"defend(bytes32,uint256,bytes32)":{"params":{"_claim":"The `Claim` at the relative defense position.","_parentIndex":"Index of the claim to defend in the `claimData` array. This must match the `_disputed` claim."}},"extraData()":{"details":"`clones-with-immutable-args` argument #4","returns":{"extraData_":"Any extra data supplied to the dispute game contract by the creator."}},"gameCreator()":{"details":"`clones-with-immutable-args` argument #1","returns":{"creator_":"The creator of the dispute game."}},"gameData()":{"returns":{"extraData_":"Any extra data supplied to the dispute game contract by the creator.","gameType_":"The type of proof system being used.","rootClaim_":"The root claim of the DisputeGame."}},"gameType()":{"details":"The reference impl should be entirely different depending on the type (fault, validity)      i.e. The game type should indicate the security model.","returns":{"gameType_":"The type of proof system being used."}},"getNumToResolve(uint256)":{"params":{"_claimIndex":"The subgame root claim's index within `claimData`."},"returns":{"numRemainingChildren_":"The number of children that still need to be checked to resolve the subgame."}},"initialize()":{"details":"This function may only be called once."},"l1Head()":{"details":"`clones-with-immutable-args` argument #3","returns":{"l1Head_":"The parent hash of the L1 block when the dispute game was created."}},"resolve()":{"details":"May only be called if the `status` is `IN_PROGRESS`.","returns":{"status_":"The status of the game after resolution."}},"resolveClaim(uint256,uint256)":{"details":"This function must be called bottom-up in the DAG      A subgame is a tree of claims that has a maximum depth of 1.      A subgame root claims is valid if, and only if, all of its child claims are invalid.      At the deepest level in the DAG, a claim is invalid if there's a successful step against it.","params":{"_claimIndex":"The index of the subgame root claim to resolve.","_numToResolve":"The number of subgames to resolve in this call. If the input is `0`, and this is the first                      page, this function will attempt to check all of the subgame's children at once."}},"resolvedAt()":{"returns":{"resolvedAt_":"The timestamp that the DisputeGame contract was resolved at."}},"rootClaim()":{"details":"`clones-with-immutable-args` argument #2","returns":{"rootClaim_":"The root claim of the DisputeGame."}},"status()":{"returns":{"status_":"The current status of the game."}},"step(uint256,bool,bytes,bytes)":{"details":"This function should point to a fault proof processor in order to execute      a step in the fault proof program on-chain. The interface of the fault proof      processor contract should adhere to the `IBigStepper` interface.","params":{"_claimIndex":"The index of the challenged claim within `claimData`.","_isAttack":"Whether or not the step is an attack or a defense.","_proof":"Proof to access memory nodes in the VM's merkle state tree.","_stateData":"The stateData of the step is the preimage of the claim at the given        prestate, which is at `_stateIndex` if the move is an attack and `_claimIndex` if        the move is a defense. If the step is an attack on the first instruction, it is        the absolute prestate of the fault proof VM."}}},"events":{"Move(uint256,bytes32,address)":{"params":{"claim":"The claim being added","claimant":"The address of the claimant","parentIndex":"The index within the `claimData` array of the parent claim"}}},"title":"IFaultDisputeGame"},"ast":{"absolutePath":"src/dispute/interfaces/IFaultDisputeGame.sol","id":109899,"exportedSymbols":{"Claim":[110496],"Clock":[110404],"Duration":[110528],"GameId":[110458],"GameStatus":[110608],"GameType":[110588],"GameTypes":[110656],"Hash":[110543],"IDisputeGame":[109591],"IFaultDisputeGame":[109898],"LibClaim":[110526],"LibClock":[110456],"LibDuration":[110541],"LibGameId":[110494],"LibGameType":[110601],"LibHash":[110556],"LibPosition":[110367],"LibTimestamp":[110571],"LibVMStatus":[110586],"LocalPreimageKey":[110712],"OutputRoot":[110614],"Position":[110154],"Timestamp":[110558],"VMStatus":[110573],"VMStatuses":[110690]},"nodeType":"SourceUnit","src":"32:5606:193","nodes":[{"id":109763,"nodeType":"PragmaDirective","src":"32:23:193","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":109765,"nodeType":"ImportDirective","src":"57:50:193","nodes":[],"absolutePath":"src/dispute/interfaces/IDisputeGame.sol","file":"./IDisputeGame.sol","nameLocation":"-1:-1:-1","scope":109899,"sourceUnit":109592,"symbolAliases":[{"foreign":{"id":109764,"name":"IDisputeGame","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109591,"src":"66:12:193","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":109766,"nodeType":"ImportDirective","src":"109:35:193","nodes":[],"absolutePath":"src/dispute/lib/Types.sol","file":"src/dispute/lib/Types.sol","nameLocation":"-1:-1:-1","scope":109899,"sourceUnit":110713,"symbolAliases":[],"unitAlias":""},{"id":109898,"nodeType":"ContractDefinition","src":"240:5397:193","nodes":[{"id":109787,"nodeType":"StructDefinition","src":"374:198:193","nodes":[],"canonicalName":"IFaultDisputeGame.ClaimData","members":[{"constant":false,"id":109771,"mutability":"mutable","name":"parentIndex","nameLocation":"408:11:193","nodeType":"VariableDeclaration","scope":109787,"src":"401:18:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":109770,"name":"uint32","nodeType":"ElementaryTypeName","src":"401:6:193","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":109773,"mutability":"mutable","name":"counteredBy","nameLocation":"437:11:193","nodeType":"VariableDeclaration","scope":109787,"src":"429:19:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109772,"name":"address","nodeType":"ElementaryTypeName","src":"429:7:193","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":109775,"mutability":"mutable","name":"claimant","nameLocation":"466:8:193","nodeType":"VariableDeclaration","scope":109787,"src":"458:16:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109774,"name":"address","nodeType":"ElementaryTypeName","src":"458:7:193","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":109777,"mutability":"mutable","name":"bond","nameLocation":"492:4:193","nodeType":"VariableDeclaration","scope":109787,"src":"484:12:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":109776,"name":"uint128","nodeType":"ElementaryTypeName","src":"484:7:193","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":109780,"mutability":"mutable","name":"claim","nameLocation":"512:5:193","nodeType":"VariableDeclaration","scope":109787,"src":"506:11:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"},"typeName":{"id":109779,"nodeType":"UserDefinedTypeName","pathNode":{"id":109778,"name":"Claim","nodeType":"IdentifierPath","referencedDeclaration":110496,"src":"506:5:193"},"referencedDeclaration":110496,"src":"506:5:193","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"}},"visibility":"internal"},{"constant":false,"id":109783,"mutability":"mutable","name":"position","nameLocation":"536:8:193","nodeType":"VariableDeclaration","scope":109787,"src":"527:17:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$110154","typeString":"Position"},"typeName":{"id":109782,"nodeType":"UserDefinedTypeName","pathNode":{"id":109781,"name":"Position","nodeType":"IdentifierPath","referencedDeclaration":110154,"src":"527:8:193"},"referencedDeclaration":110154,"src":"527:8:193","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$110154","typeString":"Position"}},"visibility":"internal"},{"constant":false,"id":109786,"mutability":"mutable","name":"clock","nameLocation":"560:5:193","nodeType":"VariableDeclaration","scope":109787,"src":"554:11:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Clock_$110404","typeString":"Clock"},"typeName":{"id":109785,"nodeType":"UserDefinedTypeName","pathNode":{"id":109784,"name":"Clock","nodeType":"IdentifierPath","referencedDeclaration":110404,"src":"554:5:193"},"referencedDeclaration":110404,"src":"554:5:193","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Clock_$110404","typeString":"Clock"}},"visibility":"internal"}],"name":"ClaimData","nameLocation":"381:9:193","scope":109898,"visibility":"public"},{"id":109797,"nodeType":"StructDefinition","src":"697:168:193","nodes":[],"canonicalName":"IFaultDisputeGame.ResolutionCheckpoint","members":[{"constant":false,"id":109789,"mutability":"mutable","name":"initialCheckpointComplete","nameLocation":"740:25:193","nodeType":"VariableDeclaration","scope":109797,"src":"735:30:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":109788,"name":"bool","nodeType":"ElementaryTypeName","src":"735:4:193","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":109791,"mutability":"mutable","name":"subgameIndex","nameLocation":"782:12:193","nodeType":"VariableDeclaration","scope":109797,"src":"775:19:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":109790,"name":"uint32","nodeType":"ElementaryTypeName","src":"775:6:193","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":109794,"mutability":"mutable","name":"leftmostPosition","nameLocation":"813:16:193","nodeType":"VariableDeclaration","scope":109797,"src":"804:25:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$110154","typeString":"Position"},"typeName":{"id":109793,"nodeType":"UserDefinedTypeName","pathNode":{"id":109792,"name":"Position","nodeType":"IdentifierPath","referencedDeclaration":110154,"src":"804:8:193"},"referencedDeclaration":110154,"src":"804:8:193","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$110154","typeString":"Position"}},"visibility":"internal"},{"constant":false,"id":109796,"mutability":"mutable","name":"counteredBy","nameLocation":"847:11:193","nodeType":"VariableDeclaration","scope":109797,"src":"839:19:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109795,"name":"address","nodeType":"ElementaryTypeName","src":"839:7:193","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"ResolutionCheckpoint","nameLocation":"704:20:193","scope":109898,"visibility":"public"},{"id":109807,"nodeType":"EventDefinition","src":"1127:87:193","nodes":[],"anonymous":false,"documentation":{"id":109798,"nodeType":"StructuredDocumentation","src":"871:251:193","text":"@notice Emitted when a new claim is added to the DAG by `claimant`\n @param parentIndex The index within the `claimData` array of the parent claim\n @param claim The claim being added\n @param claimant The address of the claimant"},"eventSelector":"9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be","name":"Move","nameLocation":"1133:4:193","parameters":{"id":109806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109800,"indexed":true,"mutability":"mutable","name":"parentIndex","nameLocation":"1154:11:193","nodeType":"VariableDeclaration","scope":109807,"src":"1138:27:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109799,"name":"uint256","nodeType":"ElementaryTypeName","src":"1138:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":109803,"indexed":true,"mutability":"mutable","name":"claim","nameLocation":"1181:5:193","nodeType":"VariableDeclaration","scope":109807,"src":"1167:19:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"},"typeName":{"id":109802,"nodeType":"UserDefinedTypeName","pathNode":{"id":109801,"name":"Claim","nodeType":"IdentifierPath","referencedDeclaration":110496,"src":"1167:5:193"},"referencedDeclaration":110496,"src":"1167:5:193","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"}},"visibility":"internal"},{"constant":false,"id":109805,"indexed":true,"mutability":"mutable","name":"claimant","nameLocation":"1204:8:193","nodeType":"VariableDeclaration","scope":109807,"src":"1188:24:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109804,"name":"address","nodeType":"ElementaryTypeName","src":"1188:7:193","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1137:76:193"}},{"id":109819,"nodeType":"FunctionDefinition","src":"1521:86:193","nodes":[],"documentation":{"id":109808,"nodeType":"StructuredDocumentation","src":"1220:296:193","text":"@notice Attack a disagreed upon `Claim`.\n @param _disputed The `Claim` being attacked.\n @param _parentIndex Index of the `Claim` to attack in the `claimData` array. This must match the `_disputed`\n claim.\n @param _claim The `Claim` at the relative attack position."},"functionSelector":"472777c6","implemented":false,"kind":"function","modifiers":[],"name":"attack","nameLocation":"1530:6:193","parameters":{"id":109817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109811,"mutability":"mutable","name":"_disputed","nameLocation":"1543:9:193","nodeType":"VariableDeclaration","scope":109819,"src":"1537:15:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"},"typeName":{"id":109810,"nodeType":"UserDefinedTypeName","pathNode":{"id":109809,"name":"Claim","nodeType":"IdentifierPath","referencedDeclaration":110496,"src":"1537:5:193"},"referencedDeclaration":110496,"src":"1537:5:193","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"}},"visibility":"internal"},{"constant":false,"id":109813,"mutability":"mutable","name":"_parentIndex","nameLocation":"1562:12:193","nodeType":"VariableDeclaration","scope":109819,"src":"1554:20:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109812,"name":"uint256","nodeType":"ElementaryTypeName","src":"1554:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":109816,"mutability":"mutable","name":"_claim","nameLocation":"1582:6:193","nodeType":"VariableDeclaration","scope":109819,"src":"1576:12:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"},"typeName":{"id":109815,"nodeType":"UserDefinedTypeName","pathNode":{"id":109814,"name":"Claim","nodeType":"IdentifierPath","referencedDeclaration":110496,"src":"1576:5:193"},"referencedDeclaration":110496,"src":"1576:5:193","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"}},"visibility":"internal"}],"src":"1536:53:193"},"returnParameters":{"id":109818,"nodeType":"ParameterList","parameters":[],"src":"1606:0:193"},"scope":109898,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":109831,"nodeType":"FunctionDefinition","src":"1912:86:193","nodes":[],"documentation":{"id":109820,"nodeType":"StructuredDocumentation","src":"1613:294:193","text":"@notice Defend an agreed upon `Claim`.\n @notice _disputed The `Claim` being defended.\n @param _parentIndex Index of the claim to defend in the `claimData` array. This must match the `_disputed`\n claim.\n @param _claim The `Claim` at the relative defense position."},"functionSelector":"7b0f0adc","implemented":false,"kind":"function","modifiers":[],"name":"defend","nameLocation":"1921:6:193","parameters":{"id":109829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109823,"mutability":"mutable","name":"_disputed","nameLocation":"1934:9:193","nodeType":"VariableDeclaration","scope":109831,"src":"1928:15:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"},"typeName":{"id":109822,"nodeType":"UserDefinedTypeName","pathNode":{"id":109821,"name":"Claim","nodeType":"IdentifierPath","referencedDeclaration":110496,"src":"1928:5:193"},"referencedDeclaration":110496,"src":"1928:5:193","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"}},"visibility":"internal"},{"constant":false,"id":109825,"mutability":"mutable","name":"_parentIndex","nameLocation":"1953:12:193","nodeType":"VariableDeclaration","scope":109831,"src":"1945:20:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109824,"name":"uint256","nodeType":"ElementaryTypeName","src":"1945:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":109828,"mutability":"mutable","name":"_claim","nameLocation":"1973:6:193","nodeType":"VariableDeclaration","scope":109831,"src":"1967:12:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"},"typeName":{"id":109827,"nodeType":"UserDefinedTypeName","pathNode":{"id":109826,"name":"Claim","nodeType":"IdentifierPath","referencedDeclaration":110496,"src":"1967:5:193"},"referencedDeclaration":110496,"src":"1967:5:193","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$110496","typeString":"Claim"}},"visibility":"internal"}],"src":"1927:53:193"},"returnParameters":{"id":109830,"nodeType":"ParameterList","parameters":[],"src":"1997:0:193"},"scope":109898,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":109843,"nodeType":"FunctionDefinition","src":"2927:110:193","nodes":[],"documentation":{"id":109832,"nodeType":"StructuredDocumentation","src":"2004:918:193","text":"@notice Perform an instruction step via an on-chain fault proof processor.\n @dev This function should point to a fault proof processor in order to execute\n      a step in the fault proof program on-chain. The interface of the fault proof\n      processor contract should adhere to the `IBigStepper` interface.\n @param _claimIndex The index of the challenged claim within `claimData`.\n @param _isAttack Whether or not the step is an attack or a defense.\n @param _stateData The stateData of the step is the preimage of the claim at the given\n        prestate, which is at `_stateIndex` if the move is an attack and `_claimIndex` if\n        the move is a defense. If the step is an attack on the first instruction, it is\n        the absolute prestate of the fault proof VM.\n @param _proof Proof to access memory nodes in the VM's merkle state tree."},"functionSelector":"d8cc1a3c","implemented":false,"kind":"function","modifiers":[],"name":"step","nameLocation":"2936:4:193","parameters":{"id":109841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109834,"mutability":"mutable","name":"_claimIndex","nameLocation":"2949:11:193","nodeType":"VariableDeclaration","scope":109843,"src":"2941:19:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109833,"name":"uint256","nodeType":"ElementaryTypeName","src":"2941:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":109836,"mutability":"mutable","name":"_isAttack","nameLocation":"2967:9:193","nodeType":"VariableDeclaration","scope":109843,"src":"2962:14:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":109835,"name":"bool","nodeType":"ElementaryTypeName","src":"2962:4:193","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":109838,"mutability":"mutable","name":"_stateData","nameLocation":"2993:10:193","nodeType":"VariableDeclaration","scope":109843,"src":"2978:25:193","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":109837,"name":"bytes","nodeType":"ElementaryTypeName","src":"2978:5:193","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":109840,"mutability":"mutable","name":"_proof","nameLocation":"3020:6:193","nodeType":"VariableDeclaration","scope":109843,"src":"3005:21:193","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":109839,"name":"bytes","nodeType":"ElementaryTypeName","src":"3005:5:193","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2940:87:193"},"returnParameters":{"id":109842,"nodeType":"ParameterList","parameters":[],"src":"3036:0:193"},"scope":109898,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":109853,"nodeType":"FunctionDefinition","src":"3364:90:193","nodes":[],"documentation":{"id":109844,"nodeType":"StructuredDocumentation","src":"3043:316:193","text":"@notice Posts the requested local data to the VM's `PreimageOralce`.\n @param _ident The local identifier of the data to post.\n @param _execLeafIdx The index of the leaf claim in an execution subgame that requires the local data for a step.\n @param _partOffset The offset of the data to post."},"functionSelector":"f8f43ff6","implemented":false,"kind":"function","modifiers":[],"name":"addLocalData","nameLocation":"3373:12:193","parameters":{"id":109851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109846,"mutability":"mutable","name":"_ident","nameLocation":"3394:6:193","nodeType":"VariableDeclaration","scope":109853,"src":"3386:14:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109845,"name":"uint256","nodeType":"ElementaryTypeName","src":"3386:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":109848,"mutability":"mutable","name":"_execLeafIdx","nameLocation":"3410:12:193","nodeType":"VariableDeclaration","scope":109853,"src":"3402:20:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109847,"name":"uint256","nodeType":"ElementaryTypeName","src":"3402:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":109850,"mutability":"mutable","name":"_partOffset","nameLocation":"3432:11:193","nodeType":"VariableDeclaration","scope":109853,"src":"3424:19:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109849,"name":"uint256","nodeType":"ElementaryTypeName","src":"3424:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3385:59:193"},"returnParameters":{"id":109852,"nodeType":"ParameterList","parameters":[],"src":"3453:0:193"},"scope":109898,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":109861,"nodeType":"FunctionDefinition","src":"4481:75:193","nodes":[],"documentation":{"id":109854,"nodeType":"StructuredDocumentation","src":"3460:1016:193","text":"@notice Resolves the subgame rooted at the given claim index. `_numToResolve` specifies how many children of\n         the subgame will be checked in this call. If `_numToResolve` is less than the number of children, an\n         internal cursor will be updated and this function may be called again to complete resolution of the\n         subgame.\n @dev This function must be called bottom-up in the DAG\n      A subgame is a tree of claims that has a maximum depth of 1.\n      A subgame root claims is valid if, and only if, all of its child claims are invalid.\n      At the deepest level in the DAG, a claim is invalid if there's a successful step against it.\n @param _claimIndex The index of the subgame root claim to resolve.\n @param _numToResolve The number of subgames to resolve in this call. If the input is `0`, and this is the first\n                      page, this function will attempt to check all of the subgame's children at once."},"functionSelector":"03c2924d","implemented":false,"kind":"function","modifiers":[],"name":"resolveClaim","nameLocation":"4490:12:193","parameters":{"id":109859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109856,"mutability":"mutable","name":"_claimIndex","nameLocation":"4511:11:193","nodeType":"VariableDeclaration","scope":109861,"src":"4503:19:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109855,"name":"uint256","nodeType":"ElementaryTypeName","src":"4503:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":109858,"mutability":"mutable","name":"_numToResolve","nameLocation":"4532:13:193","nodeType":"VariableDeclaration","scope":109861,"src":"4524:21:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109857,"name":"uint256","nodeType":"ElementaryTypeName","src":"4524:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4502:44:193"},"returnParameters":{"id":109860,"nodeType":"ParameterList","parameters":[],"src":"4555:0:193"},"scope":109898,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":109869,"nodeType":"FunctionDefinition","src":"4910:100:193","nodes":[],"documentation":{"id":109862,"nodeType":"StructuredDocumentation","src":"4562:343:193","text":"@notice Returns the number of children that still need to be resolved in order to fully resolve a subgame rooted\n         at `_claimIndex`.\n @param _claimIndex The subgame root claim's index within `claimData`.\n @return numRemainingChildren_ The number of children that still need to be checked to resolve the subgame."},"functionSelector":"5a5fa2d9","implemented":false,"kind":"function","modifiers":[],"name":"getNumToResolve","nameLocation":"4919:15:193","parameters":{"id":109865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109864,"mutability":"mutable","name":"_claimIndex","nameLocation":"4943:11:193","nodeType":"VariableDeclaration","scope":109869,"src":"4935:19:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109863,"name":"uint256","nodeType":"ElementaryTypeName","src":"4935:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4934:21:193"},"returnParameters":{"id":109868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109867,"mutability":"mutable","name":"numRemainingChildren_","nameLocation":"4987:21:193","nodeType":"VariableDeclaration","scope":109869,"src":"4979:29:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109866,"name":"uint256","nodeType":"ElementaryTypeName","src":"4979:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4978:31:193"},"scope":109898,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":109875,"nodeType":"FunctionDefinition","src":"5103:72:193","nodes":[],"documentation":{"id":109870,"nodeType":"StructuredDocumentation","src":"5016:82:193","text":"@notice The l2BlockNumber of the disputed output root in the `L2OutputOracle`."},"functionSelector":"8b85902b","implemented":false,"kind":"function","modifiers":[],"name":"l2BlockNumber","nameLocation":"5112:13:193","parameters":{"id":109871,"nodeType":"ParameterList","parameters":[],"src":"5125:2:193"},"returnParameters":{"id":109874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109873,"mutability":"mutable","name":"l2BlockNumber_","nameLocation":"5159:14:193","nodeType":"VariableDeclaration","scope":109875,"src":"5151:22:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109872,"name":"uint256","nodeType":"ElementaryTypeName","src":"5151:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5150:24:193"},"scope":109898,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":109884,"nodeType":"FunctionDefinition","src":"5248:97:193","nodes":[],"documentation":{"id":109876,"nodeType":"StructuredDocumentation","src":"5181:62:193","text":"@notice Starting output root and block number of the game."},"functionSelector":"57da950e","implemented":false,"kind":"function","modifiers":[],"name":"startingOutputRoot","nameLocation":"5257:18:193","parameters":{"id":109877,"nodeType":"ParameterList","parameters":[],"src":"5275:2:193"},"returnParameters":{"id":109883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109880,"mutability":"mutable","name":"startingRoot_","nameLocation":"5306:13:193","nodeType":"VariableDeclaration","scope":109884,"src":"5301:18:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Hash_$110543","typeString":"Hash"},"typeName":{"id":109879,"nodeType":"UserDefinedTypeName","pathNode":{"id":109878,"name":"Hash","nodeType":"IdentifierPath","referencedDeclaration":110543,"src":"5301:4:193"},"referencedDeclaration":110543,"src":"5301:4:193","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Hash_$110543","typeString":"Hash"}},"visibility":"internal"},{"constant":false,"id":109882,"mutability":"mutable","name":"l2BlockNumber_","nameLocation":"5329:14:193","nodeType":"VariableDeclaration","scope":109884,"src":"5321:22:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109881,"name":"uint256","nodeType":"ElementaryTypeName","src":"5321:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5300:44:193"},"scope":109898,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":109890,"nodeType":"FunctionDefinition","src":"5411:84:193","nodes":[],"documentation":{"id":109885,"nodeType":"StructuredDocumentation","src":"5351:55:193","text":"@notice Only the starting block number of the game."},"functionSelector":"70872aa5","implemented":false,"kind":"function","modifiers":[],"name":"startingBlockNumber","nameLocation":"5420:19:193","parameters":{"id":109886,"nodeType":"ParameterList","parameters":[],"src":"5439:2:193"},"returnParameters":{"id":109889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109888,"mutability":"mutable","name":"startingBlockNumber_","nameLocation":"5473:20:193","nodeType":"VariableDeclaration","scope":109890,"src":"5465:28:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109887,"name":"uint256","nodeType":"ElementaryTypeName","src":"5465:7:193","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5464:30:193"},"scope":109898,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":109897,"nodeType":"FunctionDefinition","src":"5560:75:193","nodes":[],"documentation":{"id":109891,"nodeType":"StructuredDocumentation","src":"5501:54:193","text":"@notice Only the starting output root of the game."},"functionSelector":"25fc2ace","implemented":false,"kind":"function","modifiers":[],"name":"startingRootHash","nameLocation":"5569:16:193","parameters":{"id":109892,"nodeType":"ParameterList","parameters":[],"src":"5585:2:193"},"returnParameters":{"id":109896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109895,"mutability":"mutable","name":"startingRootHash_","nameLocation":"5616:17:193","nodeType":"VariableDeclaration","scope":109897,"src":"5611:22:193","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Hash_$110543","typeString":"Hash"},"typeName":{"id":109894,"nodeType":"UserDefinedTypeName","pathNode":{"id":109893,"name":"Hash","nodeType":"IdentifierPath","referencedDeclaration":110543,"src":"5611:4:193"},"referencedDeclaration":110543,"src":"5611:4:193","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Hash_$110543","typeString":"Hash"}},"visibility":"internal"}],"src":"5610:24:193"},"scope":109898,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":109768,"name":"IDisputeGame","nodeType":"IdentifierPath","referencedDeclaration":109591,"src":"271:12:193"},"id":109769,"nodeType":"InheritanceSpecifier","src":"271:12:193"}],"canonicalName":"IFaultDisputeGame","contractDependencies":[],"contractKind":"interface","documentation":{"id":109767,"nodeType":"StructuredDocumentation","src":"146:94:193","text":"@title IFaultDisputeGame\n @notice The interface for a fault proof backed dispute game."},"fullyImplemented":false,"linearizedBaseContracts":[109898,109591,109906],"name":"IFaultDisputeGame","nameLocation":"250:17:193","scope":109899,"usedErrors":[]}],"license":"MIT"},"id":193}