import { RecordValue, StringValue } from '@coveo/bueno'; import type { ItemMetaData } from '@coveo/relay-event-types'; import { type AsyncThunk, type UnknownAction } from '@reduxjs/toolkit'; import type { AnalyticsClientSendEventHook, CaseAssistClient, CoveoInsightClient, CoveoSearchPageClient, EventBuilder, EventDescription, SearchPageClientProvider } from 'coveo.analytics'; import type { SearchEventResponse } from 'coveo.analytics/dist/definitions/events.js'; import type { DocumentIdentifier, PartialDocumentInformation } from 'coveo.analytics/dist/definitions/searchPage/searchPageEvents.js'; import type { Logger } from 'pino'; import { CaseAssistAnalyticsProvider, type StateNeededByCaseAssistAnalytics } from '../../api/analytics/case-assist-analytics.js'; import { InsightAnalyticsProvider, type StateNeededByInsightAnalyticsProvider } from '../../api/analytics/insight-analytics.js'; import type { StateNeededByInstantResultsAnalyticsProvider } from '../../api/analytics/instant-result-analytics.js'; import { type StateNeededBySearchAnalyticsProvider } from '../../api/analytics/search-analytics.js'; import type { GeneratedAnswerCitation } from '../../api/generated-answer/generated-answer-event-payload.js'; import type { PreprocessRequest } from '../../api/preprocess-request.js'; import type { Result } from '../../api/search/search/result.js'; import type { ThunkExtraArguments } from '../../app/thunk-extra-arguments.js'; import type { RecommendationAppState } from '../../state/recommendation-app-state.js'; import type { SearchAppState } from '../../state/search-app-state.js'; import type { ConfigurationSection } from '../../state/state-sections.js'; type PreparableAnalyticsActionOptions = { analyticsClientMiddleware: AnalyticsClientSendEventHook; preprocessRequest: PreprocessRequest | undefined; logger: Logger; getState(): StateNeeded; }; export type AnalyticsAsyncThunk = AsyncThunk> & UnknownAction; export declare function makeBasicNewSearchAnalyticsAction(actionCause: string, getState: () => StateNeededBySearchAnalyticsProvider): { actionCause: string; type: string; }; type PreparedAnalyticsAction = { description?: EventDescription; action: AnalyticsAsyncThunk; }; type PrepareAnalyticsFunction = (options: PreparableAnalyticsActionOptions) => Promise>; type PreparableAnalyticsAction = AnalyticsAsyncThunk & { prepare: PrepareAnalyticsFunction; }; export type LegacySearchAction = PreparableAnalyticsAction; export type CustomAction = PreparableAnalyticsAction; export type ClickAction = PreparableAnalyticsAction; export type InstantResultsSearchAction = PreparableAnalyticsAction; export type InstantResultsClickAction = PreparableAnalyticsAction; export type InsightAction = PreparableAnalyticsAction; export type CaseAssistAction = PreparableAnalyticsAction; type AsyncThunkAnalyticsOptions = { state: T; extra: ThunkExtraArguments; }; type AnalyticsActionOptions = Omit, '__legacy__getBuilder'> & Partial> & { __legacy__getBuilder: LegacyGetBuilderType; }; interface NextAnalyticsOptions { analyticsType: string; analyticsPayloadBuilder: (state: StateNeeded) => PayloadType; } interface LegacyAnalyticsOptions { prefix: string; __legacy__getBuilder: (client: Client, state: StateNeeded) => Promise | null; __legacy__provider?: (getState: () => StateNeeded) => Provider; } type InternalLegacyStateNeeded = StateNeededBySearchAnalyticsProvider | StateNeededByCaseAssistAnalytics; type LogFunction = (client: Client, state: StateNeeded) => Promise | void | null; export declare const makeAnalyticsAction: { = LegacyAnalyticsOptions>(prefix: string, __legacy__getBuilder: (client: CoveoSearchPageClient, state: StateNeededBySearchAnalyticsProvider) => Promise | null, __legacy__provider?: ComputedLegacyAnalyticsOptions["__legacy__provider"] | undefined): PreparableAnalyticsAction; ({ prefix, __legacy__getBuilder, __legacy__provider, analyticsPayloadBuilder, analyticsType, }: AnalyticsActionOptions Promise | null, SearchPageClientProvider, CoveoSearchPageClient, PayloadType>): PreparableAnalyticsAction; }; export declare const makeCaseAssistAnalyticsAction: { = LegacyAnalyticsOptions>(prefix: string, __legacy__getBuilder: LogFunction, __legacy__provider?: ComputedLegacyAnalyticsOptions["__legacy__provider"] | undefined): PreparableAnalyticsAction; ({ prefix, __legacy__getBuilder, __legacy__provider, analyticsPayloadBuilder, analyticsType, }: AnalyticsActionOptions, CaseAssistAnalyticsProvider, CaseAssistClient, PayloadType>): PreparableAnalyticsAction; }; export declare const makeInsightAnalyticsActionFactory: (actionCause: string) => { = LegacyAnalyticsOptions>(prefix: string, __legacy__getBuilder: LogFunction, __legacy__provider?: ComputedLegacyAnalyticsOptions["__legacy__provider"] | undefined): PreparableAnalyticsAction; ({ prefix, __legacy__getBuilder, __legacy__provider, analyticsPayloadBuilder, analyticsType, }: AnalyticsActionOptions, InsightAnalyticsProvider, CoveoInsightClient, PayloadType>): PreparableAnalyticsAction; }; export declare const partialDocumentInformation: (result: Result, state: Partial) => PartialDocumentInformation; export declare const partialRecommendationInformation: (result: Result, state: Partial) => PartialDocumentInformation; export declare const partialCitationInformation: (citation: GeneratedAnswerCitation, state: Partial) => PartialDocumentInformation; export declare const citationDocumentIdentifier: (citation: GeneratedAnswerCitation) => { contentIdKey: string; contentIdValue: string; }; export declare const documentIdentifier: (result: Result) => DocumentIdentifier; export declare const resultPartialDefinition: { uniqueId: StringValue; raw: RecordValue; title: StringValue; uri: StringValue; clickUri: StringValue; rankingModifier: StringValue; }; export declare const validateResultPayload: (result: Result) => Partial<{ uniqueId: string; raw: unknown; title: string; uri: string; clickUri: string; rankingModifier: string; }>; export declare const analyticsEventItemMetadata: (result: Result, state: Partial) => ItemMetaData; export declare const analyticsEventItemMetadataForCitations: (citation: GeneratedAnswerCitation, state: Partial) => ItemMetaData; export {};