import { type SearchEngine, type SearchEngineOptions } from '../../../app/search-engine/search-engine.js'; import type { Controller } from '../../../controllers/controller/headless-controller.js'; import type { LegacySearchAction } from '../../../features/analytics/analytics-utils.js'; import type { ControllerDefinitionsMap } from '../../common/types/controllers.js'; import type { EngineDefinition, EngineDefinitionOptions } from '../../common/types/engine.js'; /** * The SSR search engine. * * @group Engine */ export interface SSRSearchEngine extends SearchEngine { /** * Waits for the search to be completed and returns a promise that resolves to a `SearchCompletedAction`. */ waitForSearchCompletedAction(): Promise; } /** * The options to create a search engine definition in SSR. * * @group Engine */ export type SearchEngineDefinitionOptions> = EngineDefinitionOptions; export type SearchCompletedAction = ReturnType; export interface SearchEngineDefinition> extends EngineDefinition { } /** * Initializes a Search engine definition in SSR with given controllers definitions and search engine config. * * @param options - The search engine definition * @returns Three utility functions to fetch the initial state of the engine in SSR, hydrate the state in CSR, * and a build function that can be used for edge cases requiring more control. * * @group Engine */ export declare function defineSearchEngine>(options: SearchEngineDefinitionOptions): SearchEngineDefinition;