import type React from 'react';
import type { ThumbnailGridGroup } from '../../ThumbnailGrid/ThumbnailGrid.types';
interface QaTags {
    grid?: string;
}
export declare type GridItem = object;
export declare type GetId = (item: GridItem) => string | number;
export declare type GetThumnbnailName = (item: GridItem) => string;
export declare type GetThumbnailSource = (item: GridItem) => string;
export declare type GetThumbnailLabel = (item: GridItem) => string;
export declare type GetGroupId = (item: GridItem) => string | number;
export interface GridSourceProps {
    /**
     * @since 10.19.0
     */
    sourceId: string;
    /**
     * @deprecated String icon variant is deprecated, use the React components
     * directly from the `@procore/core-icons/dist` package
     * @since 10.19.0
     */
    icon: React.ReactNode;
    /**
     * @since 10.19.0
     */
    title: string;
    /**
     * Allows controlling the search input value. Can be used with
     * `onSearch` to customize the default string-based search
     * @since 10.19.0
     */
    searchQuery?: string;
    /**
     * Allows customizing the default string-based search by passing a
     * different set of `items` every time `onSearch` is called with
     * query string as a single parameter
     * @since 10.19.0
     */
    onSearch?: (q: string) => void;
    /**
     * React nodes to be displayed next to the search bar
     * @since 10.19.0
     */
    children?: React.ReactNode;
    /**
     * An array of arbitrarily-shaped objects representing grid items.
     * `getId`, `getName` and `getThumbnail` should be used to bind the target shape to a view.
     * @since 10.19.0
     */
    items: GridItem[];
    /**
     * `{ id: string | number, title: string }[]` object representing file groups
     * @since 10.19.0
     */
    groups?: ThumbnailGridGroup[];
    /**
     * `{ text: string, image: string }` props for `EmptyState`
     * component shown when there are no items in grid
     * @since 10.19.0
     */
    emptyState?: {
        text?: string;
        image?: string;
    };
    /**
     * Show/Hide loading indicator at the list bottom
     * @since 10.19.0
     */
    isLoadingMore?: boolean;
    /**
     * Show/Hide loading indicator of the content
     * @since 10.19.0
     */
    isLoading?: boolean;
    /**
     * Optional `function` that automatically executes when
     * scrolling reaches the last item.
     * @since 10.19.0
     */
    onScrollBottom?: () => Promise<any>;
    /**
     * A function called returning ID of a given grid item that is used to
     * identify the item. Returns `item.id` by default.
     * @since 10.19.0
     */
    getId?: GetId;
    /**
     * A function called returning thumbnail URL of a given grid item that is
     * used to display the item's thumbnail image. Returns `item.src` by default.
     * @since 10.19.0
     */
    getThumbnailSource?: GetThumbnailSource;
    /**
     * A function called returning name of a given grid item that is used to
     * display the item's thumbnail name. Returns `item.name` by default.
     * @since 10.19.0
     */
    getThumbnailName?: GetThumnbnailName;
    /**
     * A function called returning label of a given grid item that is used to
     * display the item's thumbnail label. Returns `item.label` by default.
     * @since 10.19.0
     */
    getThumbnailLabel?: GetThumbnailLabel;
    /**
     * A function called returning group ID of a given grid item that is used
     * to sort items by group. Returns `item.groupId` by default.
     * @since 10.19.0
     */
    getGroupId?: GetGroupId;
    /**
     * @since 10.19.0
     */
    qa?: QaTags;
}
export interface SearchBarProps {
    /**
     * @since 10.19.0
     */
    onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
    /**
     * @since 10.19.0
     */
    query: string;
}
export {};
