-keep class com.datasapien.dssdk.** { *; }

-keepattributes *Annotation*

-keep class retrofit2.** { *; }
-keep class okhttp3.** { *; }
-keep class okio.** { *; }
-keep class com.google.gson.** { *; }

-keep class androidx.room.** { *; }
-keep class com.datasapien.dssdk.**Dao { *; }
-keep class com.datasapien.dssdk.**Database { *; }
-keep class com.datasapien.dssdk.**Entity { *; }

-keepclasseswithmembers class * {
    native <methods>;
}

-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}

# ===========================================
# KEEP JAVET V8 JAVASCRIPT ENGINE CLASSES
# ===========================================

# Keep Javet V8 classes (native library needs these during JNI_OnLoad)
-keep class com.caoccao.javet.** { *; }

# Keep classes with Javet annotations (used for JS bindings)
-keepclassmembers class * {
    @com.caoccao.javet.annotations.V8Function *;
    @com.caoccao.javet.annotations.V8Property *;
}


# ===========================================
# KEEP JAVASCRIPT RUNNER DEPENDENCIES
# ===========================================

# StringFog: keep class and its public API (required by StringFog plugin)
-keep class com.datasapien.dssdk.StringFog { public *; }

# JavaScriptException: keep class + members for AAR consumers (jsName/jsLine/jsColumn/jsStack)
-keep class com.datasapien.dssdk.common.exception.JavaScriptException { *; }
-keepnames class com.datasapien.dssdk.common.exception.JavaScriptException

# V8ExtensionsKt: keep class name; keep only members referenced via Javet annotations
-keepnames class com.datasapien.dssdk.common.extensions.V8ExtensionsKt
-keepclassmembers class com.datasapien.dssdk.common.extensions.V8ExtensionsKt {
    @com.caoccao.javet.annotations.V8Function *;
    @com.caoccao.javet.annotations.V8Property *;
}


-keep class com.datasapien.dssdk.managedapi.ui.OAuthRedirectActivity { *; }
-keep class com.datasapien.dssdk.managedapi.ui.OAuthLauncherActivity { *; }

# ===========================================
# KEEP LLAMACPP INFERENCE ENGINE CLASSES
# ===========================================

# Keep LlamaInferenceEngine class (required for direct instantiation)
-keepnames class com.datasapien.dssdk.intelligence.engine.llama.LlamaInferenceEngine
-keepclassmembers class com.datasapien.dssdk.intelligence.engine.llama.LlamaInferenceEngine {
    <init>(com.datasapien.dssdk.intelligence.storage.ModelFileStore);
}

# Keep LlamaCpp service and related classes
-keep class com.datasapien.dssdk.intelligence.engine.llama.LlamaClient { *; }
-keep class com.datasapien.dssdk.intelligence.engine.llama.LlamaCppService { *; }
-keep class com.datasapien.dssdk.intelligence.engine.llama.LlamaBridge { *; }
-keep interface com.datasapien.dssdk.intelligence.usecase.LLMStreamCallback { *; }

