export interface Match3Config { columns: number; rows: number; gemTypes: number; minMatch: number; swapDuration: number; fallSpeed: number; scorePerGem: number; comboMultiplier: number; movesLimit: number; timeLimit: number; powerUpThreshold: number; } export declare const DEFAULT_MATCH3_CONFIG: Match3Config; export type GemType = number; export interface Match3Board { cols: number; rows: number; cells: GemType[]; } export declare function createMatch3Board(config: Match3Config): Match3Board; export declare function findMatches(board: Match3Board, minMatch: number): number[]; export declare function removeMatches(board: Match3Board, indices: number[]): void; export declare function applyGravity(board: Match3Board, config: Match3Config): void; export declare function swapGems(board: Match3Board, idx1: number, idx2: number): void; export interface BlockPuzzleConfig { columns: number; rows: number; fallInterval: number; lockDelay: number; softDropMultiplier: number; hardDrop: boolean; holdPiece: boolean; previewCount: number; lineScores: number[]; levelSpeedFactor: number; linesPerLevel: number; } export declare const DEFAULT_BLOCK_PUZZLE_CONFIG: BlockPuzzleConfig; /** Standard tetrominoes as 4×4 bitmask rotations. */ export declare const TETROMINOES: Record; export interface BlockPuzzleState { board: number[]; currentPiece: string; currentRotation: number; pieceX: number; pieceY: number; score: number; level: number; lines: number; heldPiece: string | null; preview: string[]; gameOver: boolean; } export declare function createBlockPuzzleState(config: BlockPuzzleConfig): BlockPuzzleState; export declare function checkLines(board: number[], cols: number, rows: number): number[]; export declare function clearLines(board: number[], cols: number, lineRows: number[]): void; export interface PhysicsPuzzleConfig { gravity: number; maxObjects: number; goalType: 'reach' | 'destroy' | 'collect' | 'balance'; starThresholds: [number, number, number]; hintDelay: number; undoSteps: number; } export declare const DEFAULT_PHYSICS_PUZZLE_CONFIG: PhysicsPuzzleConfig; export interface PuzzleLevelDef { id: string; name: string; goalType: PhysicsPuzzleConfig['goalType']; targetScore: number; availableObjects: string[]; maxPlacements: number; } export interface HiddenObjectConfig { timeLimit: number; hintCooldown: number; penaltyPerMisclick: number; zoomEnabled: boolean; maxZoom: number; scorePerFind: number; bonusTimePerFind: number; } export declare const DEFAULT_HIDDEN_OBJECT_CONFIG: HiddenObjectConfig; export interface HiddenObjectDef { id: string; name: string; x: number; y: number; width: number; height: number; found: boolean; } export interface HiddenObjectLevel { sceneImage: string; objects: HiddenObjectDef[]; } export interface CardDef { id: string; name: string; suit?: string; rank?: number; value: number; imageId: string; properties: Record; } export interface DeckConfig { cards: CardDef[]; shuffled: boolean; maxHandSize: number; drawCount: number; } export declare class Deck { private cards; private discardPile; constructor(config: DeckConfig); shuffle(): void; draw(): CardDef | null; drawMultiple(count: number): CardDef[]; discard(card: CardDef): void; reshuffleDiscard(): void; remaining(): number; discarded(): number; peek(count?: number): CardDef[]; } /** Create a standard 52-card deck. */ export declare function createStandardDeck(): CardDef[];