import React, { PropsWithChildren } from "react";
interface ListToolbarProps {
    children: React.ReactNode;
    className?: string;
}
declare const ListToolbar: React.FC<ListToolbarProps>;
interface ListFooterProps {
    children: React.ReactNode;
    className?: string;
}
declare const ListFooter: React.FC<ListFooterProps>;
interface ListContentProps<T> {
    items: T[];
    getKey: (item: T, index: number) => string;
    render: (item: T) => React.ReactNode;
    separated?: boolean;
    className?: string;
}
declare function ListContent<T>({ items, getKey, render, separated, className }: ListContentProps<T>): React.JSX.Element;
interface ListVirtualizedContentProps<T> {
    items: T[];
    getKey: (item: T, index: number) => string;
    render: (item: T) => React.ReactNode;
    isLoading?: boolean;
    separated?: boolean;
    className?: string;
    /** Параметры для бесконечной подгрузки */
    hasNextPage: boolean;
    fetchNextPage: () => Promise<unknown>;
}
declare function ListVirtualizedContent<T>({ items, getKey, render, separated, className, isLoading, hasNextPage, fetchNextPage }: ListVirtualizedContentProps<T>): React.JSX.Element;
interface ListComposition {
    Toolbar: typeof ListToolbar;
    Content: typeof ListContent;
    Footer: typeof ListFooter;
    VirtualizedContent: typeof ListVirtualizedContent;
}
interface ListProps extends PropsWithChildren {
    className?: string;
}
export declare const List: React.FC<ListProps> & ListComposition;
export {};
//# sourceMappingURL=List.d.ts.map