import { Deferred, UnknownRequestMessage, UnknownResponseMessage, UnknownResponseErrorMessage, UnknownNotificationMessage, UnknownBroadcastMessage } from 'open-collaboration-protocol';
import { Peer } from './types.js';
import { Logger } from './utils/logging.js';
export interface RelayedRequest {
    id: string | number;
    response: Deferred<UnknownResponseMessage | UnknownResponseErrorMessage>;
    dispose(): void;
}
export declare class MessageRelay {
    protected logger: Logger;
    protected requestMap: Map<string, RelayedRequest>;
    pushResponse(receiver: Peer, message: UnknownResponseMessage | UnknownResponseErrorMessage): void;
    sendRequest(target: Peer, message: UnknownRequestMessage, timeoutMs?: number): Promise<UnknownResponseMessage | UnknownResponseErrorMessage>;
    sendNotification(target: Peer, message: UnknownNotificationMessage): void;
    sendBroadcast(origin: Peer, message: UnknownBroadcastMessage): void;
}
//# sourceMappingURL=message-relay.d.ts.map