/**-----------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { OnDestroy, EventEmitter } from '@angular/core';
import { TreeListComponent } from '../treelist.component';
import { SelectionService } from './selection.service';
import * as i0 from "@angular/core";
/**
 * The [`kendoTreeListSelectable`](https://www.telerik.com/kendo-angular-ui/components/treelist/api/selectabledirective) state items.
 */
export interface SelectionItem {
    /**
     * The key that identifies the selected item.
     */
    itemKey: any;
    /**
     * The key that identifies the selected item column. Available in `cell` selection mode.
     */
    columnKey?: any;
}
/**
 * A directive which controls the selection state. [See example](https://www.telerik.com/kendo-angular-ui/components/treelist/selection).
 *
 * @example
 * ```html
 * <kendo-treelist
 *   [kendoTreeListSelectable]="{ mode: 'row' }"
 *   [selectedItems]="selectedItems">
 *     <kendo-treelist-column field="name" title="Name"></kendo-treelist-column>
 *     <kendo-treelist-column field="age" title="Age"></kendo-treelist-column>
 * </kendo-treelist>
 * ```
 * @remarks
 * Applied to: {@link TreeListComponent}.
 */
export declare class SelectableDirective implements OnDestroy {
    private treelist;
    private selectionService;
    /**
     * @hidden
     */
    set selectable(value: any);
    /**
     * Specifies the selected items.
     */
    set selectedItems(value: SelectionItem[]);
    /**
     * Fires when the selected items are changed.
     */
    selectedItemsChange: EventEmitter<SelectionItem[]>;
    /**
     * The field name or a function that specify the dataItems key.
     */
    set itemKey(value: string | ((dataItem: any) => any));
    /**
     * The field name or a function that specify the columns key.
     */
    set columnKey(value: string | ((column: any, columnIndex: number) => any));
    protected get keyGetter(): any;
    protected get columnKeyGetter(): any;
    protected subscriptions: any;
    protected state: any;
    protected _settings: any;
    protected lastChange: any[];
    protected _columnKeyGetter: any;
    protected _keyGetter: any;
    private _selectedItems;
    constructor(treelist: TreeListComponent, selectionService: SelectionService);
    ngOnDestroy(): void;
    /**
     * @hidden
     */
    protected cellSelected(dataItem: any, column: any, columnIndex: number): boolean;
    /**
     * @hidden
     */
    protected rowSelected(dataItem: any): boolean;
    protected selectionChange({ action, items }: any): void;
    protected emitSelectedItemsChange(): void;
    private subscribeSelection;
    private unsubscribeSelection;
    private updateColumnIndices;
    private get leafColumns();
    static ɵfac: i0.ɵɵFactoryDeclaration<SelectableDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SelectableDirective, "[kendoTreeListSelectable]", ["kendoTreeListSelectable"], { "selectable": { "alias": "selectable"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "itemKey": { "alias": "itemKey"; "required": false; }; "columnKey": { "alias": "columnKey"; "required": false; }; }, { "selectedItemsChange": "selectedItemsChange"; }, never, never, true, never>;
}
