import type { RosTransport } from "../transport.js"; import type { ConnectionStatus, ConnectionHandler, Subscription, PublishOptions, SubscribeOptions, ServiceCallOptions, ServiceCallResult, ActionGoalOptions, ActionResult, TopicInfo, ServiceInfo, ActionInfo, MessageHandler } from "../types.js"; import { type ZenohKeyFormat } from "./keys.js"; export interface ZenohAdapterConfig { routerEndpoint: string; domainId?: number; /** "ros2dds" for zenoh-bridge-ros2dds, "rmw_zenoh" for ROS2 with Zenoh RMW */ keyFormat?: ZenohKeyFormat; /** When ros2dds bridge uses a non-"/" namespace, set to the same value (e.g. "/bot1"). */ bridgeNamespace?: string; } /** * Zenoh transport adapter (Mode D). * Connects to a Zenoh router via zenoh-ts (WebSocket to zenoh-plugin-remote-api). * Uses rmw_zenoh key mapping and CDR payloads for ROS 2 compatibility. */ export declare class ZenohTransport implements RosTransport { private config; private session; private status; private connectionHandlers; private subscribers; /** Serialize Session.open/close so two connect()s never open parallel WebSockets to remote-api. */ private sessionOpQueue; /** Serialize listTopics so overlapping tool calls do not undeclare each other's subscribers. */ private listTopicsOpQueue; constructor(config: ZenohAdapterConfig); private setStatus; private domainId; private keyFormat; private key; private enqueueSessionOp; connect(): Promise; disconnect(): Promise; getStatus(): ConnectionStatus; onConnection(handler: ConnectionHandler): () => void; publish(options: PublishOptions): Promise; subscribe(options: SubscribeOptions, handler: MessageHandler): Subscription; subscribeAsync(options: SubscribeOptions, handler: MessageHandler): Promise; callService(_options: ServiceCallOptions): Promise; sendActionGoal(_options: ActionGoalOptions): Promise; cancelActionGoal(_action: string): Promise; listTopics(): Promise; listServices(): Promise; listActions(): Promise; } //# sourceMappingURL=adapter.d.ts.map