// ignore_for_file: non_constant_identifier_names, camel_case_types, missing_return, unused_import, unused_local_variable, dead_code, unnecessary_cast
//////////////////////////////////////////////////////////
// GENERATED BY FLUTTIFY. DO NOT EDIT IT.
//////////////////////////////////////////////////////////

import 'dart:typed_data';

import 'package:tencent_live_fluttify/src/ios/ios.export.g.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';

import 'package:foundation_fluttify/foundation_fluttify.dart';

class TXLivePush extends NSObject  {
  //region constants
  static const String name__ = 'TXLivePush';

  
  //endregion

  //region creators
  static Future<TXLivePush> create__({ bool init = true /* ios only */ }) async {
    final refId = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('ObjectFactory::createTXLivePush', {'init': init});
    final object = TXLivePush()..refId = refId..tag__ = 'tencent_live_fluttify';
    return object;
  }
  
  static Future<List<TXLivePush>> create_batch__(int length, { bool init = true /* ios only */ }) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
    final List resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('ObjectFactory::create_batchTXLivePush', {'length': length, 'init': init});
  
    final List<TXLivePush> typedResult = resultBatch.map((result) => TXLivePush()..refId = result..tag__ = 'tencent_live_fluttify').toList();
    return typedResult;
  }
  
  //endregion

  //region getters
  Future<TXLivePushConfig> get_config() async {
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod("TXLivePush::get_config", {'__this__': this});
    return __result__ == null ? null : (TXLivePushConfig()..refId = __result__..tag__ = 'tencent_live_fluttify');
  }
  
  Future<String> get_rtmpURL() async {
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod("TXLivePush::get_rtmpURL", {'__this__': this});
    return __result__ == null ? null : (__result__);
  }
  
  Future<bool> get_frontCamera() async {
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod("TXLivePush::get_frontCamera", {'__this__': this});
    return __result__ == null ? null : (__result__);
  }
  
  //endregion

  //region setters
  Future<void> set_config(TXLivePushConfig config) async {
    await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::set_config', <String, dynamic>{'__this__': this, "config": config});
  
  
  }
  
  Future<void> set_delegate(TXLivePushListener delegate) async {
    await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::set_delegate', <String, dynamic>{'__this__': this, });
  
    MethodChannel('TXLivePushListener::Callback', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
      .setMethodCallHandler((methodCall) async {
        try {
          final args = methodCall.arguments as Map;
          switch (methodCall.method) {
            case 'Callback::TXLivePushListener::onPushEvent_withParam':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onPushEvent_withParam([\'EvtID\':${args['EvtID']}, \'param\':${args['param']}])');
              }
          
              // handle the native call
              delegate?.onPushEvent_withParam(args['EvtID'], args['param']);
              break;
            case 'Callback::TXLivePushListener::onNetStatus':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onNetStatus([\'param\':${args['param']}])');
              }
          
              // handle the native call
              delegate?.onNetStatus(args['param']);
              break;
            default:
              break;
          }
        } catch (e) {
          debugPrint(e);
          throw e;
        }
      });
  }
  
  Future<void> set_recordDelegate(TXLiveRecordListener recordDelegate) async {
    await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::set_recordDelegate', <String, dynamic>{'__this__': this, });
  
    MethodChannel('TXLiveRecordListener::Callback', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
      .setMethodCallHandler((methodCall) async {
        try {
          final args = methodCall.arguments as Map;
          switch (methodCall.method) {
            case 'Callback::TXLiveRecordListener::onRecordProgress':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onRecordProgress([\'milliSecond\':${args['milliSecond']}])');
              }
          
              // handle the native call
              recordDelegate?.onRecordProgress(args['milliSecond']);
              break;
            case 'Callback::TXLiveRecordListener::onRecordComplete':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onRecordComplete([\'result\':${args['result']}])');
              }
          
              // handle the native call
              recordDelegate?.onRecordComplete(TypeOpTencentLiveFluttifyIOS((args['result'] as Object))?.as__<TXRecordResult>());
              break;
            case 'Callback::TXLiveRecordListener::onRecordEvent':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onRecordEvent([\'evt\':${args['evt']}])');
              }
          
              // handle the native call
              recordDelegate?.onRecordEvent(args['evt']);
              break;
            default:
              break;
          }
        } catch (e) {
          debugPrint(e);
          throw e;
        }
      });
  }
  
  Future<void> set_videoProcessDelegate(TXVideoCustomProcessDelegate videoProcessDelegate) async {
    await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::set_videoProcessDelegate', <String, dynamic>{'__this__': this, });
  
    MethodChannel('TXVideoCustomProcessDelegate::Callback', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
      .setMethodCallHandler((methodCall) async {
        try {
          final args = methodCall.arguments as Map;
          switch (methodCall.method) {
            case 'Callback::TXVideoCustomProcessDelegate::onPreProcessTexture_width_height':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onPreProcessTexture_width_height([\'texture\':${args['texture']}, \'width\':${args['width']}, \'height\':${args['height']}])');
              }
          
              // handle the native call
              videoProcessDelegate?.onPreProcessTexture_width_height(args['texture'], args['width'], args['height']);
              break;
            case 'Callback::TXVideoCustomProcessDelegate::onTextureDestoryed':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onTextureDestoryed([])');
              }
          
              // handle the native call
              videoProcessDelegate?.onTextureDestoryed();
              break;
            case 'Callback::TXVideoCustomProcessDelegate::onDetectFacePoints':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onDetectFacePoints([\'points\':${args['points']}])');
              }
          
              // handle the native call
              videoProcessDelegate?.onDetectFacePoints((args['points'] as List).cast<String>().map((__it__) => TypeOpTencentLiveFluttifyIOS(__it__).as__<NSObject>()).toList());
              break;
            case 'Callback::TXVideoCustomProcessDelegate::onPlayerPixelBuffer':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onPlayerPixelBuffer([\'pixelBuffer\':${args['pixelBuffer']}])');
              }
          
              // handle the native call
              videoProcessDelegate?.onPlayerPixelBuffer(TypeOpTencentLiveFluttifyIOS((args['pixelBuffer'] as Object))?.as__<NSValue>());
              break;
            default:
              break;
          }
        } catch (e) {
          debugPrint(e);
          throw e;
        }
      });
  }
  
  Future<void> set_audioProcessDelegate(TXAudioCustomProcessDelegate audioProcessDelegate) async {
    await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::set_audioProcessDelegate', <String, dynamic>{'__this__': this, });
  
    MethodChannel('TXAudioCustomProcessDelegate::Callback', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
      .setMethodCallHandler((methodCall) async {
        try {
          final args = methodCall.arguments as Map;
          switch (methodCall.method) {
            case 'Callback::TXAudioCustomProcessDelegate::onRecordRawPcmData_timeStamp_sampleRate_channels_withBgm':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onRecordRawPcmData_timeStamp_sampleRate_channels_withBgm([\'data\':${args['data']}, \'timeStamp\':${args['timeStamp']}, \'sampleRate\':${args['sampleRate']}, \'channels\':${args['channels']}, \'withBgm\':${args['withBgm']}])');
              }
          
              // handle the native call
              audioProcessDelegate?.onRecordRawPcmData_timeStamp_sampleRate_channels_withBgm(TypeOpTencentLiveFluttifyIOS((args['data'] as Object))?.as__<NSData>(), args['timeStamp'], args['sampleRate'], args['channels'], args['withBgm']);
              break;
            case 'Callback::TXAudioCustomProcessDelegate::onRecordPcmData_timeStamp_sampleRate_channels':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onRecordPcmData_timeStamp_sampleRate_channels([\'data\':${args['data']}, \'timeStamp\':${args['timeStamp']}, \'sampleRate\':${args['sampleRate']}, \'channels\':${args['channels']}])');
              }
          
              // handle the native call
              audioProcessDelegate?.onRecordPcmData_timeStamp_sampleRate_channels(TypeOpTencentLiveFluttifyIOS((args['data'] as Object))?.as__<NSData>(), args['timeStamp'], args['sampleRate'], args['channels']);
              break;
            default:
              break;
          }
        } catch (e) {
          debugPrint(e);
          throw e;
        }
      });
  }
  
  //endregion

  //region methods
  
  Future<dynamic> initWithConfig(TXLivePushConfig config) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::initWithConfig([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::initWithConfig', {"config": config, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<int> startPreview(UIView view) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::startPreview([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::startPreview', {"view": view, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> stopPreview() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::stopPreview([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::stopPreview', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<int> startPush(String rtmpURL) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::startPush([\'rtmpURL\':$rtmpURL])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::startPush', {"rtmpURL": rtmpURL, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> stopPush() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::stopPush([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::stopPush', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> pausePush() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::pausePush([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::pausePush', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> resumePush() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::resumePush([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::resumePush', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> isPublishing() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::isPublishing([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::isPublishing', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setVideoQuality_adjustBitrate_adjustResolution(TX_Enum_Type_VideoQuality quality, bool adjustBitrate, bool adjustResolution) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setVideoQuality([\'adjustBitrate\':$adjustBitrate, \'adjustResolution\':$adjustResolution])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setVideoQuality_adjustBitrate_adjustResolution', {"quality": quality.toValue(), "adjustBitrate": adjustBitrate, "adjustResolution": adjustResolution, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<int> switchCamera() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::switchCamera([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::switchCamera', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setMirror(bool isMirror) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setMirror([\'isMirror\':$isMirror])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setMirror', {"isMirror": isMirror, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setRenderRotation(int rotation) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setRenderRotation([\'rotation\':$rotation])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setRenderRotation', {"rotation": rotation, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> toggleTorch(bool bEnable) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::toggleTorch([\'bEnable\':$bEnable])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::toggleTorch', {"bEnable": bEnable, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setZoom(double distance) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setZoom([\'distance\':$distance])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setZoom', {"distance": distance, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setFocusPosition(CGPoint touchPoint) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setFocusPosition([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setFocusPosition', {"touchPoint": touchPoint, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<TXBeautyManager> getBeautyManager() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::getBeautyManager([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::getBeautyManager', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = TXBeautyManager()..refId = __result__..tag__ = 'tencent_live_fluttify';
      return __return__;
    }
  }
  
  
  Future<void> setMute(bool bEnable) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setMute([\'bEnable\':$bEnable])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setMute', {"bEnable": bEnable, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> playBGM(String path) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::playBGM([\'path\':$path])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::playBGM', {"path": path, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> playBGM_withBeginNotify_withProgressNotify_andCompleteNotify(String path, void beginNotify(int errCode), void progressNotify(int progressMS, int durationMS), void completeNotify(int errCode)) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::playBGM([\'path\':$path])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::playBGM_withBeginNotify_withProgressNotify_andCompleteNotify', {"path": path, "__this__": this});
  
  
    // handle native call
    MethodChannel('void|NSInteger#errCode::Callback@$refId', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
        .setMethodCallHandler((methodCall) async {
          try {
            final args = methodCall.arguments as Map;
            switch (methodCall.method) {
              case 'Callback::void|NSInteger#errCode::void|NSInteger#errCode':
                // print log
                if (fluttifyLogEnabled) {
          
                }
          
                // handle the native call
                if (beginNotify != null) beginNotify(args['errCode']);
                break;
              default:
                break;
            }
          } catch (e) {
            debugPrint(e);
            throw e;
          }
        });
    MethodChannel('void|NSInteger#progressMS,NSInteger#durationMS::Callback@$refId', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
        .setMethodCallHandler((methodCall) async {
          try {
            final args = methodCall.arguments as Map;
            switch (methodCall.method) {
              case 'Callback::void|NSInteger#progressMS,NSInteger#durationMS::void|NSInteger#progressMS,NSInteger#durationMS':
                // print log
                if (fluttifyLogEnabled) {
          
                }
          
                // handle the native call
                if (progressNotify != null) progressNotify(args['progressMS'], args['durationMS']);
                break;
              default:
                break;
            }
          } catch (e) {
            debugPrint(e);
            throw e;
          }
        });
    MethodChannel('void|NSInteger#errCode::Callback@$refId', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
        .setMethodCallHandler((methodCall) async {
          try {
            final args = methodCall.arguments as Map;
            switch (methodCall.method) {
              case 'Callback::void|NSInteger#errCode::void|NSInteger#errCode':
                // print log
                if (fluttifyLogEnabled) {
          
                }
          
                // handle the native call
                if (completeNotify != null) completeNotify(args['errCode']);
                break;
              default:
                break;
            }
          } catch (e) {
            debugPrint(e);
            throw e;
          }
        });
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> stopBGM() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::stopBGM([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::stopBGM', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> pauseBGM() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::pauseBGM([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::pauseBGM', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> resumeBGM() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::resumeBGM([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::resumeBGM', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<int> getMusicDuration(String path) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::getMusicDuration([\'path\':$path])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::getMusicDuration', {"path": path, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> setBGMVolume(double volume) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setBGMVolume([\'volume\':$volume])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setBGMVolume', {"volume": volume, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> setMicVolume(double volume) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setMicVolume([\'volume\':$volume])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setMicVolume', {"volume": volume, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> setBGMPitch(double pitch) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setBGMPitch([\'pitch\':$pitch])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setBGMPitch', {"pitch": pitch, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> setReverbType(TXReverbType reverbType) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setReverbType([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setReverbType', {"reverbType": reverbType.toValue(), "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> setVoiceChangerType(TXVoiceChangerType voiceChangerType) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setVoiceChangerType([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setVoiceChangerType', {"voiceChangerType": voiceChangerType.toValue(), "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> setBGMPosition(int position) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setBGMPosition([\'position\':$position])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setBGMPosition', {"position": position, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setAudioVolumeEvaluationListener(void volumeEvaluationListener(int volume)) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setAudioVolumeEvaluationListener([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setAudioVolumeEvaluationListener', {"__this__": this});
  
  
    // handle native call
    MethodChannel('void|NSInteger#volume::Callback@$refId', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
        .setMethodCallHandler((methodCall) async {
          try {
            final args = methodCall.arguments as Map;
            switch (methodCall.method) {
              case 'Callback::void|NSInteger#volume::void|NSInteger#volume':
                // print log
                if (fluttifyLogEnabled) {
          
                }
          
                // handle the native call
                if (volumeEvaluationListener != null) volumeEvaluationListener(args['volume']);
                break;
              default:
                break;
            }
          } catch (e) {
            debugPrint(e);
            throw e;
          }
        });
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> enableAudioVolumeEvaluation(int interval) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::enableAudioVolumeEvaluation([\'interval\':$interval])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::enableAudioVolumeEvaluation', {"interval": interval, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<int> startRecord(String videoPath) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::startRecord([\'videoPath\':$videoPath])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::startRecord', {"videoPath": videoPath, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<int> stopRecord() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::stopRecord([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::stopRecord', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> snapshot(void snapshotCompletionBlock(UIImage __arg_0__)) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::snapshot([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::snapshot', {"__this__": this});
  
  
    // handle native call
    MethodChannel('void|TXImage*#__arg_0__::Callback@$refId', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
        .setMethodCallHandler((methodCall) async {
          try {
            final args = methodCall.arguments as Map;
            switch (methodCall.method) {
              case 'Callback::void|TXImage*#__arg_0__::void|TXImage*#__arg_0__':
                // print log
                if (fluttifyLogEnabled) {
          
                }
          
                // handle the native call
                if (snapshotCompletionBlock != null) snapshotCompletionBlock(TypeOpTencentLiveFluttifyIOS((args['__arg_0__'] as Object))?.as__<UIImage>());
                break;
              default:
                break;
            }
          } catch (e) {
            debugPrint(e);
            throw e;
          }
        });
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setSendAudioSampleBufferMuted(bool muted) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setSendAudioSampleBufferMuted([\'muted\':$muted])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setSendAudioSampleBufferMuted', {"muted": muted, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> sendMessageEx(NSData data) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::sendMessageEx([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::sendMessageEx', {"data": data, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> sendMessage(NSData data) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::sendMessage([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::sendMessage', {"data": data, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> showVideoDebugLog(bool isShow) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::showVideoDebugLog([\'isShow\':$isShow])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::showVideoDebugLog', {"isShow": isShow, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setLogViewMargin(UIEdgeInsets margin) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setLogViewMargin([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setLogViewMargin', {"margin": margin, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setEnableClockOverlay(bool enabled) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setEnableClockOverlay([\'enabled\':$enabled])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setEnableClockOverlay', {"enabled": enabled, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<bool> enableClockOverlay() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::enableClockOverlay([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::enableClockOverlay', {"__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setBeautyStyle_beautyLevel_whitenessLevel_ruddinessLevel(TX_Enum_Type_BeautyStyle beautyStyle, double beautyLevel, double whitenessLevel, double ruddinessLevel) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setBeautyStyle([\'beautyLevel\':$beautyLevel, \'whitenessLevel\':$whitenessLevel, \'ruddinessLevel\':$ruddinessLevel])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setBeautyStyle_beautyLevel_whitenessLevel_ruddinessLevel', {"beautyStyle": beautyStyle.toValue(), "beautyLevel": beautyLevel, "whitenessLevel": whitenessLevel, "ruddinessLevel": ruddinessLevel, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setFilter(UIImage image) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setFilter([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setFilter', {"image": image, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setSpecialRatio(double specialValue) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setSpecialRatio([\'specialValue\':$specialValue])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setSpecialRatio', {"specialValue": specialValue, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setEyeScaleLevel(double eyeScaleLevel) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setEyeScaleLevel([\'eyeScaleLevel\':$eyeScaleLevel])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setEyeScaleLevel', {"eyeScaleLevel": eyeScaleLevel, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setFaceScaleLevel(double faceScaleLevel) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setFaceScaleLevel([\'faceScaleLevel\':$faceScaleLevel])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setFaceScaleLevel', {"faceScaleLevel": faceScaleLevel, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setFaceVLevel(double faceVLevel) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setFaceVLevel([\'faceVLevel\':$faceVLevel])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setFaceVLevel', {"faceVLevel": faceVLevel, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setChinLevel(double chinLevel) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setChinLevel([\'chinLevel\':$chinLevel])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setChinLevel', {"chinLevel": chinLevel, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setFaceShortLevel(double faceShortlevel) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setFaceShortLevel([\'faceShortlevel\':$faceShortlevel])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setFaceShortLevel', {"faceShortlevel": faceShortlevel, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setNoseSlimLevel(double noseSlimLevel) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setNoseSlimLevel([\'noseSlimLevel\':$noseSlimLevel])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setNoseSlimLevel', {"noseSlimLevel": noseSlimLevel, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> selectMotionTmpl_inDir(String tmplName, String tmplDir) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::selectMotionTmpl([\'tmplName\':$tmplName, \'tmplDir\':$tmplDir])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::selectMotionTmpl_inDir', {"tmplName": tmplName, "tmplDir": tmplDir, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  
  Future<void> setMotionMute(bool motionMute) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXLivePush@$refId::setMotionMute([\'motionMute\':$motionMute])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setMotionMute', {"motionMute": motionMute, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = __result__;
      return __return__;
    }
  }
  
  //endregion
}

extension TXLivePush_Batch on List<TXLivePush> {
  //region getters
  Future<List<TXLivePushConfig>> get_config_batch() async {
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod("TXLivePush::get_config_batch", [for (final __item__ in this) {'__this__': __item__}]);
  
    final typedResult = (resultBatch as List).cast<String>().map((__result__) => TXLivePushConfig()..refId = __result__..tag__ = 'tencent_live_fluttify').toList();
    return typedResult;
  }
  
  Future<List<String>> get_rtmpURL_batch() async {
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod("TXLivePush::get_rtmpURL_batch", [for (final __item__ in this) {'__this__': __item__}]);
  
    final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
    return typedResult;
  }
  
  Future<List<bool>> get_frontCamera_batch() async {
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod("TXLivePush::get_frontCamera_batch", [for (final __item__ in this) {'__this__': __item__}]);
  
    final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
    return typedResult;
  }
  
  //endregion

  //region setters
  Future<void> set_config_batch(List<TXLivePushConfig> config) async {
    await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec())).invokeMethod('TXLivePush::set_config_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {'__this__': this[__i__], "config": config[__i__]}]);
  
  
  }
  
  //endregion

  //region methods
  
  Future<List<dynamic>> initWithConfig_batch(List<TXLivePushConfig> config) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::initWithConfig_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"config": config[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<int>> startPreview_batch(List<UIView> view) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::startPreview_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"view": view[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<int>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> stopPreview_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::stopPreview_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<int>> startPush_batch(List<String> rtmpURL) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::startPush_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"rtmpURL": rtmpURL[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<int>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> stopPush_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::stopPush_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> pausePush_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::pausePush_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> resumePush_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::resumePush_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> isPublishing_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::isPublishing_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setVideoQuality_adjustBitrate_adjustResolution_batch(List<TX_Enum_Type_VideoQuality> quality, List<bool> adjustBitrate, List<bool> adjustResolution) async {
    if (quality.length != adjustBitrate.length || adjustBitrate.length != adjustResolution.length) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setVideoQuality_adjustBitrate_adjustResolution_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"quality": quality[__i__].toValue(), "adjustBitrate": adjustBitrate[__i__], "adjustResolution": adjustResolution[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<int>> switchCamera_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::switchCamera_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<int>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setMirror_batch(List<bool> isMirror) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setMirror_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"isMirror": isMirror[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setRenderRotation_batch(List<int> rotation) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setRenderRotation_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"rotation": rotation[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> toggleTorch_batch(List<bool> bEnable) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::toggleTorch_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"bEnable": bEnable[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setZoom_batch(List<double> distance) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setZoom_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"distance": distance[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setFocusPosition_batch(List<CGPoint> touchPoint) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setFocusPosition_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"touchPoint": touchPoint[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<TXBeautyManager>> getBeautyManager_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::getBeautyManager_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => TXBeautyManager()..refId = __result__..tag__ = 'tencent_live_fluttify').toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setMute_batch(List<bool> bEnable) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setMute_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"bEnable": bEnable[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> playBGM_batch(List<String> path) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::playBGM_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"path": path[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> stopBGM_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::stopBGM_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> pauseBGM_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::pauseBGM_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> resumeBGM_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::resumeBGM_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<int>> getMusicDuration_batch(List<String> path) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::getMusicDuration_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"path": path[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<int>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> setBGMVolume_batch(List<double> volume) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setBGMVolume_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"volume": volume[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> setMicVolume_batch(List<double> volume) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setMicVolume_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"volume": volume[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> setBGMPitch_batch(List<double> pitch) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setBGMPitch_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"pitch": pitch[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> setReverbType_batch(List<TXReverbType> reverbType) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setReverbType_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"reverbType": reverbType[__i__].toValue(), "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> setVoiceChangerType_batch(List<TXVoiceChangerType> voiceChangerType) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setVoiceChangerType_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"voiceChangerType": voiceChangerType[__i__].toValue(), "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> setBGMPosition_batch(List<int> position) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setBGMPosition_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"position": position[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> enableAudioVolumeEvaluation_batch(List<int> interval) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::enableAudioVolumeEvaluation_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"interval": interval[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<int>> startRecord_batch(List<String> videoPath) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::startRecord_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"videoPath": videoPath[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<int>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<int>> stopRecord_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::stopRecord_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<int>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setSendAudioSampleBufferMuted_batch(List<bool> muted) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setSendAudioSampleBufferMuted_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"muted": muted[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> sendMessageEx_batch(List<NSData> data) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::sendMessageEx_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"data": data[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> sendMessage_batch(List<NSData> data) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::sendMessage_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"data": data[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> showVideoDebugLog_batch(List<bool> isShow) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::showVideoDebugLog_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"isShow": isShow[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setLogViewMargin_batch(List<UIEdgeInsets> margin) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setLogViewMargin_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"margin": margin[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setEnableClockOverlay_batch(List<bool> enabled) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setEnableClockOverlay_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"enabled": enabled[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<bool>> enableClockOverlay_batch() async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::enableClockOverlay_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setBeautyStyle_beautyLevel_whitenessLevel_ruddinessLevel_batch(List<TX_Enum_Type_BeautyStyle> beautyStyle, List<double> beautyLevel, List<double> whitenessLevel, List<double> ruddinessLevel) async {
    if (beautyStyle.length != beautyLevel.length || beautyLevel.length != whitenessLevel.length || whitenessLevel.length != ruddinessLevel.length) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setBeautyStyle_beautyLevel_whitenessLevel_ruddinessLevel_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"beautyStyle": beautyStyle[__i__].toValue(), "beautyLevel": beautyLevel[__i__], "whitenessLevel": whitenessLevel[__i__], "ruddinessLevel": ruddinessLevel[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setFilter_batch(List<UIImage> image) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setFilter_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"image": image[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setSpecialRatio_batch(List<double> specialValue) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setSpecialRatio_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"specialValue": specialValue[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setEyeScaleLevel_batch(List<double> eyeScaleLevel) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setEyeScaleLevel_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"eyeScaleLevel": eyeScaleLevel[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setFaceScaleLevel_batch(List<double> faceScaleLevel) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setFaceScaleLevel_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"faceScaleLevel": faceScaleLevel[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setFaceVLevel_batch(List<double> faceVLevel) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setFaceVLevel_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"faceVLevel": faceVLevel[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setChinLevel_batch(List<double> chinLevel) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setChinLevel_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"chinLevel": chinLevel[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setFaceShortLevel_batch(List<double> faceShortlevel) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setFaceShortLevel_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"faceShortlevel": faceShortlevel[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setNoseSlimLevel_batch(List<double> noseSlimLevel) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setNoseSlimLevel_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"noseSlimLevel": noseSlimLevel[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> selectMotionTmpl_inDir_batch(List<String> tmplName, List<String> tmplDir) async {
    if (tmplName.length != tmplDir.length) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::selectMotionTmpl_inDir_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"tmplName": tmplName[__i__], "tmplDir": tmplDir[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setMotionMute_batch(List<bool> motionMute) async {
    if (false) {
      return Future.error('all args must have same length!');
    }
  
    // invoke native method
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXLivePush::setMotionMute_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"motionMute": motionMute[__i__], "__this__": this[__i__]}]);
  
  
    // convert native result to dart side object
    if (resultBatch == null) {
      return null;
    } else {
      final typedResult = (resultBatch as List).cast<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  //endregion
}