-keepattributes RuntimeVisibleAnnotations
-keepattributes RuntimeInvisibleAnnotations
-keep class com.flexa.spend.BuildConfig { public *; }
-keep class **.R$* { <fields>; }
-keep class com.flexa.spend.Spend { public *; }
-keep class com.flexa.spend.SpendModuleKt { public *; }
-keep class com.flexa.spend.SpendConfig { public *; }
-keep class com.flexa.spend.SpendConfig$Builder { public *; }
-keep class com.flexa.spend.Transaction { public *; }
-keep class com.flexa.spend.PaymentErrorCallback { public *; }
-keep class com.flexa.spend.SpendNavGraphKt { public *; }
-keep class com.flexa.spend.main.main_screen.SpendScreenKt { public *; }
-keep class com.flexa.spend.main.confirm.TransactionError { public *; }
-keep enum com.flexa.core.shared.CustodyModel { public *; }
# Keep `Companion` object fields of serializable classes.
# This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects.
-if @kotlinx.serialization.Serializable class **
-keepclassmembers class <1> {
   static <1>$Companion Companion;
}

# Keep `serializer()` on companion objects (both default and named) of serializable classes.
-if @kotlinx.serialization.Serializable class ** {
   static **$* *;
}
-keepclassmembers class <2>$<3> {
   kotlinx.serialization.KSerializer serializer(...);
}

# Keep `INSTANCE.serializer()` of serializable objects.
-if @kotlinx.serialization.Serializable class ** {
   public static ** INSTANCE;
}
-keepclassmembers class <1> {
   public static <1> INSTANCE;
   kotlinx.serialization.KSerializer serializer(...);
}

# @Serializable and @Polymorphic are used at runtime for polymorphic serialization.
-keepattributes RuntimeVisibleAnnotations,AnnotationDefault

-dontwarn org.joda.convert.**