@jellyfish-dev/react-client-sdk
Version:
React client library for Jellyfish.
32 lines • 2 kB
TypeScript
import { JSX, ReactNode } from "react";
import type { Selector } from "./state.types";
import { PeerStatus, TrackId, TrackWithOrigin } from "./state.types";
import { ConnectConfig, CreateConfig } from "@jellyfish-dev/ts-client-sdk";
import { DeviceManagerConfig, UseCameraAndMicrophoneResult, UseScreenShareResult, UseSetupMediaConfig, UseSetupMediaResult } from "./types";
import { Client } from "./Client";
import { ScreenShareManagerConfig } from "./ScreenShareManager";
export type JellyfishContextProviderProps = {
children: ReactNode;
};
export type UseConnect<PeerMetadata> = (config: ConnectConfig<PeerMetadata>) => () => void;
export type CreateJellyfishClient<PeerMetadata, TrackMetadata> = {
JellyfishContextProvider: ({ children }: JellyfishContextProviderProps) => JSX.Element;
useConnect: () => (config: ConnectConfig<PeerMetadata>) => () => void;
useDisconnect: () => () => void;
useStatus: () => PeerStatus;
useSelector: <Result>(selector: Selector<PeerMetadata, TrackMetadata, Result>) => Result;
useTracks: () => Record<TrackId, TrackWithOrigin<PeerMetadata, TrackMetadata>>;
useSetupMedia: (config: UseSetupMediaConfig<TrackMetadata>) => UseSetupMediaResult;
useCamera: () => UseCameraAndMicrophoneResult<TrackMetadata>["camera"];
useMicrophone: () => UseCameraAndMicrophoneResult<TrackMetadata>["microphone"];
useScreenShare: () => UseScreenShareResult<TrackMetadata>;
useClient: () => Client<PeerMetadata, TrackMetadata>;
};
/**
* Create a client that can be used with a context.
* Returns context provider, and two hooks to interact with the context.
*
* @returns ContextProvider, useSelector, useConnect
*/
export declare const create: <PeerMetadata, TrackMetadata>(config?: CreateConfig<PeerMetadata, TrackMetadata>, deviceManagerDefaultConfig?: DeviceManagerConfig, screenShareManagerDefaultConfig?: ScreenShareManagerConfig) => CreateJellyfishClient<PeerMetadata, TrackMetadata>;
//# sourceMappingURL=create.d.ts.map