import { OptionObjectValueType } from '.';
import { TIconClass } from './icons.types';
export declare type Alignment = 'left' | 'center' | 'right';
export declare type SortFunction<Option extends OptionObjectValueType> = (a: Option, b: Option) => number;
export declare type FormatFunction<Option extends OptionObjectValueType = OptionObjectValueType> = (row: Option) => string | number | unknown;
/** @description Configuration for column filtering functionality */
export declare type FilterableConfig = {
    /** @description Whether filtering is enabled for this column */
    enabled: boolean;
    /** @description Whether to show a search input in the filter popover to narrow down options */
    searchable?: boolean;
};
/** @description State object tracking active filters per column */
export declare type ColumnFilterState = {
    [columnKey: string]: Array<unknown>;
};
/** @description Default filter options per column (always shown in filter popover) */
export declare type FilterOptionsMap = Record<string, Array<string | number>>;
export declare type ColumnTypeItem<Option extends OptionObjectValueType = OptionObjectValueType> = {
    columnItemLabel: string;
    columnItemKey: string;
    columnItemIcon?: TIconClass;
    columnAlignment?: Alignment;
    columnClasses?: string;
    rowItemAlignment?: Alignment;
    rowItemLabelKey?: string;
    rowItemKeyKey?: string;
    rowItemClasses?: string;
    minWidth?: string;
    maxWidth?: string;
    width?: string;
    selected?: boolean;
    sortBy?: string;
    sortableFunction?: SortFunction<Option>;
    /** @description Format function to customize cell value display. Receives the row object and returns the formatted value. */
    format?: FormatFunction<Option>;
    /** @description Configuration for column filtering. When enabled, displays a filter icon that opens a popover with unique values to filter by. */
    filterableConfig?: FilterableConfig;
};
export declare type ColumnType = Array<ColumnTypeItem>;
export declare type ConfigType = {
    [key: string]: string;
};
export declare type SortingOrderDefaultType = {
    columnName: string;
    order: string;
} | undefined;
export interface Pagination {
    currentPage: number;
    perPage: number;
    total: number;
}
export declare type PaginationProp = Pagination | undefined;
export declare type ActionsColumnType = {
    width?: string;
    minWidth?: string;
    maxWidth?: string;
    columnName?: string;
    icon?: TIconClass;
    classes?: string;
};
