import { Overlay, OverlayRef, OverlaySizeConfig } from '@angular/cdk/overlay';
import { Portal } from '@angular/cdk/portal';
import { ComponentRef, EmbeddedViewRef } from '@angular/core';
import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
import { WindowSettings } from './window-config';
export declare class WindowRef<D = any, R = any> extends Subject<R> {
    protected readonly overlayRef: OverlayRef;
    protected readonly overlay: Overlay;
    protected readonly settings: WindowSettings<D>;
    readonly width$: BehaviorSubject<string>;
    readonly height$: BehaviorSubject<string>;
    /**
     * @deprecated removed. use the subscribe method and wait for the resolve event
     */
    readonly closed$: Subject<R | undefined>;
    attachedRef$: ReplaySubject<ComponentRef<any> | EmbeddedViewRef<any>>;
    /**
     * @internal
     */
    footerPortal$: ReplaySubject<Portal<any>>;
    /**
     * @internal
     */
    titlePortal$: ReplaySubject<Portal<any>>;
    settings$: ReplaySubject<WindowSettings<any>>;
    /**
     * stores the window size before fullScreen
     * @internal
     */
    private oldSizes;
    constructor(overlayRef: OverlayRef, overlay: Overlay, settings: WindowSettings<D>);
    get id(): string | undefined;
    get minimizable(): boolean | undefined;
    get draggable(): boolean | undefined;
    get minWidth(): string | undefined;
    get minHeight(): string | undefined;
    get maxWidth(): string | undefined;
    get maxHeight(): string | undefined;
    get isMinimized(): boolean;
    /**
     * @deprecated removed. use the complete method
     * @param result
     */
    close(result?: R): void;
    complete(): void;
    minimize(): void;
    reopen(): void;
    getSizeConfig(): OverlaySizeConfig;
    setWidth(width: string): void;
    setHeight(height: string): void;
    getWidth(): string;
    getHeight(): string;
    setPos(x: string, y: string): void;
    getPos(): {
        x: string;
        y: string;
    };
    fullScreen(): void;
    /**
     * @param portal
     */
    setFooterPortal(portal: Portal<any>): void;
    setTitlePortal(portal: Portal<any>): void;
    setAttachedRef(attachedRef: ComponentRef<any> | EmbeddedViewRef<any>): void;
    /**
     * Injects the window settings from the component ref injector and overwrites
     * the settings
     * @private
     */
    private updateWindowSettings;
}
