export interface MinigameCollectionConfig { maxPlayers: number; roundsPerGame: number; minigameTimeLimit: number; transitionDuration: number; selectionMode: 'random' | 'vote' | 'sequential'; scoreMode: 'points' | 'stars' | 'coins'; bonusRound: boolean; bonusEveryNRounds: number; tiebreaker: boolean; } export declare const DEFAULT_MINIGAME_COLLECTION_CONFIG: MinigameCollectionConfig; export type MinigameType = 'ffa' | 'teams' | '1v3' | '2v2' | 'duel' | 'coop'; export interface MinigameDef { id: string; name: string; description: string; type: MinigameType; duration: number; minPlayers: number; maxPlayers: number; rules: string; winCondition: 'last_standing' | 'high_score' | 'first_to_goal' | 'time_trial'; } export interface MinigameCollectionState { currentRound: number; players: MinigamePlayer[]; currentMinigame: MinigameDef | null; phase: 'lobby' | 'selection' | 'playing' | 'results' | 'final'; history: Array<{ minigameId: string; winners: string[]; }>; } export interface MinigamePlayer { id: string; name: string; score: number; stars: number; wins: number; connected: boolean; } export declare function createMinigameCollectionState(players: Array<{ id: string; name: string; }>): MinigameCollectionState; export declare function awardPoints(state: MinigameCollectionState, rankings: Array<{ playerId: string; position: number; }>, basePoints?: number): void; export interface QuizConfig { questionsPerRound: number; timePerQuestion: number; answerOptions: number; scoreForCorrect: number; bonusForSpeed: boolean; streakBonus: number; maxPlayers: number; categoryCount: number; lifelines: QuizLifeline[]; } export type QuizLifeline = '50/50' | 'skip' | 'extra_time' | 'ask_audience' | 'double_points'; export declare const DEFAULT_QUIZ_CONFIG: QuizConfig; export interface QuizQuestion { id: string; category: string; question: string; answers: string[]; correctIndex: number; difficulty: number; imageId?: string; explanation?: string; } export interface QuizState { currentQuestion: number; scores: Map; streaks: Map; answers: Map; lifelinesUsed: Map>; phase: 'waiting' | 'question' | 'reveal' | 'scoreboard' | 'finished'; timer: number; } export declare function createQuizState(playerIds: string[]): QuizState; export declare function scoreQuizAnswer(state: QuizState, playerId: string, answerIndex: number, correctIndex: number, timeRemaining: number, config: QuizConfig): number; export interface BoardGameConfig { boardType: 'linear' | 'grid' | 'hex' | 'custom'; spaceCount: number; diceCount: number; diceSides: number; maxPlayers: number; turnOrder: 'clockwise' | 'counterclockwise' | 'random'; startSpace: number; winCondition: 'reach_end' | 'most_points' | 'last_standing' | 'collect_all'; eventSpaces: boolean; shopSpaces: boolean; branchPaths: boolean; } export declare const DEFAULT_BOARD_GAME_CONFIG: BoardGameConfig; export type BoardSpaceType = 'normal' | 'event' | 'shop' | 'minigame' | 'bonus' | 'penalty' | 'start' | 'finish'; export interface BoardSpace { index: number; type: BoardSpaceType; label: string; nextSpaces: number[]; effect?: string; } export interface BoardGameState { currentTurn: number; currentPlayer: number; players: Array<{ id: string; name: string; position: number; score: number; coins: number; items: string[]; skippedTurns: number; }>; diceResult: number[]; phase: 'roll' | 'move' | 'event' | 'shop' | 'end_turn' | 'game_over'; } export declare function rollDice(count: number, sides: number): number[]; export declare function createBoardGameState(playerInfos: Array<{ id: string; name: string; }>, config: BoardGameConfig): BoardGameState; export interface ReactionGameConfig { type: 'speed_tap' | 'color_match' | 'simon_says' | 'whack_a_mole' | 'quick_draw'; roundCount: number; roundDuration: number; minReactionTime: number; targetCount: number; decoyChance: number; penaltyForDecoy: number; targetShowDuration: number; speedIncrease: number; maxPlayers: number; } export declare const DEFAULT_REACTION_CONFIG: ReactionGameConfig; export interface ReactionState { round: number; scores: Map; reactionTimes: Map; currentTargets: Array<{ id: number; x: number; y: number; isDecoy: boolean; showTime: number; }>; phase: 'waiting' | 'ready' | 'go' | 'results'; nextTargetId: number; } export declare function createReactionState(playerIds: string[]): ReactionState; export declare function getAverageReactionTime(state: ReactionState, playerId: string): number; export interface DrawingGameConfig { roundDuration: number; maxPlayers: number; roundsPerPlayer: number; hintInterval: number; maxHints: number; canvasWidth: number; canvasHeight: number; brushColors: string[]; brushSizes: number[]; categories: string[]; pointsForGuess: number; pointsForDrawer: number; bonusForSpeed: boolean; } export declare const DEFAULT_DRAWING_CONFIG: DrawingGameConfig; export interface DrawingStroke { points: Array<{ x: number; y: number; }>; color: string; size: number; tool: 'brush' | 'eraser' | 'fill'; } export interface DrawingGameState { currentDrawer: string; currentWord: string; hint: string; hintsGiven: number; timer: number; strokes: DrawingStroke[]; scores: Map; guessedPlayers: Set; round: number; phase: 'choosing' | 'drawing' | 'reveal' | 'finished'; } export declare function createDrawingState(playerIds: string[]): DrawingGameState; export declare function generateHint(word: string, hintsGiven: number): string; export declare function checkGuess(guess: string, word: string): boolean;