import type { ItemDisplayDensity, ItemDisplayImageSize } from '../layout/item-layout-utils';
import { type FocusTargetController } from '../../../utils/accessibility-utils';
import type { CommerceStore } from '../../commerce/atomic-commerce-interface/store';
import type { CommerceRecommendationStore } from '../../commerce/atomic-commerce-recommendation-interface/store';
import type { InsightStore } from '../../insight/atomic-insight-interface/store';
import type { RecsStore } from '../../recommendations/atomic-recs-interface/store';
import type { SearchStore } from '../../search/atomic-search-interface/store';
import type { AnyItem } from './unfolded-item';
export declare const resultComponentClass = "result-component";
export type ItemRenderingFunction<SpecificResult extends AnyItem = AnyItem> = ((result: SpecificResult, root: HTMLElement, linkContainer?: HTMLElement) => string) | undefined;
export interface ItemListCommonProps {
    store: CommerceStore | CommerceRecommendationStore | RecsStore | InsightStore | SearchStore;
    loadingFlag: string;
    host: HTMLElement;
    nextNewItemTarget: FocusTargetController;
    getCurrentNumberOfItems: () => number;
    getIsLoading: () => boolean;
    engineSubscribe: (cb: () => void) => () => void;
}
export declare class ItemListCommon {
    private props;
    private indexOfResultToFocus?;
    private firstResultEl?;
    private updateBreakpointsOnce;
    constructor(props: ItemListCommonProps);
    updateBreakpoints(): void;
    getResultId(uniqueIdOnResult: string, searchResponseId: string, density: ItemDisplayDensity, imageSize: ItemDisplayImageSize): string;
    setNewResultRef(element: HTMLElement, resultIndex: number): void;
    focusOnNextNewResult(): void;
    focusOnFirstResultAfterNextSearch(): Promise<void>;
}
