import type { TablePlugin } from '../../types';
import type { UseTableColumnSettingsStateConfig } from './useTableColumnSettingsState';
/**
 * Definition of a column for the column settings UI.
 * Separate from TableColumn because the settings UI needs metadata
 * (label, group, disableability) that the table column doesn't carry.
 */
export interface ColumnSettingsOption<TColumnKey extends string = string> {
    /** Column key — must match TableColumn.key */
    key: TColumnKey;
    /** Human-readable label for the column settings UI */
    label: string;
    /**
     * Whether this column can be hidden.
     * When true, the column is always visible and its checkbox is disabled.
     * Use for essential columns like "Name" or "ID".
     *
     * @default false
     */
    isAlwaysVisible?: boolean;
    /**
     * Optional group name for organized column lists.
     * Columns with the same group are rendered together under a heading.
     */
    group?: string;
}
/**
 * Configuration for useTableColumnSettings.
 *
 * This is the same shape as UseTableColumnSettingsStateConfig —
 * you can pass `state.columnSettingsConfig` directly, or construct
 * it manually if you don't need the state hook.
 *
 * @template TColumnKey - String literal union of column keys
 */
export type UseTableColumnSettingsConfig<TColumnKey extends string = string> = UseTableColumnSettingsStateConfig<TColumnKey>;
/**
 * Column settings table plugin — filters and reorders columns based on
 * the active column keys.
 *
 * Returns a `TablePlugin` directly (same pattern as `useTableSortable`,
 * `useTableSelection`, etc.).
 *
 * @example
 * ```
 * const state = useTableColumnSettingsState({ columns, activeColumnKeys, onChangeActiveColumnKeys });
 * const plugin = useTableColumnSettings(state.columnSettingsConfig);
 * <Table columns={allColumns} plugins={{ columnSettings: plugin }} />
 * ```
 */
export declare function useTableColumnSettings<T extends Record<string, unknown>, TColumnKey extends string = string>(config: UseTableColumnSettingsConfig<TColumnKey>): TablePlugin<T>;
//# sourceMappingURL=useTableColumnSettings.d.ts.map