import { ReactNode, HTMLAttributes, ReactElement, CSSProperties } from 'react';
import { OverlayProps } from '../Overlay';
import Form, { FormProps, FormValues } from '../Form';
import { ButtonProps } from '../Button';
import '../../helpers/base.less';
import './Dialog.less';
export declare type ImageType = string | ReactElement | HTMLAttributes<HTMLImageElement>;
export declare type DialogProps<FV extends FormValues = FormValues> = {
    /**
     * Toggles visibility.
     * @since 0.0.68
     */
    isOpen?: boolean;
    /**
     * Banner. Renders in front of content as wide as dialog.
     * @type string | ReactElement | HTMLAttributes<HTMLImageElement>
     * @since 0.0.68
     */
    banner?: ImageType;
    /**
     * Image. Renders into content.
     * @type string | ReactElement | HTMLAttributes<HTMLImageElement>
     * @since 0.0.68
     */
    image?: ImageType;
    /**
     * Block with an image, placed at the side of the component
     * @type string | ReactElement | HTMLAttributes<HTMLImageElement>
     * @since 3.25.0
     */
    sideBanner?: ImageType;
    /**
     * Additional properties for the sideBanner
     *
     * @since 3.25.0
     */
    sideBannerContainer?: {
        background: string;
        align: CSSProperties['alignItems'];
    };
    /**
     * Title
     * @since 0.0.68
     */
    title?: ReactNode;
    /**
     * The subtitle of the `Dialog`.
     * @since 4.0.0
     */
    subtitle?: ReactNode;
    /**
     * Title of "cancel" button
     * @since 0.0.68
     * @deprecated Use `cancelButton` instead.
     */
    cancelTitle?: ReactNode;
    /**
     * Cancel button visibility or custom configuration. It accepts all props of the `Button` component.
     * @since 3.13.0
     */
    cancelButton?: boolean | Partial<ButtonProps>;
    /**
     * Buttons except "cancel" button
     * @since 0.0.68
     */
    buttons?: ReactNode;
    /**
     * Actions which will be shown in Dialog header
     * @since 1.2.0
     */
    actions?: ReactNode;
    /**
     * Wraps children into [Form](#!/Form) if not empty.
     * @since 0.0.68
     */
    form?: FormProps<FV> | typeof Form;
    /**
     * Dialog width
     * @since 0.0.68
     */
    size?: 'xs' | 'sm' | 'md' | 'lg';
    /**
     * If the value is false, the dialog cannot be closed and the Close button is hidden.
     * @since 1.2.0
     */
    closable?: boolean;
    /**
     * Disable close dialog button
     * @since 4.0.0
     */
    canClose?: boolean;
    /**
     * On close event handler. Called immediately after dialog closed by "cancel" button or "Esc" key.
     * @type () => void
     * @since 0.0.68
     */
    onClose?: () => void;
    /**
     * Whether show or not a confirmation dialog on close.
     * @since 3.21.0
     */
    closingConfirmation?: boolean;
    /**
     * Content of the `DialogWindow`.
     * @since 0.0.68
     */
    children?: ReactNode;
    /**
     * @ignore
     */
    className?: string;
    /**
     * @ignore
     */
    baseClassName?: string;
} & Omit<OverlayProps, 'canCloseOnBackdropClick' | 'canCloseOnEscapePress'>;
/**
 * `Dialog` is a modal window that asks users to make a decision or enter additional information.
 * @since 0.0.68
 */
declare const Dialog: {
    <FV extends FormValues = FormValues>({ baseClassName, className, children, actions, isOpen, banner, image, title, subtitle, cancelTitle, cancelButton, buttons, form, size, closable, onClose, closingConfirmation, canClose, ...props }: DialogProps<FV>): JSX.Element;
    defaultProps: {
        isOpen: boolean;
        banner: undefined;
        sideBanner: undefined;
        sideBannerContainer: undefined;
        image: undefined;
        title: undefined;
        subtitle: undefined;
        cancelTitle: undefined;
        cancelButton: undefined;
        buttons: undefined;
        actions: undefined;
        form: undefined;
        size: string;
        closable: boolean;
        canClose: boolean;
        onClose: undefined;
        closingConfirmation: undefined;
        children: undefined;
        className: undefined;
        baseClassName: string;
    };
};
export default Dialog;
