# Keep attributes needed for proper SDK functionality
-keepattributes InnerClasses

# Observability/analytics — referenced by Transact internally; kept so consumer R8
# can resolve the field types reachable from the public Transact class.
-keep class financial.atomic.transact.analytics.** { *; }

# Keep main SDK classes
-keep class financial.atomic.transact.Transact { *; }
-keep class financial.atomic.transact.Transact$Companion { *; }
-keep class financial.atomic.transact.Transact$* { *; }
-keep class financial.atomic.transact.Config { *; }
-keep class financial.atomic.transact.Config$* { *; }
-keep class financial.atomic.transact.Config$** { *; }
-keep class financial.atomic.transact.PausedTransactRef { *; }
-keep class financial.atomic.transact.ActionConfig { *; }
-keep class financial.atomic.transact.Emitter { *; }
-keep class financial.atomic.transact.Emitter$Event { *; }
-keep class financial.atomic.transact.receiver.TransactBroadcastReceiver { *; }
-keep enum financial.atomic.transact.Transact$*
-keep enum financial.atomic.transact.Config$*
-keep enum financial.atomic.transact.Config$**
-keepnames class financial.atomic.transact.Transact { public *; }
-keepnames class financial.atomic.transact.Config { public *; }
-keepnames class financial.atomic.transact.receiver.TransactBroadcastReceiver { public *; }

# Keep all public members of SDK classes
-keepclassmembers class financial.atomic.transact.** {
    public *;
}

# kotlinx-serialization-json specific. Add this if you have java.lang.NoClassDefFoundError kotlinx.serialization.json.JsonObjectSerializer
-keepclassmembers class kotlinx.serialization.json.** {
    *** Companion;
}
-keepclasseswithmembers class kotlinx.serialization.json.** {
    kotlinx.serialization.KSerializer serializer(...);
}

-keep,includedescriptorclasses class financial.atomic.transact.**$$serializer { *; }
-keepclassmembers class financial.atomic.transact.** {
    *** Companion;
}
-keepclasseswithmembers class financial.atomic.transact.** {
    kotlinx.serialization.KSerializer serializer(...);
}

# muppet
-keep class financial.atomic.muppet.*
-keep enum financial.atomic.muppet.impl.Page$Event
-keepnames class financial.atomic.muppet.impl.Page { public *; }
-keepclassmembers class financial.atomic.muppet.** {
   public *;
}