import { type PropType, type ExtractPublicPropTypes } from 'vue';
import { type ThemeComponent } from '../../composables/useTheme';
import { type FormError } from '../form/Form.vue';
declare const modalSize: readonly ["xs", "sm", "md", "lg", "xl", "full"];
declare const modalPosition: readonly ["top", "center", "bottom"];
declare const modalProps: {
    size: {
        type: PropType<"xs" | "sm" | "md" | "lg" | "xl" | "full">;
        default: string;
    };
    position: {
        type: PropType<"top" | "bottom" | "center">;
        default: string;
    };
    modelValue: BooleanConstructor;
    showClose: BooleanConstructor;
    backdrop: {
        type: BooleanConstructor;
        default: boolean;
    };
    hasActions: {
        type: BooleanConstructor;
        default: boolean;
    };
    hasHeader: {
        type: BooleanConstructor;
        default: boolean;
    };
    title: StringConstructor;
    description: StringConstructor;
    label: StringConstructor;
    loading: BooleanConstructor;
    loadingText: StringConstructor;
    fluid: BooleanConstructor;
    isForm: BooleanConstructor;
    formDisabled: BooleanConstructor;
    formDescription: StringConstructor;
    formTitle: StringConstructor;
    formAutoValidate: {
        type: BooleanConstructor;
        default: boolean;
    };
    formErrors: {
        type: PropType<FormError | FormError[]>;
        default: () => never[];
    };
    persistent: BooleanConstructor;
};
export type ModalSize = typeof modalSize[number];
export type ModalPosition = typeof modalPosition[number];
export type ModalProps = ExtractPublicPropTypes<typeof modalProps>;
type InternalClasses = 'wrapper' | 'backdrop' | 'modal' | 'modalWrapper' | 'closeIcon' | 'header' | 'content' | 'actions' | 'title' | 'description' | 'label';
type InternaData = {
    visible: boolean;
};
export interface ModalTheme extends ThemeComponent<ModalProps, InternalClasses, InternaData> {
}
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<{
    size: {
        type: PropType<"xs" | "sm" | "md" | "lg" | "xl" | "full">;
        default: string;
    };
    position: {
        type: PropType<"top" | "bottom" | "center">;
        default: string;
    };
    modelValue: BooleanConstructor;
    showClose: BooleanConstructor;
    backdrop: {
        type: BooleanConstructor;
        default: boolean;
    };
    hasActions: {
        type: BooleanConstructor;
        default: boolean;
    };
    hasHeader: {
        type: BooleanConstructor;
        default: boolean;
    };
    title: StringConstructor;
    description: StringConstructor;
    label: StringConstructor;
    loading: BooleanConstructor;
    loadingText: StringConstructor;
    fluid: BooleanConstructor;
    isForm: BooleanConstructor;
    formDisabled: BooleanConstructor;
    formDescription: StringConstructor;
    formTitle: StringConstructor;
    formAutoValidate: {
        type: BooleanConstructor;
        default: boolean;
    };
    formErrors: {
        type: PropType<FormError | FormError[]>;
        default: () => never[];
    };
    persistent: BooleanConstructor;
}>, {
    open: () => void;
    close: () => void;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("submit" | "update:modelValue")[], "submit" | "update:modelValue", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    size: {
        type: PropType<"xs" | "sm" | "md" | "lg" | "xl" | "full">;
        default: string;
    };
    position: {
        type: PropType<"top" | "bottom" | "center">;
        default: string;
    };
    modelValue: BooleanConstructor;
    showClose: BooleanConstructor;
    backdrop: {
        type: BooleanConstructor;
        default: boolean;
    };
    hasActions: {
        type: BooleanConstructor;
        default: boolean;
    };
    hasHeader: {
        type: BooleanConstructor;
        default: boolean;
    };
    title: StringConstructor;
    description: StringConstructor;
    label: StringConstructor;
    loading: BooleanConstructor;
    loadingText: StringConstructor;
    fluid: BooleanConstructor;
    isForm: BooleanConstructor;
    formDisabled: BooleanConstructor;
    formDescription: StringConstructor;
    formTitle: StringConstructor;
    formAutoValidate: {
        type: BooleanConstructor;
        default: boolean;
    };
    formErrors: {
        type: PropType<FormError | FormError[]>;
        default: () => never[];
    };
    persistent: BooleanConstructor;
}>> & Readonly<{
    onSubmit?: ((...args: any[]) => any) | undefined;
    "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
}>, {
    size: "xs" | "sm" | "md" | "lg" | "xl" | "full";
    position: "top" | "bottom" | "center";
    loading: boolean;
    modelValue: boolean;
    fluid: boolean;
    backdrop: boolean;
    showClose: boolean;
    hasActions: boolean;
    hasHeader: boolean;
    isForm: boolean;
    formDisabled: boolean;
    formAutoValidate: boolean;
    formErrors: FormError | FormError[];
    persistent: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
    image?(_: {}): any;
    header?(_: {}): any;
    "header-content"?(_: {}): any;
    default?(_: {}): any;
    footer?(_: {}): any;
    actions?(_: {}): any;
    "cancel-action"?(_: {}): any;
    "tertiary-action"?(_: {}): any;
    "secondary-action"?(_: {}): any;
    "primary-action"?(_: {}): any;
}>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
