import type { StateFromReducersMapObject } from '@reduxjs/toolkit';
import type { LegacySearchAction } from '../../features/analytics/analytics-utils.js';
import type { ConfigurationState } from '../../features/configuration/configuration-state.js';
import type { StandaloneSearchBoxAnalytics } from '../../features/standalone-search-box-set/standalone-search-box-set-state.js';
import type { SearchAppState } from '../../state/search-app-state.js';
import { type CoreEngine, type ExternalEngineOptions } from '../engine.js';
import type { SearchThunkExtraArguments } from '../search-thunk-extra-arguments.js';
import { getSampleSearchEngineConfiguration, type SearchConfigurationOptions, type SearchEngineConfiguration } from './search-engine-configuration.js';
export type { SearchConfigurationOptions, SearchEngineConfiguration };
export { getSampleSearchEngineConfiguration };
declare const searchEngineReducers: {
    debug: import("@reduxjs/toolkit").Reducer<boolean> & {
        getInitialState: () => boolean;
    };
    pipeline: import("@reduxjs/toolkit").Reducer<string> & {
        getInitialState: () => string;
    };
    searchHub: import("@reduxjs/toolkit").Reducer<string> & {
        getInitialState: () => string;
    };
    search: import("@reduxjs/toolkit").Reducer<import("../../features/search/search-state.js").SearchState> & {
        getInitialState: () => import("../../features/search/search-state.js").SearchState;
    };
};
type SearchEngineReducers = typeof searchEngineReducers;
type SearchEngineState = StateFromReducersMapObject<SearchEngineReducers> & Partial<SearchAppState>;
/**
 * The engine for powering search experiences.
 *
 * @group Engine
 */
export interface SearchEngine<State extends object = {}> extends CoreEngine<State & SearchEngineState, SearchThunkExtraArguments, ConfigurationState> {
    /**
     * Executes the first search.
     *
     * @param analyticsEvent - The analytics event to log in association with the first search. If unspecified, `logInterfaceLoad` will be used.
     */
    executeFirstSearch(analyticsEvent?: LegacySearchAction): void;
    /**
     * Executes the first search, and logs the analytics event that triggered a redirection from a standalone search box.
     *
     * @param analytics - The standalone search box analytics data.
     */
    executeFirstSearchAfterStandaloneSearchBoxRedirect(analytics: StandaloneSearchBoxAnalytics): void;
}
/**
 * The search engine options.
 *
 * @group Engine
 */
export interface SearchEngineOptions extends ExternalEngineOptions<SearchEngineState> {
    /**
     * The search engine configuration options.
     */
    configuration: SearchEngineConfiguration;
}
/**
 * Creates a search engine instance.
 *
 * @param options - The search engine options.
 * @returns A search engine instance.
 *
 * @group Engine
 */
export declare function buildSearchEngine(options: SearchEngineOptions): SearchEngine;
