import { type ReactNode } from "react"; import type { NavigationStore, RscPayload, NavigationBridge } from "../types.js"; import type { EventController } from "../event-controller.js"; import type { ResolvedThemeConfig, Theme } from "../../theme/types.js"; /** * Props for NavigationProvider */ export interface NavigationProviderProps { /** * Navigation store instance (for cache/segment management) */ store: NavigationStore; /** * Event controller instance (for navigation/action state) */ eventController: EventController; /** * Initial RSC payload from server */ initialPayload: RscPayload; /** * Navigation bridge for handling navigation */ bridge: NavigationBridge; /** * Theme configuration (null if theme not enabled) * When provided, wraps content in ThemeProvider */ themeConfig?: ResolvedThemeConfig | null; /** * Initial theme from server (from cookie) * Only used when themeConfig is provided */ initialTheme?: Theme; /** * Whether connection warmup is enabled. * When true, keeps TLS alive by sending HEAD requests after idle periods. */ warmupEnabled?: boolean; } /** * Navigation provider component * * Provides navigation context to the component tree and handles: * - Providing stable store and event controller references (never re-renders consumers) * - Subscribing to UI updates to re-render the tree * - Providing navigate/refresh methods (delegated to bridge) * * State subscriptions happen via useNavigation hook (via event controller), not via context. * This means context consumers don't re-render on state changes. * * @example * ```tsx * * ``` */ export declare function NavigationProvider({ store, eventController, initialPayload, bridge, themeConfig, initialTheme, warmupEnabled, }: NavigationProviderProps): ReactNode; //# sourceMappingURL=NavigationProvider.d.ts.map