@tokamak-network/thanos-contracts
Version:
1 lines • 41.3 kB
JSON
{"abi":[{"type":"function","name":"createdAt","inputs":[],"outputs":[{"name":"createdAt_","type":"uint64","internalType":"Timestamp"}],"stateMutability":"view"},{"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":"initialize","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"l1Head","inputs":[],"outputs":[{"name":"l1Head_","type":"bytes32","internalType":"Hash"}],"stateMutability":"pure"},{"type":"function","name":"resolve","inputs":[],"outputs":[{"name":"status_","type":"uint8","internalType":"enum GameStatus"}],"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":"status","inputs":[],"outputs":[{"name":"status_","type":"uint8","internalType":"enum GameStatus"}],"stateMutability":"view"},{"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":{"createdAt()":"cf09e0d0","extraData()":"609d3334","gameCreator()":"37b1b229","gameData()":"fa24f743","gameType()":"bbdc02db","initialize()":"8129fc1c","l1Head()":"6361506d","resolve()":"2810e1d6","resolvedAt()":"19effeb4","rootClaim()":"bcef3b55","status()":"200d2ed2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enum GameStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Resolved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"createdAt\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"createdAt_\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"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\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Head\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"l1Head_\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"enum GameStatus\",\"name\":\"status_\",\"type\":\"uint8\"}],\"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\":\"status\",\"outputs\":[{\"internalType\":\"enum GameStatus\",\"name\":\"status_\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Resolved(uint8)\":{\"params\":{\"status\":\"The status of the game after resolution.\"}}},\"kind\":\"dev\",\"methods\":{\"createdAt()\":{\"returns\":{\"createdAt_\":\"The timestamp that the DisputeGame contract was created at.\"}},\"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.\"}},\"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.\"}},\"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.\"}}},\"title\":\"IDisputeGame\",\"version\":1},\"userdoc\":{\"events\":{\"Resolved(uint8)\":{\"notice\":\"Emitted when the game is resolved.\"}},\"kind\":\"user\",\"methods\":{\"createdAt()\":{\"notice\":\"Returns the timestamp that the DisputeGame contract was created at.\"},\"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.\"},\"initialize()\":{\"notice\":\"Initializes the contract.\"},\"l1Head()\":{\"notice\":\"Getter for the parent hash of the L1 block when the dispute game was created.\"},\"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.\"},\"resolvedAt()\":{\"notice\":\"Returns the timestamp that the DisputeGame contract was resolved at.\"},\"rootClaim()\":{\"notice\":\"Getter for the root claim.\"},\"status()\":{\"notice\":\"Returns the current status of the game.\"}},\"notice\":\"The generic interface for a DisputeGame contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/dispute/interfaces/IDisputeGame.sol\":\"IDisputeGame\"},\"evmVersion\":\"shanghai\",\"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/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.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"enum GameStatus","name":"status","type":"uint8","indexed":true}],"type":"event","name":"Resolved","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"createdAt","outputs":[{"internalType":"Timestamp","name":"createdAt_","type":"uint64"}]},{"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":[],"stateMutability":"payable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"pure","type":"function","name":"l1Head","outputs":[{"internalType":"Hash","name":"l1Head_","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resolve","outputs":[{"internalType":"enum GameStatus","name":"status_","type":"uint8"}]},{"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":"status","outputs":[{"internalType":"enum GameStatus","name":"status_","type":"uint8"}]}],"devdoc":{"kind":"dev","methods":{"createdAt()":{"returns":{"createdAt_":"The timestamp that the DisputeGame contract was created at."}},"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."}},"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."}},"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."}}},"version":1},"userdoc":{"kind":"user","methods":{"createdAt()":{"notice":"Returns the timestamp that the DisputeGame contract was created at."},"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."},"initialize()":{"notice":"Initializes the contract."},"l1Head()":{"notice":"Getter for the parent hash of the L1 block when the dispute game was created."},"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."},"resolvedAt()":{"notice":"Returns the timestamp that the DisputeGame contract was resolved at."},"rootClaim()":{"notice":"Getter for the root claim."},"status()":{"notice":"Returns the current status of the game."}},"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/IDisputeGame.sol":"IDisputeGame"},"evmVersion":"shanghai","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/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":{"createdAt()":{"notice":"Returns the timestamp that the DisputeGame contract was created at."},"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."},"initialize()":{"notice":"Initializes the contract."},"l1Head()":{"notice":"Getter for the parent hash of the L1 block when the dispute game was created."},"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."},"resolvedAt()":{"notice":"Returns the timestamp that the DisputeGame contract was resolved at."},"rootClaim()":{"notice":"Getter for the root claim."},"status()":{"notice":"Returns the current status of the game."}},"events":{"Resolved(uint8)":{"notice":"Emitted when the game is resolved."}},"notice":"The generic interface for a DisputeGame contract."},"devdoc":{"version":1,"kind":"dev","methods":{"createdAt()":{"returns":{"createdAt_":"The timestamp that the DisputeGame contract was created at."}},"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."}},"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."}},"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."}}},"events":{"Resolved(uint8)":{"params":{"status":"The status of the game after resolution."}}},"title":"IDisputeGame"},"ast":{"absolutePath":"src/dispute/interfaces/IDisputeGame.sol","id":53329,"exportedSymbols":{"Claim":[53686],"Clock":[53594],"Duration":[53718],"GameId":[53648],"GameStatus":[53799],"GameType":[53778],"GameTypes":[53848],"Hash":[53733],"IDisputeGame":[53328],"IInitializable":[53336],"LibClaim":[53716],"LibClock":[53646],"LibDuration":[53731],"LibGameId":[53684],"LibGameType":[53791],"LibHash":[53746],"LibPosition":[53557],"LibTimestamp":[53761],"LibVMStatus":[53776],"LocalPreimageKey":[53904],"OutputRoot":[53806],"Position":[53344],"Timestamp":[53748],"VMStatus":[53763],"VMStatuses":[53882]},"nodeType":"SourceUnit","src":"32:3650:67","nodes":[{"id":53242,"nodeType":"PragmaDirective","src":"32:23:67","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":53244,"nodeType":"ImportDirective","src":"57:75:67","nodes":[],"absolutePath":"src/dispute/interfaces/IInitializable.sol","file":"src/dispute/interfaces/IInitializable.sol","nameLocation":"-1:-1:-1","scope":53329,"sourceUnit":53337,"symbolAliases":[{"foreign":{"id":53243,"name":"IInitializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53336,"src":"66:14:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":53245,"nodeType":"ImportDirective","src":"134:35:67","nodes":[],"absolutePath":"src/dispute/lib/Types.sol","file":"src/dispute/lib/Types.sol","nameLocation":"-1:-1:-1","scope":53329,"sourceUnit":53905,"symbolAliases":[],"unitAlias":""},{"id":53328,"nodeType":"ContractDefinition","src":"257:3424:67","nodes":[{"id":53254,"nodeType":"EventDefinition","src":"418:42:67","nodes":[],"anonymous":false,"documentation":{"id":53249,"nodeType":"StructuredDocumentation","src":"304:109:67","text":"@notice Emitted when the game is resolved.\n @param status The status of the game after resolution."},"eventSelector":"5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da60","name":"Resolved","nameLocation":"424:8:67","parameters":{"id":53253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53252,"indexed":true,"mutability":"mutable","name":"status","nameLocation":"452:6:67","nodeType":"VariableDeclaration","scope":53254,"src":"433:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_GameStatus_$53799","typeString":"enum GameStatus"},"typeName":{"id":53251,"nodeType":"UserDefinedTypeName","pathNode":{"id":53250,"name":"GameStatus","nameLocations":["433:10:67"],"nodeType":"IdentifierPath","referencedDeclaration":53799,"src":"433:10:67"},"referencedDeclaration":53799,"src":"433:10:67","typeDescriptions":{"typeIdentifier":"t_enum$_GameStatus_$53799","typeString":"enum GameStatus"}},"visibility":"internal"}],"src":"432:27:67"}},{"id":53261,"nodeType":"FunctionDefinition","src":"637:66:67","nodes":[],"documentation":{"id":53255,"nodeType":"StructuredDocumentation","src":"466:166:67","text":"@notice Returns the timestamp that the DisputeGame contract was created at.\n @return createdAt_ The timestamp that the DisputeGame contract was created at."},"functionSelector":"cf09e0d0","implemented":false,"kind":"function","modifiers":[],"name":"createdAt","nameLocation":"646:9:67","parameters":{"id":53256,"nodeType":"ParameterList","parameters":[],"src":"655:2:67"},"returnParameters":{"id":53260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53259,"mutability":"mutable","name":"createdAt_","nameLocation":"691:10:67","nodeType":"VariableDeclaration","scope":53261,"src":"681:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Timestamp_$53748","typeString":"Timestamp"},"typeName":{"id":53258,"nodeType":"UserDefinedTypeName","pathNode":{"id":53257,"name":"Timestamp","nameLocations":["681:9:67"],"nodeType":"IdentifierPath","referencedDeclaration":53748,"src":"681:9:67"},"referencedDeclaration":53748,"src":"681:9:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Timestamp_$53748","typeString":"Timestamp"}},"visibility":"internal"}],"src":"680:22:67"},"scope":53328,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":53268,"nodeType":"FunctionDefinition","src":"883:68:67","nodes":[],"documentation":{"id":53262,"nodeType":"StructuredDocumentation","src":"709:169:67","text":"@notice Returns the timestamp that the DisputeGame contract was resolved at.\n @return resolvedAt_ The timestamp that the DisputeGame contract was resolved at."},"functionSelector":"19effeb4","implemented":false,"kind":"function","modifiers":[],"name":"resolvedAt","nameLocation":"892:10:67","parameters":{"id":53263,"nodeType":"ParameterList","parameters":[],"src":"902:2:67"},"returnParameters":{"id":53267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53266,"mutability":"mutable","name":"resolvedAt_","nameLocation":"938:11:67","nodeType":"VariableDeclaration","scope":53268,"src":"928:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Timestamp_$53748","typeString":"Timestamp"},"typeName":{"id":53265,"nodeType":"UserDefinedTypeName","pathNode":{"id":53264,"name":"Timestamp","nameLocations":["928:9:67"],"nodeType":"IdentifierPath","referencedDeclaration":53748,"src":"928:9:67"},"referencedDeclaration":53748,"src":"928:9:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Timestamp_$53748","typeString":"Timestamp"}},"visibility":"internal"}],"src":"927:23:67"},"scope":53328,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":53275,"nodeType":"FunctionDefinition","src":"1069:61:67","nodes":[],"documentation":{"id":53269,"nodeType":"StructuredDocumentation","src":"957:107:67","text":"@notice Returns the current status of the game.\n @return status_ The current status of the game."},"functionSelector":"200d2ed2","implemented":false,"kind":"function","modifiers":[],"name":"status","nameLocation":"1078:6:67","parameters":{"id":53270,"nodeType":"ParameterList","parameters":[],"src":"1084:2:67"},"returnParameters":{"id":53274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53273,"mutability":"mutable","name":"status_","nameLocation":"1121:7:67","nodeType":"VariableDeclaration","scope":53275,"src":"1110:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_GameStatus_$53799","typeString":"enum GameStatus"},"typeName":{"id":53272,"nodeType":"UserDefinedTypeName","pathNode":{"id":53271,"name":"GameStatus","nameLocations":["1110:10:67"],"nodeType":"IdentifierPath","referencedDeclaration":53799,"src":"1110:10:67"},"referencedDeclaration":53799,"src":"1110:10:67","typeDescriptions":{"typeIdentifier":"t_enum$_GameStatus_$53799","typeString":"enum GameStatus"}},"visibility":"internal"}],"src":"1109:20:67"},"scope":53328,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":53282,"nodeType":"FunctionDefinition","src":"1410:63:67","nodes":[],"documentation":{"id":53276,"nodeType":"StructuredDocumentation","src":"1136:269:67","text":"@notice Getter for the game type.\n @dev The reference impl should be entirely different depending on the type (fault, validity)\n i.e. The game type should indicate the security model.\n @return gameType_ The type of proof system being used."},"functionSelector":"bbdc02db","implemented":false,"kind":"function","modifiers":[],"name":"gameType","nameLocation":"1419:8:67","parameters":{"id":53277,"nodeType":"ParameterList","parameters":[],"src":"1427:2:67"},"returnParameters":{"id":53281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53280,"mutability":"mutable","name":"gameType_","nameLocation":"1462:9:67","nodeType":"VariableDeclaration","scope":53282,"src":"1453:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_GameType_$53778","typeString":"GameType"},"typeName":{"id":53279,"nodeType":"UserDefinedTypeName","pathNode":{"id":53278,"name":"GameType","nameLocations":["1453:8:67"],"nodeType":"IdentifierPath","referencedDeclaration":53778,"src":"1453:8:67"},"referencedDeclaration":53778,"src":"1453:8:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_GameType_$53778","typeString":"GameType"}},"visibility":"internal"}],"src":"1452:20:67"},"scope":53328,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":53288,"nodeType":"FunctionDefinition","src":"1651:64:67","nodes":[],"documentation":{"id":53283,"nodeType":"StructuredDocumentation","src":"1479:167:67","text":"@notice Getter for the creator of the dispute game.\n @dev `clones-with-immutable-args` argument #1\n @return creator_ The creator of the dispute game."},"functionSelector":"37b1b229","implemented":false,"kind":"function","modifiers":[],"name":"gameCreator","nameLocation":"1660:11:67","parameters":{"id":53284,"nodeType":"ParameterList","parameters":[],"src":"1671:2:67"},"returnParameters":{"id":53287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53286,"mutability":"mutable","name":"creator_","nameLocation":"1705:8:67","nodeType":"VariableDeclaration","scope":53288,"src":"1697:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53285,"name":"address","nodeType":"ElementaryTypeName","src":"1697:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1696:18:67"},"scope":53328,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":53295,"nodeType":"FunctionDefinition","src":"1880:62:67","nodes":[],"documentation":{"id":53289,"nodeType":"StructuredDocumentation","src":"1721:154:67","text":"@notice Getter for the root claim.\n @dev `clones-with-immutable-args` argument #2\n @return rootClaim_ The root claim of the DisputeGame."},"functionSelector":"bcef3b55","implemented":false,"kind":"function","modifiers":[],"name":"rootClaim","nameLocation":"1889:9:67","parameters":{"id":53290,"nodeType":"ParameterList","parameters":[],"src":"1898:2:67"},"returnParameters":{"id":53294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53293,"mutability":"mutable","name":"rootClaim_","nameLocation":"1930:10:67","nodeType":"VariableDeclaration","scope":53295,"src":"1924:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$53686","typeString":"Claim"},"typeName":{"id":53292,"nodeType":"UserDefinedTypeName","pathNode":{"id":53291,"name":"Claim","nameLocations":["1924:5:67"],"nodeType":"IdentifierPath","referencedDeclaration":53686,"src":"1924:5:67"},"referencedDeclaration":53686,"src":"1924:5:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$53686","typeString":"Claim"}},"visibility":"internal"}],"src":"1923:18:67"},"scope":53328,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":53302,"nodeType":"FunctionDefinition","src":"2187:55:67","nodes":[],"documentation":{"id":53296,"nodeType":"StructuredDocumentation","src":"1948:234:67","text":"@notice Getter for the parent hash of the L1 block when the dispute game was created.\n @dev `clones-with-immutable-args` argument #3\n @return l1Head_ The parent hash of the L1 block when the dispute game was created."},"functionSelector":"6361506d","implemented":false,"kind":"function","modifiers":[],"name":"l1Head","nameLocation":"2196:6:67","parameters":{"id":53297,"nodeType":"ParameterList","parameters":[],"src":"2202:2:67"},"returnParameters":{"id":53301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53300,"mutability":"mutable","name":"l1Head_","nameLocation":"2233:7:67","nodeType":"VariableDeclaration","scope":53302,"src":"2228:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Hash_$53733","typeString":"Hash"},"typeName":{"id":53299,"nodeType":"UserDefinedTypeName","pathNode":{"id":53298,"name":"Hash","nameLocations":["2228:4:67"],"nodeType":"IdentifierPath","referencedDeclaration":53733,"src":"2228:4:67"},"referencedDeclaration":53733,"src":"2228:4:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Hash_$53733","typeString":"Hash"}},"visibility":"internal"}],"src":"2227:14:67"},"scope":53328,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":53308,"nodeType":"FunctionDefinition","src":"2441:69:67","nodes":[],"documentation":{"id":53303,"nodeType":"StructuredDocumentation","src":"2248:188:67","text":"@notice Getter for the extra data.\n @dev `clones-with-immutable-args` argument #4\n @return extraData_ Any extra data supplied to the dispute game contract by the creator."},"functionSelector":"609d3334","implemented":false,"kind":"function","modifiers":[],"name":"extraData","nameLocation":"2450:9:67","parameters":{"id":53304,"nodeType":"ParameterList","parameters":[],"src":"2459:2:67"},"returnParameters":{"id":53307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53306,"mutability":"mutable","name":"extraData_","nameLocation":"2498:10:67","nodeType":"VariableDeclaration","scope":53308,"src":"2485:23:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":53305,"name":"bytes","nodeType":"ElementaryTypeName","src":"2485:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2484:25:67"},"scope":53328,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":53315,"nodeType":"FunctionDefinition","src":"2971:57:67","nodes":[],"documentation":{"id":53309,"nodeType":"StructuredDocumentation","src":"2516:450:67","text":"@notice If all necessary information has been gathered, this function should mark the game\n status as either `CHALLENGER_WINS` or `DEFENDER_WINS` and return the status of\n the resolved game. It is at this stage that the bonds should be awarded to the\n necessary parties.\n @dev May only be called if the `status` is `IN_PROGRESS`.\n @return status_ The status of the game after resolution."},"functionSelector":"2810e1d6","implemented":false,"kind":"function","modifiers":[],"name":"resolve","nameLocation":"2980:7:67","parameters":{"id":53310,"nodeType":"ParameterList","parameters":[],"src":"2987:2:67"},"returnParameters":{"id":53314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53313,"mutability":"mutable","name":"status_","nameLocation":"3019:7:67","nodeType":"VariableDeclaration","scope":53315,"src":"3008:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_GameStatus_$53799","typeString":"enum GameStatus"},"typeName":{"id":53312,"nodeType":"UserDefinedTypeName","pathNode":{"id":53311,"name":"GameStatus","nameLocations":["3008:10:67"],"nodeType":"IdentifierPath","referencedDeclaration":53799,"src":"3008:10:67"},"referencedDeclaration":53799,"src":"3008:10:67","typeDescriptions":{"typeIdentifier":"t_enum$_GameStatus_$53799","typeString":"enum GameStatus"}},"visibility":"internal"}],"src":"3007:20:67"},"scope":53328,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":53327,"nodeType":"FunctionDefinition","src":"3573:106:67","nodes":[],"documentation":{"id":53316,"nodeType":"StructuredDocumentation","src":"3034:534:67","text":"@notice A compliant implementation of this interface should return the components of the\n game UUID's preimage provided in the cwia payload. The preimage of the UUID is\n constructed as `keccak256(gameType . rootClaim . extraData)` where `.` denotes\n concatenation.\n @return gameType_ The type of proof system being used.\n @return rootClaim_ The root claim of the DisputeGame.\n @return extraData_ Any extra data supplied to the dispute game contract by the creator."},"functionSelector":"fa24f743","implemented":false,"kind":"function","modifiers":[],"name":"gameData","nameLocation":"3582:8:67","parameters":{"id":53317,"nodeType":"ParameterList","parameters":[],"src":"3590:2:67"},"returnParameters":{"id":53326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53320,"mutability":"mutable","name":"gameType_","nameLocation":"3625:9:67","nodeType":"VariableDeclaration","scope":53327,"src":"3616:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_GameType_$53778","typeString":"GameType"},"typeName":{"id":53319,"nodeType":"UserDefinedTypeName","pathNode":{"id":53318,"name":"GameType","nameLocations":["3616:8:67"],"nodeType":"IdentifierPath","referencedDeclaration":53778,"src":"3616:8:67"},"referencedDeclaration":53778,"src":"3616:8:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_GameType_$53778","typeString":"GameType"}},"visibility":"internal"},{"constant":false,"id":53323,"mutability":"mutable","name":"rootClaim_","nameLocation":"3642:10:67","nodeType":"VariableDeclaration","scope":53327,"src":"3636:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$53686","typeString":"Claim"},"typeName":{"id":53322,"nodeType":"UserDefinedTypeName","pathNode":{"id":53321,"name":"Claim","nameLocations":["3636:5:67"],"nodeType":"IdentifierPath","referencedDeclaration":53686,"src":"3636:5:67"},"referencedDeclaration":53686,"src":"3636:5:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Claim_$53686","typeString":"Claim"}},"visibility":"internal"},{"constant":false,"id":53325,"mutability":"mutable","name":"extraData_","nameLocation":"3667:10:67","nodeType":"VariableDeclaration","scope":53327,"src":"3654:23:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":53324,"name":"bytes","nodeType":"ElementaryTypeName","src":"3654:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3615:63:67"},"scope":53328,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":53247,"name":"IInitializable","nameLocations":["283:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":53336,"src":"283:14:67"},"id":53248,"nodeType":"InheritanceSpecifier","src":"283:14:67"}],"canonicalName":"IDisputeGame","contractDependencies":[],"contractKind":"interface","documentation":{"id":53246,"nodeType":"StructuredDocumentation","src":"171:86:67","text":"@title IDisputeGame\n @notice The generic interface for a DisputeGame contract."},"fullyImplemented":false,"linearizedBaseContracts":[53328,53336],"name":"IDisputeGame","nameLocation":"267:12:67","scope":53329,"usedErrors":[],"usedEvents":[53254]}],"license":"MIT"},"id":67}