import { DialogPassThrough, DialogPosition, DialogHeaderTemplateContext } from 'primeng/types/dialog';
export * from 'primeng/types/dialog';
import * as _angular_core from '@angular/core';
import { ElementRef, TemplateRef } from '@angular/core';
import { MotionOptions, MotionEvent } from '@primeuix/motion';
import { BaseComponent } from 'primeng/basecomponent';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { ButtonDirectiveOptions } from 'primeng/types/button';
import * as i2 from 'primeng/api';
import { OverlayService } from 'primeng/api';
import { CSSProperties, AppendTo } from 'primeng/types/shared';
import { Nullable, VoidListener } from 'primeng/ts-helpers';
import { BaseStyle } from 'primeng/base';

/**
 *
 * Dialog is a container to display content in an overlay window.
 *
 * [Live Demo](https://www.primeng.org/dialog)
 *
 * @module dialogstyle
 *
 */
declare enum DialogClasses {
    /**
     * Class name of the mask element
     */
    mask = "p-dialog-mask",
    /**
     * Class name of the root element
     */
    root = "p-dialog",
    /**
     * Class name of the header element
     */
    header = "p-dialog-header",
    /**
     * Class name of the title element
     */
    title = "p-dialog-title",
    /**
     * Class name of the header actions element
     */
    headerActions = "p-dialog-header-actions",
    /**
     * Class name of the maximize button element
     */
    pcMaximizeButton = "p-dialog-maximize-button",
    /**
     * Class name of the close button element
     */
    pcCloseButton = "p-dialog-close-button",
    /**
     * Class name of the content element
     */
    content = "p-dialog-content",
    /**
     * Class name of the footer element
     */
    footer = "p-dialog-footer"
}
declare class DialogStyle extends BaseStyle {
    name: string;
    style: string;
    classes: {
        mask: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-overlay-mask': any;
        })[];
        root: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-dialog-maximized': any;
        })[];
        header: string;
        title: string;
        resizeHandle: string;
        headerActions: string;
        pcMaximizeButton: string;
        pcCloseButton: string;
        content: () => string[];
        footer: string;
    };
    inlineStyles: {
        mask: ({ instance }: {
            instance: any;
        }) => any;
        root: ({ instance }: {
            instance: any;
        }) => any;
    };
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogStyle, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<DialogStyle>;
}
interface DialogStyle extends BaseStyle {
}

/**
 * Dialog is a container to display content in an overlay window.
 * @group Components
 */
