-keepclassmembers enum co.pushe.plus.** { *; }
-keepclassmembers enum androidx.work.** { *; }

-keep class * extends co.pushe.plus.internal.PusheComponentInitializer {
    public void preInitialize(android.content.Context);
    public io.reactivex.Completable postInitialize(android.content.Context);
}
-keep class co.pushe.plus.internal.PusheInitializer { *; }

-keep class co.pushe.plus.** extends co.pushe.plus.internal.task.PusheTask { *; }

-optimizations !class/unboxing/enum

# -- Moshi --
-dontwarn okio.**
-dontwarn javax.annotation.**
-keepclasseswithmembers class * {
    <init>(...);
    @com.squareup.moshi.* <methods>;
}
-keep @com.squareup.moshi.JsonQualifier interface *

-keep class **JsonAdapter {
    <init>(...);
    <fields>;
}
-keepnames @com.squareup.moshi.JsonClass class *

-dontwarn org.codehaus.mojo.animal_sniffer.*

# Keep Exception names
-keepnames class co.pushe.plus.** extends java.lang.Exception

# Needed in order to be able to get the FirebaseMessaging constructor with reflection (in `FirebaseServiceManager`)
-keep class com.google.firebase.messaging.FirebaseMessaging { *; }
-keep class co.pushe.plus.fcm.FcmInitializer { *; }
-if class co.pushe.plus.fcm.messages.http.FirebaseCredentials
-keepnames class co.pushe.plus.fcm.messages.http.FirebaseCredentials
-if class co.pushe.plus.fcm.messages.http.FirebaseCredentials
-keep class co.pushe.plus.fcm.messages.http.FirebaseCredentialsJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class co.pushe.plus.fcm.messages.http.FirebaseCredentials
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class co.pushe.plus.fcm.messages.http.FirebaseCredentials
-keepclassmembers class co.pushe.plus.fcm.messages.http.FirebaseCredentials {
    public synthetic <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

