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<string, number>;
    streaks: Map<string, number>;
    answers: Map<string, number | null>;
    lifelinesUsed: Map<string, Set<string>>;
    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<string, number>;
    reactionTimes: Map<string, number[]>;
    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<string, number>;
    guessedPlayers: Set<string>;
    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;
