import { Factory } from '@mantine/core';
import { ColumnDef } from '@tanstack/react-table';
import { ForwardedRef } from 'react';
import { CustomComponentThemeExtend } from '../../utils';
import { TableLayout, TableProps } from './Table.types';
import { TableLayouts } from './layouts/TableLayouts';
import { TableActionItem, TableActionItemStylesNames, TableHeaderActionsStylesNames } from './table-actions';
import { TableActionsListStylesNames } from './table-actions/TableActionsList';
import { TableActionsColumn } from './table-column/TableActionsColumn';
import { TableAccordionColumn, TableCollapsibleColumn, TableCollapsibleColumnStylesNames } from './table-column/TableCollapsibleColumn';
import { TableColumnsSelector, TableColumnsSelectorStylesNames } from './table-columns-selector/TableColumnsSelector';
import { TableDateRangePicker, TableDateRangePickerStylesNames } from './table-date-range-picker/TableDateRangePicker';
import { TableFilter, TableFilterStylesNames } from './table-filter/TableFilter';
import { TableFooter } from './table-footer/TableFooter';
import { TableHeader, TableHeaderStylesNames } from './table-header/TableHeader';
import { TableThStylesNames } from './table-header/Th';
import { TableLastUpdated, TableLastUpdatedStylesNames } from './table-last-updated/TableLastUpdated';
import { TableLoading } from './table-loading/TableLoading';
import { TableNoData } from './table-no-data/TableNoData';
import { TablePagination } from './table-pagination/TablePagination';
import { TablePerPage } from './table-per-page/TablePerPage';
import { TablePredicate, TablePredicateStylesNames } from './table-predicate/TablePredicate';
type TableStylesNames = 'root' | 'table' | 'header' | 'body' | TableHeaderActionsStylesNames | TableActionsListStylesNames | TableActionItemStylesNames | TableCollapsibleColumnStylesNames | TableDateRangePickerStylesNames | TableFilterStylesNames | TableHeaderStylesNames | TableThStylesNames | TableLastUpdatedStylesNames | TablePredicateStylesNames | TableColumnsSelectorStylesNames;
export type PlasmaTableFactory = Factory<{
    props: TableProps<unknown>;
    ref: HTMLDivElement;
    stylesNames: TableStylesNames;
    staticComponents: {
        AccordionColumn: typeof TableAccordionColumn;
        ActionsColumn: typeof TableActionsColumn;
        ActionItem: typeof TableActionItem;
        CollapsibleColumn: typeof TableCollapsibleColumn;
        ColumnsSelector: typeof TableColumnsSelector;
        DateRangePicker: typeof TableDateRangePicker;
        Filter: typeof TableFilter;
        Footer: typeof TableFooter;
        Header: typeof TableHeader;
        LastUpdated: typeof TableLastUpdated;
        Layouts: typeof TableLayouts;
        Loading: typeof TableLoading;
        NoData: typeof TableNoData;
        Pagination: typeof TablePagination;
        PerPage: typeof TablePerPage;
        Predicate: typeof TablePredicate;
    };
}>;
export declare const Table: {
    <T>(props: TableProps<T> & {
        ref?: ForwardedRef<HTMLDivElement>;
    }): import("react/jsx-runtime").JSX.Element;
    AccordionColumn: ColumnDef<unknown>;
    ActionsColumn: ColumnDef<unknown>;
    ActionItem: (<C = "button">(props: import("@mantine/core").PolymorphicComponentProps<C, import("./table-actions").TableActionItemProps>) => React.ReactElement) & Omit<import("react").FunctionComponent<(import("./table-actions").TableActionItemProps & {
        component?: any;
    } & Omit<Omit<any, "ref">, "component" | keyof import("./table-actions").TableActionItemProps> & {
        ref?: any;
        renderRoot?: (props: any) => any;
    }) | (import("./table-actions").TableActionItemProps & {
        component: React.ElementType;
        renderRoot?: (props: Record<string, any>) => any;
    })>, never> & import("@mantine/core/lib/core/factory/factory").ThemeExtend<{
        props: import("./table-actions").TableActionItemProps;
        defaultRef: HTMLButtonElement;
        defaultComponent: "button";
        stylesNames: TableActionItemStylesNames;
        compound: true;
    }> & import("@mantine/core/lib/core/factory/factory").ComponentClasses<{
        props: import("./table-actions").TableActionItemProps;
        defaultRef: HTMLButtonElement;
        defaultComponent: "button";
        stylesNames: TableActionItemStylesNames;
        compound: true;
    }> & import("@mantine/core/lib/core/factory/polymorphic-factory").PolymorphicComponentWithProps<{
        props: import("./table-actions").TableActionItemProps;
        defaultRef: HTMLButtonElement;
        defaultComponent: "button";
        stylesNames: TableActionItemStylesNames;
        compound: true;
    }>;
    CollapsibleColumn: ColumnDef<unknown>;
    ColumnsSelector: import("@mantine/core").MantineComponent<{
        props: import("./table-columns-selector/TableColumnsSelector").TableColumnsSelectorProps;
        ref: HTMLDivElement;
        stylesNames: TableColumnsSelectorStylesNames;
        compound: true;
    }>;
    DateRangePicker: import("@mantine/core").MantineComponent<{
        props: import("./table-date-range-picker/TableDateRangePicker").TableDateRangePickerProps;
        ref: HTMLDivElement;
        stylesNames: TableDateRangePickerStylesNames;
        compound: true;
    }>;
    Filter: import("@mantine/core").MantineComponent<{
        props: import("./table-filter/TableFilter").TableFilterProps;
        ref: HTMLDivElement;
        stylesNames: TableFilterStylesNames;
        compound: true;
    }>;
    Footer: import("react").FunctionComponent<import("./table-footer/TableFooter").TableFooterProps>;
    Header: import("@mantine/core").MantineComponent<{
        props: import("./table-header/TableHeader").TableHeaderProps;
        ref: HTMLDivElement;
        stylesNames: TableHeaderStylesNames;
        compound: true;
    }>;
    LastUpdated: import("@mantine/core").MantineComponent<{
        props: import("./table-last-updated/TableLastUpdated").TableLastUpdatedProps;
        ref: HTMLDivElement;
        stylesNames: TableLastUpdatedStylesNames;
        compound: true;
    }>;
    Layouts: {
        Rows: import("@mantine/core").MantineComponent<{
            ref?: never;
            props: import("./layouts/row-layout/RowLayout").RowLayoutProps;
            stylesNames: "headerRow" | import("./layouts/row-layout/RowLayoutBody").RowLayoutBodyStylesNames;
            staticComponents: TableLayout;
        }>;
    };
    Loading: import("react").FunctionComponent<import("@mantine/core").SkeletonProps>;
    NoData: import("react").FunctionComponent<import("./table-no-data/TableNoData").TableNoDataProps>;
    Pagination: import("react").FunctionComponent<import("./table-pagination/TablePagination.types").TablePaginationProps>;
    PerPage: import("react").FunctionComponent<import("./table-per-page/TablePerPage.types").TablePerPageProps> & {
        DEFAULT_SIZE: number;
    };
    Predicate: import("react").FunctionComponent<import("./table-predicate/TablePredicate").TablePredicateProps>;
    extend: CustomComponentThemeExtend<{
        props: TableProps<unknown>;
        ref: HTMLDivElement;
        stylesNames: TableStylesNames;
        staticComponents: {
            AccordionColumn: typeof TableAccordionColumn;
            ActionsColumn: typeof TableActionsColumn;
            ActionItem: typeof TableActionItem;
            CollapsibleColumn: typeof TableCollapsibleColumn;
            ColumnsSelector: typeof TableColumnsSelector;
            DateRangePicker: typeof TableDateRangePicker;
            Filter: typeof TableFilter;
            Footer: typeof TableFooter;
            Header: typeof TableHeader;
            LastUpdated: typeof TableLastUpdated;
            Layouts: typeof TableLayouts;
            Loading: typeof TableLoading;
            NoData: typeof TableNoData;
            Pagination: typeof TablePagination;
            PerPage: typeof TablePerPage;
            Predicate: typeof TablePredicate;
        };
    }>;
};
export declare const TableComponentsOrder: {
    MultiSelectInfo: number;
    Actions: number;
    Predicate: number;
    Filter: number;
    DateRangePicker: number;
    ColumnsSelector: number;
    LayoutControl: number;
};
export {};
//# sourceMappingURL=Table.d.ts.map