import { type ReactNode } from 'react';
type RequiredKeys<T> = {
    [TKey in keyof T]-?: {} extends Pick<T, TKey> ? never : TKey;
}[keyof T];
export type InfiniteDataListProps<TDataItem extends Record<string, unknown>> = {
    data?: TDataItem[];
    /**
     * Поле, используемое в качестве ключа списка
     */
    keyId: RequiredKeys<TDataItem>;
    /**
     * Название класса, применяется к корневому компоненту
     */
    className?: string;
    /**
     *  Используется для отображения placeholder при отсутствии данных в таблице
     */
    noDataPlaceholder?: ReactNode;
    /**
     *  Сообщение, отображаемое при достижении конца списка
     */
    endOfScrollMsg?: string;
    /**
     * Текст ошибки
     */
    errorMsg?: string;
    /**
     * Если true, показывается анимация загрузки
     */
    isLoading?: boolean;
    /**
     * Флаг состояния ошибки
     */
    isError?: boolean;
    /**
     * Флаг достижения конца списка
     */
    isEndReached?: boolean;
    /**
     * Содержание карточки
     */
    itemContent: (dataItem: TDataItem, { index, className }: {
        index: number;
        className: string;
    }) => ReactNode;
    /**
     * Функция обработки нажатия на кнопку "Повторить запрос"
     */
    onRetry: () => void;
    /**
     * Обработчик подгрузки данных
     */
    onEndReached?: () => void;
    /**
     * Контент отображаемый вверху списка
     */
    header?: ReactNode;
};
export declare const InfiniteDataList: <TDataItem extends Record<string, unknown>>({ data, keyId, className, itemContent, noDataPlaceholder, endOfScrollMsg, errorMsg, isLoading, isError, isEndReached, onRetry, onEndReached, header, }: InfiniteDataListProps<TDataItem>) => import("react/jsx-runtime").JSX.Element;
export {};
