# Keep the public interface of your SDK intact
-keep public class com.tapresearch.tapsdk.TapResearch {
    public *;
}

-keep class com.tapresearch.tapsdk.models.PayoutEventTypeSerializer { *; }
-keepclasseswithmembernames class com.tapresearch.tapsdk.models.PayoutEventTypeSerializer {
    *;
}

# Keep specific callback classes in package
-keep class com.tapresearch.tapsdk.callback.** { *; }
-keepclasseswithmembernames class com.tapresearch.tapsdk.callback.** {
    *;
}

-keep public class com.tapresearch.tapsdk.models.PlacementCustomParameters.** { *; }
-keepclasseswithmembernames class com.tapresearch.tapsdk.models.PlacementCustomParameters.** {
    *;
}

# Kotlin serialization rules
-keep,includedescriptorclasses class kotlinx.serialization.** { *; }
-keep,includedescriptorclasses class kotlinx.serialization.json.** { *; }
-keepclasseswithmembers class com.tapresearch.** {
    kotlinx.serialization.KSerializer serializer(...);
}

# AndroidX lifecycle rules
-keep class androidx.lifecycle.** { *; }
-dontwarn androidx.lifecycle.**
