import { default as React, ComponentType, ReactNode, LazyExoticComponent } from 'react'; /** * Module loader function type */ export type ModuleLoader = () => Promise<{ default: T; } | T>; /** * Component module loader */ export type ComponentLoader

= () => Promise<{ default: ComponentType

; }>; /** * Module load result */ export interface ModuleLoadResult { /** Loaded module or component */ readonly module: T | null; /** Whether module is loading */ readonly isLoading: boolean; /** Load error if any */ readonly error: Error | null; /** Whether the flag-enabled module was loaded */ readonly isEnabledVariant: boolean; /** Reload the module */ reload(): void; } /** * Flagged module configuration */ export interface FlaggedModuleConfig { /** Feature flag key */ readonly flagKey: string; /** Module to load when flag is enabled */ readonly enabledModule: ModuleLoader; /** Module to load when flag is disabled (optional) */ readonly fallbackModule?: ModuleLoader; /** Default value if no fallback */ readonly defaultValue?: T; /** Timeout for module loading (ms) */ readonly timeout?: number; /** Retry configuration */ readonly retry?: { attempts: number; delay: number; }; /** Flag value getter */ readonly getFlag?: (flagKey: string) => boolean; /** Preload on mount even if flag is disabled */ readonly preload?: boolean; /** Cache loaded modules */ readonly cache?: boolean; } /** * Flagged component props */ export interface FlaggedComponentProps

> { /** Feature flag key */ readonly flagKey: string; /** Component to load when flag is enabled */ readonly enabledComponent: ComponentLoader

; /** Component to render when flag is disabled */ readonly fallbackComponent?: ComponentType

; /** Props to pass to the component */ readonly componentProps?: P; /** Loading fallback */ readonly loadingFallback?: ReactNode; /** Error fallback */ readonly errorFallback?: ReactNode | ((error: Error) => ReactNode); /** Flag value getter */ readonly getFlag?: (flagKey: string) => boolean; } /** * Module preload configuration */ export interface ModulePreloadConfig { /** Module to preload */ readonly module: ModuleLoader; /** Associated flag key */ readonly flagKey?: string; /** Preload priority */ readonly priority?: 'high' | 'low' | 'idle'; /** Delay before preloading (ms) */ readonly delay?: number; } /** * Clear module cache */ export declare function clearModuleCache(): void; /** * Get module cache stats */ export declare function getModuleCacheStats(): { size: number; entries: { key: string; loadedAt: number; flagEnabled: boolean; }[]; }; /** * Hook to load a module based on feature flag state * * @example * ```typescript * const { module: Chart, isLoading } = useFeatureFlaggedModule({ * flagKey: 'new-charts', * enabledModule: () => import('./charts/NewChart'), * fallbackModule: () => import('./charts/OldChart'), * }); * ``` */ export declare function useFeatureFlaggedModule(config: FlaggedModuleConfig): ModuleLoadResult; /** * Hook to create a lazy component based on feature flag */ export declare function useFlaggedLazyComponent

>(config: Omit>, 'defaultValue'>): { Component: LazyExoticComponent> | null; isEnabledVariant: boolean; }; /** * Component that loads and renders a flagged module */ export declare function FlaggedModuleLoader

= Record>({ flagKey, enabledComponent, fallbackComponent: FallbackComponent, componentProps, loadingFallback, errorFallback, getFlag, }: FlaggedComponentProps

): React.JSX.Element | null; /** * Suspense-enabled flagged component loader */ export declare function SuspenseFlaggedLoader

= Record>({ flagKey, enabledComponent, fallbackComponent, componentProps, loadingFallback, getFlag, }: Omit, 'errorFallback'>): React.JSX.Element; /** * Create a flagged component that auto-loads based on flag state */ export declare function createFlaggedComponent

= Record>(config: { flagKey: string; enabledComponent: ComponentLoader

; fallbackComponent?: ComponentType

; loadingFallback?: ReactNode; getFlag?: (flagKey: string) => boolean; }): ComponentType

; /** * Create multiple flagged components from a configuration object */ export declare function createFlaggedComponents>(config: { components: TComponents; fallbacks?: Partial>; loadingFallback?: ReactNode; getFlag?: (flagKey: string) => boolean; }): { [K in keyof TComponents]: ComponentType; }; /** * Preload a module in idle time */ export declare function preloadModule(config: ModulePreloadConfig): () => void; /** * Preload multiple modules */ export declare function preloadModules(configs: ModulePreloadConfig[]): () => void; /** * Create a preload link for a module */ export declare function createModulePreloadLink(moduleUrl: string): HTMLLinkElement; /** * Configuration for route-based flagged loading */ export interface FlaggedRouteModuleConfig { /** Route path pattern */ readonly path: string; /** Feature flag key */ readonly flagKey: string; /** Module to load when flag is enabled */ readonly enabledModule: ModuleLoader; /** Module to load when flag is disabled */ readonly fallbackModule: ModuleLoader; } /** * Create route loaders that respect feature flags */ export declare function createFlaggedRouteLoaders(routes: FlaggedRouteModuleConfig[], getFlag: (flagKey: string) => boolean): Map Promise>;