{"abi":[{"type":"function","name":"create","inputs":[{"name":"_gameType","type":"uint32","internalType":"GameType"},{"name":"_rootClaim","type":"bytes32","internalType":"Claim"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"proxy_","type":"address","internalType":"contract IDisputeGame"}],"stateMutability":"payable"},{"type":"function","name":"findLatestGames","inputs":[{"name":"_gameType","type":"uint32","internalType":"GameType"},{"name":"_start","type":"uint256","internalType":"uint256"},{"name":"_n","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"games_","type":"tuple[]","internalType":"struct IDisputeGameFactory.GameSearchResult[]","components":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"metadata","type":"bytes32","internalType":"GameId"},{"name":"timestamp","type":"uint64","internalType":"Timestamp"},{"name":"rootClaim","type":"bytes32","internalType":"Claim"},{"name":"extraData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"view"},{"type":"function","name":"gameAtIndex","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"gameType_","type":"uint32","internalType":"GameType"},{"name":"timestamp_","type":"uint64","internalType":"Timestamp"},{"name":"proxy_","type":"address","internalType":"contract IDisputeGame"}],"stateMutability":"view"},{"type":"function","name":"gameCount","inputs":[],"outputs":[{"name":"gameCount_","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"gameImpls","inputs":[{"name":"_gameType","type":"uint32","internalType":"GameType"}],"outputs":[{"name":"impl_","type":"address","internalType":"contract IDisputeGame"}],"stateMutability":"view"},{"type":"function","name":"games","inputs":[{"name":"_gameType","type":"uint32","internalType":"GameType"},{"name":"_rootClaim","type":"bytes32","internalType":"Claim"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"proxy_","type":"address","internalType":"contract IDisputeGame"},{"name":"timestamp_","type":"uint64","internalType":"Timestamp"}],"stateMutability":"view"},{"type":"function","name":"getGameUUID","inputs":[{"name":"_gameType","type":"uint32","internalType":"GameType"},{"name":"_rootClaim","type":"bytes32","internalType":"Claim"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"uuid_","type":"bytes32","internalType":"Hash"}],"stateMutability":"pure"},{"type":"function","name":"initBonds","inputs":[{"name":"_gameType","type":"uint32","internalType":"GameType"}],"outputs":[{"name":"bond_","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setImplementation","inputs":[{"name":"_gameType","type":"uint32","internalType":"GameType"},{"name":"_impl","type":"address","internalType":"contract IDisputeGame"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setInitBond","inputs":[{"name":"_gameType","type":"uint32","internalType":"GameType"},{"name":"_initBond","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DisputeGameCreated","inputs":[{"name":"disputeProxy","type":"address","indexed":true,"internalType":"address"},{"name":"gameType","type":"uint32","indexed":true,"internalType":"GameType"},{"name":"rootClaim","type":"bytes32","indexed":true,"internalType":"Claim"}],"anonymous":false},{"type":"event","name":"ImplementationSet","inputs":[{"name":"impl","type":"address","indexed":true,"internalType":"address"},{"name":"gameType","type":"uint32","indexed":true,"internalType":"GameType"}],"anonymous":false},{"type":"event","name":"InitBondUpdated","inputs":[{"name":"gameType","type":"uint32","indexed":true,"internalType":"GameType"},{"name":"newBond","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"create(uint32,bytes32,bytes)":"82ecf2f6","findLatestGames(uint32,uint256,uint256)":"254bd683","gameAtIndex(uint256)":"bb8aa1fc","gameCount()":"4d1975b4","gameImpls(uint32)":"1b685b9e","games(uint32,bytes32,bytes)":"5f0150cb","getGameUUID(uint32,bytes32,bytes)":"96cd9720","initBonds(uint32)":"6593dc6e","setImplementation(uint32,address)":"14f6b1a3","setInitBond(uint32,uint256)":"1e334240"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputeProxy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"GameType\",\"name\":\"gameType\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"Claim\",\"name\":\"rootClaim\",\"type\":\"bytes32\"}],\"name\":\"DisputeGameCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"impl\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"GameType\",\"name\":\"gameType\",\"type\":\"uint32\"}],\"name\":\"ImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"GameType\",\"name\":\"gameType\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newBond\",\"type\":\"uint256\"}],\"name\":\"InitBondUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"Claim\",\"name\":\"_rootClaim\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"contract IDisputeGame\",\"name\":\"proxy_\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_n\",\"type\":\"uint256\"}],\"name\":\"findLatestGames\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"GameId\",\"name\":\"metadata\",\"type\":\"bytes32\"},{\"internalType\":\"Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Claim\",\"name\":\"rootClaim\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct IDisputeGameFactory.GameSearchResult[]\",\"name\":\"games_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"gameAtIndex\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint32\"},{\"internalType\":\"Timestamp\",\"name\":\"timestamp_\",\"type\":\"uint64\"},{\"internalType\":\"contract IDisputeGame\",\"name\":\"proxy_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gameCount_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"}],\"name\":\"gameImpls\",\"outputs\":[{\"internalType\":\"contract IDisputeGame\",\"name\":\"impl_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"Claim\",\"name\":\"_rootClaim\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"games\",\"outputs\":[{\"internalType\":\"contract IDisputeGame\",\"name\":\"proxy_\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"timestamp_\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"Claim\",\"name\":\"_rootClaim\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"getGameUUID\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"uuid_\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"}],\"name\":\"initBonds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bond_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"contract IDisputeGame\",\"name\":\"_impl\",\"type\":\"address\"}],\"name\":\"setImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_initBond\",\"type\":\"uint256\"}],\"name\":\"setInitBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DisputeGameCreated(address,uint32,bytes32)\":{\"params\":{\"disputeProxy\":\"The address of the dispute game proxy\",\"gameType\":\"The type of the dispute game proxy's implementation\",\"rootClaim\":\"The root claim of the dispute game\"}},\"ImplementationSet(address,uint32)\":{\"params\":{\"gameType\":\"The type of the DisputeGame.\",\"impl\":\"The implementation contract for the given `GameType`.\"}},\"InitBondUpdated(uint32,uint256)\":{\"params\":{\"gameType\":\"The type of the DisputeGame.\",\"newBond\":\"The new bond (in wei) for initializing the game type.\"}}},\"kind\":\"dev\",\"methods\":{\"create(uint32,bytes32,bytes)\":{\"params\":{\"_extraData\":\"Any extra data that should be provided to the created dispute game.\",\"_gameType\":\"The type of the DisputeGame - used to decide the proxy implementation.\",\"_rootClaim\":\"The root claim of the DisputeGame.\"},\"returns\":{\"proxy_\":\"The address of the created DisputeGame proxy.\"}},\"findLatestGames(uint32,uint256,uint256)\":{\"params\":{\"_gameType\":\"The type of game to find.\",\"_n\":\"The number of games to find.\",\"_start\":\"The index to start the reverse search from.\"}},\"gameAtIndex(uint256)\":{\"params\":{\"_index\":\"The index of the dispute game.\"},\"returns\":{\"gameType_\":\"The type of the DisputeGame - used to decide the proxy implementation.\",\"proxy_\":\"The clone of the `DisputeGame` created with the given parameters.         Returns `address(0)` if nonexistent.\",\"timestamp_\":\"The timestamp of the creation of the dispute game.\"}},\"gameCount()\":{\"returns\":{\"gameCount_\":\"The total number of dispute games created by this factory.\"}},\"gameImpls(uint32)\":{\"params\":{\"_gameType\":\"The type of the dispute game.\"},\"returns\":{\"impl_\":\"The address of the implementation of the game type.         Will be cloned on creation of a new dispute game with the given `gameType`.\"}},\"games(uint32,bytes32,bytes)\":{\"details\":\"`++` equates to concatenation.\",\"params\":{\"_extraData\":\"Any extra data that should be provided to the created dispute game.\",\"_gameType\":\"The type of the DisputeGame - used to decide the proxy implementation\",\"_rootClaim\":\"The root claim of the DisputeGame.\"},\"returns\":{\"proxy_\":\"The clone of the `DisputeGame` created with the given parameters.         Returns `address(0)` if nonexistent.\",\"timestamp_\":\"The timestamp of the creation of the dispute game.\"}},\"getGameUUID(uint32,bytes32,bytes)\":{\"details\":\"Hashes the concatenation of `gameType . rootClaim . extraData`      without expanding memory.\",\"params\":{\"_extraData\":\"Any extra data that should be provided to the created dispute game.\",\"_gameType\":\"The type of the DisputeGame.\",\"_rootClaim\":\"The root claim of the DisputeGame.\"},\"returns\":{\"uuid_\":\"The unique identifier for the given dispute game parameters.\"}},\"initBonds(uint32)\":{\"params\":{\"_gameType\":\"The type of the dispute game.\"},\"returns\":{\"bond_\":\"The required bond for initializing a dispute game of the given type.\"}},\"setImplementation(uint32,address)\":{\"details\":\"May only be called by the `owner`.\",\"params\":{\"_gameType\":\"The type of the DisputeGame.\",\"_impl\":\"The implementation contract for the given `GameType`.\"}},\"setInitBond(uint32,uint256)\":{\"details\":\"May only be called by the `owner`.\",\"params\":{\"_gameType\":\"The type of the DisputeGame.\",\"_initBond\":\"The bond (in wei) for initializing a game type.\"}}},\"title\":\"IDisputeGameFactory\",\"version\":1},\"userdoc\":{\"events\":{\"DisputeGameCreated(address,uint32,bytes32)\":{\"notice\":\"Emitted when a new dispute game is created\"},\"ImplementationSet(address,uint32)\":{\"notice\":\"Emitted when a new game implementation added to the factory\"},\"InitBondUpdated(uint32,uint256)\":{\"notice\":\"Emitted when a game type's initialization bond is updated\"}},\"kind\":\"user\",\"methods\":{\"create(uint32,bytes32,bytes)\":{\"notice\":\"Creates a new DisputeGame proxy contract.\"},\"findLatestGames(uint32,uint256,uint256)\":{\"notice\":\"Finds the `_n` most recent `GameId`'s of type `_gameType` starting at `_start`. If there are less than         `_n` games of type `_gameType` starting at `_start`, then the returned array will be shorter than `_n`.\"},\"gameAtIndex(uint256)\":{\"notice\":\"`gameAtIndex` returns the dispute game contract address and its creation timestamp          at the given index. Each created dispute game increments the underlying index.\"},\"gameCount()\":{\"notice\":\"The total number of dispute games created by this factory.\"},\"gameImpls(uint32)\":{\"notice\":\"`gameImpls` is a mapping that maps `GameType`s to their respective         `IDisputeGame` implementations.\"},\"games(uint32,bytes32,bytes)\":{\"notice\":\"`games` queries an internal mapping that maps the hash of         `gameType ++ rootClaim ++ extraData` to the deployed `DisputeGame` clone.\"},\"getGameUUID(uint32,bytes32,bytes)\":{\"notice\":\"Returns a unique identifier for the given dispute game parameters.\"},\"initBonds(uint32)\":{\"notice\":\"Returns the required bonds for initializing a dispute game of the given type.\"},\"setImplementation(uint32,address)\":{\"notice\":\"Sets the implementation contract for a specific `GameType`.\"},\"setInitBond(uint32,uint256)\":{\"notice\":\"Sets the bond (in wei) for initializing a game type.\"}},\"notice\":\"The interface for a DisputeGameFactory contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/optimism/packages/contracts-bedrock/src/dispute/interfaces/IDisputeGameFactory.sol\":\"IDisputeGameFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[\":@eth-optimism/=lib/optimism/packages/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":optimism/=lib/optimism/packages/contracts-bedrock/src/\"]},\"sources\":{\"lib/optimism/packages/contracts-bedrock/src/dispute/interfaces/IDisputeGame.sol\":{\"keccak256\":\"0xfabc680b99d0e656a208119df3601fa61bbd2a798c149089ab289cf0f677ba05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c008c758227da25effbcd1a060b1b79f8adbeffcbd140666c78057000ad50f97\",\"dweb:/ipfs/QmdGZZnRyvAaNrzhS5pscMojTHA6Bqq7NkjVnSZQvaPXvH\"]},\"lib/optimism/packages/contracts-bedrock/src/dispute/interfaces/IDisputeGameFactory.sol\":{\"keccak256\":\"0x17030641a75ed50aaa88bbf7301f0f2402dbfdca37cd369f35be6e8f5951c009\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4e7e6c138f94e983735891acc033d7bdd8433cf6c7afce9d044db57b3b2d4bd\",\"dweb:/ipfs/QmZL6rd27uvEuYTv8tJbPxcBEzgn2DNqJFgofjsnxD7ENq\"]},\"lib/optimism/packages/contracts-bedrock/src/dispute/interfaces/IInitializable.sol\":{\"keccak256\":\"0xbc553af6501a972850a98fc6284943f8e95a5183a7b4f64198c16fca2338c9dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1f1c422ce4a9e72f0bbdec36434206da4af3a32d38f922acab957942e994ce5\",\"dweb:/ipfs/QmNQGWBceLxx1CKSMLfwTM584q8UCgUpF4rrFe8pdbWYtj\"]},\"lib/optimism/packages/contracts-bedrock/src/dispute/lib/LibPosition.sol\":{\"keccak256\":\"0x7c5f19f8f54f06de2ce1c6cdcc5c7af65ac405130a4066cdaf146ca315818241\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06905e5ede94784e32748ad60557cb0b0829089d65430518e7042b80d2f64e2d\",\"dweb:/ipfs/QmeGKMmnFnow2VrRvTSPavCrToqQ3qDpEaR1tVoK6Hzg8K\"]},\"lib/optimism/packages/contracts-bedrock/src/dispute/lib/LibUDT.sol\":{\"keccak256\":\"0x42374bbf9719c77590bb714606815d84ae68359a9c1d5548f5db2b2b0605c532\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e314fb8e9fe3d25826d9feb06d7892271fb5d4a76f0afaa58abf268906937c\",\"dweb:/ipfs/QmUQEgcsF8FgtvJjwfb6v11CTiDoHRBRPCTZowbWyFmzs9\"]},\"lib/optimism/packages/contracts-bedrock/src/dispute/lib/Types.sol\":{\"keccak256\":\"0x77055883c8fd1e211db2dedab91b9a83fc611374912f08709bef98dd93e160c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d392e6d4a7d1827da35aa12f426855e355617cd17f5f0298a5165e7ba53a8238\",\"dweb:/ipfs/QmSfbZxeRoFRyEyuu8bSV1SVH9k5K5M95gMQnKYY2jWfec\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"disputeProxy","type":"address","indexed":true},{"internalType":"GameType","name":"gameType","type":"uint32","indexed":true},{"internalType":"Claim","name":"rootClaim","type":"bytes32","indexed":true}],"type":"event","name":"DisputeGameCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"impl","type":"address","indexed":true},{"internalType":"GameType","name":"gameType","type":"uint32","indexed":true}],"type":"event","name":"ImplementationSet","anonymous":false},{"inputs":[{"internalType":"GameType","name":"gameType","type":"uint32","indexed":true},{"internalType":"uint256","name":"newBond","type":"uint256","indexed":true}],"type":"event","name":"InitBondUpdated","anonymous":false},{"inputs":[{"internalType":"GameType","name":"_gameType","type":"uint32"},{"internalType":"Claim","name":"_rootClaim","type":"bytes32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"create","outputs":[{"internalType":"contract IDisputeGame","name":"proxy_","type":"address"}]},{"inputs":[{"internalType":"GameType","name":"_gameType","type":"uint32"},{"internalType":"uint256","name":"_start","type":"uint256"},{"internalType":"uint256","name":"_n","type":"uint256"}],"stateMutability":"view","type":"function","name":"findLatestGames","outputs":[{"internalType":"struct IDisputeGameFactory.GameSearchResult[]","name":"games_","type":"tuple[]","components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"GameId","name":"metadata","type":"bytes32"},{"internalType":"Timestamp","name":"timestamp","type":"uint64"},{"internalType":"Claim","name":"rootClaim","type":"bytes32"},{"internalType":"bytes","name":"extraData","type":"bytes"}]}]},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"gameAtIndex","outputs":[{"internalType":"GameType","name":"gameType_","type":"uint32"},{"internalType":"Timestamp","name":"timestamp_","type":"uint64"},{"internalType":"contract IDisputeGame","name":"proxy_","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"gameCount","outputs":[{"internalType":"uint256","name":"gameCount_","type":"uint256"}]},{"inputs":[{"internalType":"GameType","name":"_gameType","type":"uint32"}],"stateMutability":"view","type":"function","name":"gameImpls","outputs":[{"internalType":"contract IDisputeGame","name":"impl_","type":"address"}]},{"inputs":[{"internalType":"GameType","name":"_gameType","type":"uint32"},{"internalType":"Claim","name":"_rootClaim","type":"bytes32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"view","type":"function","name":"games","outputs":[{"internalType":"contract IDisputeGame","name":"proxy_","type":"address"},{"internalType":"Timestamp","name":"timestamp_","type":"uint64"}]},{"inputs":[{"internalType":"GameType","name":"_gameType","type":"uint32"},{"internalType":"Claim","name":"_rootClaim","type":"bytes32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"pure","type":"function","name":"getGameUUID","outputs":[{"internalType":"Hash","name":"uuid_","type":"bytes32"}]},{"inputs":[{"internalType":"GameType","name":"_gameType","type":"uint32"}],"stateMutability":"view","type":"function","name":"initBonds","outputs":[{"internalType":"uint256","name":"bond_","type":"uint256"}]},{"inputs":[{"internalType":"GameType","name":"_gameType","type":"uint32"},{"internalType":"contract IDisputeGame","name":"_impl","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setImplementation"},{"inputs":[{"internalType":"GameType","name":"_gameType","type":"uint32"},{"internalType":"uint256","name":"_initBond","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setInitBond"}],"devdoc":{"kind":"dev","methods":{"create(uint32,bytes32,bytes)":{"params":{"_extraData":"Any extra data that should be provided to the created dispute game.","_gameType":"The type of the DisputeGame - used to decide the proxy implementation.","_rootClaim":"The root claim of the DisputeGame."},"returns":{"proxy_":"The address of the created DisputeGame proxy."}},"findLatestGames(uint32,uint256,uint256)":{"params":{"_gameType":"The type of game to find.","_n":"The number of games to find.","_start":"The index to start the reverse search from."}},"gameAtIndex(uint256)":{"params":{"_index":"The index of the dispute game."},"returns":{"gameType_":"The type of the DisputeGame - used to decide the proxy implementation.","proxy_":"The clone of the `DisputeGame` created with the given parameters.         Returns `address(0)` if nonexistent.","timestamp_":"The timestamp of the creation of the dispute game."}},"gameCount()":{"returns":{"gameCount_":"The total number of dispute games created by this factory."}},"gameImpls(uint32)":{"params":{"_gameType":"The type of the dispute game."},"returns":{"impl_":"The address of the implementation of the game type.         Will be cloned on creation of a new dispute game with the given `gameType`."}},"games(uint32,bytes32,bytes)":{"details":"`++` equates to concatenation.","params":{"_extraData":"Any extra data that should be provided to the created dispute game.","_gameType":"The type of the DisputeGame - used to decide the proxy implementation","_rootClaim":"The root claim of the DisputeGame."},"returns":{"proxy_":"The clone of the `DisputeGame` created with the given parameters.         Returns `address(0)` if nonexistent.","timestamp_":"The timestamp of the creation of the dispute game."}},"getGameUUID(uint32,bytes32,bytes)":{"details":"Hashes the concatenation of `gameType . rootClaim . extraData`      without expanding memory.","params":{"_extraData":"Any extra data that should be provided to the created dispute game.","_gameType":"The type of the DisputeGame.","_rootClaim":"The root claim of the DisputeGame."},"returns":{"uuid_":"The unique identifier for the given dispute game parameters."}},"initBonds(uint32)":{"params":{"_gameType":"The type of the dispute game."},"returns":{"bond_":"The required bond for initializing a dispute game of the given type."}},"setImplementation(uint32,address)":{"details":"May only be called by the `owner`.","params":{"_gameType":"The type of the DisputeGame.","_impl":"The implementation contract for the given `GameType`."}},"setInitBond(uint32,uint256)":{"details":"May only be called by the `owner`.","params":{"_gameType":"The type of the DisputeGame.","_initBond":"The bond (in wei) for initializing a game type."}}},"version":1},"userdoc":{"kind":"user","methods":{"create(uint32,bytes32,bytes)":{"notice":"Creates a new DisputeGame proxy contract."},"findLatestGames(uint32,uint256,uint256)":{"notice":"Finds the `_n` most recent `GameId`'s of type `_gameType` starting at `_start`. If there are less than         `_n` games of type `_gameType` starting at `_start`, then the returned array will be shorter than `_n`."},"gameAtIndex(uint256)":{"notice":"`gameAtIndex` returns the dispute game contract address and its creation timestamp          at the given index. Each created dispute game increments the underlying index."},"gameCount()":{"notice":"The total number of dispute games created by this factory."},"gameImpls(uint32)":{"notice":"`gameImpls` is a mapping that maps `GameType`s to their respective         `IDisputeGame` implementations."},"games(uint32,bytes32,bytes)":{"notice":"`games` queries an internal mapping that maps the hash of         `gameType ++ rootClaim ++ extraData` to the deployed `DisputeGame` clone."},"getGameUUID(uint32,bytes32,bytes)":{"notice":"Returns a unique identifier for the given dispute game parameters."},"initBonds(uint32)":{"notice":"Returns the required bonds for initializing a dispute game of the given type."},"setImplementation(uint32,address)":{"notice":"Sets the implementation contract for a specific `GameType`."},"setInitBond(uint32,uint256)":{"notice":"Sets the bond (in wei) for initializing a game type."}},"version":1}},"settings":{"remappings":["@eth-optimism/=lib/optimism/packages/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","optimism/=lib/optimism/packages/contracts-bedrock/src/"],"optimizer":{"enabled":true,"runs":1},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/optimism/packages/contracts-bedrock/src/dispute/interfaces/IDisputeGameFactory.sol":"IDisputeGameFactory"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/optimism/packages/contracts-bedrock/src/dispute/interfaces/IDisputeGame.sol":{"keccak256":"0xfabc680b99d0e656a208119df3601fa61bbd2a798c149089ab289cf0f677ba05","urls":["bzz-raw://c008c758227da25effbcd1a060b1b79f8adbeffcbd140666c78057000ad50f97","dweb:/ipfs/QmdGZZnRyvAaNrzhS5pscMojTHA6Bqq7NkjVnSZQvaPXvH"],"license":"MIT"},"lib/optimism/packages/contracts-bedrock/src/dispute/interfaces/IDisputeGameFactory.sol":{"keccak256":"0x17030641a75ed50aaa88bbf7301f0f2402dbfdca37cd369f35be6e8f5951c009","urls":["bzz-raw://f4e7e6c138f94e983735891acc033d7bdd8433cf6c7afce9d044db57b3b2d4bd","dweb:/ipfs/QmZL6rd27uvEuYTv8tJbPxcBEzgn2DNqJFgofjsnxD7ENq"],"license":"MIT"},"lib/optimism/packages/contracts-bedrock/src/dispute/interfaces/IInitializable.sol":{"keccak256":"0xbc553af6501a972850a98fc6284943f8e95a5183a7b4f64198c16fca2338c9dc","urls":["bzz-raw://b1f1c422ce4a9e72f0bbdec36434206da4af3a32d38f922acab957942e994ce5","dweb:/ipfs/QmNQGWBceLxx1CKSMLfwTM584q8UCgUpF4rrFe8pdbWYtj"],"license":"MIT"},"lib/optimism/packages/contracts-bedrock/src/dispute/lib/LibPosition.sol":{"keccak256":"0x7c5f19f8f54f06de2ce1c6cdcc5c7af65ac405130a4066cdaf146ca315818241","urls":["bzz-raw://06905e5ede94784e32748ad60557cb0b0829089d65430518e7042b80d2f64e2d","dweb:/ipfs/QmeGKMmnFnow2VrRvTSPavCrToqQ3qDpEaR1tVoK6Hzg8K"],"license":"MIT"},"lib/optimism/packages/contracts-bedrock/src/dispute/lib/LibUDT.sol":{"keccak256":"0x42374bbf9719c77590bb714606815d84ae68359a9c1d5548f5db2b2b0605c532","urls":["bzz-raw://39e314fb8e9fe3d25826d9feb06d7892271fb5d4a76f0afaa58abf268906937c","dweb:/ipfs/QmUQEgcsF8FgtvJjwfb6v11CTiDoHRBRPCTZowbWyFmzs9"],"license":"MIT"},"lib/optimism/packages/contracts-bedrock/src/dispute/lib/Types.sol":{"keccak256":"0x77055883c8fd1e211db2dedab91b9a83fc611374912f08709bef98dd93e160c7","urls":["bzz-raw://d392e6d4a7d1827da35aa12f426855e355617cd17f5f0298a5165e7ba53a8238","dweb:/ipfs/QmSfbZxeRoFRyEyuu8bSV1SVH9k5K5M95gMQnKYY2jWfec"],"license":"MIT"}},"version":1},"id":53}