import React, { ComponentProps } from 'react';
import { DragEndEvent } from '@dnd-kit/core';
import { arrayMove as dndArrayMove } from '@dnd-kit/sortable';
import { List as AntList } from 'antd';
type SortOption = {
    label: string;
    value: string;
    isDefault?: boolean;
};
type PaginationConfig = {
    current?: number;
    pageSize?: number;
    total?: number;
    onChange?: (page: number, pageSize: number) => void;
    onShowSizeChange?: (current: number, size: number) => void;
    showSizeChanger?: boolean;
};
type ItemSelection = {
    onChange: (selectedItems: string[]) => void;
};
export type ListItem = {
    id: string;
    [key: string]: unknown;
};
type ListProps = Omit<ComponentProps<typeof AntList>, 'dataSource' | 'renderItem' | 'pagination'> & {
    className?: string;
    dataSource: ListItem[];
    renderItem: (item: ListItem, index: number) => React.ReactNode;
    footerContent?: React.ReactElement | null;
    itemSelection?: ItemSelection | null;
    loading?: boolean;
    onSearch?: (value: string) => void;
    onSortOptionChange?: ((value: string) => void) | null;
    pagination?: PaginationConfig | false;
    searchLoading?: boolean;
    searchPlaceholder?: string;
    showPagination?: boolean;
    showSearch?: boolean;
    showSort?: boolean;
    showTotalCount?: boolean;
    sortOptions?: SortOption[];
    totalCount?: number | null;
    draggable?: boolean;
    onDragEnd?: (event: DragEndEvent) => void;
    selectedItems?: string[];
};
declare const List: {
    (props: ListProps): React.ReactNode;
    Item: import("antd/es/list/Item").ListItemTypeProps;
};
export { dndArrayMove };
export type { DragEndEvent };
export default List;
