import type { ReactNode } from "react";
import type { CellContext, SortingFnOption } from "@tanstack/react-table";
import type { TIconType } from "../adpIcon";
import type { IOption } from "../select";
/**
 * Column configuration for DataTable
 */
export type TColumn = {
    id?: string;
    key: string;
    header?: any;
    cell?: (row: CellContext<any, any>) => ReactNode;
    /** Cannot be reordered or hidden in preferences */
    fixed?: boolean;
    /** Visibility state of the column */
    selected?: boolean;
    /** Enable sorting */
    enableSorting?: boolean;
    /** Enable resizing */
    enableResizing?: boolean;
    /** Custom sorting function */
    sortingFn?: SortingFnOption<any>;
    /** Column width */
    size?: number;
    /** Hide from column preference panel */
    hideColPreference?: boolean;
};
/**
 * Basic filter item for DataTable
 */
export type TFilterItem = {
    id?: string;
    selectedValue?: any;
    icon?: TIconType;
    title: string;
    placeholder?: string;
    onChange?: () => void;
    options: IOption[];
    [key: string]: any;
};
/**
 * Advanced filter item for DataTable
 */
export type TAdvancedFilterItem = {
    id: string;
    title: string;
    subTitle?: string;
    selectedValue?: any;
    setSelectedValue?: (value: any) => void;
    filterComponent?: ReactNode;
    icon?: TIconType;
    isMulti?: boolean;
    options?: IOption[];
    render?: ReactNode | (() => ReactNode);
    onChange?: () => void;
};
/**
 * Filters record type
 */
export type TFilters = Record<string, any>;
