"""Edge Proxy WebSocket Client Package.

This package provides a WebSocket client for communication with the robot's
Edge Proxy server, following the Edge Proxy Design spec.
See: /home/nelsen/Projects/HRI/docs/plans/2026-02-04-edge-proxy-design.md

Message Types:
- NavigateCommand: Send navigation commands (waypoint, pose, relative)
- CancelNavigationCommand: Cancel current navigation
- GetStateCommand: Request robot state
- PingMessage: Keepalive ping
- NavStatusMessage: Navigation status updates
- RobotState: Robot state (pose, battery, location)
- WaypointListMessage: List of available waypoints
- ErrorMessage: Error notifications
- PongMessage: Ping response
"""

from .client import (
    ClientConfig,
    ConnectionChangeHandler,
    EdgeProxyClient,
    EdgeProxyClientError,
    EdgeProxyConnectionError,
    ErrorHandler,
    MessageError,
    NavStatusHandler,
    PongHandler,
    RobotStateHandler,
    WaypointListHandler,
)

from .messages import (
    Battery,
    CancelNavigationCommand,
    ErrorMessage,
    GetStateCommand,
    GoalType,
    MessageType,
    NavigateCommand,
    NavErrorCode,
    NavStatus,
    NavStatusMessage,
    PongMessage,
    Pose,
    RelativeDirection,
    RobotState,
    Speed,
    Waypoint,
    WaypointListMessage,
    parse_edge_message,
)

__all__ = [
    # Client
    "EdgeProxyClient",
    "ClientConfig",
    "EdgeProxyClientError",
    "EdgeProxyConnectionError",
    "MessageError",
    # Handler types
    "NavStatusHandler",
    "RobotStateHandler",
    "WaypointListHandler",
    "ErrorHandler",
    "PongHandler",
    "ConnectionChangeHandler",
    # Message Types
    "MessageType",
    "NavStatus",
    "NavErrorCode",
    "Speed",
    "GoalType",
    "RelativeDirection",
    # Command Messages
    "NavigateCommand",
    "CancelNavigationCommand",
    "GetStateCommand",
    # Event Messages
    "NavStatusMessage",
    "RobotState",
    "WaypointListMessage",
    "ErrorMessage",
    "PongMessage",
    # Supporting Types
    "Pose",
    "Battery",
    "Waypoint",
    # Parser
    "parse_edge_message",
]
