import type { InjectionKey, Ref } from 'vue';
type closeMessage = () => void;
export interface MessageItem {
    id: string;
    modelValue: boolean;
    text: string;
    duration: number;
    close: closeMessage;
}
type OpenMessage = (text: string, rest?: Record<string, any>) => Promise<MessageItem> | closeMessage;
export interface MessageInstance {
    items: Ref<MessageItem[]>;
    open: (props?: Record<string, any>) => OpenMessage;
    info: OpenMessage;
    success: OpenMessage;
    warning: OpenMessage;
    error: OpenMessage;
    loading: OpenMessage;
    close: (id: string) => void;
    remove: (id: string) => void;
}
export declare const MessageKey: InjectionKey<MessageInstance>;
export declare const NotificationKey: InjectionKey<MessageInstance>;
export declare const message: {
    items: Ref<{
        id: string;
        modelValue: boolean;
        text: string;
        duration: number;
        close: closeMessage;
    }[]>;
    open: (props?: Record<string, any>) => (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    info: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    success: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    warning: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    error: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    loading: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    close: (id: string) => void;
    remove: (id: string) => void;
};
export declare const notification: {
    items: Ref<{
        id: string;
        modelValue: boolean;
        text: string;
        duration: number;
        close: closeMessage;
    }[]>;
    open: (props?: Record<string, any>) => (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    info: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    success: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    warning: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    error: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    loading: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    close: (id: string) => void;
    remove: (id: string) => void;
};
export declare function createMessage(): {
    items: Ref<{
        id: string;
        modelValue: boolean;
        text: string;
        duration: number;
        close: closeMessage;
    }[]>;
    open: (props?: Record<string, any>) => (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    info: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    success: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    warning: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    error: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    loading: (text: string, rest?: Record<string, any>) => Promise<unknown> | (() => void);
    close: (id: string) => void;
    remove: (id: string) => void;
};
export declare function provideMessage(): {
    items: Ref<{
        id: string;
        modelValue: boolean;
        text: string;
        duration: number;
        close: closeMessage;
    }[]>;
    open: (props?: Record<string, any> | undefined) => (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    info: (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    success: (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    warning: (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    error: (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    loading: (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    close: (id: string) => void;
    remove: (id: string) => void;
};
export declare function useMessage(): MessageInstance;
export declare function provideNotification(): {
    items: Ref<{
        id: string;
        modelValue: boolean;
        text: string;
        duration: number;
        close: closeMessage;
    }[]>;
    open: (props?: Record<string, any> | undefined) => (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    info: (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    success: (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    warning: (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    error: (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    loading: (text: string, rest?: Record<string, any> | undefined) => Promise<unknown> | (() => void);
    close: (id: string) => void;
    remove: (id: string) => void;
};
export declare function useNotification(): MessageInstance;
export {};
