import { Portal } from "@angular/cdk/portal";
import { AfterViewInit, ComponentRef, EventEmitter, Injector, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges } from "@angular/core";
import { IEvent, LoggerService } from "@nova-ui/bits";
import { ProviderRegistryService } from "../../../services/provider-registry.service";
import { IProviderConfiguration } from "../../../types";
import { ComponentPortalService } from "../../services/component-portal.service";
import * as i0 from "@angular/core";
export declare class ComponentPortalDirective implements OnInit, AfterViewInit, OnDestroy, OnChanges {
    private injector;
    private logger;
    private portalService;
    private renderer;
    private providerRegistry;
    componentId: string;
    componentType: string | Function;
    properties: Record<string, any>;
    providers: Record<string, IProviderConfiguration>;
    outputs: string[];
    output: EventEmitter<IEvent<any>>;
    portal: Portal<any>;
    private component;
    private propertiesChanges;
    private providerInstances;
    private readonly destroy$;
    private changesSubscription?;
    private listenerUnsubscriber?;
    constructor(injector: Injector, logger: LoggerService, portalService: ComponentPortalService, renderer: Renderer2, providerRegistry: ProviderRegistryService);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    attached(componentRef: ComponentRef<any>): void;
    private recreatePortal;
    private updateProviders;
    private updateProviderConfigurations;
    private subscribeToOutputs;
    private checkForProviderChanges;
    private destroyProviders;
    /**
     * There was a change in component properties, so we need to handle that here
     *
     * @param change a change of the `properties` input
     */
    private applyPropertiesChange;
    static ɵfac: i0.ɵɵFactoryDeclaration<ComponentPortalDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ComponentPortalDirective, "[nuiComponentPortal]", ["nuiComponentPortal"], { "componentId": { "alias": "componentId"; "required": false; }; "componentType": { "alias": "componentType"; "required": false; }; "properties": { "alias": "properties"; "required": false; }; "providers": { "alias": "providers"; "required": false; }; "outputs": { "alias": "outputs"; "required": false; }; }, { "output": "output"; }, never, never, false, never>;
}
