import ReconnectingWebSocket, {
  UrlProvider,
  ProtocolsProvider,
  Options
} from "./ws.js";

type EventHandlerOptions = {
  onOpen?: (event: WebSocketEventMap["open"]) => void;
  onMessage?: (event: WebSocketEventMap["message"]) => void;
  onClose?: (event: WebSocketEventMap["close"]) => void;
  onError?: (event: WebSocketEventMap["error"]) => void;
};

type UseWebSocketOptions = Options & EventHandlerOptions;
declare function useWebSocket(
  url: UrlProvider,
  protocols?: ProtocolsProvider,
  options?: UseWebSocketOptions
): ReconnectingWebSocket;

export { type EventHandlerOptions as E, useWebSocket as u };
