import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { PropType } from 'vue';
import { PublicProps } from 'vue';

declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;

declare type __VLS_Prettify<T> = {
    [K in keyof T]: T[K];
} & {};

declare type __VLS_TypePropsToRuntimeProps<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: PropType<__VLS_NonUndefinedable<T[K]>>;
    } : {
        type: PropType<T[K]>;
        required: true;
    };
};

declare type __VLS_WithDefaults<P, D> = {
    [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
        default: D[K];
    }> : P[K];
};

declare type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ModalProps>, {
hideClose: boolean;
open: boolean;
isOpen: boolean;
modelValue: boolean;
size: string;
scrollable: boolean;
contrast: boolean;
title: string;
position: string;
hideHeader: boolean;
closeButtonColorClass: string;
preventDismiss: boolean;
}>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
"update:open": (isOpen?: boolean | undefined) => void;
"update:is-open": (isOpen?: boolean | undefined) => void;
dismiss: () => void;
}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ModalProps>, {
hideClose: boolean;
open: boolean;
isOpen: boolean;
modelValue: boolean;
size: string;
scrollable: boolean;
contrast: boolean;
title: string;
position: string;
hideHeader: boolean;
closeButtonColorClass: string;
preventDismiss: boolean;
}>>> & Readonly<{
onDismiss?: (() => any) | undefined;
"onUpdate:is-open"?: ((isOpen?: boolean | undefined) => any) | undefined;
"onUpdate:open"?: ((isOpen?: boolean | undefined) => any) | undefined;
}>, {
title: string;
size: "medium" | "narrow" | "wide";
open: boolean;
modelValue: boolean;
position: "center" | "left" | "right";
isOpen: boolean;
hideClose: boolean;
scrollable: boolean;
contrast: boolean;
hideHeader: boolean;
closeButtonColorClass: string;
preventDismiss: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
    headerAction?(_: {}): any;
    "featured-content"?(_: {}): any;
    default?(_: {}): any;
    footer?(_: {}): any;
    actions?(_: {}): any;
}>;
export default _default;

export declare enum ModalPosition {
    Center = "center",
    Left = "left",
    Right = "right"
}

export declare type ModalPositions = `${ModalPosition}`;

export declare interface ModalProps {
    /**
     * Hides the "close" button
     */
    hideClose?: boolean;
    /**
     * Opens the modal when truthy; hides the modal when falsy.
     * @deprecated Use `isOpen` instead
     */
    open?: boolean;
    /**
     * Opens the modal when truthy; hides the modal when falsy.
     */
    isOpen?: boolean;
    /**
     * Use v-model:is-open or :is-open instead of :model-value and v-model.
     * @deprecated
     */
    modelValue?: boolean;
    /**
     * Sets a preset max-width on the modal.
     * Options: default (648px), narrow (360px), wide (960px)
     */
    size?: ModalSizes;
    /**
     * Should the modal be scrollable within the content area. This prop is treated as `true` when the `position` prop is set to "left" or "right".
     */
    scrollable?: boolean;
    /**
     * Gives the modal body have a light gray background
     */
    contrast?: boolean;
    /**
     * Text to display in the modal header
     */
    title?: string;
    /**
     * Disables the default padding in the modal body.
     */
    disableBodyPadding?: boolean;
    /**
     * The position on the screen to display the modal.
     */
    position?: ModalPositions;
    /**
     * Hide the header. Typically used with the featuredContent slot to display a graphic and create a "promo" modal.
     */
    hideHeader?: boolean;
    /**
     * Add classes to the close button. This can be used with the hideHeader prop and featuredContent slot to
     * accommodate images with different color backgrounds.
     */
    closeButtonColorClass?: string;
    /**
     * Prevents the modal from being dismissed by clicking the backdrop or pressing the escape key.
     * Example: There are in-flight api requests and you do not want the modal to close until they are done.
     */
    preventDismiss?: boolean;
}

export declare enum ModalSize {
    Narrow = "narrow",
    Medium = "medium",
    Wide = "wide"
}

export declare type ModalSizes = `${ModalSize}`;

export { }
