import { ChangeDetectorRef, ElementRef, OnDestroy, Injector } from '@angular/core';
import { Logger } from '@anglr/common';
import { LayoutComponent, LayoutComponentMetadata } from '@anglr/dynamic/layout';
import { LayoutComponentBase } from '@anglr/dynamic/layout';
import { MetadataHistoryManager } from '@anglr/dynamic';
import { Subscription } from 'rxjs';
import { LayoutDesignerComponentOptions } from './layoutDesigner.options';
import { LayoutComponentsIteratorService, LayoutEditorMetadataExtractor, LayoutEditorMetadataManager } from '../../services';
import { LayoutEditorMetadataDescriptor } from '../../decorators';
import { DndCoreDesignerDirective } from '../../modules';
import { LayoutComponentDragData } from '../../interfaces';
import * as i0 from "@angular/core";
/**
 * Component used as designer component wrapper for layout component
 */
export declare class LayoutDesignerSAComponent extends LayoutComponentBase<LayoutDesignerComponentOptions> implements LayoutComponent<LayoutDesignerComponentOptions>, OnDestroy {
    protected metadataExtractor: LayoutEditorMetadataExtractor;
    protected layoutEditorMetadataManager: LayoutEditorMetadataManager;
    protected iteratorSvc: LayoutComponentsIteratorService;
    protected history: MetadataHistoryManager<LayoutComponentMetadata>;
    protected scopeId?: string | undefined;
    protected parent?: LayoutDesignerSAComponent | undefined;
    /**
     * Last type metadata value from onOptionSet
     */
    private _typeMetadata;
    /**
     * Subscriptions created during initialization
     */
    protected initSubscriptions: Subscription;
    /**
     * Indication whether is component selected
     */
    protected get selected(): boolean;
    /**
     * Indication whether is component highlighted
     */
    protected get highlighted(): boolean;
    /**
     * Metadata for rendered type
     */
    protected renderedType: LayoutComponentMetadata | undefined | null;
    /**
     * @inheritdoc
     */
    protected get element(): ElementRef<HTMLElement>;
    /**
     * @inheritdoc
     */
    protected get extensionsOptions(): any | undefined | null;
    /**
     * Instance of designer div element
     */
    protected designerElement: ElementRef<HTMLElement>;
    /**
     * Instance of designer dnd core directive
     */
    dndCoreDesigner: DndCoreDesignerDirective;
    /**
     * Indication whether drag is disabled for component
     */
    get dragDisabled(): boolean;
    /**
     * Indication whether item can be dropped here
     */
    canDrop: boolean;
    /**
     * Indication whether drop list is horizontally oriented
     */
    horizontal: boolean;
    /**
     * Component identifier
     */
    get id(): string;
    /**
     * Index of current layout designer in its parent
     */
    index: number;
    /**
     * Layout editor metadata
     */
    editorMetadata: LayoutEditorMetadataDescriptor | null;
    constructor(changeDetector: ChangeDetectorRef, element: ElementRef<HTMLElement>, injector: Injector, metadataExtractor: LayoutEditorMetadataExtractor, layoutEditorMetadataManager: LayoutEditorMetadataManager, iteratorSvc: LayoutComponentsIteratorService, history: MetadataHistoryManager<LayoutComponentMetadata>, scopeId?: string | undefined, logger?: Logger, parent?: LayoutDesignerSAComponent | undefined);
    /**
     * Called when component is destroyed
     */
    ngOnDestroy(): void;
    /**
     * Adds descentant component metadata to this component metadata
     * @param dragData - Data from drag n drop event
     */
    addDescendant(dragData: LayoutComponentDragData): void;
    /**
     * Removes descendant metadata from this component metadata
     * @param id - Id of descendant to be removed
     */
    removeDescendant(id: string): void;
    /**
     * Shows designer overlay
     * @param event - Mouse event that occured
     */
    protected showOverlay(event: Event): void;
    /**
     * Hides designer overlay
     * @param event - Mouse event that occured
     */
    protected hideOverlay(event: Event): void;
    /**
     * Marks component as selected
     * @param event - Event that occured
     */
    protected selectComponent(event: MouseEvent): void;
    /**
     * Unselects selected component
     * @param event - Event that occured
     */
    protected unselectComponent(event: MouseEvent): void;
    /**
     * Removes itself from tree
     */
    protected remove(): void;
    /**
     * @inheritdoc
     */
    protected onInit(): Promise<void>;
    /**
     * @inheritdoc
     */
    protected onOptionsSet(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutDesignerSAComponent, [null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; skipSelf: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LayoutDesignerSAComponent, "layout-designer-component", never, {}, {}, never, never, true, never>;
}
//# sourceMappingURL=layoutDesigner.component.d.ts.map