interface Column { key: string; label: string; sortable?: boolean; width?: string; align?: 'left' | 'center' | 'right'; filterable?: boolean; render?: (value: any, row: any, index: number) => any; } interface Action { key: string; label: string; icon?: any; onClick: (row: any, index: number) => void; disabled?: (row: any) => boolean; variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'; } interface Props { data?: any[]; columns?: Column[]; actions?: Action[]; loading?: boolean; selectable?: boolean; searchable?: boolean; filterable?: boolean; pagination?: boolean; currentPage?: number; itemsPerPage?: number; totalItems?: number; showTotal?: boolean; emptyMessage?: string; loadingMessage?: string; maxHeight?: string; striped?: boolean; hover?: boolean; class?: string; tableClass?: string; headerClass?: string; bodyClass?: string; } declare function __VLS_template(): { attrs: Partial<{}>; slots: Partial any>> & { pagination?(_: { currentPage: number; totalItems: number; }): any; }; refs: {}; rootEl: HTMLDivElement; }; type __VLS_TemplateResult = ReturnType; declare const __VLS_component: import('vue').DefineComponent any; "update:currentPage": (page: number) => any; "update:itemsPerPage": (size: number) => any; "selection-change": (selectedRows: any[]) => any; "row-click": (row: any, index: number) => any; "sort-change": (column: string, direction: "desc" | "asc" | null) => any; "filter-change": (filters: Record) => any; }, string, import('vue').PublicProps, Readonly & Readonly<{ onSearch?: ((query: string) => any) | undefined; "onUpdate:currentPage"?: ((page: number) => any) | undefined; "onUpdate:itemsPerPage"?: ((size: number) => any) | undefined; "onSelection-change"?: ((selectedRows: any[]) => any) | undefined; "onRow-click"?: ((row: any, index: number) => any) | undefined; "onSort-change"?: ((column: string, direction: "desc" | "asc" | null) => any) | undefined; "onFilter-change"?: ((filters: Record) => any) | undefined; }>, { data: any[]; loading: boolean; actions: Action[]; currentPage: number; totalItems: number; itemsPerPage: number; showTotal: boolean; columns: Column[]; selectable: boolean; searchable: boolean; filterable: boolean; pagination: boolean; emptyMessage: string; loadingMessage: string; striped: boolean; hover: boolean; }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>; declare const _default: __VLS_WithTemplateSlots; export default _default; type __VLS_WithTemplateSlots = T & { new (): { $slots: S; }; };