import BaseTable, { CallOrReturn, ColumnShape, SortOrder } from '@sage-bionetworks/react-base-table';
import React from 'react';
import { DatasetItem, Reference } from '../../../../utils/synapseTypes';
import { DatasetItemsEditorTableData } from '../../../table/datasets/DatasetItemsEditor';
import { DetailsViewRowData } from './DetailsView';
export declare type CellRendererProps<T> = {
    cellData: any;
    columns: ColumnShape<T>[];
    column: ColumnShape<T>;
    columnIndex: number;
    rowData: T;
    rowIndex: number;
    container: BaseTable<T>;
    isScrolling?: boolean;
};
export declare type CellRenderer<T> = CallOrReturn<React.ReactNode, CellRendererProps<T>>;
/**
 * The data across tables may differ, but it has entity ID and version, then it can use many of these renderers
 */
export declare type EntityIdAndVersionNumber = {
    entityId: string;
    versionNumber?: number;
};
export declare type EntityIdAndVersionRendererProps = CellRendererProps<EntityIdAndVersionNumber>;
/**
 * Props for cellRenderer components within the BaseTable
 */
export declare type DetailsViewRendererProps = CellRendererProps<DetailsViewRowData>;
export declare const CustomSortIndicator: ({ className, sortOrder, }: {
    className: string;
    sortOrder: SortOrder;
}) => JSX.Element;
/**
 * Renders Entity Badges using the entity bundle.
 * @param props
 * @returns
 */
export declare function BadgeIconsRenderer(props: EntityIdAndVersionRendererProps): JSX.Element;
export declare function DateRenderer({ cellData }: {
    cellData?: string;
}): JSX.Element;
/**
 * Renders 'modifiedOn' from the entity bundle.
 * @param props
 * @returns
 */
export declare function ModifiedOnRenderer(props: EntityIdAndVersionRendererProps): JSX.Element;
/**
 * Renders 'createdOn' from the entity bundle.
 * @param props
 * @returns
 */
export declare function CreatedOnRenderer(props: EntityIdAndVersionRendererProps): JSX.Element;
export declare function EntityNameRenderer(props: EntityIdAndVersionRendererProps): JSX.Element;
export declare function ProjectRenderer(props: EntityIdAndVersionRendererProps): JSX.Element;
export declare function UserCardRenderer({ cellData }: {
    cellData?: string;
}): JSX.Element;
/**
 * Renders 'modifiedBy' from the entity bundle.
 * @param props
 * @returns
 */
export declare function ModifiedByRenderer(props: EntityIdAndVersionRendererProps): JSX.Element;
export declare function LoadingRenderer(): JSX.Element;
export declare function DetailsViewCheckboxRenderer({ rowData, }: DetailsViewRendererProps): false | JSX.Element;
export declare function TypeIconRenderer({ cellData }: DetailsViewRendererProps): JSX.Element;
export declare function EmptyRenderer({ noResultsPlaceholder, }: {
    noResultsPlaceholder: React.ReactNode;
}): JSX.Element;
export declare const DatasetEditorVersionRenderer: ({ rowData, toggleSelection, }: CellRendererProps<DatasetItemsEditorTableData> & {
    toggleSelection: (entity: DatasetItem) => void;
}) => JSX.Element;
export declare const DetailsViewVersionRenderer: ({ rowData, mustSelectVersionNumber, toggleSelection, }: DetailsViewRendererProps & {
    mustSelectVersionNumber: boolean;
    toggleSelection: (entity: Reference | Reference[]) => void;
}) => JSX.Element;
export declare function DatasetEditorCheckboxRenderer(props: CellRendererProps<EntityIdAndVersionNumber & {
    isSelected: boolean;
    isDisabled?: boolean;
    setSelected: (newValue: boolean) => void;
}>): false | JSX.Element;
export declare const EntityErrorRenderer: (props: EntityIdAndVersionRendererProps) => JSX.Element;
