{"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.26+commit.8a97fa7a\"},\"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\"}},\"Resolved(uint8)\":{\"params\":{\"status\":\"The status of the game after resolution.\"}}},\"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\":\"cancun\",\"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.26+commit.8a97fa7a"},"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":"cancun","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"}},"Resolved(uint8)":{"params":{"status":"The status of the game after resolution."}}},"title":"IFaultDisputeGame"},"ast":{"absolutePath":"src/dispute/interfaces/IFaultDisputeGame.sol","id":54158,"exportedSymbols":{"Claim":[54755],"Clock":[54663],"Duration":[54787],"GameId":[54717],"GameStatus":[54868],"GameType":[54847],"GameTypes":[54917],"Hash":[54802],"IDisputeGame":[53847],"IFaultDisputeGame":[54157],"LibClaim":[54785],"LibClock":[54715],"LibDuration":[54800],"LibGameId":[54753],"LibGameType":[54860],"LibHash":[54815],"LibPosition":[54626],"LibTimestamp":[54830],"LibVMStatus":[54845],"LocalPreimageKey":[54973],"OutputRoot":[54875],"Position":[54413],"Timestamp":[54817],"VMStatus":[54832],"VMStatuses":[54951]},"nodeType":"SourceUnit","src":"32:5606:54","nodes":[{"id":54020,"nodeType":"PragmaDirective","src":"32:23:54","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":54022,"nodeType":"ImportDirective","src":"57:50:54","nodes":[],"absolutePath":"src/dispute/interfaces/IDisputeGame.sol","file":"./IDisputeGame.sol","nameLocation":"-1:-1:-1","scope":54158,"sourceUnit":53848,"symbolAliases":[{"foreign":{"id":54021,"name":"IDisputeGame","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53847,"src":"66:12:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54023,"nodeType":"ImportDirective","src":"109:35:54","nodes":[],"absolutePath":"src/dispute/lib/Types.sol","file":"src/dispute/lib/Types.sol","nameLocation":"-1:-1:-1","scope":54158,"sourceUnit":54974,"symbolAliases":[],"unitAlias":""},{"id":54157,"nodeType":"ContractDefinition","src":"240:5397:54","nodes":[{"id":54045,"nodeType":"StructDefinition","src":"374:198:54","nodes":[],"canonicalName":"IFaultDisputeGame.ClaimData","documentation":{"id":54027,"nodeType":"StructuredDocumentation","src":"290:79:54","text":"@notice The `ClaimData` struct represents the data associated with a Claim."},"members":[{"constant":false,"id":54029,"mutability":"mutable","name":"parentIndex","nameLocation":"408:11:54","nodeType":"VariableDeclaration","scope":54045,"src":"401:18:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":54028,"name":"uint32","nodeType":"ElementaryTypeName","src":"401:6:54","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":54031,"mutability":"mutable","name":"counteredBy","nameLocation":"437:11:54","nodeType":"VariableDeclaration","scope":54045,"src":"429:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54030,"name":"address","nodeType":"ElementaryTypeName","src":"429:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54033,"mutability":"mutable","name":"claimant","nameLocation":"466:8:54","nodeType":"VariableDeclaration","scope":54045,"src":"458:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54032,"name":"address","nodeType":"ElementaryTypeName","src":"458:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54035,"mutability":"mutable","name":"bond","nameLocation":"492:4:54","nodeType":"VariableDeclaration","scope":54045,"src":"484:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54034,"name":"uint128","nodeType":"ElementaryTypeName","src":"484:7:54","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":54038,"mutability":"mutable","name":"claim","nameLocation":"512:5:54","nodeType":"VariableDeclaration","scope":54045,"src":"506:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"},"typeName":{"id":54037,"nodeType":"UserDefinedTypeName","pathNode":{"id":54036,"name":"Claim","nameLocations":["506:5:54"],"nodeType":"IdentifierPath","referencedDeclaration":54755,"src":"506:5:54"},"referencedDeclaration":54755,"src":"506:5:54","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"}},"visibility":"internal"},{"constant":false,"id":54041,"mutability":"mutable","name":"position","nameLocation":"536:8:54","nodeType":"VariableDeclaration","scope":54045,"src":"527:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54040,"nodeType":"UserDefinedTypeName","pathNode":{"id":54039,"name":"Position","nameLocations":["527:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"527:8:54"},"referencedDeclaration":54413,"src":"527:8:54","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"},{"constant":false,"id":54044,"mutability":"mutable","name":"clock","nameLocation":"560:5:54","nodeType":"VariableDeclaration","scope":54045,"src":"554:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Clock_$54663","typeString":"Clock"},"typeName":{"id":54043,"nodeType":"UserDefinedTypeName","pathNode":{"id":54042,"name":"Clock","nameLocations":["554:5:54"],"nodeType":"IdentifierPath","referencedDeclaration":54663,"src":"554:5:54"},"referencedDeclaration":54663,"src":"554:5:54","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Clock_$54663","typeString":"Clock"}},"visibility":"internal"}],"name":"ClaimData","nameLocation":"381:9:54","scope":54157,"visibility":"public"},{"id":54056,"nodeType":"StructDefinition","src":"697:168:54","nodes":[],"canonicalName":"IFaultDisputeGame.ResolutionCheckpoint","documentation":{"id":54046,"nodeType":"StructuredDocumentation","src":"578:114:54","text":"@notice The `ResolutionCheckpoint` struct represents the data associated with an in-progress claim resolution."},"members":[{"constant":false,"id":54048,"mutability":"mutable","name":"initialCheckpointComplete","nameLocation":"740:25:54","nodeType":"VariableDeclaration","scope":54056,"src":"735:30:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54047,"name":"bool","nodeType":"ElementaryTypeName","src":"735:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":54050,"mutability":"mutable","name":"subgameIndex","nameLocation":"782:12:54","nodeType":"VariableDeclaration","scope":54056,"src":"775:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":54049,"name":"uint32","nodeType":"ElementaryTypeName","src":"775:6:54","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":54053,"mutability":"mutable","name":"leftmostPosition","nameLocation":"813:16:54","nodeType":"VariableDeclaration","scope":54056,"src":"804:25:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54052,"nodeType":"UserDefinedTypeName","pathNode":{"id":54051,"name":"Position","nameLocations":["804:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"804:8:54"},"referencedDeclaration":54413,"src":"804:8:54","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"},{"constant":false,"id":54055,"mutability":"mutable","name":"counteredBy","nameLocation":"847:11:54","nodeType":"VariableDeclaration","scope":54056,"src":"839:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54054,"name":"address","nodeType":"ElementaryTypeName","src":"839:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"ResolutionCheckpoint","nameLocation":"704:20:54","scope":54157,"visibility":"public"},{"id":54066,"nodeType":"EventDefinition","src":"1127:87:54","nodes":[],"anonymous":false,"documentation":{"id":54057,"nodeType":"StructuredDocumentation","src":"871:251:54","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:54","parameters":{"id":54065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54059,"indexed":true,"mutability":"mutable","name":"parentIndex","nameLocation":"1154:11:54","nodeType":"VariableDeclaration","scope":54066,"src":"1138:27:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54058,"name":"uint256","nodeType":"ElementaryTypeName","src":"1138:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54062,"indexed":true,"mutability":"mutable","name":"claim","nameLocation":"1181:5:54","nodeType":"VariableDeclaration","scope":54066,"src":"1167:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"},"typeName":{"id":54061,"nodeType":"UserDefinedTypeName","pathNode":{"id":54060,"name":"Claim","nameLocations":["1167:5:54"],"nodeType":"IdentifierPath","referencedDeclaration":54755,"src":"1167:5:54"},"referencedDeclaration":54755,"src":"1167:5:54","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"}},"visibility":"internal"},{"constant":false,"id":54064,"indexed":true,"mutability":"mutable","name":"claimant","nameLocation":"1204:8:54","nodeType":"VariableDeclaration","scope":54066,"src":"1188:24:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54063,"name":"address","nodeType":"ElementaryTypeName","src":"1188:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1137:76:54"}},{"id":54078,"nodeType":"FunctionDefinition","src":"1521:86:54","nodes":[],"documentation":{"id":54067,"nodeType":"StructuredDocumentation","src":"1220:296:54","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:54","parameters":{"id":54076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54070,"mutability":"mutable","name":"_disputed","nameLocation":"1543:9:54","nodeType":"VariableDeclaration","scope":54078,"src":"1537:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"},"typeName":{"id":54069,"nodeType":"UserDefinedTypeName","pathNode":{"id":54068,"name":"Claim","nameLocations":["1537:5:54"],"nodeType":"IdentifierPath","referencedDeclaration":54755,"src":"1537:5:54"},"referencedDeclaration":54755,"src":"1537:5:54","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"}},"visibility":"internal"},{"constant":false,"id":54072,"mutability":"mutable","name":"_parentIndex","nameLocation":"1562:12:54","nodeType":"VariableDeclaration","scope":54078,"src":"1554:20:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54071,"name":"uint256","nodeType":"ElementaryTypeName","src":"1554:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54075,"mutability":"mutable","name":"_claim","nameLocation":"1582:6:54","nodeType":"VariableDeclaration","scope":54078,"src":"1576:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"},"typeName":{"id":54074,"nodeType":"UserDefinedTypeName","pathNode":{"id":54073,"name":"Claim","nameLocations":["1576:5:54"],"nodeType":"IdentifierPath","referencedDeclaration":54755,"src":"1576:5:54"},"referencedDeclaration":54755,"src":"1576:5:54","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"}},"visibility":"internal"}],"src":"1536:53:54"},"returnParameters":{"id":54077,"nodeType":"ParameterList","parameters":[],"src":"1606:0:54"},"scope":54157,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54090,"nodeType":"FunctionDefinition","src":"1912:86:54","nodes":[],"documentation":{"id":54079,"nodeType":"StructuredDocumentation","src":"1613:294:54","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:54","parameters":{"id":54088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54082,"mutability":"mutable","name":"_disputed","nameLocation":"1934:9:54","nodeType":"VariableDeclaration","scope":54090,"src":"1928:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"},"typeName":{"id":54081,"nodeType":"UserDefinedTypeName","pathNode":{"id":54080,"name":"Claim","nameLocations":["1928:5:54"],"nodeType":"IdentifierPath","referencedDeclaration":54755,"src":"1928:5:54"},"referencedDeclaration":54755,"src":"1928:5:54","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"}},"visibility":"internal"},{"constant":false,"id":54084,"mutability":"mutable","name":"_parentIndex","nameLocation":"1953:12:54","nodeType":"VariableDeclaration","scope":54090,"src":"1945:20:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54083,"name":"uint256","nodeType":"ElementaryTypeName","src":"1945:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54087,"mutability":"mutable","name":"_claim","nameLocation":"1973:6:54","nodeType":"VariableDeclaration","scope":54090,"src":"1967:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"},"typeName":{"id":54086,"nodeType":"UserDefinedTypeName","pathNode":{"id":54085,"name":"Claim","nameLocations":["1967:5:54"],"nodeType":"IdentifierPath","referencedDeclaration":54755,"src":"1967:5:54"},"referencedDeclaration":54755,"src":"1967:5:54","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$54755","typeString":"Claim"}},"visibility":"internal"}],"src":"1927:53:54"},"returnParameters":{"id":54089,"nodeType":"ParameterList","parameters":[],"src":"1997:0:54"},"scope":54157,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54102,"nodeType":"FunctionDefinition","src":"2927:110:54","nodes":[],"documentation":{"id":54091,"nodeType":"StructuredDocumentation","src":"2004:918:54","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:54","parameters":{"id":54100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54093,"mutability":"mutable","name":"_claimIndex","nameLocation":"2949:11:54","nodeType":"VariableDeclaration","scope":54102,"src":"2941:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54092,"name":"uint256","nodeType":"ElementaryTypeName","src":"2941:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54095,"mutability":"mutable","name":"_isAttack","nameLocation":"2967:9:54","nodeType":"VariableDeclaration","scope":54102,"src":"2962:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54094,"name":"bool","nodeType":"ElementaryTypeName","src":"2962:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":54097,"mutability":"mutable","name":"_stateData","nameLocation":"2993:10:54","nodeType":"VariableDeclaration","scope":54102,"src":"2978:25:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54096,"name":"bytes","nodeType":"ElementaryTypeName","src":"2978:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54099,"mutability":"mutable","name":"_proof","nameLocation":"3020:6:54","nodeType":"VariableDeclaration","scope":54102,"src":"3005:21:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54098,"name":"bytes","nodeType":"ElementaryTypeName","src":"3005:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2940:87:54"},"returnParameters":{"id":54101,"nodeType":"ParameterList","parameters":[],"src":"3036:0:54"},"scope":54157,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54112,"nodeType":"FunctionDefinition","src":"3364:90:54","nodes":[],"documentation":{"id":54103,"nodeType":"StructuredDocumentation","src":"3043:316:54","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:54","parameters":{"id":54110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54105,"mutability":"mutable","name":"_ident","nameLocation":"3394:6:54","nodeType":"VariableDeclaration","scope":54112,"src":"3386:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54104,"name":"uint256","nodeType":"ElementaryTypeName","src":"3386:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54107,"mutability":"mutable","name":"_execLeafIdx","nameLocation":"3410:12:54","nodeType":"VariableDeclaration","scope":54112,"src":"3402:20:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54106,"name":"uint256","nodeType":"ElementaryTypeName","src":"3402:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54109,"mutability":"mutable","name":"_partOffset","nameLocation":"3432:11:54","nodeType":"VariableDeclaration","scope":54112,"src":"3424:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54108,"name":"uint256","nodeType":"ElementaryTypeName","src":"3424:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3385:59:54"},"returnParameters":{"id":54111,"nodeType":"ParameterList","parameters":[],"src":"3453:0:54"},"scope":54157,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54120,"nodeType":"FunctionDefinition","src":"4481:75:54","nodes":[],"documentation":{"id":54113,"nodeType":"StructuredDocumentation","src":"3460:1016:54","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:54","parameters":{"id":54118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54115,"mutability":"mutable","name":"_claimIndex","nameLocation":"4511:11:54","nodeType":"VariableDeclaration","scope":54120,"src":"4503:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54114,"name":"uint256","nodeType":"ElementaryTypeName","src":"4503:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54117,"mutability":"mutable","name":"_numToResolve","nameLocation":"4532:13:54","nodeType":"VariableDeclaration","scope":54120,"src":"4524:21:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54116,"name":"uint256","nodeType":"ElementaryTypeName","src":"4524:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4502:44:54"},"returnParameters":{"id":54119,"nodeType":"ParameterList","parameters":[],"src":"4555:0:54"},"scope":54157,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54128,"nodeType":"FunctionDefinition","src":"4910:100:54","nodes":[],"documentation":{"id":54121,"nodeType":"StructuredDocumentation","src":"4562:343:54","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:54","parameters":{"id":54124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54123,"mutability":"mutable","name":"_claimIndex","nameLocation":"4943:11:54","nodeType":"VariableDeclaration","scope":54128,"src":"4935:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54122,"name":"uint256","nodeType":"ElementaryTypeName","src":"4935:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4934:21:54"},"returnParameters":{"id":54127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54126,"mutability":"mutable","name":"numRemainingChildren_","nameLocation":"4987:21:54","nodeType":"VariableDeclaration","scope":54128,"src":"4979:29:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54125,"name":"uint256","nodeType":"ElementaryTypeName","src":"4979:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4978:31:54"},"scope":54157,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":54134,"nodeType":"FunctionDefinition","src":"5103:72:54","nodes":[],"documentation":{"id":54129,"nodeType":"StructuredDocumentation","src":"5016:82:54","text":"@notice The l2BlockNumber of the disputed output root in the `L2OutputOracle`."},"functionSelector":"8b85902b","implemented":false,"kind":"function","modifiers":[],"name":"l2BlockNumber","nameLocation":"5112:13:54","parameters":{"id":54130,"nodeType":"ParameterList","parameters":[],"src":"5125:2:54"},"returnParameters":{"id":54133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54132,"mutability":"mutable","name":"l2BlockNumber_","nameLocation":"5159:14:54","nodeType":"VariableDeclaration","scope":54134,"src":"5151:22:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54131,"name":"uint256","nodeType":"ElementaryTypeName","src":"5151:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5150:24:54"},"scope":54157,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":54143,"nodeType":"FunctionDefinition","src":"5248:97:54","nodes":[],"documentation":{"id":54135,"nodeType":"StructuredDocumentation","src":"5181:62:54","text":"@notice Starting output root and block number of the game."},"functionSelector":"57da950e","implemented":false,"kind":"function","modifiers":[],"name":"startingOutputRoot","nameLocation":"5257:18:54","parameters":{"id":54136,"nodeType":"ParameterList","parameters":[],"src":"5275:2:54"},"returnParameters":{"id":54142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54139,"mutability":"mutable","name":"startingRoot_","nameLocation":"5306:13:54","nodeType":"VariableDeclaration","scope":54143,"src":"5301:18:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Hash_$54802","typeString":"Hash"},"typeName":{"id":54138,"nodeType":"UserDefinedTypeName","pathNode":{"id":54137,"name":"Hash","nameLocations":["5301:4:54"],"nodeType":"IdentifierPath","referencedDeclaration":54802,"src":"5301:4:54"},"referencedDeclaration":54802,"src":"5301:4:54","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Hash_$54802","typeString":"Hash"}},"visibility":"internal"},{"constant":false,"id":54141,"mutability":"mutable","name":"l2BlockNumber_","nameLocation":"5329:14:54","nodeType":"VariableDeclaration","scope":54143,"src":"5321:22:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54140,"name":"uint256","nodeType":"ElementaryTypeName","src":"5321:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5300:44:54"},"scope":54157,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":54149,"nodeType":"FunctionDefinition","src":"5411:84:54","nodes":[],"documentation":{"id":54144,"nodeType":"StructuredDocumentation","src":"5351:55:54","text":"@notice Only the starting block number of the game."},"functionSelector":"70872aa5","implemented":false,"kind":"function","modifiers":[],"name":"startingBlockNumber","nameLocation":"5420:19:54","parameters":{"id":54145,"nodeType":"ParameterList","parameters":[],"src":"5439:2:54"},"returnParameters":{"id":54148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54147,"mutability":"mutable","name":"startingBlockNumber_","nameLocation":"5473:20:54","nodeType":"VariableDeclaration","scope":54149,"src":"5465:28:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54146,"name":"uint256","nodeType":"ElementaryTypeName","src":"5465:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5464:30:54"},"scope":54157,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":54156,"nodeType":"FunctionDefinition","src":"5560:75:54","nodes":[],"documentation":{"id":54150,"nodeType":"StructuredDocumentation","src":"5501:54:54","text":"@notice Only the starting output root of the game."},"functionSelector":"25fc2ace","implemented":false,"kind":"function","modifiers":[],"name":"startingRootHash","nameLocation":"5569:16:54","parameters":{"id":54151,"nodeType":"ParameterList","parameters":[],"src":"5585:2:54"},"returnParameters":{"id":54155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54154,"mutability":"mutable","name":"startingRootHash_","nameLocation":"5616:17:54","nodeType":"VariableDeclaration","scope":54156,"src":"5611:22:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Hash_$54802","typeString":"Hash"},"typeName":{"id":54153,"nodeType":"UserDefinedTypeName","pathNode":{"id":54152,"name":"Hash","nameLocations":["5611:4:54"],"nodeType":"IdentifierPath","referencedDeclaration":54802,"src":"5611:4:54"},"referencedDeclaration":54802,"src":"5611:4:54","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Hash_$54802","typeString":"Hash"}},"visibility":"internal"}],"src":"5610:24:54"},"scope":54157,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":54025,"name":"IDisputeGame","nameLocations":["271:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":53847,"src":"271:12:54"},"id":54026,"nodeType":"InheritanceSpecifier","src":"271:12:54"}],"canonicalName":"IFaultDisputeGame","contractDependencies":[],"contractKind":"interface","documentation":{"id":54024,"nodeType":"StructuredDocumentation","src":"146:94:54","text":"@title IFaultDisputeGame\n @notice The interface for a fault proof backed dispute game."},"fullyImplemented":false,"linearizedBaseContracts":[54157,53847,54165],"name":"IFaultDisputeGame","nameLocation":"250:17:54","scope":54158,"usedErrors":[],"usedEvents":[53773,54066]}],"license":"MIT"},"id":54}