import { type Maybe } from '@dereekb/util';
import { type Observable } from 'rxjs';
export type DbxPopupKey = string;
export declare const DbxPopupWindowState: {
    readonly NORMAL: "normal";
    readonly MINIMIZED: "minimized";
    readonly FULLSCREEN: "fullscreen";
};
export type DbxPopupWindowStateType = (typeof DbxPopupWindowState)[keyof typeof DbxPopupWindowState];
export declare abstract class DbxPopupController<O = unknown, I = unknown> {
    abstract readonly key: DbxPopupKey;
    abstract readonly data?: Maybe<I>;
    abstract readonly windowState$: Observable<DbxPopupWindowStateType>;
    abstract readonly closing$: Observable<boolean>;
    /**
     * Signals for the popup to close.
     */
    abstract close(): void;
    /**
     * Closes the popup and returns the input value.
     */
    abstract return(value?: O): void;
    abstract minimize(): void;
    abstract normalscreen(): void;
    abstract fullscreen(): void;
}
