import type { AgenticROSConfig } from "./config.js"; /** * Apply robot namespace to a topic (or service/action name) when configured. * If the namespace is set and the name is root-level (e.g. cmd_vel, battery_state), * returns //. Otherwise returns the normalized name as-is. * * The first argument may be either an `AgenticROSConfig` (legacy single- * robot path) or a bare namespace string (used by per-tool `robot_id` * routing — pass `resolveRobot(config, robot_id).namespace`). * * Example: namespace "robot-uuid", topic "/cmd_vel" -> "/robot-uuid/cmd_vel" * Example: namespace "", topic "/cmd_vel" -> "/cmd_vel" * Example: namespace "robot-uuid", topic "/robot-uuid/odom" -> "/robot-uuid/odom" (unchanged) */ export declare function toNamespacedTopic(target: AgenticROSConfig | string, topic: string): string; /** * Apply robot namespace to any topic when configured (for transport subscribe/publish). * Use this when the robot publishes/subscribes all topics under a namespace (e.g. Zenoh with * zenoh-bridge-ros2dds or rmw_zenoh). If a namespace is set, returns // * unless the topic already starts with //. * * The first argument may be either an `AgenticROSConfig` or a bare * namespace string (per-robot routing). * * Example: namespace "robot-uuid", topic "/cmd_vel" -> "/robot-uuid/cmd_vel" * Example: namespace "robot-uuid", topic "/camera/camera/color/image_raw/compressed" -> "/robot-uuid/camera/camera/color/image_raw/compressed" * Example: namespace "robot-uuid", topic "/robot-uuid/odom" -> "/robot-uuid/odom" (unchanged) */ export declare function toNamespacedTopicFull(target: AgenticROSConfig | string, topic: string): string; /** * Canonical topic string for teleop UI and ?topic= query params: leading slash, no robot namespace prefix. * Subscribe/publish still uses {@link toNamespacedTopicFull} on the server so Zenoh keys match the bridge. * * Teleop is single-robot today, so this still takes the full config. */ export declare function toTeleopCameraTopicShort(config: AgenticROSConfig, topic: string): string; /** * ROS topic to use when subscribing to camera streams (Zenoh / DDS). * Unlike {@link toNamespacedTopicFull}, common sensor topics stay at the graph root (`/camera/...`, `/zed/...`) * even when the namespace is set for cmd_vel. If the topic already starts with `//`, it is left as-is. * Other multi-segment paths get the namespace prefix (same as Full) for odd layouts. * * The first argument may be either an `AgenticROSConfig` or a bare * namespace string (per-robot routing). */ export declare function resolveCameraSubscribeTopic(target: AgenticROSConfig | string, topic: string): string; //# sourceMappingURL=topic-utils.d.ts.map