import { WixPatternsContainer, CollectionState, FiltersMap } from '@wix/bex-core';
import { ToolbarCollectionState, ToolbarCollectionStateParamsInitParams } from './ToolbarCollectionState';
import { CollectionDragAndDropState } from '../components/DragAndDrop';
import { RectState } from './RectState';
import { GridSizePreset } from './gridSizePresets';
import { ResponsiveColumnsState } from './ResponsiveColumnsState';
import { GridParentState } from './GridParentState';
import type { Preset } from '../components/Grid/Grid.types';
export type LayoutType = 'grid' | 'list';
export interface GridBaseStateParams<T, F extends FiltersMap> {
    readonly collection: CollectionState<T, F>;
    readonly container: WixPatternsContainer;
    readonly toolbar: ToolbarCollectionState<any, Partial<F>>;
    readonly sizePreset: GridSizePreset;
    readonly range?: {
        start: number;
        length: number;
    };
    readonly layoutType: LayoutType | undefined;
    readonly parentState: GridParentState<T, F>;
    readonly draggable?: 'none' | 'draggable';
}
export interface GridBaseStateInitParams extends ToolbarCollectionStateParamsInitParams {
}
export declare class GridBaseState<T, F extends FiltersMap> {
    readonly toolbar: ToolbarCollectionState<unknown, Partial<F>>;
    readonly container: WixPatternsContainer;
    readonly collection: CollectionState<T, F>;
    readonly _containerRectState: RectState;
    readonly _responsiveColumnsState: ResponsiveColumnsState;
    readonly parentState: GridParentState<T, F>;
    _sizePreset: GridSizePreset;
    layoutType: LayoutType;
    trailingItemsCount: number;
    minItemWidth: number;
    smallCardWidthThreshold: number;
    preset: Preset;
    _draggable: 'none' | 'draggable';
    _localLimit: number | null | undefined;
    _localStart: number;
    forceRenderIndexes: number[] | undefined;
    collectionDragAndDropState: CollectionDragAndDropState<T, F> | null;
    get _dnd(): import("../components/DragAndDrop").DragAndDropState<T, F> | undefined;
    constructor(params: GridBaseStateParams<T, F>);
    get sizePreset(): GridSizePreset;
    get imagePlacement(): "top" | "side";
    get gap(): 12 | 24;
    get containerPaddingTop(): number;
    get aspectRatio(): number;
    get footerHeights(): import("./gridSizePresets").FooterHeights;
    get itemsContentWidth(): number;
    get draggable(): "draggable" | "none";
    get window(): import("@wix/bex-core").PartialWindow;
    get itemsToRenderCount(): number;
    get reportBi(): import("@wix/bex-core").ReportBI;
    get columnsCount(): number;
    get containerRect(): {
        bottom: number;
        height: number;
        left: number;
        right: number;
        top: number;
        width: number;
    } | undefined;
    get rowCount(): number;
    get isInteracting(): boolean | undefined;
    get itemsToRender(): null[];
    getItemRenderTypeAt(index: number): import("@wix/bex-core").KeyedItem<T> | "trailing" | null;
    get errorMonitor(): import("@wix/bex-core").ErrorMonitor;
    get _sizeProps(): {
        columnCount: number;
        columnWidth: () => number;
        columnWidthIncludingGap: () => number;
        rowHeight: () => number;
        rowHeightFixed: number;
        cardTopImageHeight: number;
        rowHeightIncludingGap: () => number;
        cardFooterHeight: number;
        cardFooterSize: "small";
    };
    get calcGridProps(): {
        overscanCount: number;
        columnCount: number;
        columnWidth: () => number;
        columnWidthIncludingGap: () => number;
        rowHeight: () => number;
        rowHeightFixed: number;
        cardTopImageHeight: number;
        rowHeightIncludingGap: () => number;
        cardFooterHeight: number;
        cardFooterSize: "small";
    };
    get getCollectionSnapshot(): () => {
        [key: string]: string | number | undefined;
    };
    onAddItemClick: (origin?: string) => void;
    onAddItemActionComplete: (items: T[]) => Promise<void>;
    get itemKeyRecyclerOverride(): (index: number) => string;
    get dragAndDropCategories(): (keyof F)[][] | null | undefined;
    get listAttributes(): {
        role: string;
        "aria-label"?: string | undefined;
    };
    _subscribe(): (() => void) | undefined;
    init(): (() => void) | undefined;
}
//# sourceMappingURL=GridBaseState.d.ts.map