import { ComponentType } from '@angular/cdk/portal';
import { TemplateRef } from '@angular/core';
import { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';
import { BehaviorSubject } from 'rxjs';
import * as i0 from "@angular/core";
export declare class FudisDialogService {
    ngMaterialDialog: MatDialog;
    constructor(ngMaterialDialog: MatDialog);
    private _dialogOpen;
    /**
     * Open new dialog.
     *
     * @param component Component or template to show in the dialog.
     * @param config Optional configuration object. Use the `data` field to inject data into
     *   `component`.
     * @returns Reference to the dialog that was opened.
     */
    open<T, R = any, D = any>(component: ComponentType<T> | TemplateRef<T>, config?: MatDialogConfig<D>): MatDialogRef<T, R>;
    /**
     * Close opened Dialog
     *
     * @param dialogResult Data sent to Component which opened this dialog.
     */
    close<R = any>(dialogResult?: R): void;
    /**
     * Close all instances of Dialogs
     */
    closeAll(): void;
    /**
     * Get dialog open status
     */
    getDialogOpenStatus(): BehaviorSubject<boolean>;
    /**
     * Set dialog open
     */
    setDialogOpenStatus(value: boolean): void;
    /**
     * @returns Currently open Dialogs
     */
    dialogsOpen(): MatDialogRef<any, any>[];
    /**
     * Merge consumer's config with ours.
     */
    private static _createConfig;
    static ɵfac: i0.ɵɵFactoryDeclaration<FudisDialogService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<FudisDialogService>;
}
