import type { StateFromReducersMapObject } from '@reduxjs/toolkit';
import type { LegacySearchAction } from '../../features/analytics/analytics-utils.js';
import type { InsightAppState } from '../../state/insight-app-state.js';
import { type CoreEngine, type ExternalEngineOptions } from '../engine.js';
import type { InsightThunkExtraArguments } from '../insight-thunk-extra-arguments.js';
import { getSampleInsightEngineConfiguration, type InsightEngineConfiguration, type InsightEngineSearchConfigurationOptions } from './insight-engine-configuration.js';
export type { InsightEngineConfiguration, InsightEngineSearchConfigurationOptions, };
export { getSampleInsightEngineConfiguration };
declare const insightEngineReducers: {
    insightConfiguration: import("redux").Reducer<import("../../features/insight-configuration/insight-configuration-state.js").InsightConfigurationState> & {
        getInitialState: () => import("../../features/insight-configuration/insight-configuration-state.js").InsightConfigurationState;
    };
    search: import("redux").Reducer<import("../../features/search/search-state.js").SearchState> & {
        getInitialState: () => import("../../features/search/search-state.js").SearchState;
    };
    insightInterface: import("redux").Reducer<import("../../insight.index.js").InsightInterfaceState> & {
        getInitialState: () => import("../../insight.index.js").InsightInterfaceState;
    };
    searchHub: import("redux").Reducer<string> & {
        getInitialState: () => string;
    };
    resultPreview: import("redux").Reducer<import("../../features/result-preview/result-preview-state.js").ResultPreviewState> & {
        getInitialState: () => import("../../features/result-preview/result-preview-state.js").ResultPreviewState;
    };
};
type InsightEngineReducers = typeof insightEngineReducers;
type InsightEngineState = StateFromReducersMapObject<InsightEngineReducers> & Partial<InsightAppState>;
/**
 * The engine for powering insight experiences.
 *
 * @group Engine
 */
export interface InsightEngine<State extends object = {}> extends CoreEngine<State & InsightEngineState, InsightThunkExtraArguments> {
    /**
     * Executes the first search.
     *
     * @param analyticsEvent - The analytics event to log in association with the first search. If unspecified, `logInsightInterfaceLoad` will be used.
     */
    executeFirstSearch(analyticsEvent?: LegacySearchAction): void;
}
/**
 * The insight engine options.
 *
 * @group Engine
 */
export interface InsightEngineOptions extends ExternalEngineOptions<InsightEngineState> {
    /**
     * The insight engine configuration options.
     */
    configuration: InsightEngineConfiguration;
}
/**
 * Creates an insight engine instance.
 *
 * @param options - The insight engine options.
 * @returns An insight engine instance.
 *
 * @group Engine
 */
export declare function buildInsightEngine(options: InsightEngineOptions): InsightEngine;
