 # RxJava 2
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
    long producerIndex;
    long consumerIndex;
}
-dontwarn io.reactivex.internal.util.unsafe.**
-keep class io.reactivex.** { *; }
-keep interface io.reactivex.** { *; }
-keep class io.reactivex.Single { *; }
-keepclassmembers class io.reactivex.Single { *; }

# Retrofit 2
-keepattributes Signature
-keepattributes *Annotation*
-keep class retrofit2.** { *; }
-keepclasseswithmembers class * {
    @retrofit2.http.* <methods>;
}
-keepclassmembers class * {
    @retrofit2.http.* <methods>;
}

# API models
-keep class com.yuno.payments.** { *; }
-keep class * implements com.yuno.payments.network.api.PaymentServices { *; }
-keepclassmembers class * implements com.yuno.payments.network.api.PaymentServices { *; }
-keep class br.com.koin.android_sdk.** { *; }
-dontwarn br.com.koin.android_sdk.**

# OkHttp
-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
-dontwarn okio.**
# Ignore apache class
-dontwarn org.apache.http.**
-dontwarn android.net.http.AndroidHttpClient


# Gson
-keep class com.google.gson.** { *; }
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
-keepclassmembers,allowobfuscation class * {
    @com.google.gson.annotations.SerializedName <fields>;
}
 
 # Keep AdvertisingIdClient classes
-keep class com.google.android.gms.ads.identifier.** { *; }
-dontwarn com.google.android.gms.ads.identifier.**
-keepattributes Signature

# Keep Kotlin Parcelize annotations
-keep class kotlinx.android.parcel.** { *; }
-keep class com.yuno.payments.network.api.CoreApi.** { *; }
# Retrofit
-keepattributes Signature
-keepattributes *Annotation*
-keep class retrofit2.** { *; }
-keepclasseswithmembers class * {
    @retrofit2.http.* <methods>;
}
-keepclassmembers,allowshrinking,allowobfuscation interface * {
    @retrofit2.http.* <methods>;
}

# RxJava
-dontwarn io.reactivex.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
    long producerIndex;
    long consumerIndex;
}

-dontwarn kotlinx.android.parcel.**

# Keep classes using @Parcelize
-keep @kotlinx.android.parcel.Parcelize class * { *; }
-keep class **$$Parcelable { *; }
-keep class com.yuno.payments.network.services.core.models.ClickToPayDTO

 #Yuno Flutter
 -keep class com.yuno.** { *; }
 -keep class com.yuno.payments.network.manager.** { *; }
 -keep class com.yuno.payments.network.manager.EnvMode { *; }
 -keep class com.yuno.payments.** { *; }
 -keep class com.yuno.components.** { *; }
 -keep class com.yuno.payments.network.services.payments.models.** { *; }

 -keepnames class * implements java.io.Serializable
 -keepclassmembers class * implements java.io.Serializable {
     static final long serialVersionUID;
     private static final java.io.ObjectStreamField[] serialPersistentFields;
     !static !transient <fields>;
     private void writeObject(java.io.ObjectOutputStream);
     private void readObject(java.io.ObjectInputStream);
     java.lang.Object writeReplace();
     java.lang.Object readResolve();
 }
 -keep,allowobfuscation interface * {
     @retrofit2.http.* <methods>;
 }
 -keep class com.squareup.retrofit2.** { *; }
 -keep class com.google.gson.** { *; }
 -keep class retrofit2.** { *; }
 -keep class okhttp3.** { *; }
 -keep interface okhttp3.** { *; }
 -dontwarn retrofit2.**
 -dontwarn okhttp3.**
 -dontwarn okio.**

 -keepattributes Signature
 -keepattributes *Annotation*
 -dontwarn com.google.gson.**