import React from 'react';
import { EmptyStateProps } from '@parlor/ui/empty-state';
type ItemWithId = {
    [key: string]: any;
    id: string | number;
    isSelected?: boolean;
};
export type FeedProps<T> = {
    /**
     * @description Control bar.
     * @type {JSX.Element}
     */
    controls: JSX.Element;
    /**
     * @description data to map thought
     * @type {Array<T>}
     */
    data: Array<T>;
    /**
     * @description options for `<EmptyState />` component. will be shown if `data` is empty
     * @type { buttons?: Array<JSX.Element>; description?: string; imgSrc?: string; title?: string; }
     */
    emptyStateOptions?: EmptyStateProps;
    /**
     * @description has more data to fetch. if `false` `onloadMore` will not be called anymore
     * @type {boolean}
     * @default true
     */
    hasMore?: boolean;
    /**
     * @description slot between control bar and the list of data
     * @type {JSX.Element}
     */
    header?: JSX.Element;
    /**
     * @description loader for render items.
     * @type {React.ReactNode}
     */
    loader?: React.ReactNode;
    /**
     * @description function to load next data
     */
    onLoadMore(): void;
    /**
     * @description Function for single item render.
     * @param {T} item
     * @return {*}  {JSX.Element}
     */
    renderItem(item: T): JSX.Element;
    /**
     * @description Tabs to be shown.
     * @type {JSX.Element}
     */
    tabs: JSX.Element;
};
export declare const BaseFeed: <T extends ItemWithId>({ controls, data, emptyStateOptions, hasMore, header, onLoadMore, renderItem, tabs, loader, }: FeedProps<T>) => JSX.Element;
export {};
