import { ChangeDetectorRef, EventEmitter, OnInit, SimpleChanges } from '@angular/core';
import { IIdentified, IManagedObject, InventoryService } from '@c8y/client';
import { BehaviorSubject, Subject } from 'rxjs';
import { AssetSelectorBase } from './asset-selector-base';
import { AssetSelectionChangeEvent, AssetSelectorOptions } from './asset-selector.model';
import { AssetSelectorService } from './asset-selector.service';
import { GroupNode } from './group-node';
import { GroupNodeService } from './group-node.service';
import * as i0 from "@angular/core";
/**
 * Displays a hierarchical tree selector for assets.
 */
export declare class AssetSelectorComponent extends AssetSelectorBase implements OnInit {
    protected groupNodeService: GroupNodeService;
    protected inventory: InventoryService;
    protected assetSelectorService: AssetSelectorService;
    protected cd: ChangeDetectorRef;
    /**
     * Config object containing all options for the asset selector.
     */
    config: AssetSelectorOptions;
    /**
     * Defines the node, which should be displayed as active.
     */
    active: GroupNode;
    /**
     * Used only for miller-view, displays the column level for the current node.
     * E.g if the index is one, this will be second column.
     */
    index: number;
    /**
     * The asset to use as root.
     */
    asset: IIdentified;
    /**
     * The selected device.
     */
    selectedDevice: IManagedObject;
    /**
     * An array of predefined nodes.
     */
    selected: Array<Partial<IManagedObject>> | IIdentified[] | IIdentified;
    /**
     * The node to use as root. You can either set this, or the asset to start from.
     */
    rootNode: GroupNode;
    /**
     * All currently selected assets.
     */
    selectedItems: IIdentified[] | IIdentified;
    container: '' | 'body';
    isNodeSelectable: boolean | ((node: IIdentified) => boolean);
    disabled: boolean;
    /**
     * Emits if one item was selected (all currently selected nodes).
     */
    onSelected: EventEmitter<AssetSelectionChangeEvent>;
    /**
     * Emits if the currently selected asset is cleared.
     */
    onClearSelected: EventEmitter<void>;
    /**
     * Used only for miller view. Emit the selected node and use it as a 'rootNode' for the new column.
     */
    onRowSelected: EventEmitter<any>;
    /**
     * Emits the current loading state of the node.
     */
    onLoad: EventEmitter<any>;
    /**
     * The current filter applied.
     */
    filterText: string;
    /**
     * Displays the global search at all times if the miller view is used
     * on root group level.
     */
    root: boolean;
    /**
     * @ignore
     */
    unsubscribe$: Subject<void>;
    /**
     * Returns the current header hight in pixel.
     */
    getHeaderHeight$: BehaviorSubject<number>;
    readonly ASSET_CONST: "Asset {{ assetId }}";
    private header;
    /**
     * @ignore only DI
     */
    constructor(groupNodeService: GroupNodeService, inventory: InventoryService, assetSelectorService: AssetSelectorService, cd: ChangeDetectorRef);
    /**
     * Checks when a node was selected, if a new column needs to be added.
     * @param node The node that was clicked.
     * @param index The current index of this node.
     * @returns True if the click was handled and a new column was added.
     */
    handleNextMillerViewColumn(node: GroupNode, index: number): boolean;
    /**
     * @ignore
     */
    ngOnInit(): Promise<void>;
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    /**
     * @ignore
     */
    ngAfterViewInit(): void;
    /**
     * Changes the current root to one level back.
     */
    back(): void;
    /**
     * Clears the current filter.
     */
    clearFilters(): void;
    clearSelectedDevices(): void;
    isGroupSelected(): boolean;
    groupNameFilter(nameFilter: string, moId: any, showUnassignedDevices?: boolean): string;
    /**
     * Applies a filter.
     * @param filter The filter to apply.
     */
    applyFilter(filter: string): Promise<void>;
    /**
     * Check if the UnassignedDevice node is the rootNode.
     */
    isUnassignedDevicesNode(): boolean;
    /**
     * Called when the user resets the search result.
     */
    onSearchResultReset(selectedItem: any): void;
    /**
     * Called if the user clicks on a search result.
     */
    onSearchResultClick(mo: IManagedObject): Promise<void>;
    onLoading(isLoading: boolean): void;
    onSelect(mo: IManagedObject): void;
    onDeselect(config: {
        deselectMode: 'single' | 'all';
        mo: IManagedObject;
    }): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AssetSelectorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AssetSelectorComponent, "c8y-asset-selector", never, { "config": { "alias": "config"; "required": false; }; "active": { "alias": "active"; "required": false; }; "index": { "alias": "index"; "required": false; }; "asset": { "alias": "asset"; "required": false; }; "selectedDevice": { "alias": "selectedDevice"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "rootNode": { "alias": "rootNode"; "required": false; }; "selectedItems": { "alias": "selectedItems"; "required": false; }; "container": { "alias": "container"; "required": false; }; "isNodeSelectable": { "alias": "isNodeSelectable"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "onSelected": "onSelected"; "onClearSelected": "onClearSelected"; "onRowSelected": "onRowSelected"; "onLoad": "onLoad"; }, never, never, false, never>;
}
//# sourceMappingURL=asset-selector.component.d.ts.map