uyem
Version:
WebRTC client-server SFU application
76 lines (75 loc) • 2.15 kB
TypeScript
import { Video } from '@prisma/client';
import React from 'react';
import { Colors, Theme } from '../Theme';
import { LocaleServer, LogLevel } from './interfaces';
export declare type VideoFull = Video;
export interface GlobalProps {
server: string;
roomId: string | number;
port: number;
userId: string | number;
name?: string;
token?: string;
theme?: Theme;
videoRecord?: boolean;
iceServers?: RTCConfiguration['iceServers'];
colors?: Colors;
logLevel?: LogLevel;
backLinks?: React.ReactNode | React.ReactNode[] | string | null;
}
export declare type RoomProps = GlobalProps & {
locale: LocaleServer['client'];
};
export declare type HallProps = Required<Omit<GlobalProps, 'iceServers' | 'theme' | 'colors' | 'logLevel'>> & {
open: boolean;
locale: LocaleServer['client'];
theme?: Theme;
};
export declare type SettingsProps = Required<Omit<GlobalProps, 'iceServers' | 'theme' | 'colors' | 'logLevel' | 'backLinks'>> & {
open: boolean;
locale: LocaleServer['client'];
theme?: Theme;
};
export declare type ChatProps = Omit<HallProps, 'open' | 'backLinks' | 'videoRecord'>;
export interface Stream {
target: number | string;
name: string;
isOwner: boolean;
stream: MediaStream;
connId: string;
ref: React.Ref<HTMLVideoElement>;
hidden?: boolean;
}
export interface AlertProps {
children: string;
type: keyof typeof LogLevel;
open: boolean;
theme?: Theme;
}
export declare type DialogPropsDefaultContext = {
id: number;
unitId: string;
text: string;
};
export declare type DialogPropsUsersContext = {
unitId: string;
isOwner: boolean;
};
export interface DialogProps<T> {
open: boolean;
children: React.ReactNode;
clientX: number;
clientY: number;
width: number;
height: number;
context: T;
secure?: boolean;
theme?: Theme;
}
export declare type ThemeType = 'light' | 'dark';
export declare type ClickPosition = {
clientX: number;
clientY: number;
};
export declare type Volumes = Record<string, number>;
export declare type VideoRecorderState = 'start' | 'stop';