import { SafeHtml } from '@angular/platform-browser'; export interface TableConfig { tableColumns: ColumnConfig[]; title?: string; showFilter?: boolean; filterValue?: string; selection?: boolean; hideSelection?: (row: any) => boolean; filterPlaceholder?: string; filterWidth?: 'width33' | 'width50' | 'width66' | 'width100'; paginatorOptions?: PaginatorOptions; actions?: ActionButton[]; rowBgColor?: (row: any) => string | null | undefined; } interface ColumnConfig { key: string; displayedName: string; stickyStart?: boolean; stickyEnd?: boolean; render?: (row: any, key: string) => string | SafeHtml; pipe?: PipeType; isSortable: boolean; href?: (row: any) => string | null; button?: ColumnButton; menu?: { yPosition?: 'above' | 'below'; xPosition?: 'before' | 'after'; items: { text: (row: any) => string; icon?: string; disabled?: boolean; onClick: (row: any) => void; }[]; }; icon?: (row: any) => { icon: string; iconColor?: string; bgColor?: string; text?: string; textColor?: string; tooltip?: string; badge?: { text: string; bgColor?: string; size?: 'small' | 'medium' | 'large'; }; }; } interface PipeType { name: 'date' | 'number' | 'currency' | 'json' | 'lowercase' | 'uppercase' | 'titlecase' | 'percent' | 'decimal' | 'slice'; options?: string; } interface PaginatorOptions { pageIndex: number; pageSize?: number; length?: number; previousPageIndex?: number; pageSizeOptions?: number[]; } export declare enum ActionButtonType { ADD = 0, EDIT = 1, DELETE = 2, DETAILS = 3 } export interface ActionButton { type: ActionButtonType; onClick: (row?: any) => void; } interface ColumnButton { icon?: string; text?: string; tooltip?: string; bgColor?: string; iconColor?: string; textColor?: string; showButton?: (row: any) => boolean; onClick: (row: any) => void; } export {};