import * as React from "react";
import type { LayoutConfig } from "@seekora-ai/ui-sdk-types";
import { type PageContext } from "./page-sentinels";
import { type ThemeHarvestCtx } from "./context-wired-props";
import type { SearchStateManager } from "@seekora-ai/ui-sdk-core";
export interface LayoutRendererProps {
    config: LayoutConfig;
    client: any;
    pageContext?: PageContext;
    /**
     * Called once after the inner SearchProvider mounts, with the live
     * SearchStateManager instance. v4.js uses this to wire the theme input
     * value to Seekora's search state without coupling the React tree to DOM
     * details. SCRUM-268.
     */
    onStateManagerReady?: (mgr: SearchStateManager) => void;
    /**
     * A Promise already holding the first search response, pre-fired by the
     * boot.js proxy route server-side (SCRUM-268 early-fire optimisation).
     * Threaded into SearchProvider → SearchStateManager so the first render
     * skips one backend RTT. Consumed exactly once.
     */
    initialResultsPromise?: Promise<import("@seekora-ai/search-sdk").SearchResponse | null> | null;
    /**
     * The query string that was used when `initialResultsPromise` was fired.
     * The SearchStateManager only consumes the promise when `state.query`
     * matches this value exactly on the first `search()` call.
     */
    initialQuery?: string;
    /**
     * V4 analytics emission context (SCRUM-259). Threaded into SearchProvider
     * so ui-sdk descendants fire Object Clicked / Search Impression / Facet
     * Applied through the consumer's analytics-next instance.
     */
    trackContext?: import("@seekora-ai/search-sdk").TrackContext | null;
    /**
     * Called once after the first render that has search results populated
     * (and loading=false). Storefront callers use this to delay revealing
     * the page — lifting anti-flash CSS only after Seekora content paints.
     */
    onReady?: () => void;
    /**
     * Server-harvested card template + swap map from boot config
     * (themeHarvest.cardTemplateHtml + themeHarvest.swapMap). When present,
     * provided via ThemeHarvestContext so SlotRenderer injects them into
     * SearchResults props automatically. SCRUM-267.
     */
    themeHarvest?: ThemeHarvestCtx | null;
}
export declare function LayoutRenderer({ config, client, pageContext, onStateManagerReady, initialResultsPromise, initialQuery, trackContext, onReady, themeHarvest, }: LayoutRendererProps): React.ReactElement;
//# sourceMappingURL=LayoutRenderer.d.ts.map