/**-----------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { TreeItem } from '@progress/kendo-angular-treeview';
import { CheckedItem } from './checked-item';
import * as i0 from "@angular/core";
/**
 * @hidden
 *
 * A directive which manages the in-memory checked state of the MultiSelectTree nodes.
 */
export declare abstract class BaseCheckDirective {
    /**
     * Sets the item key or keys to compare data items.
     */
    abstract valueField: string | string[];
    /**
     * Sets the collection that stores all checked items.
     */
    abstract checkedItems: CheckedItem[];
    /**
     * @hidden
     * The flag is needed in order to determine how to construct the items map keys.
     * If `true`, then the key consists of the item's value and level (depth),
     * else the key consists of the item's value and 0 (no leveling required)
     */
    isHeterogeneous: boolean;
    /**
     * Holds a `Set` with only the checked item keys. Updates this set each time the `checkedItems` value or content changes and uses it for fast look-up to check if an item is checked.
     */
    abstract checkedKeys: Set<any>;
    protected addItem(item: TreeItem): void;
    protected removeItem(item: TreeItem): void;
    protected isItemChecked(item: CheckedItem): boolean;
    protected updateItems(): void;
    /**
     * Add the item's depth to its value so you can have duplicate values on different levels.
     *
     * @param item - The checked key.
     * @returns { string } - A string key consisting of the item's `valueField` value and its depth (depth is 0 if data is homogeneous).
     */
    private getKey;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseCheckDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BaseCheckDirective, never, never, { "valueField": { "alias": "valueField"; "required": false; }; "checkedItems": { "alias": "checkedItems"; "required": false; }; "isHeterogeneous": { "alias": "isHeterogeneous"; "required": false; }; }, {}, never, never, false, never>;
}
