export interface CompletionViewportBounds { readonly itemCount: number; readonly maxRows: number; } export interface CompletionViewportState { readonly offset: number; readonly selected: number; readonly hovered: number | undefined; } export type CompletionViewportAction = { readonly type: "reset"; readonly selected?: number | undefined; } | { readonly type: "reconcile"; readonly selected?: number | undefined; } | { readonly type: "select"; readonly index: number; } | { readonly type: "hover"; readonly index: number | undefined; } | { readonly type: "scroll"; readonly rows: number; }; export interface CompletionViewportWindow { readonly start: number; readonly end: number; readonly visibleCount: number; readonly before: number; readonly after: number; } export declare function completionVisibleCount(itemCount: number, maxRows: number): number; export declare function clampCompletionViewport(offset: number, itemCount: number, maxRows: number): number; export declare function keepCompletionSelectionVisible(offset: number, selected: number, itemCount: number, maxRows: number): number; export declare function completionViewportWindow(itemCount: number, maxRows: number, offset: number): CompletionViewportWindow; export declare function completionAbsoluteIndex(itemCount: number, maxRows: number, offset: number, visibleIndex: number): number | undefined; export declare function completionWheelRows(direction: string, delta: number): number; export declare function initialCompletionViewportState(): CompletionViewportState; export declare function reduceCompletionViewport(state: CompletionViewportState, action: CompletionViewportAction, bounds: CompletionViewportBounds): CompletionViewportState;