import { AgentOperations } from './AgentManager';
import { PorterEvent, Listener, Message, MessageConfig, AgentInfo, MessageTarget } from '../porter.model';
import { Logger } from '../porter.utils';
export declare class MessageHandler {
    private agentOperations;
    private logger;
    private eventListeners;
    private messageListeners;
    private initializationHandler;
    constructor(agentOperations: AgentOperations, logger: Logger);
    post(message: Message<any>, target?: MessageTarget): Promise<void>;
    private broadcastMessage;
    private postToTab;
    private postToLocation;
    private postToContext;
    private postToPort;
    private postToId;
    onMessage(config: MessageConfig): () => void;
    on(config: MessageConfig): () => void;
    handleIncomingMessage(message: any, info: AgentInfo): void;
    private emitEvent;
    private emitMessage;
    addListener<T extends keyof PorterEvent>(event: T, listener: Listener<T>): () => void;
    handleDisconnect(info: AgentInfo): void;
    handleConnect(info: AgentInfo): void;
    onConnect(listener: Listener<'onConnect'>): () => void;
    onMessagesSet(listener: Listener<'onMessagesSet'>): () => void;
    onDisconnect(listener: Listener<'onDisconnect'>): () => void;
}
