import type { BasePubSubService } from '@slickgrid-universal/event-pub-sub';
import { SlickEvent, type SlickEventData, type SlickGrid } from '../core/index.js';
import type { Column, ColumnPicker, ColumnPickerOption, DOMMouseOrTouchEvent, GridOption, OnColumnsChangedArgs } from '../interfaces/index.js';
import type { SharedService } from '../services/shared.service.js';
import type { ExtensionUtility } from './extensionUtility.js';
import { MenuBaseClass } from './menuBaseClass.js';
/**
 * A control to add a Column Picker (right+click on any column header to reveal the column picker)
 * To specify a custom button in a column header, extend the column definition like so:
 *   this.gridOptions = {
 *     enableColumnPicker: true,
 *     columnPicker: {
 *       ... column picker options ...
 *     }
 *   }];
 * @class ColumnPickerControl
 * @constructor
 */
export declare class SlickColumnPicker extends MenuBaseClass<ColumnPicker> {
    onColumnsChanged: SlickEvent<OnColumnsChangedArgs>;
    protected _originalPickerOptions: ColumnPicker;
    protected _defaults: ColumnPickerOption;
    /** Constructor of the SlickGrid 3rd party plugin, it can optionally receive options */
    constructor(extensionUtility: ExtensionUtility, pubSubService: BasePubSubService, sharedService: SharedService);
    get addonOptions(): ColumnPicker;
    get columns(): Column[];
    set columns(newColumns: Column[]);
    get gridOptions(): GridOption;
    get grid(): SlickGrid;
    get menuElement(): HTMLDivElement | null;
    /** Initialize plugin. */
    init(): void;
    /** Dispose (destroy) the SlickGrid 3rd party plugin */
    dispose(): void;
    disposeMenu(): void;
    createPickerMenu(): HTMLDivElement;
    /**
     * Get all columns including hidden columns.
     * @returns {Array<Object>} - all columns array
     */
    getAllColumns(): Column[];
    /**
     * Get only the visible columns.
     * @returns {Array<Object>} - all columns array
     */
    getVisibleColumns(): Column[];
    /** Translate the Column Picker headers and also the last 2 checkboxes */
    translateColumnPicker(): void;
    translateColumnPickerTitles(): void;
    /** Mouse down handler when clicking anywhere in the DOM body */
    protected handleBodyMouseDown(e: DOMMouseOrTouchEvent<HTMLDivElement>): void;
    /** Mouse header context handler when doing a right+click on any of the header column title */
    protected handleHeaderContextMenu(e: SlickEventData): void;
    protected focusFirstMenuItem(menuElm: HTMLElement): void;
    repositionMenu(event: DOMMouseOrTouchEvent<HTMLDivElement> | SlickEventData): void;
}
//# sourceMappingURL=slickColumnPicker.d.ts.map