import { ColumnConfig } from '../types';
/** Special field name for the expander column */
export declare const EXPANDER_COLUMN_FIELD = "__tbw_expander";
/** Default width for the expander column (pixels) */
export declare const EXPANDER_COLUMN_WIDTH = 32;
/**
 * Marker interface for expander column renderers.
 * Used to detect if expander column is already present.
 */
export interface ExpanderColumnRenderer {
    (ctx: any): HTMLElement;
    __expanderColumn?: true;
    /** Plugin name that created this expander */
    __expanderPlugin?: string;
}
/**
 * Check if a column is an expander column.
 */
export declare function isExpanderColumn(column: ColumnConfig): boolean;
/**
 * Check if a column is a utility column (excluded from selection, clipboard, etc.).
 * Utility columns are non-data columns like expander columns.
 */
export declare function isUtilityColumn(column: ColumnConfig): boolean;
/**
 * Find an existing expander column in the column array.
 */
export declare function findExpanderColumn(columns: readonly ColumnConfig[]): ColumnConfig | undefined;
/**
 * Create the base expander column config.
 * Plugins should add their own renderer to customize the expand icon behavior.
 *
 * @param pluginName - Name of the plugin creating the expander (for debugging)
 * @returns Base column config for the expander column
 */
export declare function createExpanderColumnConfig(pluginName: string): ColumnConfig;
/**
 * Create a container element for expand/collapse toggle icons.
 * Used by plugins to wrap their expand icons with consistent styling.
 *
 * @param expanded - Whether the item is currently expanded
 * @param pluginClass - CSS class prefix for the plugin (e.g., 'master-detail', 'tree')
 * @returns Container span element
 */
export declare function createExpanderContainer(expanded: boolean, pluginClass: string): HTMLSpanElement;
/**
 * CSS styles for the expander column.
 * Plugins should include this in their styles to ensure consistent appearance.
 */
export declare const EXPANDER_COLUMN_STYLES = "\n/* Expander column data cells - always first, borderless right edge */\n.cell[data-field=\"__tbw_expander\"] {\n  border-right: none !important;\n  padding: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n/* Expander column header - completely hidden, no content, no border, no width contribution */\n.header-row .cell[data-field=\"__tbw_expander\"] {\n  visibility: hidden;\n  border: none !important;\n  padding: 0;\n  overflow: hidden;\n}\n\n/* The column after the expander should visually extend into the expander header space */\n.header-row .cell[data-field=\"__tbw_expander\"] + .cell {\n  /* Pull left to cover the hidden expander header */\n  margin-left: -32px;\n  padding-left: calc(var(--tbw-cell-padding, 8px) + 32px);\n}\n\n/* Expander cell contents */\n.expander-cell {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  height: 100%;\n  cursor: pointer;\n}\n";
//# sourceMappingURL=expander-column.d.ts.map