import { useContext } from "react";
import { WsContext } from "./ws-context.js";
import type { WsClient } from "./ws-client.js";

export const useWsClient = (): WsClient => {
  const ctx = useContext(WsContext);
  if (!ctx) {
    throw new Error("useWsClient must be used within a WsProvider");
  }
  return ctx.client;
};

export const useWsConnected = (): boolean => {
  const ctx = useContext(WsContext);
  if (!ctx) {
    throw new Error("useWsConnected must be used within a WsProvider");
  }
  return ctx.isConnected;
};

export const useWsConnect = (): ((url: string) => Promise<void>) => {
  const ctx = useContext(WsContext);
  if (!ctx) {
    throw new Error("useWsConnect must be used within a WsProvider");
  }
  return ctx.connect;
};

export const useWsDisconnect = (): (() => void) => {
  const ctx = useContext(WsContext);
  if (!ctx) {
    throw new Error("useWsDisconnect must be used within a WsProvider");
  }
  return ctx.disconnect;
};
