import { ReactNode } from 'react';
export type TableColumnsDropdownItem = {
    /**
     * Stable unique column key.
     */
    key: string;
    /**
     * Visible label shown inside the dropdown item.
     */
    label: ReactNode;
    /**
     * Controls whether the column is currently visible in the table.
     */
    visible: boolean;
    /**
     * Hides the item from the dropdown list while keeping the column in the configuration.
     *
     * @default false
     */
    hideLabel?: boolean;
    /**
     * Disables visibility changes and drag reordering for this item.
     *
     * @default false
     */
    disabled?: boolean;
    /**
     * Enables or disables drag reordering for this item.
     *
     * @default true
     */
    draggable?: boolean;
};
type TableColumnsDropdownBaseProps = {
    /**
     * Configurable column items displayed inside the dropdown.
     */
    columns: TableColumnsDropdownItem[];
    /**
     * Called when drag reordering produces a new column order.
     */
    onColumnOrderChange?: (columnOrder: string[]) => void;
    /**
     * Called when a column item is toggled visible or hidden.
     */
    onColumnVisibilityChange?: (columnKey: string, visible: boolean) => void;
    /**
     * Called when the reset action is triggered.
     */
    onReset?: () => void;
    /**
     * Label shown on the dropdown trigger button.
     */
    label?: ReactNode;
    /**
     * Optional classes for the outer dropdown component.
     */
    className?: string;
    /**
     * Optional classes for the dropdown toggle button.
     */
    toggleClassName?: string;
    /**
     * Optional classes for the dropdown menu.
     */
    dropdownClassName?: string;
};
export type TableColumnsDropdownProps = (TableColumnsDropdownBaseProps & {
    /**
     * Shows the reset action at the bottom of the dropdown.
     */
    showResetButton: true;
    /**
     * Label rendered for the reset action.
     */
    resetLabel: ReactNode;
}) | (TableColumnsDropdownBaseProps & {
    /**
     * Hides the reset action.
     *
     * @default false
     */
    showResetButton?: false;
    /**
     * Optional reset label kept for API compatibility when the reset action is hidden.
     */
    resetLabel?: ReactNode;
});
declare const TableColumnsDropdown: (props: TableColumnsDropdownProps) => import("react/jsx-runtime").JSX.Element;
export default TableColumnsDropdown;
