/**
 * @fileoverview Game Flow - Screen router for game/session flows
 * @description Handles routing, lazy loading, and preloading of game screens
 * @package @donotdev/ui
 * @version 0.0.1
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
import { type ComponentType, type ReactNode } from 'react';
/**
 * Screen registry type - maps screen names to lazy import functions
 */
export type ScreenRegistry = Record<string, () => Promise<{
    default: ComponentType<any>;
}>>;
/**
 * GameFlow props
 */
export interface GameFlowProps {
    /** Registry mapping screen names to lazy import functions */
    screenRegistry: ScreenRegistry;
    /** Current screen name to render */
    currentScreen: string | null;
    /** Next screen name for preloading (optional) */
    nextScreen?: string | null;
    /** Fallback component for Suspense (optional) */
    fallback?: ReactNode;
}
/**
 * GameFlow - Screen router for game/session flows
 *
 * Handles:
 * - Routing to correct screen component based on currentScreen
 * - Lazy loading of screen components
 * - Preloading of nextScreen for instant transitions
 * - h-full wrapper for proper layout filling
 * - Suspense boundaries for loading states
 *
 * @param {GameFlowProps} props - Component props
 * @param {ScreenRegistry} props.screenRegistry - Registry of screen lazy imports
 * @param {string | null} props.currentScreen - Current screen name to render
 * @param {string | null} [props.nextScreen] - Next screen name for preloading
 * @param {ReactNode} [props.fallback] - Fallback component for Suspense
 * @returns {JSX.Element | null} GameFlow component
 *
 * @example
 * ```tsx
 * <GameFlow
 * screenRegistry={screenRegistry}
 * currentScreen={currentScreen}
 * nextScreen={nextScreen}
 * fallback={<Spinner overlay />}
 * />
 * ```
 *
 * @version 0.0.1
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function GameFlow({ screenRegistry, currentScreen, nextScreen, fallback, }: GameFlowProps): import("react/jsx-runtime").JSX.Element | null;
//# sourceMappingURL=GameFlow.d.ts.map