import { type GameDefinition } from '../core/gameDefinition' import { type GameEvent } from '../core/gameEvent' import { type GameResult } from '../core/gameResult' import { type GameSessionState } from '../core/gameSessionState' export interface RulePlugin { readonly mode: GameDefinition['mode'] initialize(definition: GameDefinition): GameSessionState buildPresentation(definition: GameDefinition, state: GameSessionState): GameResult['presentation'] reduce(definition: GameDefinition, state: GameSessionState, event: GameEvent): GameResult }