import { ReactNode } from 'react';
import { SelectedButtonIcon } from '../TableV3/SelectedAction';
import { ComplexAction } from '../types';
import { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime';
import { ReadonlyURLSearchParams } from 'next/navigation';
export interface THeader {
    name: string | ReactNode;
    col: number;
    row: number;
    children?: Array<THeader>;
}
export type TTableData = Record<string, any>;
export interface RowChildrenData {
    headers: Array<string>;
    body: Array<string>;
    data: Array<Record<string, any>>;
}
export interface TBodyComponent {
    [key: string]: (value: any, itemBody: any) => {
        value: any;
        row?: number;
        children?: RowChildrenData;
    };
}
export interface TMergeConfig {
    isMergeRowData: boolean;
    columnPosition: Array<{
        key: string;
        position: number;
    }>;
}
export interface TSearch {
    enable: boolean;
    loading?: boolean;
    onChange?(searchValue: string): void;
}
export interface TPagination {
    enable: boolean;
    dataAggregate: number;
    setRowNumberInPage?(rowNumber: number): void;
    rowNumberInPage: number;
    loading?: boolean;
    onChange?(page: number): void;
}
export interface TSelectedAllPeople {
    enable: boolean;
    selectedAction: {
        label: string;
        actions: Array<ComplexAction & {
            icon?: SelectedButtonIcon;
        }>;
    };
    maxSelectedPeople?: number;
    hideSelectedAction?: boolean;
}
export interface NavigationUrlApply {
    router?: AppRouterInstance;
    searchParams: ReadonlyURLSearchParams;
}
