import { Type } from '@angular/core';
import { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';
import { Observable, ReplaySubject } from 'rxjs';
import { AbstractLazyModule, LazyLoaderService } from './lazy-loader.service';
export declare abstract class DialogService<ReturnType, DataType> {
    private lazyLoaderService;
    private dialog;
    protected openDialogSub$: ReplaySubject<MatDialogConfig<DataType>>;
    protected dialogResponse$: Observable<ReturnType>;
    protected dialogRef: MatDialogRef<unknown, ReturnType>;
    constructor(lazyLoaderService: LazyLoaderService, dialog: MatDialog, matDialogConfig?: MatDialogConfig<DataType>);
    openDialog$(dialogData?: DataType, dialogConfig?: MatDialogConfig<DataType>): Observable<ReturnType>;
    closeDialog(): void;
    protected abstract getModule(): Promise<Type<AbstractLazyModule<unknown>>>;
}
