import { z } from "zod/v4";
import type { JSX } from "solid-js";
import type { ComponentMeta } from "../../meta";
export declare const DataTableColumnSchema: z.ZodObject<{
    id: z.ZodString;
    header: z.ZodString;
    sortable: z.ZodOptional<z.ZodBoolean>;
    width: z.ZodOptional<z.ZodNumber>;
    minWidth: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
export type SortDirection = "asc" | "desc" | "none";
export interface DataTableColumn<T = unknown> extends z.infer<typeof DataTableColumnSchema> {
    /** Renders the cell content for a given row. */
    cell: (row: T, index: number) => JSX.Element;
    /** Custom sort comparator. Falls back to localeCompare on JSON-stringified values. */
    sortFn?: (a: T, b: T) => number;
    /** Custom per-column filter. Falls back to global JSON.stringify includes. */
    filterFn?: (row: T, filterValue: string) => boolean;
}
export declare const DataTableRootPropsSchema: z.ZodObject<{
    pageSize: z.ZodOptional<z.ZodNumber>;
    defaultPage: z.ZodOptional<z.ZodNumber>;
    page: z.ZodOptional<z.ZodNumber>;
    filterValue: z.ZodOptional<z.ZodString>;
    defaultFilterValue: z.ZodOptional<z.ZodString>;
    enableRowSelection: z.ZodOptional<z.ZodBoolean>;
    enableMultiRowSelection: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>;
export interface DataTableRootProps<T = unknown> extends z.infer<typeof DataTableRootPropsSchema> {
    /** The data rows to display. */
    data: T[];
    /** Column definitions. */
    columns: DataTableColumn<T>[];
    /** Called when the page changes. */
    onPageChange?: (page: number) => void;
    /** Called when the filter value changes. */
    onFilterChange?: (value: string) => void;
    /** Called when selection changes. */
    onSelectionChange?: (selectedIndices: Set<number>) => void;
    children: JSX.Element;
}
export declare const DataTableMeta: ComponentMeta;
//# sourceMappingURL=data-table.props.d.ts.map