import * as tailwind_variants from 'tailwind-variants';
import { VariantProps } from 'tailwind-variants';
import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';
import React__default from 'react';
import * as react_jsx_runtime from 'react/jsx-runtime';
import { B as ButtonProps } from '../../button.types-CokvmCqC.cjs';
import { T as TIconProps } from '../../icon.types-DlJQcXjA.cjs';
import '@raiadrogasil/pulso-design-tokens';
import '@raiadrogasil/pulso-icons';

type TModalBodyProps = {
    children: React.ReactNode;
    id?: string;
} & Partial<React.HTMLAttributes<HTMLDivElement>>;
declare function ModalBody({ children, id, ...rest }: TModalBodyProps): react_jsx_runtime.JSX.Element;

interface ModalClosableButtonProps extends Omit<ButtonProps, 'size' | 'variant' | 'onClick'> {
    onClick?: () => void;
}
declare function ModalClosableButton({ onClick, ...rest }: ModalClosableButtonProps): react_jsx_runtime.JSX.Element;

type THeaderLabelProps$1 = {
    children: string;
} & Partial<React.HTMLAttributes<HTMLSpanElement>>;
declare function ModalDescription({ children, ...rest }: THeaderLabelProps$1): react_jsx_runtime.JSX.Element;

type TModalFooterProps = {
    children: React__default.ReactNode;
    orientation?: 'vertical' | 'horizontal';
} & Partial<React__default.HTMLAttributes<HTMLDivElement>>;
interface TButtonFooterProps extends Omit<ButtonProps, 'variant' | 'full' | 'size' | 'onClick' | 'children'> {
    onClick?: () => void;
    children: string;
}
declare function ModalFirstButtonFooter({ onClick, children, ...rest }: TButtonFooterProps): react_jsx_runtime.JSX.Element;
declare function ModalSecondButtonFooter({ onClick, children, ...rest }: TButtonFooterProps): react_jsx_runtime.JSX.Element;
declare function ModalFooter({ children, orientation, ...rest }: TModalFooterProps): react_jsx_runtime.JSX.Element;

interface TModalIconProps extends Omit<TIconProps, 'symbol' | 'size' | 'color'> {
    symbol?: TIconProps['symbol'];
    color?: TIconProps['color'];
}
declare function ModalIcon({ symbol, color, ...rest }: TModalIconProps): react_jsx_runtime.JSX.Element;

type THeaderLabelProps = {
    children: string;
    id?: string;
} & Partial<React.HTMLAttributes<HTMLSpanElement>>;
declare function ModalTitle({ children, id, ...rest }: THeaderLabelProps): react_jsx_runtime.JSX.Element;

declare const modalVariants: tailwind_variants.TVReturnType<{
    variant: {
        sm: string;
        md: string;
        lg: string;
        xl: string;
    };
}, undefined, "relative bg-transparent [z-index:999]", {
    responsiveVariants?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | {
        variant?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | undefined;
    } | undefined;
} & tailwind_variants_dist_config_js.TWMConfig & {
    twMergeConfig: {
        extend: {
            classGroups: {
                'font-size': {
                    text: string[];
                }[];
                'border-width': {
                    border: string[];
                }[];
                '--tw-ring-inset': {
                    ring: string[];
                }[];
            };
        };
    };
}, {
    variant: {
        sm: string;
        md: string;
        lg: string;
        xl: string;
    };
}, undefined, tailwind_variants.TVReturnType<{
    variant: {
        sm: string;
        md: string;
        lg: string;
        xl: string;
    };
}, undefined, "relative bg-transparent [z-index:999]", tailwind_variants_dist_config_js.TVConfig<{
    variant: {
        sm: string;
        md: string;
        lg: string;
        xl: string;
    };
}, {
    variant: {
        sm: string;
        md: string;
        lg: string;
        xl: string;
    };
}>, unknown, unknown, undefined>>;

/**
 * Representa as props para o componente Modal.
 */
type ModalProps = VariantProps<typeof modalVariants> & {
    /**
     * Exibição na camada de testes
     */
    id?: string;
    /**
     * Define o tamanho do Modal.
     */
    variant?: 'sm' | 'md' | 'lg' | 'xl';
    /**
     * Utilizado para exibição ou não do Modal.
     */
    visible?: boolean;
    /**
     * Conteúdo a ser renderizado dentro do Modal
     */
    children?: React.ReactNode;
};

declare const Modal: {
    Root: React__default.ForwardRefExoticComponent<tailwind_variants.VariantProps<tailwind_variants.TVReturnType<{
        variant: {
            sm: string;
            md: string;
            lg: string;
            xl: string;
        };
    }, undefined, "relative bg-transparent [z-index:999]", {
        responsiveVariants?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | {
            variant?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | undefined;
        } | undefined;
    } & tailwind_variants_dist_config_js.TWMConfig & {
        twMergeConfig: {
            extend: {
                classGroups: {
                    'font-size': {
                        text: string[];
                    }[];
                    'border-width': {
                        border: string[];
                    }[];
                    '--tw-ring-inset': {
                        ring: string[];
                    }[];
                };
            };
        };
    }, {
        variant: {
            sm: string;
            md: string;
            lg: string;
            xl: string;
        };
    }, undefined, tailwind_variants.TVReturnType<{
        variant: {
            sm: string;
            md: string;
            lg: string;
            xl: string;
        };
    }, undefined, "relative bg-transparent [z-index:999]", tailwind_variants_dist_config_js.TVConfig<{
        variant: {
            sm: string;
            md: string;
            lg: string;
            xl: string;
        };
    }, {
        variant: {
            sm: string;
            md: string;
            lg: string;
            xl: string;
        };
    }>, unknown, unknown, undefined>>> & {
        id?: string;
        variant?: "sm" | "md" | "lg" | "xl";
        visible?: boolean;
        children?: React__default.ReactNode;
    } & React__default.RefAttributes<HTMLDivElement>>;
    HeaderIcon: typeof ModalIcon;
    HeaderTitle: typeof ModalTitle;
    HeaderClosableButton: typeof ModalClosableButton;
    Description: typeof ModalDescription;
    Body: typeof ModalBody;
    Footer: typeof ModalFooter;
    PrimaryButton: typeof ModalFirstButtonFooter;
    SecondaryButton: typeof ModalSecondButtonFooter;
};

export { Modal, type ModalProps };
