import { FC, HTMLAttributes, MouseEvent, KeyboardEvent, ButtonHTMLAttributes, ReactNode } from 'react';
import { OnAfterOpenCallback } from 'react-modal';
import { CompoundComponent, ComponentBaseProps } from '../core';
export interface ModalProps extends ComponentBaseProps, HTMLAttributes<HTMLDivElement> {
    backdrop?: boolean | 'static';
    getContainer?(): HTMLElement;
    onAfterClose?(): void;
    onAfterOpen?: OnAfterOpenCallback;
    onClose?(event: MouseEvent | KeyboardEvent): void;
    open: boolean;
    scrollable?: boolean;
    size?: 'sm' | 'lg';
}
export interface ModalHeaderProps extends ComponentBaseProps, HTMLAttributes<HTMLDivElement> {
    closeIcon?: ReactNode;
    onClose?(): void;
    showCloseButton?: boolean;
}
export interface ModalContentProps extends ComponentBaseProps, HTMLAttributes<HTMLDivElement> {
}
export interface ModalFooterProps extends ComponentBaseProps, HTMLAttributes<HTMLDivElement> {
    cancelText?: string;
    cancelVariant?: 'primary' | 'secondary' | 'delete' | 'link' | 'link-delete' | 'link-cancel';
    disabled?: boolean;
    loading?: boolean;
    okText?: string;
    okVariant?: 'primary' | 'secondary' | 'delete' | 'link' | 'link-delete' | 'link-cancel';
    onCancel?(): void;
    onOk?(): void;
}
export type CloseButtonProps = ComponentBaseProps & Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'className'> & Pick<ModalHeaderProps, 'closeIcon'>;
export declare const ModalBody: FC<ModalProps>;
export declare const CloseButton: FC<CloseButtonProps>;
export declare const ModalHeader: FC<ModalHeaderProps>;
export declare const ModalContent: FC<ModalContentProps>;
export declare const ModalFooter: FC<ModalFooterProps>;
export declare const Modal: CompoundComponent<ModalProps, {
    Content: typeof ModalContent;
    Footer: typeof ModalFooter;
    Header: typeof ModalHeader;
}>;
