import type Logger from '../engine/Logger'; import type { AudioTrackProcessor } from '../engine/media/streamEffects/audio/AudioTrackProcessor'; import type DefaultAudioTrack from '../engine/media/tracks/DefaultAudioTrack'; import type DefaultVideoTrack from '../engine/media/tracks/DefaultVideoTrack'; import type PeerTrack from '../engine/media/tracks/PeerTrack'; import type Peer from '../engine/Peer'; import type { PeerConsumerConstructorParams } from '../engine/PeerConsumer'; import type PeerConsumer from '../engine/PeerConsumer'; import type { CreatePeerParams } from '../engine/Peers'; import type { CreatePeerTrackParams } from '../engine/RemotePeerTracks'; import type { TrackLabel } from './common'; import type { AudioTrackParams, BaseTrackParams } from './media'; export type PeerTrackFactoryParams = CreatePeerTrackParams & { onClose: () => void; }; export type PeerTrackFactory = (params: PeerTrackFactoryParams) => PeerTrack; export type PeerFactory = (params: CreatePeerParams) => Peer; export type CreatePeerConsumerParams = Omit; export type PeerConsumerFactory = (params: CreatePeerConsumerParams) => PeerConsumer; export type LoggerFactory = (namespace: string) => Logger; export type AudioTrackFactory = (params: AudioTrackParams) => DefaultAudioTrack; export type VideoTrackFactory = (params: BaseTrackParams) => DefaultVideoTrack; export interface CreateAudioTrackProcessorParams { noiseSuppressor?: WebAssembly.WebAssemblyInstantiatedSource; trackLabel: TrackLabel; } export type AudioTrackProcessorFactory = (params: CreateAudioTrackProcessorParams) => AudioTrackProcessor;