import type { VNode, ExtractPropTypes, AppContext } from 'vue';
import type { Mutable } from 'hongluan-ui/es/utils';
import type MessageConstructor from './message.vue';
export declare const messageTypes: readonly ["success", "info", "warning", "error", "danger"];
export declare type messageType = typeof messageTypes[number];
export declare const aligns: readonly ["left", "center", "right"];
export interface MessageConfigContext {
    max?: number;
}
export declare const messageDefaults: Mutable<{
    /**
     * @description custom class name for Message
     */
    readonly customClass: "";
    /**
     * @description the text align
     */
    readonly textAlign: "left";
    /**
     * @description whether `message` is treated as HTML string
     */
    readonly dangerouslyUseHTMLString: false;
    /**
     * @description display duration, millisecond. If set to 0, it will not turn off automatically
     */
    readonly duration: 3000;
    /**
     * @description message dom id
     */
    readonly id: "";
    /**
     * @description message text
     */
    readonly message: "";
    /**
     * @description callback function when closed with the message instance as the parameter
     */
    readonly onClose: any;
    /**
     * @description whether to show a close button
     */
    readonly showClose: false;
    /**
     * @description message type
     */
    readonly type: "info";
    /**
     * @description set the distance to the top of viewport
     */
    readonly offset: 16;
    /**
     * @description input box size
     */
    readonly zIndex: 0;
    /**
     * @description merge messages with the same content, type of VNode message is not supported
     */
    readonly grouping: false;
    /**
     * @description The number of repetitions, similar to badge, is used as the initial number when used with `grouping`
     */
    readonly repeatNum: 1;
    readonly appendTo: HTMLElement;
}>;
export declare const messageProps: {
    readonly customClass: {
        readonly type: StringConstructor;
        readonly default: "";
    };
    readonly textAlign: import("hongluan-ui/es/utils").EpPropFinalized<StringConstructor, "left" | "right" | "center", never, "left", false>;
    readonly dangerouslyUseHTMLString: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
    readonly duration: {
        readonly type: NumberConstructor;
        readonly default: 3000;
    };
    readonly id: {
        readonly type: StringConstructor;
        readonly default: "";
    };
    readonly message: import("hongluan-ui/es/utils").EpPropFinalized<import("vue").PropType<string | VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }> | (() => VNode)>, never, never, "", false>;
    readonly icon: {
        readonly type: import("vue").PropType<VNode<import("vue").RendererNode, import("vue").RendererElement, {
            [key: string]: any;
        }>>;
        readonly required: false;
        readonly validator: (val: unknown) => boolean;
        __epPropKey: true;
    };
    readonly onClose: {
        readonly type: import("vue").PropType<() => void>;
        readonly required: false;
        readonly validator: (val: unknown) => boolean;
        __epPropKey: true;
    };
    readonly showClose: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
    readonly type: import("hongluan-ui/es/utils").EpPropFinalized<StringConstructor, "success" | "info" | "warning" | "danger" | "error", never, "info", false>;
    readonly offset: {
        readonly type: NumberConstructor;
        readonly default: 16;
    };
    readonly zIndex: {
        readonly type: NumberConstructor;
        readonly default: 0;
    };
    readonly grouping: {
        readonly type: BooleanConstructor;
        readonly default: false;
    };
    readonly repeatNum: {
        readonly type: NumberConstructor;
        readonly default: 1;
    };
};
export declare type MessageProps = ExtractPropTypes<typeof messageProps>;
export declare const messageEmits: {
    destroy: () => boolean;
};
export declare type MessageEmits = typeof messageEmits;
export declare type MessageInstance = InstanceType<typeof MessageConstructor>;
export declare type MessageOptions = Partial<Mutable<Omit<MessageProps, 'id'> & {
    appendTo?: HTMLElement | string;
}>>;
export declare type MessageParams = MessageOptions | MessageOptions['message'];
export declare type MessageParamsNormalized = Omit<MessageProps, 'id'> & {
    /**
     * @description set the root element for the message, default to `document.body`
     */
    appendTo: HTMLElement;
};
export declare type MessageOptionsWithType = Omit<MessageOptions, 'type'>;
export declare type MessageParamsWithType = MessageOptionsWithType | MessageOptions['message'];
export interface MessageHandler {
    /**
     * @description close the Message
     */
    close: () => void;
}
export declare type MessageFn = {
    (options?: MessageParams, appContext?: null | AppContext): MessageHandler;
    closeAll(type?: messageType): void;
};
export declare type MessageTypedFn = (options?: MessageParamsWithType, appContext?: null | AppContext) => MessageHandler;
export interface Message extends MessageFn {
    success: MessageTypedFn;
    warning: MessageTypedFn;
    info: MessageTypedFn;
    error: MessageTypedFn;
    danger: MessageTypedFn;
}
