import { AfterViewChecked, ChangeDetectorRef, ElementRef, Injector, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
import { Subject } from 'rxjs';
import { Strings } from '../../generated/strings';
import { CoreBaseComponent } from '../common/base.component';
import * as i0 from "@angular/core";
/**
 *
 * @smeDoc {@label Dialog @id sme-dialog}
 *
 * @overview
 * @file {@filepath ./examples/dialog-overview.md}
 *
 * @example {@label Basic Usage @id basic-usage}
 * @file {@filename component.ts @filepath ./examples/dialog-example.component.ts}
 * @file {@filename component.html @filepath ./examples/dialog-example.component.html}
 *
 * @example {@label Dialog Chain @id dialog-chain}
 * @file {@filename component.ts @filepath ./examples/dialog-example-dialog-chain.component.ts}
 * @file {@filename component.html @filepath ./examples/dialog-example-dialog-chain.component.html}
 *
 * @example {@label Full Screen Dialog @id full-screen-dialog}
 * @file {@filename component.ts @filepath ./examples/dialog-example-full-screen-dialog.component.ts}
 * @file {@filename component.html @filepath ./examples/dialog-example-full-screen-dialog.component.html}
 *
 */
export declare class DialogHeaderComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<DialogHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DialogHeaderComponent, "sme-dialog-header", never, {}, {}, never, ["*"], false, never>;
}
export declare class DialogContentComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<DialogContentComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DialogContentComponent, "sme-dialog-content", never, {}, {}, never, ["*"], false, never>;
}
export declare class DialogFooterComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<DialogFooterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DialogFooterComponent, "sme-dialog-footer", never, {}, {}, never, ["*"], false, never>;
}
export declare enum DialogCloseReason {
    SoftDismiss = 0,
    CloseButton = 1,
    EscapeKey = 2,
    CompetingDialog = 3
}
export declare class DialogMode {
    static pane: string;
    static widePane: string;
    static compact: string;
    static compactSquare: string;
    static fullscreen: string;
    static centered: string;
    static centeredMedium: string;
    static centeredLarge: string;
    static notification: string;
}
export declare const modalDialog = "modal";
export declare const alertDialog = "alert";
export declare class DialogComponent extends CoreBaseComponent implements OnChanges, OnDestroy, AfterViewChecked {
    private elementRef;
    private changeDetectorRef;
    /**
     * The source name to use for logging
     */
    protected get logSourceName(): string;
    /**
     * Static constant to provide unique ids for each master view
     */
    private static nextDialogId;
    dialogClasses: string[];
    dialogRole: string;
    strings: Strings;
    dialogLevel: number;
    /**
     * A bag of ids generated using @see {masterViewId} and the map returned from @see {createIdBag}
     */
    idBag: MsftSme.StringMap<string>;
    /**
     * The unique id of this master view.
     * This is useful when masterViews need to use an ID but may appear multiple times on the same page.
     * Using this ID as the basis for the controls internal IDs generated in @see {createIdBag} keeps the IDs unique.
     */
    protected dialogId: number;
    protected mode: string;
    /**
     * Whether to allow interaction with elements from outside the dialog especially to support the hovering events.
     */
    allowBackgroundInteraction: boolean;
    /**
     * Whether to render the dialog background. False to hide the dialog container and make the background transparent.
     * The background color then will be based on the dialog body.
     */
    showBackdrop: boolean;
    /**
     * Whether to enable the feature of clicking outside of the dialog to close the current dialog.
     * True means clicking outside the dialog will close the dialog. We want this to be set to false when there are forms in the dialog.
     */
    clickBackdrop: boolean;
    ariaLabel: string;
    ariaDescription: string;
    /**
     * Sets whether this should be an action pane or a centered dialog
     *
     * @deprecated Use dialogMode instead
     * @param newValue if true, uses a left pane dialog, otherwise a centered dialog
     */
    set actionPane(newValue: boolean);
    /**
     * Indicates the dialog mode to use
     * @see DialogMode
     */
    set dialogMode(mode: string);
    get dialogMode(): string;
    /**
     * Dialog types. Mostly used for accessibility. Valid values:
     * @see modalDialog = 'modal';
     * @see alertDialog = "alert";
     */
    dialogType: string;
    /**
     * Flag to determine whether the dialog should have a close button in top right or not
     */
    closeButton: boolean;
    /**
     * Compact dialog can be full height when displaying on the right side of the screen.
     * It can also be displayed in the middle of the screen that needs to be having paddings to each direction.
     * This compactFullHeight to true will always be 100% height. Otherwise css would control the max height.
     */
    compactFullHeight: boolean;
    closeRequested: Subject<DialogCloseReason>;
    private doAutoFocus;
    private isVisible;
    set visible(visible: boolean);
    get visible(): boolean;
    constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, injector: Injector);
    onKeyUp(): void;
    /**
     * Angular Life Cycle hook for After View Checked.
     * When the visibility changes, we are going to focus on the first element that has the autofocus attribute
     */
    ngAfterViewChecked(): void;
    /**
     * Completed the closeRequested subject
     */
    ngOnDestroy(): void;
    /**
     * Auto focus on first element that is focusable
     */
    autoFocus(): void;
    /**
     * Shows the dialog.
     */
    show(): void;
    /**
     * Hides the dialog.
     */
    hide(): void;
    /**
     * Notifies closeRequested subscribers that the backdrop has been clicked, requesting a soft dismiss
     */
    onBackgroundClicked(): void;
    /**
     * Notifies closeRequested subscribers that the close button has been pressed, requesting a close button dismiss
     */
    onCloseClicked(): void;
    onEscapePressed(): void;
    ngOnChanges(changes: SimpleChanges): void;
    protected setDialogModeFromInput(): void;
    /**
     * Creates the idBag used by this component to store unique element ids.
     */
    protected createIdBag(): MsftSme.StringMap<string>;
    static ɵfac: i0.ɵɵFactoryDeclaration<DialogComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DialogComponent, "sme-dialog", never, { "allowBackgroundInteraction": "allowBackgroundInteraction"; "showBackdrop": "showBackdrop"; "clickBackdrop": "clickBackdrop"; "ariaLabel": "ariaLabel"; "ariaDescription": "ariaDescription"; "actionPane": "actionPane"; "dialogMode": "dialogMode"; "dialogType": "dialogType"; "closeButton": "closeButton"; "compactFullHeight": "compactFullHeight"; }, {}, never, ["sme-dialog-header", "sme-dialog-content", "sme-dialog-footer"], false, never>;
}
