/*!
 * Copyright 2020 VMware, Inc.
 * SPDX-License-Identifier: BSD-2-Clause
 */
import { EventEmitter, OnDestroy } from '@angular/core';
import { TranslationService, TranslationSet } from '@vcd/i18n';
import { _EntityActionExtensionComponent } from '@vcd/sdk/common';
import { ActionItem } from '../../common/interfaces';
import { ActionMenuComponent } from '../action-menu.component';
/**
 * Provided by the calling component of {@link EntityActionExtensionComponentsDirective} as input
 */
export interface EntityActionComponentContainer {
    /**
     * Every component referenced by an entity action extension point must inherit from this. Used for retrieving the extension action item
     * contents
     */
    componentInstance: _EntityActionExtensionComponent;
    /**
     * Translation set to be used for translation of action item texts when displayed
     */
    translations?: TranslationSet;
}
/**
 * Event emitted when a plugin action is clicked.
 */
export interface EntityActionExtensionMenuItemClickEvent {
    /**
     * Every component referenced by an entity action extension point must inherit from this. used for performing action when a extension
     * action item is clicked
     */
    component: _EntityActionExtensionComponent;
    /**
     * The Identifier of the entity that the action is being called for
     */
    entityUrn: string;
    /**
     * The URN of the clicked menu item
     */
    menuItemUrn: string;
}
/**
 * To fetch {@link EntityActionExtensionMenuEntry} items asynchronously and map them to {@link ActionItem}. Injected on
 * to {@link ActionMenuComponent} to provide it the extension actions and use it's contextual actions dropdown view to
 * display the extension actions
 */
export declare class EntityActionExtensionComponentsDirective implements OnDestroy {
    private actionMenu;
    private translationService;
    /**
     * List of objects which are used for defining the extension action items and their translation sets
     */
    set vcdEntityActionExtensionContainers(components: EntityActionComponentContainer[]);
    private _entityActionExtensionContainers;
    /**
     * The URN of the entity the menu is being rendered from (e.g. the VM or vApp)
     */
    set entityUrn(urn: string);
    private _entityUrn;
    /**
     * Emitted if a menu item is clicked.
     */
    menuItemClick: EventEmitter<EntityActionExtensionMenuItemClickEvent>;
    private subTracker;
    private subscription;
    /**
     * Model from which the view of {@link ActionMenuComponent} renders. These are added to the end of contextual
     * actions of action menu component
     */
    extensionActionItems: ActionItem<unknown, unknown>[];
    constructor(actionMenu: ActionMenuComponent<unknown, unknown>, translationService: TranslationService);
    /**
     * Called when the entity or components change. Uses the {@link EntityActionExtensionComponent.getMenuEntry} to get
     * menu entry and creates the menu entries
     */
    private prepareExtensionActionItems;
    private getExtensionActionItemObservable;
    private getExtensionActionItem;
    private translate;
    private isExtensionTranslationPlaceholder;
    ngOnDestroy(): void;
}
