# Keep specific JSON serialization classes with @SerializedName annotations
# Required for proper JSON deserialization of API responses
-keep class com.capillary.hydra.android.sdk.response.EventResponse { *; }
-keep class com.capillary.hydra.android.sdk.response.Event { *; }
-keep class com.capillary.hydra.android.sdk.response.Status { *; }

# Keep Parcelable configuration class used for cross-process communication
-keep class com.capillary.hydra.android.sdk.HydraConfig { *; }

# Keep interfaces marked with @Keep annotation that are loaded via reflection
# These are dynamically loaded by Util.loadClass() in HydraPushManager and InAppManager
-keep interface com.capillary.hydra.android.sdk.push.FcmHandler { *; }
-keep interface com.capillary.hydra.android.sdk.push.PushBaseHandler { *; }
-keep interface com.capillary.hydra.android.sdk.inapp.InAppHandler { *; }

# Keep Room database components to prevent SQLite runtime issues
# @Entity, @Database, @Dao annotations require reflection access
-keep @androidx.room.Entity class * { *; }
-keep @androidx.room.Database class * { *; }
-keep @androidx.room.Dao class * { *; }
# Keep specific database package for Room-generated implementations
-keep class com.capillary.hydra.android.sdk.database.** { *; }
