import { Type, OnDestroy } from '@angular/core';
import { Maybe, PixelsString } from '@dereekb/util';
import { PopupPosition, PopupPositionOffset } from './popup.position.strategy';
import { AbstractTransitionWatcherDirective, DbxInjectionComponentConfig } from '@dereekb/dbx-core';
import { DbxPopupController, DbxPopupKey, DbxPopupWindowStateType } from './popup';
import * as i0 from "@angular/core";
export declare const APP_POPUP_NORMAL_WIDTH = "700px";
export declare const APP_POPUP_MINIMIZED_WIDTH = "300px";
export declare const APP_POPUP_NORMAL_HEIGHT = "auto";
export declare abstract class DbxPopupComponentController<O, I> extends DbxPopupController<O, I> {
    readonly getClosingValueFn?: (value?: I) => Promise<O>;
}
export interface DbxPopupComponentConfig<O, I, T> {
    /**
     * Key used for uniquely identifying a limited instance.
     *
     * Only one popup should exist at a time given a certain key.
     */
    readonly key: DbxPopupKey;
    readonly position?: Maybe<PopupPosition>;
    readonly offset?: Maybe<PopupPositionOffset>;
    readonly closeOnTransition?: Maybe<boolean>;
    readonly componentClass: Type<T>;
    readonly data?: Maybe<I>;
    readonly isDraggable?: Maybe<boolean>;
    readonly init?: (component: T, controller: DbxPopupController<O, I>) => void;
    readonly width?: Maybe<PixelsString>;
    readonly height?: Maybe<PixelsString>;
}
/**
 * Popup component.
 */
export declare class DbxPopupComponent<O = unknown, I = unknown, T = unknown> extends AbstractTransitionWatcherDirective implements DbxPopupController<O, I>, OnDestroy {
    private readonly popoverRef;
    private readonly compactContextState;
    private _position;
    readonly config: DbxPopupComponentConfig<O, I, T>;
    readonly key: DbxPopupKey;
    readonly data: Maybe<I>;
    readonly contentConfig: DbxInjectionComponentConfig;
    private readonly closing;
    readonly isClosing$: import("rxjs").Observable<boolean>;
    readonly closing$: import("rxjs").Observable<boolean>;
    private readonly _windowState;
    readonly windowState$: import("rxjs").Observable<DbxPopupWindowStateType>;
    getClosingValueFn?: (value?: I) => Promise<O>;
    constructor();
    ngOnDestroy(): void;
    protected updateForSuccessfulTransition(): void;
    close(): void;
    return(value?: O): void;
    minimize(): void;
    normalscreen(): void;
    fullscreen(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DbxPopupComponent<any, any, any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DbxPopupComponent<any, any, any>, "ng-component", never, {}, {}, never, never, true, never>;
}
