import { CollectionState } from './CollectionState';
import { CollectionEvents, ComputedQuery, ComputedResult, FiltersMap, KeyedItem } from '../model';
import { TaskState } from './TaskState';
import { ReportBI } from '../services';
import { Snapshot } from './snapshot';
import { MultiCollectionSupport } from './MultiCollectionSupport';
export type OnPickerReady<F extends FiltersMap> = (params: {
    query: ComputedQuery<F>;
    result: ComputedResult;
}) => unknown;
export interface PickerEvents<T, F extends FiltersMap> extends CollectionEvents<F> {
    readonly onReady?: OnPickerReady<F>;
    readonly onInitialFetchError?: (params: {
        err: unknown;
        isOnline: boolean;
    }) => unknown;
    readonly onItemSelectClick?: (params: {
        item: T;
        index: number;
        previousIndex: number | null;
    }) => unknown;
}
export interface PickerStateParams<T, F extends FiltersMap> {
    getMaxItems: () => number | undefined;
    collection: CollectionState<T, F>;
    minContentHeight?: string | number;
    events?: PickerEvents<T, F>;
    shouldFilterNotAffectTotalCount?: (filterName: keyof F) => boolean;
    loadStartTime?: number;
    reportBi: ReportBI;
}
export declare class PickerState<T, F extends FiltersMap = FiltersMap> {
    readonly collection: PickerStateParams<T, F>['collection'];
    readonly multi: MultiCollectionSupport<F>;
    readonly shouldFilterNotAffectTotalCount: (filterName: keyof F) => boolean;
    readonly events: PickerEvents<T, F>;
    readonly initTask: TaskState<unknown>;
    readonly reportBi: ReportBI;
    readonly loadStartTime: number;
    isScrollTop: boolean;
    minContentHeight: string | number;
    floatingNotificationHeight: number;
    readonly getMaxItems: () => number | undefined;
    readonly filteredListSize: Snapshot<any[], number>;
    constructor(params: Readonly<PickerStateParams<T, F>>);
    clearResultAndMoveToStart({ force }?: {
        force?: boolean;
    }): Promise<void>;
    updateIsScrollTop(newValue: boolean): void;
    _commonDynamicBiParams(): {
        filteredListSize?: number;
        listSize?: number;
        maxItems?: number;
    };
    onNewPage: () => ({ totalNewItems }: {
        totalNewItems: number;
    }) => void;
    onSearchStart: () => () => void;
    init(): () => void;
    onCloseButtonClick(): void;
    onBackButtonClick(): void;
    onContinueButtonClick(): void;
    onSecondaryButtonOnClick(): void;
    onPrimaryButtonClick({ currentLevel, numLevels, }: {
        currentLevel: number;
        numLevels: number;
    }): void;
    _onButtonClick: ({ ctaName, currentLevel, numLevels, }: {
        ctaName: string;
        currentLevel: number;
        numLevels: number;
    }) => void;
    toggle(keyedItem: KeyedItem<T>, options?: {
        clear?: boolean;
        hasAdditionalStep?: boolean;
    }): void;
    setFloatingNotificationHeight(floatingNotificationHeight?: number): void;
    onCreateNew: (items?: T[]) => Promise<void>;
}
//# sourceMappingURL=PickerState.d.ts.map