import { IAudioContext, IMediaStreamTrackAudioSourceNode, IMediaStreamTrackAudioSourceOptions, IMinimalAudioContext } from '../interfaces'; import { TAudioNodeRenderer, TMediaStreamTrackAudioSourceNodeConstructorFactory } from '../types'; export const createMediaStreamTrackAudioSourceNodeConstructor: TMediaStreamTrackAudioSourceNodeConstructorFactory = ( audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext ) => { return class MediaStreamTrackAudioSourceNode extends audioNodeConstructor implements IMediaStreamTrackAudioSourceNode { constructor(context: T, options: IMediaStreamTrackAudioSourceOptions) { const nativeContext = getNativeContext(context); const nativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNode(nativeContext, options); super(context, true, nativeMediaStreamTrackAudioSourceNode, >null); } }; };