import * as React from 'react';
import './Dialog.scss';
import { CSSTransitionProps } from '../csstransition/CSSTransition';
export type DialogPositionType = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
type DialogTemplateType = React.ReactNode | ((props: DialogProps) => React.ReactNode);
export type DialogAppendToType = 'self' | HTMLElement | undefined | null;
interface DialogMaximizeParams {
    originalEvent: Event;
    maximized: boolean;
}
interface DialogBreakpoints {
    [key: string]: string;
}
export interface DialogProps extends Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLDivElement>, HTMLDivElement>, 'onClick' | 'ref' | 'onResize'> {
    id?: string;
    header?: DialogTemplateType;
    footer?: DialogTemplateType;
    visible?: boolean;
    position?: DialogPositionType | string;
    draggable?: boolean;
    resizable?: boolean;
    modal?: boolean;
    contentStyle?: object;
    contentClassName?: string;
    closeOnEscape?: boolean;
    dismissableMask?: boolean;
    rtl?: boolean;
    closable?: boolean;
    style?: object;
    className?: string;
    maskStyle?: object;
    maskClassName?: string;
    showHeader?: boolean;
    appendTo?: DialogAppendToType;
    baseZIndex?: number;
    maximizable?: boolean;
    blockScroll?: boolean;
    icons?: DialogTemplateType;
    ariaCloseIconLabel?: string;
    focusOnShow?: boolean;
    minX?: number;
    minY?: number;
    keepInViewport?: boolean;
    maximized?: boolean;
    breakpoints?: DialogBreakpoints;
    transitionOptions?: CSSTransitionProps;
    onMaximize?(e: DialogMaximizeParams): void;
    onDragStart?(e: React.DragEvent<HTMLElement>): void;
    onDrag?(e: React.DragEvent<HTMLElement>): void;
    onDragEnd?(e: React.DragEvent<HTMLElement>): void;
    onResizeStart?(e: React.MouseEvent<HTMLElement>): void;
    onResize?(e: React.MouseEvent<HTMLElement>): void;
    onResizeEnd?(e: React.MouseEvent<HTMLElement>): void;
    onHide(): void;
    onShow?(): void;
    onMaskClick?(e: React.MouseEvent<HTMLElement>): void;
    onClick?(e: React.MouseEvent<HTMLElement>): void;
    children?: React.ReactNode;
    secondaryButton?: boolean;
    secondaryButtonClass?: string;
    onSecondaryButtonClick?(e: React.MouseEvent<HTMLElement>): void;
}
export declare const Dialog: React.MemoExoticComponent<React.ForwardRefExoticComponent<DialogProps & React.RefAttributes<unknown>>>;
export {};
