import type { NoIdColumnOptions } from './Table/Column';
export interface ColumnOptionsMapItemLike {
    /**
     * Index of the column in `options.columns`.
     */
    index: number;
    /**
     * Column options for a single Grid column id.
     */
    options: NoIdColumnOptions;
}
/**
 * Represents a column policy resolver.
 */
declare class ColumnPolicyResolver {
    /**
     * Individual column options map keyed by Grid column id.
     */
    columnOptionsMap: Record<string, ColumnOptionsMapItemLike>;
    /**
     * Source column id map keyed by Grid column id.
     */
    private sourceColumnIdMap;
    /**
     * Column defaults merged into all capability checks.
     */
    private columnDefaults;
    /**
     * Available source column ids from the active data provider.
     */
    private availableSourceColumnIds?;
    /**
     * Source column ids hidden by data projection features.
     */
    private hiddenSourceColumnIds?;
    /**
     * Sets the current column options map and rebuilds source id mappings.
     *
     * @param columnOptionsMap
     * Column options keyed by Grid column id.
     */
    setColumnOptionsMap(columnOptionsMap: Record<string, ColumnOptionsMapItemLike>): void;
    /**
     * Removes all column options from the resolver.
     */
    clearColumnOptions(): void;
    /**
     * Returns whether options for the given column id exist.
     *
     * @param columnId
     * Grid column id.
     */
    hasColumnOptions(columnId: string): boolean;
    /**
     * Returns column ids for all configured column options.
     */
    getColumnIds(): string[];
    /**
     * Returns raw options for a Grid column.
     *
     * @param columnId
     * Grid column id.
     */
    getIndividualColumnOptions(columnId: string): NoIdColumnOptions | undefined;
    /**
     * Returns the index of a Grid column in `options.columns`.
     *
     * @param columnId
     * Grid column id.
     */
    getColumnOptionIndex(columnId: string): number | undefined;
    /**
     * Adds or replaces a single column option entry.
     *
     * @param columnId
     * Grid column id.
     *
     * @param columnOption
     * Column map item to store.
     */
    setColumnOption(columnId: string, columnOption: ColumnOptionsMapItemLike): void;
    /**
     * Removes a single column option entry.
     *
     * @param columnId
     * Grid column id.
     */
    removeColumnOption(columnId: string): void;
    /**
     * Sets column defaults used for capability checks.
     *
     * @param columnDefaults
     * Grid column defaults.
     */
    setColumnDefaults(columnDefaults?: NoIdColumnOptions): void;
    /**
     * Sets available source column ids from the current data provider.
     *
     * @param columnIds
     * List of source column ids. If omitted, the cache is cleared.
     */
    setAvailableSourceColumnIds(columnIds?: string[]): void;
    /**
     * Sets source column ids that should not be rendered.
     *
     * @param columnIds
     * Source column ids hidden from the rendered column set. If omitted, the
     * cache is cleared.
     */
    setHiddenSourceColumnIds(columnIds?: string[]): void;
    /**
     * Returns cached source column ids from the data provider.
     */
    getAvailableSourceColumnIds(): string[] | undefined;
    /**
     * Resolves source column id for a Grid column id.
     *
     * @param columnId
     * Grid column id.
     */
    getColumnSourceId(columnId: string): string | undefined;
    /**
     * Returns whether the column is unbound to provider data.
     *
     * @param columnId
     * Grid column id.
     */
    isColumnUnbound(columnId: string): boolean;
    /**
     * Returns whether the column should be included in exports.
     *
     * @param columnId
     * Grid column id.
     */
    isColumnExportable(columnId: string): boolean;
    /**
     * Returns whether sorting should be enabled for the column.
     *
     * @param columnId
     * Grid column id.
     */
    isColumnSortingEnabled(columnId: string): boolean;
    /**
     * Returns whether filtering should be enabled for the column.
     *
     * @param columnId
     * Grid column id.
     */
    isColumnFilteringEnabled(columnId: string): boolean;
    /**
     * Returns whether inline filtering should be enabled for the column.
     *
     * @param columnId
     * Grid column id.
     */
    isColumnInlineFilteringEnabled(columnId: string): boolean;
    /**
     * Returns whether the filter operator select is hidden.
     *
     * @param columnId
     * Grid column id.
     */
    isFilterOperatorSelectHidden(columnId: string): boolean;
    /**
     * Returns whether a spacer should reserve the operator select row height
     * for inline filtering in the given column.
     *
     * @param columnId
     * Grid column id.
     *
     * @param enabledColumnIds
     * Enabled Grid column ids in the filter row.
     */
    shouldRenderOperatorSpacer(columnId: string, enabledColumnIds: string[]): boolean;
    /**
     * Returns whether editing should be enabled for the column.
     *
     * @param columnId
     * Grid column id.
     */
    isColumnEditable(columnId: string): boolean;
    /**
     * Resolves ordered column ids that should be rendered.
     *
     * @param headerColumns
     * Column ids resolved from header.
     *
     * @param autogenerateColumns
     * Whether columns should be autogenerated from the provider.
     *
     * @param autoColumns
     * Available column ids from the data provider.
     *
     * @param configuredColumns
     * Column ids from `options.columns`.
     */
    getColumnsForRender(headerColumns: string[], autogenerateColumns: boolean, autoColumns: string[], configuredColumns?: string[]): string[];
    /**
     * Returns column ids for autogeneration mode:
     * `autoColumns` followed by configured-only columns.
     *
     * Relative order from `configuredColumns` is preserved.
     *
     * @param autoColumns
     * Column ids from the data provider.
     *
     * @param configuredColumns
     * Column ids from `options.columns`.
     */
    private static getColumnsForAutogeneration;
    /**
     * Filters out columns backed by hidden source columns.
     *
     * @param columnIds
     * Candidate column ids.
     */
    private filterHiddenSourceColumns;
    /**
     * Filters out duplicate and disabled columns while preserving order.
     *
     * @param columnIds
     * Candidate column ids.
     */
    filterEnabledColumns(columnIds: string[]): string[];
    /**
     * Rebuilds source column id cache from current column options.
     */
    private rebuildSourceColumnIdMap;
    /**
     * Resolves source column id based on map item options.
     *
     * @param columnId
     * Grid column id.
     *
     */
    private resolveSourceColumnId;
}
export default ColumnPolicyResolver;
