import { BaseMessageOptions, MessageColor, MessageListener, MessageInput } from '../../../shared/types/message';
import { messageConfig } from '../config/message.config';
/**
 * Servicio base para el sistema de mensajes
 * Implementa el patrón Factory/Strategy para permitir extensiones
 */
declare class MessageService {
    private listeners;
    private idCounter;
    private recentMessages;
    /**
     * Muestra un mensaje con el color y opciones especificados
     */
    show(messageOrOptions: MessageInput, color?: MessageColor, options?: BaseMessageOptions): number;
    /**
     * Muestra un mensaje de éxito
     */
    success(messageOrOptions: MessageInput, options?: BaseMessageOptions): number;
    /**
     * Muestra un mensaje de error
     */
    error(messageOrOptions: MessageInput, options?: BaseMessageOptions): number;
    /**
     * Muestra un mensaje de información
     */
    info(messageOrOptions: MessageInput, options?: BaseMessageOptions): number;
    /**
     * Muestra un mensaje de advertencia
     */
    warning(messageOrOptions: MessageInput, options?: BaseMessageOptions): number;
    /**
     * Muestra un mensaje neutral
     */
    neutral(messageOrOptions: MessageInput, options?: BaseMessageOptions): number;
    /**
     * Muestra un mensaje con estilo de marca (brand)
     */
    brand(messageOrOptions: MessageInput, options?: BaseMessageOptions): number;
    /**
     * Cierra un mensaje por su ID
     */
    dismiss(id: number): void;
    /**
     * Configura las opciones por defecto del servicio
     */
    configure(options: Partial<typeof messageConfig>): void;
    /**
     * Obtiene los listeners registrados
     */
    getListeners(): MessageListener[];
    /**
     * Registra un nuevo listener
     */
    subscribe(listener: MessageListener): () => void;
}
/**
 * Instancia singleton del servicio de toasts; la usan `toast`, `notify` y `useMessage`.
 */
export declare const messageService: MessageService;
/**
 * Expone el mismo singleton que `messageService` (útil en pruebas o integración imperativa sin React).
 *
 * @returns Instancia de `MessageService` compartida en toda la app.
 */
export declare const useMessageService: () => MessageService;
export {};
//# sourceMappingURL=MessageService.d.ts.map