import { InjectionToken } from '@angular/core';
import { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';
import { ComponentType } from '@angular/cdk/overlay';
import { DialogAction, DialogActionEvent } from './components/_base-dialog.component';
import { Observable } from 'rxjs';
import { ActionTypes } from '../../../core';
import * as i0 from "@angular/core";
export interface DialogExtended<T, R> {
    ref: MatDialogRef<T, R>;
    afterOpened: () => Observable<void>;
    afterClosed: () => Observable<R | undefined>;
    beforeClosed: () => Observable<R | undefined>;
    afterSubmit: () => Observable<R>;
    setActionType: (actionType: ActionTypes | undefined) => DialogExtended<T, R>;
    action: <ACTION>(action: DialogAction<R, ACTION>) => Observable<DialogActionEvent<R, ACTION>>;
}
export interface DialogExtendedConfig<D> extends MatDialogConfig<D> {
    backdropBlur?: 'sm' | 'normal' | 'xl';
}
export declare const DIALOG_INVOKER_CONFIG: InjectionToken<Partial<DialogExtendedConfig<any>>>;
export declare class DialogInvokerService {
    readonly dialog: MatDialog;
    private readonly config;
    open<T, D, R>(component: ComponentType<T>, data?: D, config?: DialogExtendedConfig<D>): DialogExtended<T, R>;
    static ɵfac: i0.ɵɵFactoryDeclaration<DialogInvokerService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DialogInvokerService>;
}
