import { ReactNode, HTMLAttributes } from 'react';
import { WrapperProps } from './data-loader';
export type Props<Datum> = {
    /**
     * The data to be displayed
     */
    data: Datum[];
    /**
     * Flag saying that data is loading, so we might be showing stale data
     */
    loading?: boolean;
    /**
     * A function that returns a unique ID for each of the data objects.
     * Same function signature as a map function.
     */
    getIdKey: (datum: Datum, index: number, data: Datum[]) => string;
    /**
     * A callback that is called whenever a user selects or unselects a row.
     */
    onSelectionChange?: (event: MouseEvent | KeyboardEvent) => void;
    /**
     * A renderer function for each item of the list.
     * Make sure that it doesn't change unecessarily by wrapping it in useCallback
     */
    dataRenderer: (datum: Datum) => ReactNode;
};
type BasicDatum = Record<string, unknown>;
export declare const DataList: <Datum extends BasicDatum>({ data, getIdKey, dataRenderer, loading, onSelectionChange, className, ...props }: Props<Datum> & HTMLAttributes<HTMLUListElement>) => import("react/jsx-runtime").JSX.Element;
export declare const DataListWithLoader: <Datum extends BasicDatum>(props: WrapperProps<Datum> & Props<Datum> & HTMLAttributes<HTMLElement>) => import("react/jsx-runtime").JSX.Element;
export {};
