/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { BaseComponent } from '../core/base/base-component';
import { IWithDefaultAria } from '../core/mixins/internals/with-default-aria';
import { IWithElementInternals } from '../core/mixins/internals/with-element-internals';
import { DialogAnimationType, DialogMode, DialogPlacement, DialogPositionStrategy, DialogPreset, DialogSizeStrategy, dialogStack, DialogType, hideBackdrop, IDialogMoveEventData, IDialogMoveStartEventData, showBackdrop } from './dialog-constants';
import { IDismissible, IDismissibleStackState, tryDismiss } from '../core/utils/dismissible-stack';
export interface IDialogProperties {
    open: boolean;
    mode: DialogMode;
    type: DialogType;
    animationType: DialogAnimationType;
    preset: DialogPreset;
    persistent: boolean;
    fullscreen: boolean;
    trigger: string;
    triggerElement: HTMLElement | null;
    positionStrategy: DialogPositionStrategy;
    sizeStrategy: DialogSizeStrategy;
    placement: DialogPlacement;
    moveable: boolean;
}
export interface IDialogComponent extends IDialogProperties, IWithDefaultAria, IWithElementInternals, IDismissible {
    show(): void;
    hide(): void;
}
declare global {
    interface HTMLElementTagNameMap {
        'forge-dialog': IDialogComponent;
    }
    interface HTMLElementEventMap {
        'forge-dialog-open': CustomEvent<void>;
        'forge-dialog-close': CustomEvent<void>;
        'forge-dialog-before-close': CustomEvent<void>;
        'forge-dialog-move-start': CustomEvent<IDialogMoveStartEventData>;
        'forge-dialog-move': CustomEvent<IDialogMoveEventData>;
        'forge-dialog-move-end': CustomEvent<void>;
    }
}
declare const DialogComponent_base: import("..").AbstractConstructor<import("../core/mixins/internals/with-default-aria").WithDefaultAriaContract> & import("..").AbstractConstructor<import("../core/mixins/internals/with-element-internals").WithElementInternalsContract> & typeof BaseComponent;
/**
 * @tag forge-dialog
 *
 * @summary Dialogs are temporary UI elements that are used to display information, ask for input, or confirm actions.
 *
 * @property {boolean} open - Indicates whether the dialog is open.
 * @property {DialogMode} mode - The mode of the dialog. Default is 'modal'.
 * @property {DialogType} type - The type of the dialog. Default is 'dialog'.
 * @property {DialogAnimationType} animationType - The animation type of the dialog.
 * @property {DialogPreset} preset - The preset design that the dialog will apply.
 * @property {boolean} persistent - Indicates whether the dialog is dismissible via escape and backdrop click or not.
 * @property {boolean} fullscreen - Indicates whether the dialog is fullscreen or not.
 * @property {string} trigger - The selector of the element that triggers the dialog.
 * @property {HTMLElement | null} triggerElement - The element that triggers the dialog.
 * @property {boolean} moveable - Indicates whether the dialog is moveable or not.
 * @property {DialogPositionStrategy} positionStrategy - Controls whether the dialog is rendered relative to the viewport its nearest containing block.
 * @property {DialogSizeStrategy} sizeStrategy - Controls the block and/or inline size of the dialog. Defaults to the size of the content it contains.
 * @property {DialogPlacement} placement - The placement of the dialog. Defaults to center.
 *
 * @attribute {boolean} open - Indicates whether the dialog is open.
 * @attribute {DialogMode} mode - The mode of the dialog. Default is 'modal'.
 * @attribute {DialogType} type - The type of the dialog. Default is 'dialog'.
 * @attribute {DialogAnimationType} animationType - The animation type of the dialog.
 * @attribute {DialogPreset} preset - The preset design that the dialog will apply.
 * @attribute {boolean} persistent - Indicates whether the dialog is dismissible via escape and backdrop click or not.
 * @attribute {boolean} fullscreen - Indicates whether the dialog is fullscreen or not.
 * @attribute {string} trigger - The selector of the element that triggers the dialog.
 * @attribute {boolean} moveable - Indicates whether the dialog is moveable or not.
 * @attribute {DialogPositionStrategy} positionStrategy - Controls whether the dialog is rendered relative to the viewport its nearest containing block.
 * @attribute {DialogSizeStrategy} sizeStrategy - Controls the block and/or inline size of the dialog. Defaults to the size of the content it contains.
 * @attribute {DialogPlacement} placement - The placement of the dialog. Defaults to center.
 *
 * @event {CustomEvent<void>} forge-dialog-open - Dispatched when the dialog is opened.
 * @event {CustomEvent<void>} forge-dialog-close - Dispatched when the dialog is closed.
 * @event {CustomEvent<void>} forge-dialog-before-close - Dispatched before the dialog is closed. This event is cancelable.
 * @event {CustomEvent<IDialogMoveStartEventData>} forge-dialog-move-start - Dispatched when the dialog is first moved.
 * @event {CustomEvent<IDialogMoveEventData>} forge-dialog-move - Dispatched when the dialog is being moved.
 * @event {CustomEvent<void>} forge-dialog-move-end - Dispatched when the dialog is done being moved.
 *
 * @cssproperty --forge-dialog-background - The background color of the dialog.
 * @cssproperty --forge-dialog-shape - The shape of the dialog.
 * @cssproperty --forge-dialog-elevation - The elevation of the dialog.
 * @cssproperty --forge-dialog-spacing - The spacing between elements inside the dialog.
 * @cssproperty --forge-dialog-block-start-spacing - The spacing at the start of the dialog block.
 * @cssproperty --forge-dialog-block-end-spacing - The spacing at the end of the dialog block.
 * @cssproperty --forge-dialog-inline-start-spacing - The spacing at the start of the dialog inline.
 * @cssproperty --forge-dialog-inline-end-spacing - The spacing at the end of the dialog inline.
 * @cssproperty --forge-dialog-padding - The padding of the dialog.
 * @cssproperty --forge-dialog-width - The width of the dialog.
 * @cssproperty --forge-dialog-height - The height of the dialog.
 * @cssproperty --forge-dialog-min-width - The minimum width of the dialog.
 * @cssproperty --forge-dialog-max-width - The maximum width of the dialog.
 * @cssproperty --forge-dialog-min-height - The minimum height of the dialog.
 * @cssproperty --forge-dialog-max-height - The maximum height of the dialog.
 * @cssproperty --forge-dialog-z-index - The z-index of the dialog.
 * @cssproperty --forge-dialog-move-handle-color - The color of the move handle.
 * @cssproperty --forge-dialog-move-handle-size - The size of the move handle.
 * @cssproperty --forge-dialog-move-handle-hover-cursor - The cursor style when hovering over the move handle.
 * @cssproperty --forge-dialog-move-handle-active-cursor - The cursor style when the move handle is active.
 * @cssproperty --forge-dialog-move-handle-spacing - The spacing around the move handle.
 * @cssproperty --forge-dialog-move-transition-duration - The duration of the move transition.
 * @cssproperty --forge-dialog-move-transition-easing - The easing function of the move transition.
 * @cssproperty --forge-dialog-moving-opacity - The opacity of the dialog when it is being moved.
 * @cssproperty --forge-dialog-enter-animation-duration - The duration of the enter animation.
 * @cssproperty --forge-dialog-enter-animation-easing - The easing function of the enter animation.
 * @cssproperty --forge-dialog-exit-animation-duration - The duration of the exit animation.
 * @cssproperty --forge-dialog-exit-animation-easing - The easing function of the exit animation.
 * @cssproperty --forge-dialog-zoom-opacity - The opacity of the dialog during zoom animation.
 * @cssproperty --forge-dialog-zoom-scale - The scale of the dialog during zoom animation.
 * @cssproperty --forge-dialog-fade-opacity - The opacity of the dialog during fade animation.
 * @cssproperty --forge-dialog-slide-opacity - The opacity of the dialog during slide animation.
 * @cssproperty --forge-dialog-slide-translate - The translation distance of the dialog during slide animation.
 * @cssproperty --forge-dialog-backdrop-opacity - The opacity of the dialog backdrop.
 * @cssproperty --forge-dialog-nonmodal-elevation - The elevation of non-modal dialogs.
 * @cssproperty --forge-dialog-fullscreen-enter-animation-duration - The duration of the enter animation for fullscreen dialogs.
 * @cssproperty --forge-dialog-fullscreen-exit-animation-duration - The duration of the exit animation for fullscreen dialogs.
 * @cssproperty --forge-dialog-position-x - The x-axis position of the dialog.
 * @cssproperty --forge-dialog-position-y - The y-axis position of the dialog.
 * @cssproperty --forge-dialog-preset-sheet-enter-animation-duration - The duration of the enter animation for preset sheet dialogs.
 * @cssproperty --forge-dialog-preset-sheet-exit-animation-duration - The duration of the exit animation for preset sheet dialogs.
 *
 * @csspart root - The dialog container element.
 * @csspart backdrop - The backdrop element.
 * @csspart surface - The dialog surface element.
 * @csspart move-handle-container - The alignment container for the move handle.
 * @csspart move-handle - The move handle element.
 * @csspart move-handle-icon - The move handle icon element.
 *
 * @slot - The content of the dialog.
 * @slot move-handle - The move handle content.
 */
export declare class DialogComponent extends DialogComponent_base implements IDialogComponent {
    static get observedAttributes(): string[];
    /**
     * @internal
     * Contains all the dialogs that are currently open.
     */
    static readonly [dialogStack]: Set<IDialogComponent>;
    private _foundation;
    /** @internal */
    [hideBackdrop](): void;
    /** @internal */
    [showBackdrop](): void;
    [tryDismiss](_state?: IDismissibleStackState<string> | undefined): boolean;
    constructor();
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    open: boolean;
    mode: DialogMode;
    type: DialogType;
    animationType: DialogAnimationType;
    preset: DialogPreset;
    persistent: boolean;
    fullscreen: boolean;
    trigger: string;
    triggerElement: HTMLElement | null;
    moveable: boolean;
    positionStrategy: DialogPositionStrategy;
    sizeStrategy: DialogSizeStrategy;
    placement: DialogPlacement;
    show(): void;
    hide(): void;
}
export {};
