import { Injector, TemplateRef, Type } from '@angular/core';
import { ExtensionFactory } from '../common/extension-hooks';
/**
 * An action bar item is a action in scope of a
 * current route of the application.
 */
export type ActionBarItem = ActionBarItemWithTemplate | ActionBarItemWithComponent;
interface ActionBarItemBase {
    /**
     * Ordering of the actions (high number first)
     */
    priority?: number;
    /**
     * The placement of the item. `more` is a dropdown
     * on the right side.
     */
    placement: 'left' | 'right' | 'more';
    /**
     * The injector to use. If not set, the default root injector will be used.
     */
    injector?: Injector;
    /**
     * Identifying this action bar item belongs to a certain group and should only be shown once.
     */
    groupId?: string;
    /**
     * If action bar items has the same groupId, only one is displayed.
     * Action bar item with the same groupId that has highest inGroupPriority is displayed.
     */
    inGroupPriority?: number;
}
export interface ActionBarItemWithTemplate extends ActionBarItemBase {
    /**
     * Angular template used for Content Projection.
     * @deprecated This is used for backwards compatibility with angularjs and allows
     * to content project DOM nodes and template refs. Use component instead.
     */
    template: any;
    component?: never;
}
export interface ActionBarItemWithComponent extends ActionBarItemBase {
    /**
     * A component that should be rendered as the ActionBarItem.
     * Note: As a ActionBarItem is rendered in a <li> it is good practice
     * to remove the wrapper node to not run into CSS issues. You
     * can do so by defining the selector as a li: `li[customExtension]`
     * (see: https://stackoverflow.com/a/56887630/923270 or
     * https://stackoverflow.com/a/38716164/923270)
     */
    component: Type<any> | TemplateRef<any>;
    template?: never;
}
/**
 * Factory to implement if used in a hook for Multi Provider extension.
 */
export type ActionBarFactory = ExtensionFactory<ActionBarItem>;
export {};
//# sourceMappingURL=action-bar.model.d.ts.map