import type { Relay } from '@coveo/relay'; import { type Logger } from 'pino'; import { type Mock } from 'vitest'; import type { CaseAssistEngine } from '../app/case-assist-engine/case-assist-engine.js'; import type { CommerceEngine } from '../app/commerce-engine/commerce-engine.js'; import type { CoreEngine, CoreEngineNext } from '../app/engine.js'; import type { InsightEngine } from '../app/insight-engine/insight-engine.js'; import type { RecommendationEngine } from '../app/recommendation-engine/recommendation-engine.js'; import type { SearchEngine } from '../app/search-engine/search-engine.js'; import { stateKey } from '../app/state-key.js'; import type { SSRCommerceEngine } from '../ssr/commerce/factories/build-factory.js'; import type { SSRSearchEngine } from '../ssr/search/engine/search-engine.ssr.js'; type SpyEverything = { [K in keyof T]: T[K] extends (...args: infer A) => infer R ? Mock<(...args: A) => R> : T[K] extends object ? SpyEverything : T[K]; }; type SpiedLoggerProps = SpyEverything>; type MockedLogger = Logger & SpiedLoggerProps; type MockedRelay = Relay & Pick; type MockedCoreEngine = StateFromEngine> = CoreEngine & { state: State; logger: MockedLogger; relay: MockedRelay; } & SpyEverything>; export type MockedSearchEngine = SearchEngine & MockedCoreEngine> & SpyEverything>; export type MockedCaseAssistEngine = CaseAssistEngine; export type MockedRecommendationEngine = RecommendationEngine; export type MockedCommerceEngine = CommerceEngine; export type MockedInsightEngine = InsightEngine; type StateFromEngine = TEngine['state']; type StateFromEngineNext = TEngine[typeof stateKey]; export declare function buildMockSearchEngine(initialState: StateFromEngine): MockedSearchEngine; export declare function buildMockCaseAssistEngine>(initialState: State): CaseAssistEngine; export declare function buildMockCommerceEngine>(initialState: State): CommerceEngine; export declare function buildMockInsightEngine>(initialState: State): InsightEngine; export declare function buildMockRecommendationEngine>(initialState: State): RecommendationEngine; export declare function buildMockSSRSearchEngine(initialState: StateFromEngine): SSRSearchEngine; export declare function buildMockSSRCommerceEngine(initialState: StateFromEngineNext): SSRCommerceEngine; export {};