import { Injector, TemplateRef, ViewContainerRef, ComponentRef, EmbeddedViewRef } from '@angular/core'; import { OverlayRef } from '@angular/cdk/overlay'; import { Layer, LayerConfig } from './types'; import { ComponentType, Portal, ComponentPortal, TemplatePortal } from '@angular/cdk/portal'; declare type PortalType = TLayerRefType extends 'component' ? ComponentPortal : TLayerRefType extends 'template' ? TemplatePortal : Portal; declare type AttachmentType = TLayerRefType extends 'component' ? ComponentRef : TLayerRefType extends 'template' ? EmbeddedViewRef : any; export declare abstract class LayerRef implements Layer { protected injector: Injector; constructor(injector: Injector); private _requestDetachEmitter; private _attachmentRef?; private _overlayRef?; private _isDestroyed; private _portal; private _zone; private _overlay; private _layerOpenedSub?; private _afterClose; private _currentConfig; afterClose: import("rxjs").Observable; readonly isVisible: boolean; readonly data: TData; protected readonly isAttached: boolean; protected readonly overlayRef: OverlayRef; protected readonly attachmentRef: AttachmentType; protected readonly isDestroyed: boolean; toggle(): void; protected getLayerConfig(): LayerConfig; open(config?: LayerConfig): import("rxjs").Observable; close(result?: TResult): void; protected abstract createPortal(): PortalType; private attach; private detach; protected afterAttached(): void; protected afterDetached(result?: TResult): void; updatePosition(): void; destroy(): void; } export declare abstract class ComponentLayerRef extends LayerRef { protected abstract readonly component: ComponentType; protected createPortal(): any; protected createInjector(): any; } export declare abstract class TemplateLayerRef extends LayerRef { protected abstract readonly templateRef: TemplateRef; protected abstract readonly viewContainerRef: ViewContainerRef; protected createPortal(): TemplatePortal; } export interface DynamicLayerParams { injector: Injector; templateOrComponent: TemplateRef | ComponentType; viewContainerRef?: ViewContainerRef; config?: LayerConfig; } export declare class DynamicLayerRef extends LayerRef { private params; constructor(params: DynamicLayerParams); protected createPortal(): ComponentPortal | TemplatePortal; getLayerConfig(): LayerConfig; private createInjector; } export {};