module Selenium
  module WebDriver
    class BiDi
      @ws: WebSocketConnection

      @session: Session

      def initialize: (url: String) -> void

      def add_callback: (String | Symbol event) { () -> void } -> Integer

      def close: () -> nil

      def callbacks: () -> Hash[untyped, untyped]

      def remove_callback: (String event, Integer id) -> Error::WebDriverError?

      def session: () -> Session

      def send_cmd: (String method, **untyped params) -> untyped

      def error_message: (Hash[String,String] message) -> String
    end
  end
end
