import { TAudioListenerFactory } from './audio-listener-factory';
import { TAudioParamFactory } from './audio-param-factory';
import { TGetFirstSampleFunction } from './get-first-sample-function';
import { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';
import { TNativeChannelMergerNodeFactory } from './native-channel-merger-node-factory';
import { TNativeConstantSourceNodeFactory } from './native-constant-source-node-factory';
import { TNativeScriptProcessorNodeFactory } from './native-script-processor-node-factory';
import { TNotSupportedErrorFactory } from './not-supported-error-factory';
import { TOverwriteAccessorsFunction } from './overwrite-accessors-function';

export type TAudioListenerFactoryFactory = (
    createAudioParam: TAudioParamFactory,
    createNativeChannelMergerNode: TNativeChannelMergerNodeFactory,
    createNativeConstantSourceNode: TNativeConstantSourceNodeFactory,
    createNativeScriptProcessorNode: TNativeScriptProcessorNodeFactory,
    createNotSupportedError: TNotSupportedErrorFactory,
    getFirstSample: TGetFirstSampleFunction,
    isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,
    overwriteAccessors: TOverwriteAccessorsFunction
) => TAudioListenerFactory;
