import { BreakpointObserver } from '@angular/cdk/layout';
import { Overlay, OverlayRef } from '@angular/cdk/overlay';
import { ComponentType } from '@angular/cdk/portal';
import { ComponentFactoryResolver, ComponentRef, ElementRef, Injector, Optional } from '@angular/core';
import { Router } from '@angular/router';
import { BehaviorSubject, Subscription } from 'rxjs';
import { OverlayComponent } from './overlay.component';
import * as i0 from "@angular/core";
export declare enum ModalSize {
    DYNAMIC = "DYNAMIC",
    EXTRA_SMALL = "EXTRA_SMALL",
    SMALL = "SMALL",
    MEDIUM = "MEDIUM",
    LARGE = "LARGE"
}
interface OverlayOpts<T> {
    title?: string;
    titleOpts?: {
        [key: string]: string;
    };
    hasTitleBar?: boolean;
    modalSize?: ModalSize;
    closeOnBackdropClick?: boolean;
    closeOnNavigate?: boolean;
    shadowDOM?: boolean;
    backgroundColor?: string;
    init?: (component: T) => void;
    close?: (component: T) => void;
}
interface OverlayConfig {
    overlayRef: OverlayRef;
    componentRef: ComponentRef<any>;
    overlayComponent: OverlayComponent<any>;
    subscriptions: Subscription;
    close: (component: any) => void;
}
export declare class OverlayService {
    private _overlay;
    private _resolver;
    private _injector;
    private _breakpointObserver;
    private _primaryColor$;
    private _accentColor$;
    private _warnColor$;
    private _fontColor$;
    private _fontFamily$;
    private _shadowDom$;
    private _router;
    overlays: OverlayConfig[];
    private _baseVariables;
    constructor(_overlay: Overlay, _resolver: ComponentFactoryResolver, _injector: Injector, _breakpointObserver: BreakpointObserver, _primaryColor$: BehaviorSubject<string>, _accentColor$: BehaviorSubject<string>, _warnColor$: BehaviorSubject<string>, _fontColor$: BehaviorSubject<string>, _fontFamily$: BehaviorSubject<string>, _shadowDom$: BehaviorSubject<boolean>, _router: Router);
    createModal<T>(component: ComponentType<T>, config?: OverlayOpts<T>, hostElement?: ElementRef): OverlayComponent<T>;
    private _initOverlay;
    private _closeModal;
    closeModal<T>(overlayComponent?: OverlayComponent<T>): void;
    closeAllModals(): void;
    private _width;
    private _height;
    private _size;
    private _calculatePositionStrategy;
    private _breakpointMatched;
    private _fullscreen;
    static ɵfac: i0.ɵɵFactoryDeclaration<OverlayService, [null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<OverlayService>;
}
export declare function aztrixOverlayServiceProviderFactory(parentOverlayService: OverlayService, overlay: Overlay, componentFactoryResolver: ComponentFactoryResolver, defaultInjector: Injector, breakpointObserver: BreakpointObserver, primaryColor: BehaviorSubject<string>, accentColor: BehaviorSubject<string>, warnColor: BehaviorSubject<string>, fontColor: BehaviorSubject<string>, font: BehaviorSubject<string>, shadowDom: BehaviorSubject<boolean>, router: Router): OverlayService;
export declare const AZTRIX_OVERLAY_SERVICE_PROVIDER: {
    provide: typeof OverlayService;
    deps: (import("@angular/core").InjectionToken<BehaviorSubject<string>> | Optional[] | typeof Overlay | typeof ComponentFactoryResolver | typeof Injector | typeof BreakpointObserver)[];
    useFactory: typeof aztrixOverlayServiceProviderFactory;
};
export {};
