import { EventEmitter } from '@angular/core';
import { IIdentified, IManagedObject, InventoryService } from '@c8y/client';
import { GroupNodeService } from './group-node.service';
import { AssetSelectorService } from './asset-selector.service';
import { AssetSelectionChangeEvent, AssetSelectorOptions } from './asset-selector.model';
import { AbstractControl, ValidationErrors } from '@angular/forms';
export declare class AssetSelectorBase {
    protected groupNodeService: GroupNodeService;
    protected inventory: InventoryService;
    protected assetSelectorService: AssetSelectorService;
    /**
     * Config object containing all options for the asset selector.
     */
    config: AssetSelectorOptions;
    /**
     * An array of predefined nodes.
     */
    selected: Array<Partial<IManagedObject>> | IIdentified[] | IIdentified;
    /**
     * The loading state of the current node.
     */
    isLoading: boolean;
    /**
     * Emit the selected asset or assets.
     */
    onSelected: EventEmitter<AssetSelectionChangeEvent>;
    /**
     * Emits if the currently selected asset is cleared.
     */
    onClearSelected: EventEmitter<void>;
    private onChange;
    private onTouched;
    constructor(groupNodeService: GroupNodeService, inventory: InventoryService, assetSelectorService: AssetSelectorService);
    /**
     * @ignore
     */
    validate(control: AbstractControl): ValidationErrors;
    /**
     * @ignore
     */
    writeValue(obj: any): void;
    /**
     * @ignore
     */
    registerOnChange(fn: any): void;
    /**
     * @ignore
     */
    registerOnTouched(fn: any): void;
    /**
     * @ignore
     */
    doBlur(): void;
    /**
     * Deselects all expect the given one.
     * @param selectedMo The selected asset (optional, if empty -> just deselect all).
     */
    deselectAll(selectedMo?: IManagedObject): void;
    /**
     * Adds an managed object to the selected array and emits the change.
     * @param selectedMo The selected asset.
     */
    select(selectedMo: IManagedObject): void;
    /**
     * Removes a managed object from the selected array and emits the change.
     * @param selectedMo The selected asset.
     */
    deselect(selectedMo: IManagedObject): void;
    /**
     * Returns the index of the currently selected item.
     * @param selected All selected items
     * @param selectedMo The new selected item-
     * @returns An index, or -1 if not found.
     */
    getIndexOfSelected(selected: Array<Partial<IIdentified>> | Partial<IIdentified>, selectedMo: IIdentified): any;
    emitChange(selected: IIdentified | IIdentified[], item: IManagedObject, isSelected: boolean): void;
    createDefaultRootNode(): import("@c8y/ngx-components/assets-navigator").GroupNode;
    createManagedObjectRootNode(asset: IIdentified): Promise<import("@c8y/ngx-components/assets-navigator").GroupNode>;
}
//# sourceMappingURL=asset-selector-base.d.ts.map