import { AnsiLogger } from 'matterbridge/logger';
import { RequestMessage, UserData } from '../models/index.js';
import { Client } from './client.js';
import { AbstractConnectionListener } from './listeners/abstractConnectionListener.js';
import { AbstractMessageListener } from './listeners/abstractMessageListener.js';
import { ConnectionBroadcaster } from './listeners/connectionBroadcaster.js';
import { ResponseBroadcasterFactory } from './listeners/responseBroadcasterFactory.js';
export declare class ClientRouter implements Client {
    private readonly logger;
    protected readonly connectionBroadcaster: ConnectionBroadcaster;
    protected readonly broadcasterFactory: ResponseBroadcasterFactory;
    private readonly context;
    private readonly localClients;
    private mqttClient;
    constructor(logger: AnsiLogger, userdata: UserData);
    registerDevice(duid: string, localKey: string, pv: string, nonce: number | undefined): void;
    updateNonce(duid: string, nonce: number): void;
    registerClient(duid: string, ip: string): Client;
    unregisterClient(duid: string): void;
    registerConnectionListener(listener: AbstractConnectionListener): void;
    registerMessageListener(listener: AbstractMessageListener): void;
    isConnected(): boolean;
    isReady(): boolean;
    connect(): void;
    disconnect(): Promise<void>;
    send(duid: string, request: RequestMessage): Promise<void>;
    get<T>(duid: string, request: RequestMessage): Promise<T | undefined>;
    private getLocalClient;
}
//# sourceMappingURL=clientRouter.d.ts.map