import { ComponentRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges, ViewContainerRef } from '@angular/core';
import { Logger } from '@anglr/common';
import { DynamicItemLoader } from '@anglr/dynamic';
import { Subscription } from 'rxjs';
import { RelationsNode, RelationsNodeMetadata } from '../../interfaces';
import { RelationsNodeDef } from '../../misc/types';
import { RelationsNodeManager } from '../../services';
import { RelationsNodeRendererDirectiveOptions } from './relationsNodeRenderer.options';
import * as i0 from "@angular/core";
/**
 * Renderer for dynamic relations node
 */
export declare class RelationsNodeRendererSADirective<TComponent extends RelationsNode = any, TOptions = any, TEditorOptions = any> implements OnChanges, OnDestroy {
    protected viewContainerRef: ViewContainerRef;
    protected relationsNodeManager: RelationsNodeManager;
    protected loader: DynamicItemLoader<RelationsNodeDef>;
    protected options?: RelationsNodeRendererDirectiveOptions | undefined;
    protected logger?: Logger | undefined;
    /**
     * Destroy subscription
     */
    protected destroySubscription: Subscription | null;
    /**
     * Created component reference
     */
    protected componentRef: ComponentRef<TComponent> | null;
    /**
     * Type that should be dynamically created into current container
     */
    componentMetadata: RelationsNodeMetadata<TOptions, TEditorOptions> | undefined | null;
    /**
     * Editor zoom level
     */
    zoomLevel: number;
    /**
     * Occurs when rendered node is created
     */
    create: EventEmitter<TComponent>;
    /**
     * Occurs when rendered node is destroyed
     */
    destroy: EventEmitter<RelationsNodeMetadata<TOptions, TEditorOptions>>;
    /**
     * Instance of dynamically created component
     */
    protected get component(): TComponent | null;
    constructor(viewContainerRef: ViewContainerRef, relationsNodeManager: RelationsNodeManager, loader: DynamicItemLoader<RelationsNodeDef>, options?: RelationsNodeRendererDirectiveOptions | undefined, logger?: Logger | undefined);
    /**
     * Called when input value changes
     */
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    /**
     * Called when component is destroyed
     */
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<RelationsNodeRendererSADirective<any, any, any>, [null, null, null, { optional: true; }, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<RelationsNodeRendererSADirective<any, any, any>, "[relationsNodeRenderer]", ["relationsNodeRenderer"], { "componentMetadata": { "alias": "relationsNodeRenderer"; "required": false; }; "zoomLevel": { "alias": "zoomLevel"; "required": false; }; }, { "create": "create"; "destroy": "destroy"; }, never, never, true, never>;
}
//# sourceMappingURL=relationsNodeRenderer.directive.d.ts.map