import type { BrowserMetadata, RuntimeWebConfig } from '../../runtime-web/types';
/**
 * Browser execution pipeline for Runtime Web Core.
 *
 * @todo: ordinate this class to infra or core cause we have Node.js responsibility
 *      ---- OR –> REMOVE LOGGER
 *
 * **ARCHITECTURE NOTE**: This file is in `src/lib/` because it:
 * - Uses browser-only APIs (window, document, hydrateRoot)
 * - Runs ONLY in browser environment
 * - Must be isomorphic-safe (no Node.js APIs)
 * - NEVER runs in Lambda
 *
 * Handles client-side hydration of React applications with pre-loaded data
 * from server-side rendering. Sets up client-side routing and HTTP client
 * for post-hydration API calls to Lambda endpoints.
 *
 * **Execution Flow**:
 * 1. Hydrate React app with existing RuntimeRouter
 * 2. Call config.app({ router }) to get React element
 * 3. Initialize client-side navigation
 * 4. Set up HTTP client for Lambda endpoint calls
 *
 * **Requirements**: REQ-06, REQ-12
 */
export declare class BrowserPipeline {
    /**
     * Execute browser pipeline for client-side hydration.
     *
     * Hydrates the React application with pre-loaded data from serverless rendering and sets up
     * client-side routing. Uses React hydration (not render) to match the
     * server-rendered HTML exactly.
     *
     * @param config - Runtime configuration with app factory and router
     * @param context - Browser environment context with metadata
     *
     * @example
     * ```typescript
     * const pipeline = new BrowserPipeline();
     * await pipeline.execute(config, {
     *   type: 'browser',
     *   metadata: {
     *     userAgent: navigator.userAgent,
     *     url: window.location.href,
     *     viewport: { width: window.innerWidth, height: window.innerHeight }
     *   }
     * });
     * ```
     */
    execute(config: RuntimeWebConfig, context: {
        type: 'browser';
        metadata: BrowserMetadata;
    }): Promise<void>;
    /**
     * Create browser router from RuntimeRouter configuration.
     *
     * Uses the existing RuntimeRouter to get routes and creates a React Router
     * browser router for client-side navigation.
     *
     * @param config - Runtime configuration
     * @returns Browser router instance
     * @private
     */
    private createBrowserRouter;
    /**
     * Create React element from app factory function.
     *
     * Calls the user's app factory function with the router dependency
     * to get the root React element for the application.
     *
     * @param config - Runtime configuration
     * @returns Root React element
     * @private
     */
    private createAppElement;
    /**
     * Hydrate the React application in the browser.
     *
     * Uses React's hydrateRoot to hydrate the server-rendered HTML with
     * the client-side React application. This ensures the client matches
     * the server exactly to avoid hydration mismatches.
     *
     * @param routerProvider - Router provider element to hydrate
     * @private
     */
    private hydrateApplication;
    /**
     * Set up HTTP client for Lambda endpoint calls.
     *
     * Configures the HTTP client for making API calls to Lambda endpoints
     * after hydration. This is used for post-hydration interactions that
     * require server-side data.
     *
     * @param config - Runtime configuration
     * @private
     */
    private setupHttpClient;
    /**
     * Get API base URL based on deployment stage.
     *
     * Determines the appropriate API base URL for making HTTP requests
     * to Lambda endpoints based on the deployment stage.
     *
     * @param stage - Deployment stage
     * @returns API base URL
     * @private
     */
    private getApiBaseUrl;
}
