import { PopperContentProps } from "@radix-ui/react-popover";
import { BaseOption, BaseRecord, HttpError } from "@refinedev/core";
import { UseTableReturnType } from "@refinedev/react-table";
import { CellContext, Column, ColumnDefTemplate } from "@tanstack/react-table";
import React, { FC, ReactElement } from "react";
import { RowActions } from "./actions";
import { TableFilterDateRangePickerFilter, TableFilterDropdown, TableFilterSearchColumn } from "./fields";
export type TableListFilterOption = BaseOption & {
    icon?: React.ComponentType<{
        className?: string;
    }>;
};
export type TableFilterProps<TData extends BaseRecord = BaseRecord> = {
    column: Column<TData, unknown>;
    title?: string;
    numberOfMonths?: number;
    align?: PopperContentProps["align"];
    options?: TableListFilterOption[];
};
export type ColumnProps<TData extends BaseRecord = BaseRecord, TValue = unknown, TError extends HttpError = HttpError> = {
    id: string;
    accessorKey: string;
    enableSorting?: boolean;
    enableHiding?: boolean;
    header?: string | FC<{
        table: UseTableReturnType<TData, TError>;
    }>;
    cell?: ColumnDefTemplate<CellContext<TData, TValue>>;
    children?: ReactElement;
    filter?: FC<TableFilterProps<TData>>;
};
export type TableProps<TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError> = {
    children?: ReactElement<ColumnProps<TData, TError>>[];
    showHeader?: boolean;
    table: UseTableReturnType<TData, TError>;
};
export declare function Table<TQueryFnData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, TData extends BaseRecord = TQueryFnData>({ children, table, showHeader }: TableProps<TData, TError>): import("react/jsx-runtime").JSX.Element;
export declare namespace Table {
    var Column: <TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError>(props: ColumnProps<TData, TError, HttpError>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
    var CheckAll: {
        ({ table, children }: {
            children?: React.ReactNode;
        } & {
            table: UseTableReturnType<BaseRecord, HttpError>;
        }): import("react/jsx-runtime").JSX.Element;
        actions(): void;
    };
    var Actions: typeof RowActions;
    var Action: (props: import("./actions").RowActionProps) => import("react/jsx-runtime").JSX.Element;
    var EditAction: typeof import("./actions/edit").EditAction;
    var ShowAction: typeof import("./actions/show").ShowAction;
    var DeleteAction: typeof import("./actions/delete").DeleteAction;
    var Filter: {
        DateRangePicker: typeof TableFilterDateRangePickerFilter;
        Dropdown: typeof TableFilterDropdown;
        Search: typeof TableFilterSearchColumn;
    };
    var displayName: string;
}
//# sourceMappingURL=index.d.ts.map