declare class Dialog extends BaseComponent<DialogPassThrough> {
    componentName: string;
    hostName: _angular_core.InputSignal<string>;
    $pcDialog: Dialog | undefined;
    bindDirectiveInstance: Bind;
    onAfterViewChecked(): void;
    /**
     * Title text of the dialog.
     * @group Props
     */
    header: _angular_core.InputSignal<string | undefined>;
    /**
     * Enables dragging to change the position using header.
     * @group Props
     */
    draggable: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Enables resizing of the content.
     * @group Props
     */
    resizable: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Style of the content section.
     * @group Props
     */
    contentStyle: _angular_core.InputSignal<CSSProperties>;
    /**
     * Style class of the content.
     * @group Props
     */
    contentStyleClass: _angular_core.InputSignal<string | undefined>;
    /**
     * Defines if background should be blocked when dialog is displayed.
     * @group Props
     */
    modal: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Specifies if pressing escape key should hide the dialog.
     * @group Props
     */
    closeOnEscape: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Specifies if clicking the modal background should hide the dialog.
     * @group Props
     */
    dismissableMask: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * When enabled dialog is displayed in RTL direction.
     * @group Props
     */
    rtl: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Adds a close icon to the header to hide the dialog.
     * @group Props
     */
    closable: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Object literal to define widths per screen size.
     * @group Props
     */
    breakpoints: _angular_core.InputSignal<Record<string, string> | undefined>;
    /**
     * Style class of the component.
     * @group Props
     */
    styleClass: _angular_core.InputSignal<string | undefined>;
    /**
     * Style class of the mask.
     * @group Props
     */
    maskStyleClass: _angular_core.InputSignal<string | undefined>;
    /**
     * Style of the mask.
     * @group Props
     */
    maskStyle: _angular_core.InputSignal<CSSProperties>;
    /**
     * Whether to show the header or not.
     * @group Props
     */
    showHeader: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Whether background scroll should be blocked when dialog is visible.
     * @group Props
     */
    blockScroll: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Whether to automatically manage layering.
     * @group Props
     */
    autoZIndex: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Base zIndex value to use in layering.
     * @group Props
     */
    baseZIndex: _angular_core.InputSignalWithTransform<number, unknown>;
    /**
     * Minimum value for the left coordinate of dialog in dragging.
     * @group Props
     */
    minX: _angular_core.InputSignalWithTransform<number, unknown>;
    /**
     * Minimum value for the top coordinate of dialog in dragging.
     * @group Props
     */
    minY: _angular_core.InputSignalWithTransform<number, unknown>;
    /**
     * When enabled, first focusable element receives focus on show.
     * @group Props
     */
    focusOnShow: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Whether the dialog can be displayed full screen.
     * @group Props
     */
    maximizable: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Keeps dialog in the viewport.
     * @group Props
     */
    keepInViewport: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * When enabled, can only focus on elements inside the dialog.
     * @group Props
     */
    focusTrap: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * The motion options for the mask.
     * @group Props
     */
    maskMotionOptions: _angular_core.InputSignal<MotionOptions | undefined>;
    computedMaskMotionOptions: _angular_core.Signal<MotionOptions>;
    maskEnterActiveClass: _angular_core.Signal<"" | "p-overlay-mask-enter-active">;
    maskLeaveActiveClass: _angular_core.Signal<"" | "p-overlay-mask-leave-active">;
    /**
     * The motion options.
     * @group Props
     */
    motionOptions: _angular_core.InputSignal<MotionOptions | undefined>;
    computedMotionOptions: _angular_core.Signal<MotionOptions>;
    /**
     * Name of the close icon.
     * @group Props
     */
    closeIcon: _angular_core.InputSignal<string | undefined>;
    /**
     * Defines a string that labels the close button for accessibility.
     * @group Props
     */
    closeAriaLabel: _angular_core.InputSignal<string | undefined>;
    /**
     * Index of the close button in tabbing order.
     * @group Props
     */
    closeTabindex: _angular_core.InputSignal<string>;
    /**
     * Name of the minimize icon.
     * @group Props
     */
    minimizeIcon: _angular_core.InputSignal<string | undefined>;
    /**
     * Name of the maximize icon.
     * @group Props
     */
    maximizeIcon: _angular_core.InputSignal<string | undefined>;
    /**
     * Configuration object forwarded to the underlying button.
     * @group Props
     */
    closeButtonProps: _angular_core.InputSignal<ButtonDirectiveOptions>;
    /**
     * Configuration object forwarded to the underlying button.
     * @group Props
     */
    maximizeButtonProps: _angular_core.InputSignal<ButtonDirectiveOptions>;
    /**
     * Specifies the visibility of the dialog.
     * @group Props
     */
    visible: _angular_core.ModelSignal<boolean>;
    /**
     * Inline style of the component.
     * @group Props
     */
    style: _angular_core.InputSignal<CSSProperties>;
    /**
     * Position of the dialog, options are "center", "top", "bottom", "left", "right", "topleft", "topright", "bottomleft" or "bottomright".
     * @group Props
     */
    position: _angular_core.InputSignal<DialogPosition | undefined>;
    /**
     * Role attribute of html element.
     * @group Emits
     */
    role: _angular_core.InputSignal<string>;
    /**
     * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
     * @defaultValue 'self'
     * @group Props
     */
    appendTo: _angular_core.InputSignal<AppendTo>;
    /**
     * Callback to invoke when dialog is shown.
     * @group Emits
     */
    onShow: _angular_core.OutputEmitterRef<any>;
    /**
     * Callback to invoke when dialog is hidden.
     * @group Emits
     */
    onHide: _angular_core.OutputEmitterRef<any>;
    /**
     * Callback to invoke when dialog resizing is initiated.
     * @param {MouseEvent} event - Mouse event.
     * @group Emits
     */
    onResizeInit: _angular_core.OutputEmitterRef<MouseEvent>;
    /**
     * Callback to invoke when dialog resizing is completed.
     * @param {MouseEvent} event - Mouse event.
     * @group Emits
     */
    onResizeEnd: _angular_core.OutputEmitterRef<MouseEvent>;
    /**
     * Callback to invoke when dialog dragging is initiated.
     * @param {MouseEvent} event - Mouse event.
     * @group Emits
     */
    onDragStart: _angular_core.OutputEmitterRef<MouseEvent>;
    /**
     * Callback to invoke when dialog dragging is completed.
     * @param {DragEvent} event - Drag event.
     * @group Emits
     */
    onDragEnd: _angular_core.OutputEmitterRef<DragEvent>;
    /**
     * Callback to invoke when dialog maximized or unmaximized.
     * @group Emits
     */
    onMaximize: _angular_core.OutputEmitterRef<{
        maximized: boolean | undefined;
    }>;
    headerViewChild: _angular_core.Signal<ElementRef<any> | undefined>;
    contentViewChild: _angular_core.Signal<ElementRef<any> | undefined>;
    footerViewChild: _angular_core.Signal<ElementRef<any> | undefined>;
    /**
     * Custom header template.
     * @group Templates
     */
    headerTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom content template.
     * @group Templates
     */
    contentTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom footer template.
     * @group Templates
     */
    footerTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom close icon template.
     * @group Templates
     */
    closeIconTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom maximize icon template.
     * @group Templates
     */
    maximizeIconTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom minimize icon template.
     * @group Templates
     */
    minimizeIconTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom headless template.
     * @group Templates
     */
    headlessTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    $appendTo: _angular_core.Signal<AppendTo>;
    renderMask: _angular_core.WritableSignal<boolean>;
    renderDialog: _angular_core.WritableSignal<boolean>;
    maskVisible: boolean | undefined;
    container: _angular_core.WritableSignal<Nullable<HTMLElement>>;
    wrapper: Nullable<HTMLElement>;
    dragging: boolean | undefined;
    ariaId: string;
    ariaLabelledBy: _angular_core.Signal<string | null>;
    headerTemplateContext: _angular_core.Signal<DialogHeaderTemplateContext>;
    documentDragListener: VoidListener;
    documentDragEndListener: VoidListener;
    resizing: boolean | undefined;
    documentResizeListener: VoidListener;
    documentResizeEndListener: VoidListener;
    documentEscapeListener: VoidListener;
    maskClickListener: VoidListener;
    lastPageX: number | undefined;
    lastPageY: number | undefined;
    preventVisibleChangePropagation: boolean | undefined;
    maximized: _angular_core.WritableSignal<boolean>;
    preMaximizeContentHeight: number | undefined;
    preMaximizeContainerWidth: number | undefined;
    preMaximizeContainerHeight: number | undefined;
    preMaximizePageX: number | undefined;
    preMaximizePageY: number | undefined;
    id: string;
    _style: Record<string, string>;
    originalStyle: Record<string, string> | undefined;
    styleElement: HTMLStyleElement | null;
    _componentStyle: DialogStyle;
    overlayService: OverlayService;
    private zIndexForLayering?;
    get maximizeLabel(): string;
    get minimizeLabel(): string;
    maximizeButtonAriaLabel: _angular_core.Signal<string>;
    maximizeButtonTabindex: _angular_core.Signal<"0" | "-1">;
    toggleIcon: _angular_core.Signal<string | undefined>;
    showToggleIcon: _angular_core.Signal<boolean>;
    showDefaultMaximizeIcon: _angular_core.Signal<boolean>;
    showMaximizeSvg: _angular_core.Signal<boolean>;
    showMinimizeSvg: _angular_core.Signal<boolean>;
    showMaximizeIconTemplate: _angular_core.Signal<boolean>;
    showMinimizeIconTemplate: _angular_core.Signal<boolean>;
    showDefaultCloseIcon: _angular_core.Signal<boolean>;
    scrollBlockerActive: _angular_core.Signal<boolean>;
    focusTrapDisabled: _angular_core.Signal<boolean>;
    constructor();
    onInit(): void;
    _focus(focusParentElement?: HTMLElement): boolean;
    focus(focusParentElement?: HTMLElement): void;
    close(event: Event): void;
    enableModality(): void;
    disableModality(): void;
    maximize(): void;
    unbindMaskClickListener(): void;
    moveOnTop(): void;
    createStyle(): void;
    initDrag(event: MouseEvent): void;
    onDrag(event: MouseEvent): void;
    endDrag(event: DragEvent): void;
    resetPosition(): void;
    center(): void;
    initResize(event: MouseEvent): void;
    onResize(event: MouseEvent): void;
    resizeEnd(event: MouseEvent): void;
    bindGlobalListeners(): void;
    unbindGlobalListeners(): void;
    bindDocumentDragListener(): void;
    unbindDocumentDragListener(): void;
    bindDocumentDragEndListener(): void;
    unbindDocumentDragEndListener(): void;
    bindDocumentResizeListeners(): void;
    unbindDocumentResizeListeners(): void;
    bindDocumentEscapeListener(): void;
    unbindDocumentEscapeListener(): void;
    appendContainer(): void;
    restoreAppend(): void;
    onBeforeEnter(event: MotionEvent): void;
    onAfterEnter(): void;
    onBeforeLeave(): void;
    onAfterLeave(): void;
    onMaskAfterLeave(): void;
    onContainerDestroy(): void;
    destroyStyle(): void;
    onDestroy(): void;
    dataP: _angular_core.Signal<string>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Dialog, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<Dialog, "p-dialog", never, { "hostName": { "alias": "hostName"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "contentStyle": { "alias": "contentStyle"; "required": false; "isSignal": true; }; "contentStyleClass": { "alias": "contentStyleClass"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "dismissableMask": { "alias": "dismissableMask"; "required": false; "isSignal": true; }; "rtl": { "alias": "rtl"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "breakpoints": { "alias": "breakpoints"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "maskStyleClass": { "alias": "maskStyleClass"; "required": false; "isSignal": true; }; "maskStyle": { "alias": "maskStyle"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "blockScroll": { "alias": "blockScroll"; "required": false; "isSignal": true; }; "autoZIndex": { "alias": "autoZIndex"; "required": false; "isSignal": true; }; "baseZIndex": { "alias": "baseZIndex"; "required": false; "isSignal": true; }; "minX": { "alias": "minX"; "required": false; "isSignal": true; }; "minY": { "alias": "minY"; "required": false; "isSignal": true; }; "focusOnShow": { "alias": "focusOnShow"; "required": false; "isSignal": true; }; "maximizable": { "alias": "maximizable"; "required": false; "isSignal": true; }; "keepInViewport": { "alias": "keepInViewport"; "required": false; "isSignal": true; }; "focusTrap": { "alias": "focusTrap"; "required": false; "isSignal": true; }; "maskMotionOptions": { "alias": "maskMotionOptions"; "required": false; "isSignal": true; }; "motionOptions": { "alias": "motionOptions"; "required": false; "isSignal": true; }; "closeIcon": { "alias": "closeIcon"; "required": false; "isSignal": true; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; "isSignal": true; }; "closeTabindex": { "alias": "closeTabindex"; "required": false; "isSignal": true; }; "minimizeIcon": { "alias": "minimizeIcon"; "required": false; "isSignal": true; }; "maximizeIcon": { "alias": "maximizeIcon"; "required": false; "isSignal": true; }; "closeButtonProps": { "alias": "closeButtonProps"; "required": false; "isSignal": true; }; "maximizeButtonProps": { "alias": "maximizeButtonProps"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; }, { "visible": "visibleChange"; "onShow": "onShow"; "onHide": "onHide"; "onResizeInit": "onResizeInit"; "onResizeEnd": "onResizeEnd"; "onDragStart": "onDragStart"; "onDragEnd": "onDragEnd"; "onMaximize": "onMaximize"; }, ["headerTemplate", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], ["*", "p-footer"], true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}
declare class DialogModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<DialogModule, never, [typeof Dialog, typeof i2.SharedModule], [typeof Dialog, typeof i2.SharedModule]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<DialogModule>;
}

export { Dialog, DialogClasses, DialogModule, DialogStyle };
