import * as i0 from '@angular/core';
import { TemplateRef } from '@angular/core';
import * as i1 from '@angular/common';
import * as _angular_material_dialog from '@angular/material/dialog';
import { MatDialogConfig, MatDialogRef, MatDialog } from '@angular/material/dialog';
import * as i3 from '@angular/material/button';
import { MatButtonAppearance } from '@angular/material/button';
import * as i4 from '@angular/material/icon';
import * as i5 from '@ng-matero/extensions/core';
import { ThemePalette } from '@angular/material/core';
import { Observable } from 'rxjs';
import { ComponentType } from '@angular/cdk/portal';

interface MtxDialogData extends MatDialogConfig {
    title?: string | Observable<string>;
    description?: string | Observable<string>;
    buttons?: MtxDialogBtns[];
    showCloseIcon?: boolean;
}
interface MtxDialogBtns {
    type?: MatButtonAppearance;
    color?: ThemePalette;
    class?: string;
    focusInitial?: boolean;
    text: string | Observable<string>;
    onClick?: () => void;
}

declare class MtxDialogContainer {
    dialogRef: MatDialogRef<MtxDialogContainer, any>;
    data: MtxDialogData;
    _onClick(fn: () => void): void;
    _onClose(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<MtxDialogContainer, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MtxDialogContainer, "mtx-dialog-container", ["mtxDialogContainer"], {}, {}, never, never, true, never>;
}

declare class MtxDialogModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<MtxDialogModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<MtxDialogModule, never, [typeof i1.CommonModule, typeof _angular_material_dialog.MatDialogModule, typeof i3.MatButtonModule, typeof i4.MatIconModule, typeof i5.MtxPipesModule, typeof MtxDialogContainer], [typeof MtxDialogContainer]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<MtxDialogModule>;
}

declare class MtxDialog {
    dialog: MatDialog;
    originalOpen(componentOrTemplateRef: (ComponentType<any> | TemplateRef<any>) | undefined, config: any): _angular_material_dialog.MatDialogRef<any, any>;
    open(config: MtxDialogData, componentOrTemplateRef?: ComponentType<any> | TemplateRef<any>): _angular_material_dialog.MatDialogRef<any, any>;
    alert(title: string | Observable<string>, description?: string | Observable<string>, onOk?: () => void): void;
    confirm(title: string | Observable<string>, description?: string | Observable<string>, onOk?: () => void, onClose?: () => void): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<MtxDialog, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<MtxDialog>;
}

export { MtxDialog, MtxDialogContainer, MtxDialogModule };
export type { MtxDialogBtns, MtxDialogData };
