import { ComponentRef, ComponentFactoryResolver, ApplicationRef, TemplateRef, Injector, Type } from '@angular/core';
import { Observable, Subject } from 'rxjs';
import { LyOverlayConfig } from './overlay-config';
import { LyOverlayContainer } from './overlay-container';
import { ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';
import { OverlayReference } from './overlay-reference';
export declare class OverlayFactory<T = any> implements OverlayReference {
    private _componentFactoryResolver;
    private _appRef;
    private _overlayContainer;
    private _injector;
    /** Stream of keydown events dispatched to this overlay. */
    readonly _keydownEvents: Subject<KeyboardEvent>;
    private _viewRef;
    private _el;
    private _backdropElement;
    private _compRef;
    private _compRefOverlayBackdrop?;
    private _windowSRSub;
    private _isDetached;
    private _isRemoved;
    private _newInjector;
    /** Function that will be called on scroll or resize event */
    onResizeScroll: (() => void) | null;
    get injector(): Injector | undefined;
    get containerElement(): HTMLDivElement;
    get backdropElement(): Element;
    get componentRef(): ComponentRef<T>;
    get isDestroyed(): boolean;
    constructor(_componentFactoryResolver: ComponentFactoryResolver, _appRef: ApplicationRef, _templateRefOrComponent: TemplateRef<any> | Type<T> | string, _overlayContainer: LyOverlayContainer, _context: any, _injector: Injector, _scrollDispatcher: ScrollDispatcher, _viewportRuler: ViewportRuler, _config?: LyOverlayConfig);
    updateBackdrop(hasBackdrop: boolean): void;
    /** Gets an observable of keydown events targeted to this overlay. */
    keydownEvents(): Observable<KeyboardEvent>;
    private _updateStyles;
    private _appendComponentToBody;
    private _updateBackdropPosition;
    private _generateComponent;
    /** Detaches a view from dirty checking again of ApplicationRef. */
    detach(): void;
    /** Remove element of DOM */
    remove(): void;
    /** Detach & remove */
    destroy(): void;
}
