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<DialogProps>, {
open: boolean;
disabled: boolean;
dangerZone: boolean;
header: any;
description: string;
cancelText: any;
confirmText: string;
onConfirm: () => undefined;
alert: boolean;
status: undefined;
}>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
"update:open": (value: boolean) => void;
cancel: () => void;
}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<DialogProps>, {
open: boolean;
disabled: boolean;
dangerZone: boolean;
header: any;
description: string;
cancelText: any;
confirmText: string;
onConfirm: () => undefined;
alert: boolean;
status: undefined;
}>>> & Readonly<{
onCancel?: (() => any) | undefined;
"onUpdate:open"?: ((value: boolean) => any) | undefined;
}>, {
disabled: boolean;
header: string;
open: boolean;
description: string;
dangerZone: boolean;
cancelText: string;
confirmText: string;
onConfirm: (event: Event) => void | Promise<void>;
alert: boolean;
status: "error" | "warning" | "info" | "success";
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
    default?(_: {}): any;
}>;
export default _default;

export declare interface DialogProps {
    /**
     * Shows or hides the dialog.
     * Usage: v-model:open="isOpen"
     */
    open?: boolean;
    /**
     * Whether the confirmation button is enabled or not.
     */
    disabled?: boolean;
    /**
     * Is this a dangerous action? Will turn the confirmation button red.
     */
    dangerZone?: boolean;
    /**
     * Header text.
     */
    header?: string;
    /**
     * Description text.
     */
    description?: string;
    /**
     * Cancel button text.
     */
    cancelText?: string;
    /**
     * Confirm button text.
     */
    confirmText?: string;
    /**
     * Callback function when the confirm button is clicked.
     */
    onConfirm?: (event: Event) => Promise<void> | void;
    /**
     * Treats it like an Alert Dialog, with only the confirmation button showing.
     *
     * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/alert}
     */
    alert?: boolean;
    /**
     * Adds a top accent border and icon next to the header.
     * This behaves similarly to the Alert component in respect to the levels, icons, and colors
     * passing `error` will treat the dialog the same as `dangerZone`
     */
    status?: StatusSeverity;
}

declare enum StatusSeverities {
    Error = "error",
    Warning = "warning",
    Info = "info",
    Success = "success"
}

declare type StatusSeverity = `${StatusSeverities}`;

export { }
