/**
 * Copyright IBM Corp. 2016, 2023
 *
 * This source code is licensed under the Apache-2.0 license found in the
 * LICENSE file in the root directory of this source tree.
 */
import PropTypes from 'prop-types';
import React, { ReactNode } from 'react';
import { ButtonKinds } from '../Button';
export interface ModalWrapperProps {
    buttonTriggerClassName?: string;
    buttonTriggerText?: ReactNode;
    children?: ReactNode;
    disabled?: boolean;
    handleOpen?: React.MouseEventHandler<HTMLButtonElement>;
    handleSubmit?: React.ReactEventHandler<HTMLElement>;
    id?: string;
    modalBeforeContent?: boolean;
    modalHeading?: string;
    modalLabel?: string;
    modalText?: string;
    onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;
    passiveModal?: boolean;
    preventCloseOnClickOutside?: boolean;
    primaryButtonText?: string;
    renderTriggerButtonIcon: React.ElementType;
    secondaryButtonText?: string;
    selectorPrimaryFocus?: string;
    shouldCloseAfterSubmit?: boolean;
    status?: string;
    triggerButtonIconDescription?: string;
    triggerButtonKind: (typeof ButtonKinds)[number];
    withHeader?: boolean;
}
interface ModelWrapperState {
    isOpen: boolean;
}
export default class ModalWrapper extends React.Component<ModalWrapperProps, ModelWrapperState> {
    if(isDev: any): void;
    static propTypes: {
        buttonTriggerClassName: PropTypes.Requireable<string>;
        buttonTriggerText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        disabled: PropTypes.Requireable<boolean>;
        handleOpen: PropTypes.Requireable<(...args: any[]) => any>;
        handleSubmit: PropTypes.Requireable<(...args: any[]) => any>;
        id: PropTypes.Requireable<string>;
        modalBeforeContent: PropTypes.Requireable<boolean>;
        modalHeading: PropTypes.Requireable<string>;
        modalLabel: PropTypes.Requireable<string>;
        modalText: PropTypes.Requireable<string>;
        onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
        passiveModal: PropTypes.Requireable<boolean>;
        preventCloseOnClickOutside: PropTypes.Requireable<boolean>;
        primaryButtonText: PropTypes.Requireable<string>;
        renderTriggerButtonIcon: PropTypes.Requireable<object>;
        secondaryButtonText: PropTypes.Requireable<string>;
        selectorPrimaryFocus: PropTypes.Requireable<string>;
        shouldCloseAfterSubmit: PropTypes.Requireable<boolean>;
        status: PropTypes.Requireable<string>;
        triggerButtonIconDescription: PropTypes.Requireable<string>;
        triggerButtonKind: PropTypes.Requireable<"primary" | "secondary" | "danger" | "ghost" | "danger--primary" | "danger--ghost" | "danger--tertiary" | "tertiary">;
        withHeader: PropTypes.Requireable<boolean>;
    };
    triggerButton: React.RefObject<HTMLButtonElement | null>;
    modal: React.RefObject<HTMLDivElement | null>;
    state: {
        isOpen: boolean;
    };
    handleOpen: () => void;
    handleClose: (evt: React.KeyboardEvent<HTMLDivElement>) => void;
    handleOnRequestSubmit: (evt: React.KeyboardEvent<HTMLDivElement>) => void;
    render(): import("react/jsx-runtime").JSX.Element;
}
export {};
