# ProGuard Rules for VPN Panel Android App
# محافظت از کد در برابر Reverse Engineering

# کلی
-keepattributes *Annotation*
-keepattributes Signature
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes EnclosingMethod

# مخفی‌سازی کامل نام کلاس‌ها و متدها
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5

# Obfuscation با دیکشنری سفارشی
-obfuscationdictionary dictionary.txt
-classobfuscationdictionary dictionary.txt
-packageobfuscationdictionary dictionary.txt

# حذف Log در Production
-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
    public static *** i(...);
    public static *** w(...);
    public static *** e(...);
}

# Android Components
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.view.View

# حفظ کلاس‌های Model
-keep class com.vpnpanel.models.** { *; }

# حفظ کلاس‌های API
-keep class com.vpnpanel.api.** { *; }

# حفظ کلاس‌های امنیتی (مهم!)
-keep class com.vpnpanel.security.** { *; }
-keep class com.vpnpanel.security.SecurityManager { *; }
-keep class com.vpnpanel.security.EncryptedStorage { *; }

# Retrofit
-keepattributes Signature, InnerClasses, EnclosingMethod
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
-keepclassmembers,allowshrinking,allowobfuscation interface * {
    @retrofit2.http.* <methods>;
}
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn javax.annotation.**
-dontwarn kotlin.Unit
-dontwarn retrofit2.-KotlinExtensions

# OkHttp
-dontwarn okhttp3.**
-dontwarn okio.**
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }

# Gson
-keepattributes Signature
-keepattributes *Annotation*
-dontwarn sun.misc.**
-keep class com.google.gson.** { *; }
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

# Gson generic type support
-keepattributes Signature
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class * extends com.google.gson.reflect.TypeToken

# Material Components
-keep class com.google.android.material.** { *; }
-dontwarn com.google.android.material.**

# AndroidX Security Crypto
-keep class androidx.security.crypto.** { *; }
-keepclassmembers class * extends androidx.security.crypto.** { *; }

# Native Methods
-keepclasseswithmembernames class * {
    native <methods>;
}

# Enums
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

# Parcelable
-keepclassmembers class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

# Serializable
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

# Keep custom exceptions
-keep public class * extends java.lang.Exception

# VPN-related libraries (اگر از کتابخانه خاصی استفاده می‌کنید)
# TODO: بسته به VPN library که استفاده می‌کنید، rules مربوطه را اضافه کنید

# جلوگیری از حذف کلاس‌های استفاده نشده در Runtime
-dontwarn com.vpnpanel.**
-keep class com.vpnpanel.** { *; }

# حفظ خطوط کد برای Stack Trace بهتر
-keepattributes SourceFile,LineNumberTable

# اگر از R8 استفاده می‌کنید
-dontwarn java.lang.invoke.StringConcatFactory
