import type { LauncherResult } from "./match"; import type { LauncherResultGroup, LauncherSearchItem } from "./NavLauncherProps"; import { type SearchGroup } from "./spotlight"; export type SearchEntry = { type: "answer" | "top"; item: LauncherResult; } | { type: "row"; item: LauncherResult; groupId: string; } | { type: "more"; groupId: string; count: number; }; export type SearchBlock = { type: "answers"; start: number; items: LauncherResult[]; } | { type: "top"; start: number; item: LauncherResult; } | { type: "group"; group: SearchGroup; start: number; visible: LauncherResult[]; more?: { index: number; count: number; }; }; export type SearchLayout = { blocks: SearchBlock[]; entries: SearchEntry[]; sizes: number[]; total: number; }; export declare const copiesOnEnter: (entry?: SearchEntry) => boolean; export declare const inScope: (groups: SearchGroup[], scope: string) => SearchGroup[]; /** A scope's items as passed, unranked, for browsing before typing. */ export declare const scopeGroups: (input: { scope: string; actions?: readonly LauncherSearchItem[]; extraResults?: readonly LauncherResultGroup[]; actionsLabel: string; }) => SearchGroup[]; export declare const countByScope: (groups: SearchGroup[], answers: number) => Map; export declare const takeTopHit: (groups: SearchGroup[]) => { topHit?: LauncherResult; groups: SearchGroup[]; }; /** Flat option order for keyboard and ARIA plus per-row group sizes for `moveResult`. */ export declare const layoutSearch: (input: { answers: LauncherResult[]; topHit?: LauncherResult; groups: SearchGroup[]; limit?: number; expanded: ReadonlySet; }) => SearchLayout;