Contract reference / ABI
ShookTicTacToe
Complete compiled interface, including inherited methods.
Constructor 1
nonpayableconstructor(address, address, address, uint64, uint64, uint256, uint256)
{
"type": "constructor",
"inputs": [
{
"name": "shook_",
"type": "address",
"internalType": "contract IERC20"
},
{
"name": "coordinator_",
"type": "address",
"internalType": "contract ShookRandomnessCoordinator"
},
{
"name": "feeRouter_",
"type": "address",
"internalType": "contract IShookGameFeeRouter"
},
{
"name": "lobbyDuration_",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "randomnessSafetyDelay_",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "minimumWager_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maximumWager_",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
}Functions 44
viewapplyMove((uint256,uint32,uint32,uint8,address,uint8,bytes32), uint8)
{
"type": "function",
"name": "applyMove",
"inputs": [
{
"name": "previous",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "cell",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [
{
"name": "nextState",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
}
],
"stateMutability": "view"
}viewBPS()
{
"type": "function",
"name": "BPS",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
}nonpayablecancelUnjoinedGame(uint256)
{
"type": "function",
"name": "cancelUnjoinedGame",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}nonpayablecancelUnstartedGame(uint256)
{
"type": "function",
"name": "cancelUnstartedGame",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}purecellAt(uint32, uint8)
{
"type": "function",
"name": "cellAt",
"inputs": [
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "cell",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "pure"
}nonpayablechallengeSettlement(uint256, (uint256,uint32,uint32,uint8,address,uint8,bytes32), bytes, bytes)
{
"type": "function",
"name": "challengeSettlement",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "terminal",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "signatureA",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "signatureB",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}nonpayableclaimRefund(uint256, address)
{
"type": "function",
"name": "claimRefund",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
}nonpayableclaimTimeout(uint256)
{
"type": "function",
"name": "claimTimeout",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}nonpayableclaimWinnings(uint256, address)
{
"type": "function",
"name": "claimWinnings",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
}viewcoordinator()
{
"type": "function",
"name": "coordinator",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract ShookRandomnessCoordinator"
}
],
"stateMutability": "view"
}nonpayablecreateGame(bytes32, address, uint256)
{
"type": "function",
"name": "createGame",
"inputs": [
{
"name": "name",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "sessionSigner",
"type": "address",
"internalType": "address"
},
{
"name": "wager",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
}viewdisputeStates(uint256)
{
"type": "function",
"name": "disputeStates",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
}vieweip712Domain()
{
"type": "function",
"name": "eip712Domain",
"inputs": [],
"outputs": [
{
"name": "fields",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "version",
"type": "string",
"internalType": "string"
},
{
"name": "chainId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "verifyingContract",
"type": "address",
"internalType": "address"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "extensions",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"stateMutability": "view"
}viewfeeRouter()
{
"type": "function",
"name": "feeRouter",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IShookGameFeeRouter"
}
],
"stateMutability": "view"
}nonpayablefinalizeEquivocation(uint256)
{
"type": "function",
"name": "finalizeEquivocation",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}nonpayablefinalizeSettlement(uint256)
{
"type": "function",
"name": "finalizeSettlement",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}viewgames(uint256)
{
"type": "function",
"name": "games",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "id",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "name",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "playerA",
"type": "address",
"internalType": "address"
},
{
"name": "playerB",
"type": "address",
"internalType": "address"
},
{
"name": "signerA",
"type": "address",
"internalType": "address"
},
{
"name": "signerB",
"type": "address",
"internalType": "address"
},
{
"name": "wager",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "joinDeadline",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "targetRound",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "startDeadline",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "responseDeadline",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "pendingSequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "status",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Status"
},
{
"name": "starter",
"type": "address",
"internalType": "address"
},
{
"name": "winner",
"type": "address",
"internalType": "address"
},
{
"name": "winnerPayout",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "pendingStateHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "finalOutcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "winningsClaimed",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
}viewgetDisputeState(uint256)
{
"type": "function",
"name": "getDisputeState",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
}
],
"stateMutability": "view"
}viewgetGame(uint256)
{
"type": "function",
"name": "getGame",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.Game",
"components": [
{
"name": "id",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "name",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "playerA",
"type": "address",
"internalType": "address"
},
{
"name": "playerB",
"type": "address",
"internalType": "address"
},
{
"name": "signerA",
"type": "address",
"internalType": "address"
},
{
"name": "signerB",
"type": "address",
"internalType": "address"
},
{
"name": "wager",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "joinDeadline",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "targetRound",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "startDeadline",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "responseDeadline",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "pendingSequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "status",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Status"
},
{
"name": "starter",
"type": "address",
"internalType": "address"
},
{
"name": "winner",
"type": "address",
"internalType": "address"
},
{
"name": "winnerPayout",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "pendingStateHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "finalOutcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "winningsClaimed",
"type": "bool",
"internalType": "bool"
}
]
}
],
"stateMutability": "view"
}viewhashResignation(uint256, address)
{
"type": "function",
"name": "hashResignation",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "player",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
}viewhashState((uint256,uint32,uint32,uint8,address,uint8,bytes32))
{
"type": "function",
"name": "hashState",
"inputs": [
{
"name": "state",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
}viewinitialState(uint256)
{
"type": "function",
"name": "initialState",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "state",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
}
],
"stateMutability": "view"
}nonpayablejoinGame(uint256, address)
{
"type": "function",
"name": "joinGame",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sessionSigner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}viewlobbyDuration()
{
"type": "function",
"name": "lobbyDuration",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
}viewmaximumWager()
{
"type": "function",
"name": "maximumWager",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
}viewminimumWager()
{
"type": "function",
"name": "minimumWager",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
}viewnextGameId()
{
"type": "function",
"name": "nextGameId",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
}viewONCHAIN_RESPONSE_PERIOD()
{
"type": "function",
"name": "ONCHAIN_RESPONSE_PERIOD",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
}nonpayableopenDispute(uint256, (uint256,uint32,uint32,uint8,address,uint8,bytes32), bytes, bytes)
{
"type": "function",
"name": "openDispute",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "checkpoint",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "signatureA",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "signatureB",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}nonpayableproposeTerminalSettlement(uint256, (uint256,uint32,uint32,uint8,address,uint8,bytes32), bytes, bytes, (uint256,uint32,uint32,uint8,address,uint8,bytes32), bytes)
{
"type": "function",
"name": "proposeTerminalSettlement",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "checkpoint",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "checkpointSignatureA",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "checkpointSignatureB",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "terminal",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "moverSignature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}nonpayableproveEquivocation(uint256, address, (uint256,uint32,uint32,uint8,address,uint8,bytes32), bytes, (uint256,uint32,uint32,uint8,address,uint8,bytes32), bytes)
{
"type": "function",
"name": "proveEquivocation",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "offender",
"type": "address",
"internalType": "address"
},
{
"name": "first",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "firstSignature",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "second",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "secondSignature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}viewrandomnessSafetyDelay()
{
"type": "function",
"name": "randomnessSafetyDelay",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
}viewrefundClaimed(uint256, address)
{
"type": "function",
"name": "refundClaimed",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "player",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "claimed",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
}viewRESIGN_TYPEHASH()
{
"type": "function",
"name": "RESIGN_TYPEHASH",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
}nonpayableresign(uint256)
{
"type": "function",
"name": "resign",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}nonpayableresignWithSignature(uint256, address, bytes)
{
"type": "function",
"name": "resignWithSignature",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "player",
"type": "address",
"internalType": "address"
},
{
"name": "signature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}nonpayablesettleCooperative(uint256, (uint256,uint32,uint32,uint8,address,uint8,bytes32), bytes, bytes)
{
"type": "function",
"name": "settleCooperative",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "terminal",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "signatureA",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "signatureB",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}viewshook()
{
"type": "function",
"name": "shook",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC20"
}
],
"stateMutability": "view"
}viewSTART_RANDOMNESS_DOMAIN()
{
"type": "function",
"name": "START_RANDOMNESS_DOMAIN",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
}nonpayablestart(uint256)
{
"type": "function",
"name": "start",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "starter",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
}nonpayablestartWithSignature(uint256, bytes)
{
"type": "function",
"name": "startWithSignature",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "drandSignature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "starter",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
}viewSTATE_TYPEHASH()
{
"type": "function",
"name": "STATE_TYPEHASH",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
}nonpayablesubmitDisputeMove(uint256, (uint256,uint32,uint32,uint8,address,uint8,bytes32), bytes)
{
"type": "function",
"name": "submitDisputeMove",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "nextState",
"type": "tuple",
"internalType": "struct ShookTurnBasedGame.GameState",
"components": [
{
"name": "gameId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "board",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "lastCell",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "nextPlayer",
"type": "address",
"internalType": "address"
},
{
"name": "outcome",
"type": "uint8",
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "parentHash",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "moverSignature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}viewTOTAL_FEE_BPS()
{
"type": "function",
"name": "TOTAL_FEE_BPS",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
}Events 13
eventDisputeMoveAccepted(uint256, uint32, address, bytes32, uint64)
{
"type": "event",
"name": "DisputeMoveAccepted",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"indexed": true,
"internalType": "uint32"
},
{
"name": "mover",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "stateHash",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
},
{
"name": "responseDeadline",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
}eventDisputeOpened(uint256, uint32, address, uint64)
{
"type": "event",
"name": "DisputeOpened",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"indexed": true,
"internalType": "uint32"
},
{
"name": "nextPlayer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "responseDeadline",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
}eventEIP712DomainChanged()
{
"type": "event",
"name": "EIP712DomainChanged",
"inputs": [],
"anonymous": false
}eventEquivocationProposed(uint256, address, address, uint32, uint64)
{
"type": "event",
"name": "EquivocationProposed",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "offender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "winner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "sequence",
"type": "uint32",
"indexed": false,
"internalType": "uint32"
},
{
"name": "responseDeadline",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
}eventGameCancelled(uint256)
{
"type": "event",
"name": "GameCancelled",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
}eventGameCreated(uint256, address, address, bytes32, uint256, uint64)
{
"type": "event",
"name": "GameCreated",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "creator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "sessionSigner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "name",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
},
{
"name": "wager",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "joinDeadline",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
}eventGameJoined(uint256, address, address, uint64, uint64)
{
"type": "event",
"name": "GameJoined",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "opponent",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "sessionSigner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "targetRound",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
},
{
"name": "startDeadline",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
}eventGameSettled(uint256, uint8, address, uint256, bytes32)
{
"type": "event",
"name": "GameSettled",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "outcome",
"type": "uint8",
"indexed": true,
"internalType": "enum ShookTurnBasedGame.Outcome"
},
{
"name": "winner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "winnerPayout",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "finalStateHash",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
}
],
"anonymous": false
}eventGameStarted(uint256, address, bytes32)
{
"type": "event",
"name": "GameStarted",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "starter",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "seed",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
}
],
"anonymous": false
}eventPlayerResigned(uint256, address)
{
"type": "event",
"name": "PlayerResigned",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "player",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
}eventRefundClaimed(uint256, address, address, uint256)
{
"type": "event",
"name": "RefundClaimed",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "player",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "receiver",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
}eventTerminalSettlementProposed(uint256, uint32, address, bytes32, uint64)
{
"type": "event",
"name": "TerminalSettlementProposed",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "sequence",
"type": "uint32",
"indexed": true,
"internalType": "uint32"
},
{
"name": "winner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "stateHash",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
},
{
"name": "responseDeadline",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
}eventWinningsClaimed(uint256, address, address, uint256)
{
"type": "event",
"name": "WinningsClaimed",
"inputs": [
{
"name": "gameId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "winner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "receiver",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
}Errors 26
errorInvalidConfiguration()
{
"type": "error",
"name": "InvalidConfiguration",
"inputs": []
}errorInvalidGame()
{
"type": "error",
"name": "InvalidGame",
"inputs": []
}errorInvalidName()
{
"type": "error",
"name": "InvalidName",
"inputs": []
}errorInvalidSessionSigner()
{
"type": "error",
"name": "InvalidSessionSigner",
"inputs": []
}errorInvalidShortString()
{
"type": "error",
"name": "InvalidShortString",
"inputs": []
}errorInvalidSignature()
{
"type": "error",
"name": "InvalidSignature",
"inputs": []
}errorInvalidState()
{
"type": "error",
"name": "InvalidState",
"inputs": []
}errorInvalidStatus()
{
"type": "error",
"name": "InvalidStatus",
"inputs": []
}errorInvalidTransition()
{
"type": "error",
"name": "InvalidTransition",
"inputs": []
}errorInvalidWager()
{
"type": "error",
"name": "InvalidWager",
"inputs": []
}errorLobbyClosed()
{
"type": "error",
"name": "LobbyClosed",
"inputs": []
}errorLobbyStillOpen()
{
"type": "error",
"name": "LobbyStillOpen",
"inputs": []
}errorNoEquivocation()
{
"type": "error",
"name": "NoEquivocation",
"inputs": []
}errorNothingToClaim()
{
"type": "error",
"name": "NothingToClaim",
"inputs": []
}errorNotOngoing()
{
"type": "error",
"name": "NotOngoing",
"inputs": []
}errorNotPlayer()
{
"type": "error",
"name": "NotPlayer",
"inputs": []
}errorNotTerminal()
{
"type": "error",
"name": "NotTerminal",
"inputs": []
}errorNotWinner()
{
"type": "error",
"name": "NotWinner",
"inputs": []
}errorRandomnessWindowClosed()
{
"type": "error",
"name": "RandomnessWindowClosed",
"inputs": []
}errorReentrancyGuardReentrantCall()
{
"type": "error",
"name": "ReentrancyGuardReentrantCall",
"inputs": []
}errorResponseWindowClosed()
{
"type": "error",
"name": "ResponseWindowClosed",
"inputs": []
}errorResponseWindowOpen()
{
"type": "error",
"name": "ResponseWindowOpen",
"inputs": []
}errorSafeCastOverflowedUintDowncast(uint8, uint256)
{
"type": "error",
"name": "SafeCastOverflowedUintDowncast",
"inputs": [
{
"name": "bits",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
]
}errorSafeERC20FailedOperation(address)
{
"type": "error",
"name": "SafeERC20FailedOperation",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
}errorStringTooLong(string)
{
"type": "error",
"name": "StringTooLong",
"inputs": [
{
"name": "str",
"type": "string",
"internalType": "string"
}
]
}errorZeroAddress()
{
"type": "error",
"name": "ZeroAddress",
"inputs": []
}Source and provenance
Imported source files 26
Supporting contracts, interfaces, and libraries imported by the sources above, including their dependencies.
Source fingerprint: 3bd3d956c6f288981dec6d4461fdc153ced375792324983f9c7e5bdd67656a31. Download manifest.