import { ComponentRef, EventEmitter, Injector, OnChanges, OnDestroy, SimpleChanges, ViewContainerRef } from '@angular/core';
import { Logger } from '@anglr/common';
import { DynamicItemExtensionType, DynamicItemLoader } from '@anglr/dynamic';
import { LayoutComponentRendererDirectiveOptions } from './layoutComponentRenderer.options';
import { LayoutComponent, LayoutComponentMetadata, LayoutComponentTransform } from '../../interfaces';
import { LayoutComponentDef } from '../../misc/types';
import * as i0 from "@angular/core";
/**
 * Renders layout component from metadata
 */
export declare class LayoutComponentRendererSADirective<TComponent extends LayoutComponent<TComponentOptions> = any, TComponentOptions = any> implements OnChanges, OnDestroy {
    protected viewContainerRef: ViewContainerRef;
    protected loader: DynamicItemLoader<LayoutComponentDef>;
    protected childExtensions?: DynamicItemExtensionType[] | null | undefined;
    protected scopeId?: string | undefined;
    protected options?: LayoutComponentRendererDirectiveOptions | undefined;
    protected metadataTransformer?: LayoutComponentTransform | undefined;
    protected logger?: Logger | undefined;
    /**
     * Created component reference
     */
    protected ɵComponentRef: ComponentRef<TComponent> | null;
    /**
     * Type that should be dynamically created into current container
     */
    componentMetadata: LayoutComponentMetadata<TComponentOptions> | undefined | null;
    /**
     * Custom injector used as parent for layout components tree
     */
    customInjector: Injector | undefined | null;
    /**
     * Disables component metadata transformer
     */
    disableTransformer: boolean;
    /**
     * Occurs when rendered component changes
     */
    componentChange: EventEmitter<ComponentRef<TComponent> | null>;
    /**
     * Occurs when components element changes
     */
    componentElementChange: EventEmitter<HTMLElement | null>;
    /**
     * Instance of dynamically created component
     */
    protected get component(): TComponent | null;
    /**
     * Gets component ref of created component or null
     */
    get componentRef(): ComponentRef<TComponent> | null;
    constructor(viewContainerRef: ViewContainerRef, loader: DynamicItemLoader<LayoutComponentDef>, childExtensions?: DynamicItemExtensionType[] | null | undefined, scopeId?: string | undefined, options?: LayoutComponentRendererDirectiveOptions | undefined, metadataTransformer?: LayoutComponentTransform | 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<LayoutComponentRendererSADirective<any, any>, [null, null, { optional: true; skipSelf: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<LayoutComponentRendererSADirective<any, any>, "[layoutComponentRenderer]", ["layoutComponentRenderer"], { "componentMetadata": { "alias": "layoutComponentRenderer"; "required": false; }; "customInjector": { "alias": "layoutComponentRendererInjector"; "required": false; }; "disableTransformer": { "alias": "layoutComponentRendererDisableTransformer"; "required": false; }; }, { "componentChange": "layoutComponentRendererComponentChange"; "componentElementChange": "componentElementChange"; }, never, never, true, never>;
}
//# sourceMappingURL=layoutComponentRenderer.directive.d.ts.map