/**
 * Mini-game types and registry for couch/online mini-game collections.
 */
export interface PlayerSlot {
    index: number;
    name: string;
    color: string;
    input: InputSource;
    joined: boolean;
    ready: boolean;
    profilePlayerId?: number;
}
export type InputSource = {
    type: "keyboard";
    group: number;
} | {
    type: "gamepad";
    padIndex: number;
} | {
    type: "remote";
    windowId: string;
};
export declare const MINI_PLAYER_COLORS: readonly ["#e74c3c", "#3498db", "#2ecc71", "#f1c40f", "#9b59b6", "#e67e22", "#1abc9c", "#e91e63"];
export declare const MINI_PLAYER_NAMES: readonly ["Player 1", "Player 2", "Player 3", "Player 4", "Player 5", "Player 6", "Player 7", "Player 8"];
export type Dir = {
    dx: number;
    dy: number;
};
export declare const DIR_UP: Dir;
export declare const DIR_DOWN: Dir;
export declare const DIR_LEFT: Dir;
export declare const DIR_RIGHT: Dir;
export interface KeyboardGroup {
    up: string;
    down: string;
    left: string;
    right: string;
    action: string;
}
export declare const KEYBOARD_GROUPS: KeyboardGroup[];
export interface MiniGameMeta {
    id: string;
    title: string;
    description: string;
    minPlayers: number;
    maxPlayers: number;
    icon: string;
    /** Optional tags for filtering (genre, difficulty, etc.) */
    tags?: string[];
}
export type MiniGameConfig = Record<string, unknown>;
/**
 * GameRegistry — typed registry of available mini-games.
 *
 * Call `registry.register(meta)` to add games.
 * Call `registry.all()` or `registry.find(id)` to query.
 */
export declare class GameRegistry {
    private games;
    register(meta: MiniGameMeta): void;
    registerAll(metas: MiniGameMeta[]): void;
    unregister(id: string): void;
    find(id: string): MiniGameMeta | undefined;
    all(): MiniGameMeta[];
    filter(predicate: (m: MiniGameMeta) => boolean): MiniGameMeta[];
    /** Games that support the given player count. */
    forPlayerCount(n: number): MiniGameMeta[];
}
/** Default singleton registry */
export declare const gameRegistry: GameRegistry;
