import { NumericFormatProps } from 'react-number-format';
import { EmptyStateProps } from '../EmptyState/EmptyState';
export declare enum CheckboxState {
    UNCHECKED = "UNCHECKED",
    CHECKED = "CHECKED"
}
export interface TableColumnConfigProps {
    /** Specifies the text to be displayed in the table column header, serving as a visual label for the column's data. */
    label: string;
    /** Defines the unique key used to retrieve the corresponding data from each row object, linking column configuration to data source. */
    dataKey: string;
    /** Optional property that allows custom CSS styling to be applied directly to each cell in the column,  */
    style?: React.CSSProperties;
    /** A render prop function that returns a custom React component or JSX for displaying the content of each cell in the column,
     *  providing flexibility for complex data rendering. */
    children: (data: FlattenNestedDataProps, index?: number) => React.ReactNode;
}
export interface TreeListBoxProps {
    /** Data to be displayed in the nested component */
    data: GenericNode[];
    /** If there is data available to display. If false, the component will display an empty state */
    hasData: boolean;
    /** If the data is still loading. If true, the component will display a loading state */
    isLoading: boolean;
    /** Configuration for the table columns */
    tableConfig: TableColumnConfigProps[];
    /** Object containing keys to identify the data and its parent child relationship */
    identifierKeys: {
        displayKey: string;
        idKey: string;
        parentKey: string;
    };
    /** If the component should have a search bar */
    isSearchable?: boolean;
    /** Custom height for the table content */
    customHeight?: number | string;
    /** Custom width for the table component */
    customWidth?: number | string;
    /** Function to be called when the state of the checkboxes change */
    onChange: (newItemStates: DateCheckState[]) => void;
    noDataText?: EmptyStateProps;
    itemStates: DateCheckState[];
    setItemStates: React.Dispatch<React.SetStateAction<DateCheckState[]>>;
}
export interface FlattenNestedDataProps {
    [key: string]: string | number | null | NumericFormatProps;
}
export interface CheckboxListProps {
    items: any[];
    getStateForId: (id: string) => CheckboxState;
    idsToRender?: string[];
    onClick?: (id: string) => void;
    expandedItems?: {
        [key: string]: boolean;
    };
    onToggleExpand?: (id: string) => void;
    indentLevel?: number;
    tableConfig: TableColumnConfigProps[];
    idKey: string;
    parentKey: string;
    displayKey: string;
    pathKey: string;
}
export interface GenericNode {
    [key: string]: string | number | null | NumericFormatProps | GenericNode[];
}
export interface DateCheckState {
    id: string | number;
    state: CheckboxState;
}
