import { type Atom, type JSXSlot } from "@cn-ui/reactive";
import { type ModalListPosition } from "../Modal";
import { type AlertProps } from "./Alert";
import { FloatingArea } from "./runtime";
export interface MessageInfo extends Partial<AlertProps> {
    id?: string;
    title: JSXSlot;
    description?: JSXSlot;
    duration?: number;
    type: "info" | "success" | "error" | "warning";
    position?: ModalListPosition;
    closable?: boolean;
}
interface MessageRenderProps {
    store: MessageControl["PStore"];
}
export declare class MessageControl extends FloatingArea<MessageRenderProps> {
    id: string;
    constructor(id: string);
    PStore: Record<ModalListPosition, Atom<MessageInfo[]>>;
    removeMessage(id: string): MessageInfo[];
    render(): import("solid-js").JSX.Element;
    private autoKey;
    getPosFromInfo(info: {
        position?: ModalListPosition;
    }): "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right";
    getPosFromId(id: string): ModalListPosition;
    create(message: JSXSlot, type: MessageInfo["type"], options?: Partial<MessageInfo>): MessageInfo;
    close(item: MessageInfo): void;
    private durationClose;
    info(message: JSXSlot, options?: Partial<MessageInfo>): MessageInfo;
    success(message: JSXSlot, options?: Partial<MessageInfo>): MessageInfo;
    warning(message: JSXSlot, options?: Partial<MessageInfo>): MessageInfo;
    error(message: JSXSlot, options?: Partial<MessageInfo>): MessageInfo;
}
export declare const Message: MessageControl;
export {};
