import type { SSRSearchEngine } from '../types/build.js'; import type { SearchControllerDefinitionsMap, SearchEngineDefinition, SearchEngineDefinitionOptions } from '../types/engine.js'; /** * Initializes a Search engine definition in SSR with given controllers definitions and search engine config. * * @param options - The search engine definition * @returns An object containing two engine definitions: * - `searchEngineDefinition`: For pages with search results (executes server-side search) * - `standaloneEngineDefinition`: For pages with standalone components only (no server-side search execution) * * @remarks * You can use the {@link InferStaticState} and {@link InferHydratedState} utility types with the returned engine definitions * to infer the types of static and hydrated state for your controllers. * * @example * ```ts * const {searchEngineDefinition, standaloneEngineDefinition} = defineSearchEngine(config); * * // For search results pages * const searchState = await searchEngineDefinition.fetchStaticState({ * navigatorContext: {/*...* /}, * searchParams: {q: 'query'} * }); * * // For pages with standalone search box only (e.g., homepage) * const standaloneState = await standaloneEngineDefinition.fetchStaticState({ * navigatorContext: {/*...* /}, * }); * * type SearchStaticState = InferStaticState; * type SearchHydratedState = InferHydratedState; * ``` * * @group Engine */ export declare function defineSearchEngine(options: SearchEngineDefinitionOptions): { searchEngineDefinition: SearchEngineDefinition; standaloneEngineDefinition: SearchEngineDefinition; };