# Keep PushBaseHandlerImpl - loaded via reflection in HydraPushManager.loadBaseHandler()
-keep class com.capillary.hydra.pushbase.PushBaseHandlerImpl { *; }

# Keep Android components declared in AndroidManifest.xml
# Android system uses class names to instantiate these components
-keep class com.capillary.hydra.pushbase.HydraPushReceiver { *; }
-keep class com.capillary.hydra.pushbase.video.VideoTemplateActivity { *; }
-keep class com.capillary.hydra.pushbase.permissions.PermissionActivity { *; }
-keep class com.capillary.hydra.pushbase.action.PushActionActivity { *; }

# Keep notification model classes for proper Parcelable serialization/deserialization
# These are passed through Intents and Bundles requiring field name preservation
-keep class com.capillary.hydra.pushbase.notification.model.NotificationPayload { *; }
-keep class com.capillary.hydra.pushbase.notification.model.NotificationBody { *; }
-keep class com.capillary.hydra.pushbase.notification.model.NotificationExpandedDetails { *; }
-keep class com.capillary.hydra.pushbase.notification.model.CTA { *; }
-keep class com.capillary.hydra.pushbase.notification.model.Media { *; }

# Keep enums used in notification models for Parcelable support
-keep enum com.capillary.hydra.pushbase.notification.model.CTATYPE { *; }
-keep enum com.capillary.hydra.pushbase.notification.model.GATEWAY { *; }
-keep enum com.capillary.hydra.pushbase.notification.model.STYLE { *; }

# Keep Room database components for push notification storage
-keep class com.capillary.hydra.pushbase.database.** { *; }
