import { ThumbnailProps, ThumbnailRoleType } from '../Thumbnail/Thumbnail.types';
export interface ThumbnailGridGroup {
    /**
     * @since 10.19.0
     */
    id: string | number;
    /**
     * @since 10.19.0
     */
    title: string;
}
export interface ThumbnailGridGroupTitle {
    /**
     * @since 11.18.2
     */
    title: string;
    /**
     * @since 11.18.2
     */
    groupId?: string | number;
}
export interface LoaderGridItem {
    /**
     * @since 10.19.0
     */
    isFetching: boolean;
}
export declare type GridCellData = ThumbnailGridItem | ThumbnailGridGroupTitle | LoaderGridItem;
export interface QaTags {
    /**
     * @since 10.19.0
     */
    grid?: string;
    /**
     * @since 10.19.0
     */
    thumbnail?: (id: string | number) => string;
}
export interface ThumbnailGridProps<T extends ThumbnailGridItem = ThumbnailGridItem> {
    /**
     * @since 10.19.0
     */
    selected: T[];
    /**
     * @since 10.19.0
     */
    items: T[];
    /**
     * @since 10.19.0
     */
    groups?: ThumbnailGridGroup[];
    /**
     * @since 10.19.0
     */
    title?: string;
    /**
     * @since 10.19.0
     */
    gridWidth?: number;
    /**
     * @since 10.19.0
     */
    gridHeight?: number;
    /**
     * @since 10.19.0
     */
    onSelect?: (item: T) => void;
    /**
     * @since 10.19.0
     */
    onDeselect?: (item: T) => void;
    /**
     * @since 10.19.0
     */
    disableSelection?: {
        value: boolean;
        tooltip: string;
    };
    /**
     * @since 10.19.0
     */
    isFetching?: boolean;
    /**
     * @since 10.19.0
     */
    loadMoreItems?: () => Promise<any>;
    /**
     * @since 10.19.0
     */
    qa?: QaTags;
    /**
     * @since 11.18.2
     */
    allowSelectAll?: boolean;
    /**
     * @since 11.18.2
     */
    onSelectAll?: () => void;
    /**
     * @since 11.18.2
     */
    onDeselectAll?: () => void;
    /**
     * @since 11.18.2
     */
    onSelectAllGroup?: (groupId: string) => void;
    /**
     * @since 11.18.2
     */
    onDeselectAllGroup?: (groupId: string) => void;
}
export interface ThumbnailGridItem {
    /**
     * @since 10.19.0
     */
    id: string | number;
    /**
     * @since 10.19.0
     */
    src?: ThumbnailProps<ThumbnailRoleType>['src'];
    /**
     * @since 10.19.0
     */
    name?: ThumbnailProps<ThumbnailRoleType>['caption'];
    /**
     * @since 10.19.0
     */
    label?: ThumbnailProps<ThumbnailRoleType>['label'];
    /**
     * @since 10.19.0
     */
    groupId?: string | number;
}
