package com.volcengine.reactnative.veplayer.events;

import static com.volcengine.VolcApiEngine.runtime.MethodSignature.*;

import com.ss.ttvideoengine.PreloaderURLItem;
import com.ss.ttvideoengine.PreloaderVidItem;
import com.ss.ttvideoengine.PreloaderVideoModelItem;
import com.ss.ttvideoengine.TTVideoEngine;
import com.ss.ttvideoengine.IPreLoaderItemCallBackListener;
import com.ss.ttvideoengine.PreLoaderItemCallBackInfo;
import com.ss.ttvideoengine.SubInfoCallBack;
import com.ss.ttvideoengine.SubInfoSimpleCallBack;
import com.ss.ttvideoengine.VideoEngineInfos;
import com.ss.ttvideoengine.VideoInfoListener;
import com.ss.ttvideoengine.model.VideoModel;
import com.ss.ttvideoengine.strategy.EngineStrategyListener;
import com.ss.ttvideoengine.utils.Error;
import com.volcengine.VolcApiEngine.BeanFactory;
import com.volcengine.VolcApiEngine.runtime.Util;

// BeanFactory.register is used if the event callback needs to return non-serializable data, then it needs to be registered here
public class ClassHelper {
  public static void init() {
    BeanFactory.register(EngineStrategyListener.class, EngineStrategyListenerImpl.class);
    BeanFactory.register(SubInfoSimpleCallBack.class, SubInfoSimpleCallBackImpl.class);
    BeanFactory.register(SubInfoCallBack.class, SubInfoSimpleCallBackImpl.class);
    BeanFactory.register(VideoInfoListener.class, VideoInfoListenerCallBackImpl.class);
    BeanFactory.register(IPreLoaderItemCallBackListener.class, IPreLoaderItemCallBackListenerImpl.class);
    Util.JsonAbleClass.add(PreLoaderItemCallBackInfo.class);
    Util.JsonAbleClass.add(VideoEngineInfos.class);
    Util.JsonAbleClass.add(VideoModel.class);
    Util.JsonAbleClass.add(Error.class);
  }
}
