import { AfterViewInit, ApplicationRef, ChangeDetectorRef, ComponentFactoryResolver, ComponentRef, EventEmitter, Injector, OnChanges, OnDestroy, SimpleChanges, TemplateRef, Type, ViewContainerRef } from '@angular/core';
import { WindowComponent } from '../window/window.component';
import { WindowRegistry } from '../window/window-state';
import { RenderComponentDirective } from '../core/render-component.directive';
import { Subscription } from 'rxjs';
import { DuiDialog } from '../dialog/dialog';
import * as i0 from "@angular/core";
export declare class ExternalDialogWrapperComponent {
    protected cd: ChangeDetectorRef;
    injector: Injector;
    component?: Type<any>;
    componentInputs: {
        [name: string]: any;
    };
    actions?: TemplateRef<any> | undefined;
    container?: TemplateRef<any> | undefined;
    content?: TemplateRef<any> | undefined;
    renderComponentDirective?: RenderComponentDirective;
    constructor(cd: ChangeDetectorRef, injector: Injector, electron: any);
    setDialogContainer(container: TemplateRef<any> | undefined): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ExternalDialogWrapperComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ExternalDialogWrapperComponent, "ng-component", never, { "component": { "alias": "component"; "required": false; }; "componentInputs": { "alias": "componentInputs"; "required": false; }; }, {}, never, ["*"], false, never>;
}
export declare class ExternalWindowComponent implements AfterViewInit, OnDestroy, OnChanges {
    protected componentFactoryResolver: ComponentFactoryResolver;
    protected applicationRef: ApplicationRef;
    protected injector: Injector;
    protected dialog: DuiDialog;
    protected registry: WindowRegistry;
    protected cd: ChangeDetectorRef;
    protected viewContainerRef: ViewContainerRef;
    private portalHost?;
    alwaysRaised: boolean;
    visible: boolean;
    visibleChange: EventEmitter<boolean>;
    closed: EventEmitter<void>;
    component?: Type<any>;
    componentInputs: {
        [name: string]: any;
    };
    wrapperComponentRef?: ComponentRef<ExternalDialogWrapperComponent>;
    template?: TemplateRef<any>;
    externalWindow?: Window;
    container?: TemplateRef<any> | undefined;
    observerStyles?: MutationObserver;
    observerClass?: MutationObserver;
    parentFocusSub?: Subscription;
    electronWindow?: any;
    parentWindow?: WindowComponent;
    constructor(componentFactoryResolver: ComponentFactoryResolver, applicationRef: ApplicationRef, injector: Injector, dialog: DuiDialog, registry: WindowRegistry, cd: ChangeDetectorRef, viewContainerRef: ViewContainerRef);
    ngOnChanges(changes: SimpleChanges): void;
    setDialogContainer(container: TemplateRef<any> | undefined): void;
    show(): void;
    beforeUnload(): void;
    ngAfterViewInit(): void;
    close(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ExternalWindowComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ExternalWindowComponent, "dui-external-dialog", never, { "alwaysRaised": { "alias": "alwaysRaised"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "component": { "alias": "component"; "required": false; }; "componentInputs": { "alias": "componentInputs"; "required": false; }; }, { "visibleChange": "visibleChange"; "closed": "closed"; }, never, ["*"], false, never>;
}
/**
 * This directive is necessary if you want to load and render the dialog content
 * only when opening the dialog. Without it it is immediately render, which can cause
 * performance and injection issues.
 */
export declare class ExternalDialogDirective {
    protected dialog: ExternalWindowComponent;
    template: TemplateRef<any>;
    constructor(dialog: ExternalWindowComponent, template: TemplateRef<any>);
    static ɵfac: i0.ɵɵFactoryDeclaration<ExternalDialogDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ExternalDialogDirective, "[externalDialogContainer]", never, {}, {}, never, never, false, never>;
}
