import '../tmg_audio_effect_ctrl.dart';
import '../tmg_type.dart';
import '../bindings/tmg_audio_effect_ctrl_bindings.dart'
    as TMGAudioEffectCtrlBindings;

class TMGAudioEffectCtrlImpl extends ITMGAudioEffectCtrl {
  late final _instance;
  TMGAudioEffectCtrlImpl() {
    _instance = new TMGAudioEffectCtrlBindings.TMGAudioEffectCtrlBindings();
  }

  @override
  int StartPlayMusic(int soundId, String filePath, int loopCount) {
    return _instance.StartPlayMusic(soundId, filePath, loopCount);
  }

  @override
  int StopPlayMusic(int soundId) {
    return _instance.StopPlayMusic(soundId);
  }

  @override
  int PausePlayMusic(int soundId) {
    return _instance.PausePlayMusic(soundId);
  }

  @override
  int ResumePlayMusic(int soundId) {
    return _instance.ResumePlayMusic(soundId);
  }

  @override
  bool IsMusicPlayEnd(int soundId) {
    return _instance.IsMusicPlayEnd(soundId);
  }

  @override
  int SetAllMusicVolume(int volume) {
    return _instance.SetAllMusicVolume(volume);
  }

  @override
  int SetMusicPublishVolume(int soundId, int volume) {
    return _instance.SetMusicPublishVolume(soundId, volume);
  }

  @override
  int GetMusicPublishVolume(int soundId) {
    return _instance.GetMusicPublishVolume(soundId);
  }

  @override
  int SetMusicPlayoutVolume(int soundId, int volume) {
    return _instance.SetMusicPlayoutVolume(soundId, volume);
  }

  @override
  int GetMusicPlayoutVolume(int soundId) {
    return _instance.GetMusicPlayoutVolume(soundId);
  }

  @override
  int SetMusicPitch(int soundId, double pitch) {
    return _instance.SetMusicPitch(soundId, pitch);
  }

  @override
  int GetMusicDurationInMS(int soundId) {
    return _instance.GetMusicDurationInMS(soundId);
  }

  @override
  int GetMusicCurrentPosInMS(int soundId) {
    return _instance.GetMusicCurrentPosInMS(soundId);
  }

  @override
  int SeekMusicToPosInTime(int soundId, int time) {
    return _instance.SeekMusicToPosInTime(soundId, time);
  }

  @override
  int EnableMusicPublish(int soundId, bool enable) {
    return _instance.EnableMusicPublish(soundId, enable);
  }

  @override
  int EnableMusicPlayout(int soundId, bool enable) {
    return _instance.EnableMusicPlayout(soundId, enable);
  }

  @override
  int SetVoiceType(ITMG_VOICE_TYPE voiceType) {
    return _instance.SetVoiceType(voiceType);
  }

  @override
  int SetKaraokeType(ITMG_KARAOKE_TYPE type) {
    return _instance.SetKaraokeType(type);
  }

  @override
  int StartRecord(String filePath, ITMG_AUDIO_RECORDING_CONTENT content) {
    return _instance.StartRecord(filePath, content);
  }

  @override
  int StopRecord() {
    return _instance.StopRecord();
  }
}
