// 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 TXVideoEditer extends NSObject  {
  //region constants
  static const String name__ = 'TXVideoEditer';

  
  //endregion

  //region creators
  static Future<TXVideoEditer> create__({ bool init = true /* ios only */ }) async {
    final refId = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('ObjectFactory::createTXVideoEditer', {'init': init});
    final object = TXVideoEditer()..refId = refId..tag__ = 'tencent_live_fluttify';
    return object;
  }
  
  static Future<List<TXVideoEditer>> 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_batchTXVideoEditer', {'length': length, 'init': init});
  
    final List<TXVideoEditer> typedResult = resultBatch.map((result) => TXVideoEditer()..refId = result..tag__ = 'tencent_live_fluttify').toList();
    return typedResult;
  }
  
  //endregion

  //region getters
  Future<bool> get_supportsTwoPassEncoding() async {
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod("TXVideoEditer::get_supportsTwoPassEncoding", {'__this__': this});
    return __result__ == null ? null : (__result__);
  }
  
  //endregion

  //region setters
  Future<void> set_generateDelegate(TXVideoGenerateListener generateDelegate) async {
    await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::set_generateDelegate', <String, dynamic>{'__this__': this, });
  
    MethodChannel('TXVideoGenerateListener::Callback', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
      .setMethodCallHandler((methodCall) async {
        try {
          final args = methodCall.arguments as Map;
          switch (methodCall.method) {
            case 'Callback::TXVideoGenerateListener::onGenerateProgress':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onGenerateProgress([\'progress\':${args['progress']}])');
              }
          
              // handle the native call
              generateDelegate?.onGenerateProgress(args['progress']);
              break;
            case 'Callback::TXVideoGenerateListener::onGenerateComplete':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onGenerateComplete([\'result\':${args['result']}])');
              }
          
              // handle the native call
              generateDelegate?.onGenerateComplete(TypeOpTencentLiveFluttifyIOS((args['result'] as Object))?.as__<TXGenerateResult>());
              break;
            default:
              break;
          }
        } catch (e) {
          debugPrint(e);
          throw e;
        }
      });
  }
  
  Future<void> set_previewDelegate(TXVideoPreviewListener previewDelegate) async {
    await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::set_previewDelegate', <String, dynamic>{'__this__': this, });
  
    MethodChannel('TXVideoPreviewListener::Callback', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
      .setMethodCallHandler((methodCall) async {
        try {
          final args = methodCall.arguments as Map;
          switch (methodCall.method) {
            case 'Callback::TXVideoPreviewListener::onPreviewProgress':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onPreviewProgress([\'time\':${args['time']}])');
              }
          
              // handle the native call
              previewDelegate?.onPreviewProgress(args['time']);
              break;
            case 'Callback::TXVideoPreviewListener::onPreviewFinished':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onPreviewFinished([])');
              }
          
              // handle the native call
              previewDelegate?.onPreviewFinished();
              break;
            default:
              break;
          }
        } catch (e) {
          debugPrint(e);
          throw e;
        }
      });
  }
  
  Future<void> set_videoProcessDelegate(TXVideoCustomProcessListener videoProcessDelegate) async {
    await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::set_videoProcessDelegate', <String, dynamic>{'__this__': this, });
  
    MethodChannel('TXVideoCustomProcessListener::Callback', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify')))
      .setMethodCallHandler((methodCall) async {
        try {
          final args = methodCall.arguments as Map;
          switch (methodCall.method) {
            case 'Callback::TXVideoCustomProcessListener::onTextureDestoryed':
              // print log
              if (fluttifyLogEnabled) {
                debugPrint('fluttify-dart-callback: onTextureDestoryed([])');
              }
          
              // handle the native call
              videoProcessDelegate?.onTextureDestoryed();
              break;
            default:
              break;
          }
        } catch (e) {
          debugPrint(e);
          throw e;
        }
      });
  }
  
  //endregion

  //region methods
  
  Future<TXVideoEditer> initWithPreview(TXPreviewParam param) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::initWithPreview([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::initWithPreview', {"param": param, "__this__": this});
  
  
    // handle native call
  
  
    // convert native result to dart side object
    if (__result__ == null) {
      return null;
    } else {
      final __return__ = TXVideoEditer()..refId = __result__..tag__ = 'tencent_live_fluttify';
      return __return__;
    }
  }
  
  
  Future<int> setVideoPath(String videoPath) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setVideoPath([\'videoPath\':$videoPath])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setVideoPath', {"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> setPictureList_fps(List<UIImage> pitureList, int fps) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setPictureList([\'fps\':$fps])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setPictureList_fps', {"pitureList": pitureList, "fps": fps, "__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> setPictureTransition_duration(TXTransitionType transitionType, void duration(double __arg_0__)) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setPictureTransition([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setPictureTransition_duration', {"transitionType": transitionType.toValue(), "__this__": this});
  
  
    // handle native call
    MethodChannel('void|CGFloat#__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|CGFloat#__arg_0__::void|CGFloat#__arg_0__':
                // print log
                if (fluttifyLogEnabled) {
          
                }
          
                // handle the native call
                if (duration != null) duration(args['__arg_0__']);
                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> previewAtTime(double time) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::previewAtTime([\'time\':$time])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::previewAtTime', {"time": time, "__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> startPlayFromTime_toTime(double startTime, double endTime) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::startPlayFromTime([\'startTime\':$startTime, \'endTime\':$endTime])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::startPlayFromTime_toTime', {"startTime": startTime, "endTime": endTime, "__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> pausePlay() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::pausePlay([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::pausePlay', {"__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> resumePlay() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::resumePlay([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::resumePlay', {"__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> stopPlay() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::stopPlay([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::stopPlay', {"__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> setBeautyFilter_setWhiteningLevel(double beautyLevel, double whiteningLevel) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setBeautyFilter([\'beautyLevel\':$beautyLevel, \'whiteningLevel\':$whiteningLevel])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setBeautyFilter_setWhiteningLevel', {"beautyLevel": beautyLevel, "whiteningLevel": whiteningLevel, "__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: TXVideoEditer@$refId::setFilter([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::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> setFilter_leftIntensity_rightFilter_rightIntensity_leftRatio(UIImage leftFilter, double leftIntensity, UIImage rightFilter, double rightIntensity, double leftRatio) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setFilter([\'leftIntensity\':$leftIntensity, \'rightIntensity\':$rightIntensity, \'leftRatio\':$leftRatio])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setFilter_leftIntensity_rightFilter_rightIntensity_leftRatio', {"leftFilter": leftFilter, "leftIntensity": leftIntensity, "rightFilter": rightFilter, "rightIntensity": rightIntensity, "leftRatio": leftRatio, "__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 specialRatio) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setSpecialRatio([\'specialRatio\':$specialRatio])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setSpecialRatio', {"specialRatio": specialRatio, "__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> setReverse(bool isReverse) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setReverse([\'isReverse\':$isReverse])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setReverse', {"isReverse": isReverse, "__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> setRepeatPlay(List<TXRepeat> repeatList) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setRepeatPlay([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setRepeatPlay', {"repeatList": repeatList, "__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: TXVideoEditer@$refId::setRenderRotation([\'rotation\':$rotation])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::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<void> setSpeedList(List<TXSpeed> speedList) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setSpeedList([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setSpeedList', {"speedList": speedList, "__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> startEffect_startTime(TXEffectType type, double startTime) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::startEffect([\'startTime\':$startTime])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::startEffect_startTime', {"type": type.toValue(), "startTime": startTime, "__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> stopEffect_endTime(TXEffectType type, double endTime) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::stopEffect([\'endTime\':$endTime])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::stopEffect_endTime', {"type": type.toValue(), "endTime": endTime, "__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> deleteLastEffect() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::deleteLastEffect([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::deleteLastEffect', {"__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> deleteAllEffect() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::deleteAllEffect([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::deleteAllEffect', {"__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> setSubtitleList(List<TXSubtitle> subtitleList) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setSubtitleList([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setSubtitleList', {"subtitleList": subtitleList, "__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> setPasterList(List<TXPaster> pasterList) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setPasterList([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setPasterList', {"pasterList": pasterList, "__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> setAnimatedPasterList(List<TXAnimatedPaster> animatedPasterList) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setAnimatedPasterList([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setAnimatedPasterList', {"animatedPasterList": animatedPasterList, "__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> setBGM_result(String path, void result(int __arg_0__)) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setBGM([\'path\':$path])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setBGM_result', {"path": path, "__this__": this});
  
  
    // handle native call
    MethodChannel('void|int#__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|int#__arg_0__::void|int#__arg_0__':
                // print log
                if (fluttifyLogEnabled) {
          
                }
          
                // handle the native call
                if (result != null) result(args['__arg_0__']);
                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> setBGMStartTime_endTime(double startTime, double endTime) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setBGMStartTime([\'startTime\':$startTime, \'endTime\':$endTime])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setBGMStartTime_endTime', {"startTime": startTime, "endTime": endTime, "__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> setBGMLoop(bool isLoop) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setBGMLoop([\'isLoop\':$isLoop])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setBGMLoop', {"isLoop": isLoop, "__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> setBGMAtVideoTime(double time) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setBGMAtVideoTime([\'time\':$time])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setBGMAtVideoTime', {"time": time, "__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> setVideoVolume(double volume) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setVideoVolume([\'volume\':$volume])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setVideoVolume', {"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<void> setBGMVolume(double volume) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setBGMVolume([\'volume\':$volume])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::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<void> setBGMFadeInDuration_fadeOutDuration(double fadeInDuration, double fadeOutDuration) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setBGMFadeInDuration([\'fadeInDuration\':$fadeInDuration, \'fadeOutDuration\':$fadeOutDuration])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setBGMFadeInDuration_fadeOutDuration', {"fadeInDuration": fadeInDuration, "fadeOutDuration": fadeOutDuration, "__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> setWaterMark_normalizationFrame(UIImage waterMark, CGRect normalizationFrame) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setWaterMark([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setWaterMark_normalizationFrame', {"waterMark": waterMark, "normalizationFrame": normalizationFrame, "__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> setTailWaterMark_normalizationFrame_duration(UIImage tailWaterMark, CGRect normalizationFrame, double duration) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setTailWaterMark([\'duration\':$duration])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setTailWaterMark_normalizationFrame_duration', {"tailWaterMark": tailWaterMark, "normalizationFrame": normalizationFrame, "duration": duration, "__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> setCutFromTime_toTime(double startTime, double endTime) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setCutFromTime([\'startTime\':$startTime, \'endTime\':$endTime])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setCutFromTime_toTime', {"startTime": startTime, "endTime": endTime, "__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> setVideoBitrate(int bitrate) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::setVideoBitrate([\'bitrate\':$bitrate])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::setVideoBitrate', {"bitrate": bitrate, "__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> generateVideo_videoOutputPath(TXVideoCompressed videoCompressed, String videoOutputPath) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::generateVideo([\'videoOutputPath\':$videoOutputPath])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::generateVideo_videoOutputPath', {"videoCompressed": videoCompressed.toValue(), "videoOutputPath": videoOutputPath, "__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> quickGenerateVideo_videoOutputPath(TXVideoCompressed videoCompressed, String videoOutputPath) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::quickGenerateVideo([\'videoOutputPath\':$videoOutputPath])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::quickGenerateVideo_videoOutputPath', {"videoCompressed": videoCompressed.toValue(), "videoOutputPath": videoOutputPath, "__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> generateVideoWithTwoPass_videoOutputPath(TXVideoCompressed videoCompressed, String videoOutputPath) async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::generateVideoWithTwoPass([\'videoOutputPath\':$videoOutputPath])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::generateVideoWithTwoPass_videoOutputPath', {"videoCompressed": videoCompressed.toValue(), "videoOutputPath": videoOutputPath, "__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> pauseGenerate() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::pauseGenerate([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::pauseGenerate', {"__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> resumeGenerate() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::resumeGenerate([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::resumeGenerate', {"__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> cancelGenerate() async {
    // print log
    if (fluttifyLogEnabled) {
      debugPrint('fluttify-dart: TXVideoEditer@$refId::cancelGenerate([])');
    }
  
    // invoke native method
    final __result__ = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod('TXVideoEditer::cancelGenerate', {"__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 TXVideoEditer_Batch on List<TXVideoEditer> {
  //region getters
  Future<List<bool>> get_supportsTwoPassEncoding_batch() async {
    final resultBatch = await MethodChannel('com.fluttify/tencent_live_fluttify', StandardMethodCodec(FluttifyMessageCodec('tencent_live_fluttify'))).invokeMethod("TXVideoEditer::get_supportsTwoPassEncoding_batch", [for (final __item__ in this) {'__this__': __item__}]);
  
    final typedResult = (resultBatch as List).cast<bool>().map((__result__) => __result__).toList();
    return typedResult;
  }
  
  //endregion

  //region setters
  
  //endregion

  //region methods
  
  Future<List<TXVideoEditer>> initWithPreview_batch(List<TXPreviewParam> param) 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('TXVideoEditer::initWithPreview_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"param": param[__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__) => TXVideoEditer()..refId = __result__..tag__ = 'tencent_live_fluttify').toList();
      return typedResult;
    }
  }
  
  
  Future<List<int>> setVideoPath_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('TXVideoEditer::setVideoPath_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>> setPictureList_fps_batch(List<List<UIImage>> pitureList, List<int> fps) async {
    if (pitureList.length != fps.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('TXVideoEditer::setPictureList_fps_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"pitureList": pitureList[__i__], "fps": fps[__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>> previewAtTime_batch(List<double> time) 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('TXVideoEditer::previewAtTime_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"time": time[__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>> startPlayFromTime_toTime_batch(List<double> startTime, List<double> endTime) async {
    if (startTime.length != endTime.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('TXVideoEditer::startPlayFromTime_toTime_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"startTime": startTime[__i__], "endTime": endTime[__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>> pausePlay_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('TXVideoEditer::pausePlay_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>> resumePlay_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('TXVideoEditer::resumePlay_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>> stopPlay_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('TXVideoEditer::stopPlay_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>> setBeautyFilter_setWhiteningLevel_batch(List<double> beautyLevel, List<double> whiteningLevel) async {
    if (beautyLevel.length != whiteningLevel.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('TXVideoEditer::setBeautyFilter_setWhiteningLevel_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"beautyLevel": beautyLevel[__i__], "whiteningLevel": whiteningLevel[__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('TXVideoEditer::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>> setFilter_leftIntensity_rightFilter_rightIntensity_leftRatio_batch(List<UIImage> leftFilter, List<double> leftIntensity, List<UIImage> rightFilter, List<double> rightIntensity, List<double> leftRatio) async {
    if (leftFilter.length != leftIntensity.length || leftIntensity.length != rightFilter.length || rightFilter.length != rightIntensity.length || rightIntensity.length != leftRatio.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('TXVideoEditer::setFilter_leftIntensity_rightFilter_rightIntensity_leftRatio_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"leftFilter": leftFilter[__i__], "leftIntensity": leftIntensity[__i__], "rightFilter": rightFilter[__i__], "rightIntensity": rightIntensity[__i__], "leftRatio": leftRatio[__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> specialRatio) 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('TXVideoEditer::setSpecialRatio_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"specialRatio": specialRatio[__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>> setReverse_batch(List<bool> isReverse) 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('TXVideoEditer::setReverse_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"isReverse": isReverse[__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>> setRepeatPlay_batch(List<List<TXRepeat>> repeatList) 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('TXVideoEditer::setRepeatPlay_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"repeatList": repeatList[__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('TXVideoEditer::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<void>> setSpeedList_batch(List<List<TXSpeed>> speedList) 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('TXVideoEditer::setSpeedList_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"speedList": speedList[__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>> startEffect_startTime_batch(List<TXEffectType> type, List<double> startTime) async {
    if (type.length != startTime.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('TXVideoEditer::startEffect_startTime_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"type": type[__i__].toValue(), "startTime": startTime[__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>> stopEffect_endTime_batch(List<TXEffectType> type, List<double> endTime) async {
    if (type.length != endTime.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('TXVideoEditer::stopEffect_endTime_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"type": type[__i__].toValue(), "endTime": endTime[__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>> deleteLastEffect_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('TXVideoEditer::deleteLastEffect_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>> deleteAllEffect_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('TXVideoEditer::deleteAllEffect_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>> setSubtitleList_batch(List<List<TXSubtitle>> subtitleList) 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('TXVideoEditer::setSubtitleList_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"subtitleList": subtitleList[__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>> setPasterList_batch(List<List<TXPaster>> pasterList) 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('TXVideoEditer::setPasterList_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"pasterList": pasterList[__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>> setAnimatedPasterList_batch(List<List<TXAnimatedPaster>> animatedPasterList) 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('TXVideoEditer::setAnimatedPasterList_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"animatedPasterList": animatedPasterList[__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>> setBGMStartTime_endTime_batch(List<double> startTime, List<double> endTime) async {
    if (startTime.length != endTime.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('TXVideoEditer::setBGMStartTime_endTime_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"startTime": startTime[__i__], "endTime": endTime[__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>> setBGMLoop_batch(List<bool> isLoop) 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('TXVideoEditer::setBGMLoop_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"isLoop": isLoop[__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>> setBGMAtVideoTime_batch(List<double> time) 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('TXVideoEditer::setBGMAtVideoTime_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"time": time[__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>> setVideoVolume_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('TXVideoEditer::setVideoVolume_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<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> 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('TXVideoEditer::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<String>().map((__result__) => __result__).toList();
      return typedResult;
    }
  }
  
  
  Future<List<void>> setBGMFadeInDuration_fadeOutDuration_batch(List<double> fadeInDuration, List<double> fadeOutDuration) async {
    if (fadeInDuration.length != fadeOutDuration.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('TXVideoEditer::setBGMFadeInDuration_fadeOutDuration_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"fadeInDuration": fadeInDuration[__i__], "fadeOutDuration": fadeOutDuration[__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>> setWaterMark_normalizationFrame_batch(List<UIImage> waterMark, List<CGRect> normalizationFrame) async {
    if (waterMark.length != normalizationFrame.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('TXVideoEditer::setWaterMark_normalizationFrame_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"waterMark": waterMark[__i__], "normalizationFrame": normalizationFrame[__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>> setTailWaterMark_normalizationFrame_duration_batch(List<UIImage> tailWaterMark, List<CGRect> normalizationFrame, List<double> duration) async {
    if (tailWaterMark.length != normalizationFrame.length || normalizationFrame.length != duration.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('TXVideoEditer::setTailWaterMark_normalizationFrame_duration_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"tailWaterMark": tailWaterMark[__i__], "normalizationFrame": normalizationFrame[__i__], "duration": duration[__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>> setCutFromTime_toTime_batch(List<double> startTime, List<double> endTime) async {
    if (startTime.length != endTime.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('TXVideoEditer::setCutFromTime_toTime_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"startTime": startTime[__i__], "endTime": endTime[__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>> setVideoBitrate_batch(List<int> bitrate) 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('TXVideoEditer::setVideoBitrate_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"bitrate": bitrate[__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>> generateVideo_videoOutputPath_batch(List<TXVideoCompressed> videoCompressed, List<String> videoOutputPath) async {
    if (videoCompressed.length != videoOutputPath.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('TXVideoEditer::generateVideo_videoOutputPath_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"videoCompressed": videoCompressed[__i__].toValue(), "videoOutputPath": videoOutputPath[__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>> quickGenerateVideo_videoOutputPath_batch(List<TXVideoCompressed> videoCompressed, List<String> videoOutputPath) async {
    if (videoCompressed.length != videoOutputPath.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('TXVideoEditer::quickGenerateVideo_videoOutputPath_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"videoCompressed": videoCompressed[__i__].toValue(), "videoOutputPath": videoOutputPath[__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>> generateVideoWithTwoPass_videoOutputPath_batch(List<TXVideoCompressed> videoCompressed, List<String> videoOutputPath) async {
    if (videoCompressed.length != videoOutputPath.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('TXVideoEditer::generateVideoWithTwoPass_videoOutputPath_batch', [for (int __i__ = 0; __i__ < this.length; __i__++) {"videoCompressed": videoCompressed[__i__].toValue(), "videoOutputPath": videoOutputPath[__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>> pauseGenerate_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('TXVideoEditer::pauseGenerate_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>> resumeGenerate_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('TXVideoEditer::resumeGenerate_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>> cancelGenerate_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('TXVideoEditer::cancelGenerate_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;
    }
  }
  
  //endregion
}