# ReflectionSicheDfuController resolves these vendor types, fields, methods, and constructor by exact name.
-keep class com.sifli.siflidfu.SifliDFUService {
    public static java.lang.String BROADCAST_DFU_PROGRESS;
    public static java.lang.String BROADCAST_DFU_STATE;
    public static java.lang.String BROADCAST_DFU_LOG;
    public static java.lang.String EXTRA_DFU_PROGRESS;
    public static java.lang.String EXTRA_DFU_PROGRESS_TYPE;
    public static java.lang.String EXTRA_DFU_STATE;
    public static java.lang.String EXTRA_DFU_STATE_RESULT;
    public static java.lang.String EXTRA_LOG_MESSAGE;
    public static void startActionDFUNand(android.content.Context, java.lang.String, java.util.ArrayList, int, int);
    public static void startActionDFUNorExt(android.content.Context, java.lang.String, java.util.ArrayList, int, int);
    public static void startActionDFUNor(android.content.Context, java.lang.String, java.util.ArrayList, int, int);
}

-keep class com.sifli.siflidfu.Protocol {
    public static int DFU_MODE_NORMAL;
    public static int DFU_MODE_FORCE;
    public static int DFU_SERVICE_EXIT;
    public static int IMAGE_ID_NAND_RES;
    public static int IMAGE_ID_CTRL;
    public static int IMAGE_ID_HCPU;
    public static int IMAGE_ID_LCPU;
    public static int IMAGE_ID_NOR_LCPU_PATCH;
    public static int IMAGE_ID_RES;
    public static int IMAGE_ID_FONT;
    public static int IMAGE_ID_NAND_LCPU_PATCH;
    public static int IMAGE_ID_EX;
    public static int IMAGE_ID_OTA;
    public static int IMAGE_ID_DYN;
    public static int IMAGE_ID_MUSIC;
    public static int IMAGE_ID_TINY_FONT;
}

-keep class com.sifli.siflidfu.DFUImagePath {
    public <init>(java.lang.String, android.net.Uri, int);
}

# Watchface callbacks are dispatched by reflected method name.
-keep class com.sifli.watchfacesdk.manager.SFWatchfaceFilePushManager {
    public static com.sifli.watchfacesdk.manager.SFWatchfaceFilePushManager getInstance();
    public void init(android.app.Application);
    public void setCallback(com.sifli.watchfacesdk.manager.SFWatchfaceFilePushManagerCallback);
    public void setUseHighSpeedMode(boolean);
    public void pushWatchfaceFile(java.lang.String, int, java.lang.String, boolean);
}
-keep,includedescriptorclasses interface com.sifli.watchfacesdk.manager.SFWatchfaceFilePushManagerCallback { *; }

# ReflectionSicheWfServiceFileController loads the Service and then reflects on its Binder.
-keep class com.sifli.watchfacelibrary.SifliWFService {
    public static int FILE_TYPE_CUSTOMIZED;
    public void setOnWFListener(com.sifli.watchfacelibrary.OnWFListener);
}
-keep interface com.sifli.watchfacelibrary.OnWFListener { *; }
-keep class com.sifli.watchfacelibrary.SifliWFService$WFBinder {
    public com.sifli.watchfacelibrary.SifliWFService getService();
    public void connectDevice(java.lang.String);
    public void sendFile(java.lang.String, android.net.Uri, int, int);
    public void disconnectDevice();
}
