import { Metadata } from "./Metadata"; import { Document } from "./Document"; import { SortDirection } from "./fields/Sort"; import { FilterGroup } from "./fields/Filters"; import { FacetType } from "./fields/Facets"; import { HierarchyTree } from "./HierarchyTree"; import { BaseResult } from "./BaseResult"; import { SimilarQueryResult } from "./SimilarQueryResult"; import { SimilarResults } from "./SimilarResults"; export type FacetGroupItem = { title: string; count: number; from?: number; to?: number; }; export type FacetGroup = { type: FacetType; key: string; label: string; level?: number; items: FacetGroupItem[]; }; export type FacetGroupHierarchy = { type: FacetType; key: string; label: string; level?: number; parentKey?: string; parentName?: string; currentName?: string; items: HierarchyTree[]; }; export type FacetGroupTypeStats = { type: FacetType; label: string; key: string; min: number; max: number; }; export type FacetResult = FacetGroup | FacetGroupHierarchy | FacetGroupTypeStats; export type DidYouMeanResult = { options: { text: string; count: number; }[]; }; export type SearchQueryResult = BaseResult & { success: true; searchText: string; total: number; items: Document[]; facets?: FacetResult[]; filters?: FilterGroup; limit?: number; offset?: number; sort?: Record[]; metadata?: Metadata; suggestedSearchText?: string; didYouMean?: DidYouMeanResult; similarQueries?: SimilarQueryResult[]; similarResults?: SimilarResults; refinementThreshold?: number; hasRelatedQueries?: boolean; }; export type SearchQueryFacetsResult = Pick; export type SearchQueryRefinersResult = Pick;