import { RabbitMQService } from './rabbitmq.service';
import { EventBusService } from './event-bus.service';
import { MessageBrokerOptions } from '../../interfaces/message.interfaces';
export declare class MessagingService {
    private readonly options;
    private readonly rabbitMQService;
    private readonly eventBusService;
    private readonly logger;
    constructor(options: MessageBrokerOptions, rabbitMQService: RabbitMQService, eventBusService: EventBusService);
    publish<T = any>(topic: string, payload: T, options?: {
        metadata?: Record<string, any>;
        localOnly?: boolean;
        externalOnly?: boolean;
    }): Promise<void>;
    subscribe<T = any>(topic: string, handler: (payload: T, metadata?: Record<string, any>) => Promise<void> | void, options?: {
        localOnly?: boolean;
        externalOnly?: boolean;
        messageType?: string;
    }): Promise<void>;
    unsubscribe(topic: string, handler?: any, options?: {
        localOnly?: boolean;
        externalOnly?: boolean;
    }): Promise<void>;
    isConnected(): boolean;
    getEventBus(): EventBusService;
    getRabbitMQ(): RabbitMQService;
}
