import { type ReactNode } from 'react';
import type { ReactElement } from 'react';
export type ViewMode = 'table' | 'cards' | 'kanban';
interface DataViewProps<T> {
    data: T[];
    viewMode?: ViewMode;
    onViewModeChange?: (mode: ViewMode) => void;
    renderTable?: (data: T[]) => ReactNode;
    renderCards?: (data: T[]) => ReactNode;
    renderKanban?: (data: T[]) => ReactNode;
    showTableView?: boolean;
    showCardsView?: boolean;
    showKanbanView?: boolean;
    tableLabel?: string;
    cardsLabel?: string;
    kanbanLabel?: string;
}
export declare function DataView<T>({ data, viewMode: controlledViewMode, onViewModeChange, renderTable, renderCards, renderKanban, showTableView, showCardsView, showKanbanView, tableLabel, cardsLabel, kanbanLabel, }: DataViewProps<T>): ReactElement;
interface ViewToggleProps {
    readonly viewMode: ViewMode;
    readonly onChange: (mode: ViewMode) => void;
    readonly showTable?: boolean;
    readonly showCards?: boolean;
    readonly showKanban?: boolean;
    readonly tableLabel?: string;
    readonly cardsLabel?: string;
    readonly kanbanLabel?: string;
}
export declare function ViewToggle({ viewMode, onChange, showTable, showCards, showKanban, tableLabel, cardsLabel, kanbanLabel, }: ViewToggleProps): ReactElement | null;
interface AvatarProps {
    readonly name: string;
    readonly size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
    readonly className?: string;
}
export declare function Avatar({ name, size, className }: AvatarProps): ReactElement;
interface StatusBadgeProps {
    readonly status: 'active' | 'inactive' | 'pending' | 'warning' | 'error';
    readonly label: string;
    readonly showDot?: boolean;
    readonly size?: 'sm' | 'md';
}
export declare function StatusBadge({ status, label, showDot, size }: StatusBadgeProps): ReactElement;
interface RoleBadgeProps {
    readonly role: string;
    readonly variant?: 'accent' | 'default';
    readonly icon?: ReactNode;
}
export declare function RoleBadge({ role, variant, icon }: RoleBadgeProps): ReactElement;
interface UserCardProps {
    readonly children: ReactNode;
    readonly onClick?: () => void;
    readonly className?: string;
}
export declare function DataCard({ children, onClick, className }: UserCardProps): ReactElement;
interface KanbanColumnProps {
    readonly title: string;
    readonly count: number;
    readonly color: 'success' | 'warning' | 'error' | 'default';
    readonly children: ReactNode;
    readonly isDragOver?: boolean;
    readonly isDropDisabled?: boolean;
    readonly onDragOver?: (e: React.DragEvent) => void;
    readonly onDragLeave?: () => void;
    readonly onDrop?: (e: React.DragEvent) => void;
}
export declare function KanbanColumn({ title, count, color, children, isDragOver, isDropDisabled, onDragOver, onDragLeave, onDrop }: KanbanColumnProps): ReactElement;
interface KanbanCardProps {
    readonly children: ReactNode;
    readonly onClick?: () => void;
    readonly draggable?: boolean;
    readonly isDragging?: boolean;
    readonly onDragStart?: () => void;
    readonly onDragEnd?: () => void;
}
export declare function KanbanCard({ children, onClick, draggable, isDragging, onDragStart, onDragEnd }: KanbanCardProps): ReactElement;
interface PaginationProps {
    readonly page: number;
    readonly totalPages: number;
    readonly totalCount: number;
    readonly pageSize?: number;
    readonly onPageChange: (page: number) => void;
    readonly itemLabel?: string;
    readonly showInfo?: boolean;
    readonly showFirstLast?: boolean;
}
export declare function Pagination({ page, totalPages, totalCount, pageSize, onPageChange, itemLabel, showInfo, showFirstLast, }: PaginationProps): ReactElement;
export {};
//# sourceMappingURL=DataView.d.ts.map