import { ComponentInternalInstance, VNode, ShallowReactive } from 'vue';
import { MessageHandler, MessageOptionsNormalized, MessagePlacement, MessageProps, MessageSnapshot } from './message.js';
type Mutable<T> = {
    -readonly [K in keyof T]: T[K];
};
export type MessageExposed = {
    bottom: {
        value: number;
    };
    close: (reason?: Parameters<MessageHandler["close"]>[0]) => void;
    visible: {
        value: boolean;
    };
};
export type MessageContext = {
    id: string;
    vnode: VNode;
    handler: MessageHandler;
    vm: ComponentInternalInstance & {
        exposed: MessageExposed | null;
    };
    props: Mutable<MessageProps>;
    targetKey: string;
    max: number | null;
};
export declare const placementInstances: ShallowReactive<Record<"top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right", MessageContext[]>>;
export declare function getMessageSnapshot(): MessageSnapshot;
export declare function getOrCreatePlacementInstances(placement: MessagePlacement): MessageContext[];
export declare function removeMessageInstance(instance: MessageContext): void;
export declare function getMessageInstance(id: string): MessageContext | null;
export declare function moveMessageInstance(instance: MessageContext, nextPlacement: MessagePlacement): void;
export declare function getScopedPlacementInstances(placement: MessagePlacement, targetKey: string): MessageContext[];
export declare function getMatchingGroupInstance(placement: MessagePlacement, targetKey: string, normalized: Pick<MessageOptionsNormalized, "groupKey" | "message">): MessageContext | null;
export declare function getInstance(id: string, placement: MessagePlacement, targetKey: string): {
    current: MessageContext | undefined;
    prev: MessageContext | undefined;
};
export declare function getLastOffset(id: string, placement: MessagePlacement, targetKey: string): number;
export declare function getOffsetOrSpace(id: string, offset: number, placement: MessagePlacement, targetKey: string): number;
export {};
