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
 * <NavigationProvider
 *   store={store}
 *   eventController={eventController}
 *   initialPayload={payload}
 *   bridge={navigationBridge}
 * />
 * ```
 */
export declare function NavigationProvider({ store, eventController, initialPayload, bridge, themeConfig, initialTheme, warmupEnabled, }: NavigationProviderProps): ReactNode;
//# sourceMappingURL=NavigationProvider.d.ts.map