############################################################
## 0. 공통 메타-옵션
############################################################
# 생성된(obfuscated) 클래스는 모두 우리 전용 네임스페이스로 이동
#   → 다른 AAR 이 만든 a/a 와 충돌 방지
-repackageclasses com.aiforpet.pet.obf

# 공개 API(패키지) 이름은 그대로 유지
-keeppackagenames com.aiforpet.pet.**

# Stack-trace 디버깅용(선택)
-keepattributes SourceFile,LineNumberTable

############################################################
## 1. AndroidX / 3rd-party 라이브러리 keep
############################################################
# CameraX
-keep class androidx.camera.** { *; }
-keep interface androidx.camera.** { *; }
-dontwarn androidx.camera.**

# TensorFlow-Lite
-keep class org.tensorflow.lite.** { *; }
-keep interface org.tensorflow.lite.** { *; }
-dontwarn org.tensorflow.lite.**

# OkHttp / Logging
-keep class com.squareup.okhttp3.** { *; }
-dontwarn com.squareup.okhttp3.**

# Lottie
-keep class com.airbnb.android.** { *; }
-dontwarn com.airbnb.android.**

# AndroidX 기본
-keep class androidx.appcompat.** { *; }
-keep class androidx.gridlayout.** { *; }
-keep class androidx.lifecycle.** { *; }
-dontwarn androidx.appcompat.**
-dontwarn androidx.gridlayout.**
-dontwarn androidx.lifecycle.**

# Picasso
-keep class com.squareup.picasso.** { *; }
-dontwarn com.squareup.picasso.**

# 기타
-keep class com.tbuonomo.** { *; }
-dontwarn com.tbuonomo.**

# Google Play / FCM 내부
-keep class com.google.android.gms.internal.** { *; }
-keep class com.google.firebase.messaging.** { *; }

############################################################
## 2. SDK 내부 JNI·리플렉션 대상
############################################################
# JNI 함수 보존
-keep class com.aiforpet.pet.check.ToothCameraActivity { native <methods>; }
-keep class com.aiforpet.pet.check.EyeCameraActivity   { native <methods>; }
-keep class com.aiforpet.pet.check.SkinCameraActivity  { native <methods>; }
-keep class com.aiforpet.pet.check.DiagnosisResultActivity { native <methods>; }
-keep class com.aiforpet.pet.check.diag.SegmentDumper      { native <methods>; }

# Mixpanel 연동
-keep interface com.aiforpet.pet.util.MixpanelTracker {
    public void trackEvent(java.lang.String, java.util.Map);
    public void trackScreen(java.lang.String);
}
-keep class com.aiforpet.pet.util.MySDK {
    public static void setMixpanelTracker(com.aiforpet.pet.util.MixpanelTracker);
    public static void trackScreen(java.lang.String);
    public static void trackEvent(java.lang.String, java.util.Map);
}
-keepclassmembers class com.aiforpet.pet.check.* {
    private void mixpanelScreen(java.lang.String);
    private void mixpanelEvent(java.lang.String, java.util.Map);
}

# 네트워크 요청 콜백
-keep class com.aiforpet.pet.network.TTRequest {
    public void makeRequest(int, com.aiforpet.pet.network.TTRequest$CallbackListener);
}
-keep interface com.aiforpet.pet.network.TTRequest$CallbackListener {
    public void onSuccess(java.lang.String);
    public void onFailure(java.lang.String);
}

############################################################
## 3. Android 프레임워크 관련
############################################################
# android.graphics.RectF 필드 유지
-keepclassmembers class android.graphics.RectF {
    float left;
    float top;
    float right;
    float bottom;
}

# 사용자 정의 View 3-생성자 보존
-keep public class * extends android.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

# Overlay View
-keep public class com.aiforpet.pet.check.CustomOverlay {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

# WebView
-keep class android.webkit.WebView { *; }

############################################################
## 4. 로깅 호출 제거(릴리스 최적화)
############################################################
-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
    public static *** i(...);
    public static *** w(...);
    public static *** e(...);
    public static *** wtf(...);
}

# CryptoUtils is looked up by name from JNI (native-lib.cpp FindClass)
-keep class com.aiforpet.pet.util.CryptoUtils { *; }
-keepnames class com.aiforpet.pet.util.CryptoUtils
-keepclassmembers class com.aiforpet.pet.util.CryptoUtils {
    public static java.nio.MappedByteBuffer decryptFileToMappedByteBuffer(android.content.Context, java.lang.String, char[], char[]);
}

############################################################
## 5. Result 패키지 난독화 예외 처리 (UI 및 커스텀 뷰)
############################################################
-keep class com.aiforpet.pet.check.result.** { *; }