# Common Proguard rules for all Terminal Android SDK artifacts.

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-dontwarn com.stripe.**
-keep class com.stripe.** { *; }
-keep class com.google.gson.** {*;}
-keep class com.neovisionaries.** { *; }
-keep class com.scottyab.rootbeer.** { *; }
-keep class com.squareup.** { *; }
-keep class dagger.** { *; }
-keep class javax.** { *; }
-keep class kotlin.** { *; }
-keep class kotlinx.** { *; }
-keep class okhttp3.** { *; }
-keep class okio.** { *; }

### Wire Rules, see: https://github.com/square/wire#generating-code-with-wire
-keep class com.squareup.wire.** { *; }
-keep class com.stripe.proto.** { *; }

### Curtains
# See: https://github.com/square/curtains/issues/32
-keep class androidx.appcompat.view.WindowCallbackWrapper { *; }
-keep class android.support.v7.view.WindowCallbackWrapper { *; }

### BBPOS
-dontwarn com.bbpos.**
-keep class com.bbpos.** {*;}
# Examples:  android.bbpos.CustServiceManager  and android.bbpos.ISystemUpdateCallback
-keep class android.bbpos.** {*;}
-dontwarn android.os.ICustService
-dontwarn android.os.ICustService$Stub
-dontwarn android.os.ServiceManager

# BBPOS (Shaded)
-dontwarn com.stripe.bbpos.**
-keep class com.stripe.bbpos.** {*;}

# OkHttp
# Used only on JVM and when Conscrypt and other security providers are available, see: https://github.com/square/okhttp/pull/6792
-dontwarn okhttp3.internal.platform.**
-dontwarn org.conscrypt.**
-dontwarn org.bouncycastle.**
-dontwarn org.openjsse.**

# Moshi
# Extra keep rules are needed to prevent parameterized type info from being stripped in R8 fullMode.
# Taken from https://github.com/square/moshi/issues/1663
-keep,allowobfuscation,allowshrinking class com.squareup.moshi.JsonAdapter

# Serializable
# Taken from https://www.guardsquare.com/manual/configuration/examples#serializable
-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 <fields>;
    !private <methods>;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

# This is generated automatically by the Android Gradle plugin.
-dontwarn android.bbpos.ILockScreenCallback
-dontwarn android.bbpos.LockScreenManager$1
-dontwarn android.bbpos.LockScreenManager$2
-dontwarn android.bbpos.LockScreenManager$3
-dontwarn android.bbpos.LockScreenManager$4
-dontwarn android.bbpos.LockScreenManager$5
-dontwarn android.bbpos.LockScreenManager$LockScreenResultListener
-dontwarn android.os.BbposMap$1
-dontwarn android.os.BbposRemoteCallback$1
-dontwarn android.os.BbposRemoteCallback$2
-dontwarn android.os.BbposRemoteCallback$3
-dontwarn android.os.BbposRemoteCallback$OnResultListener
-dontwarn android.os.BbposResult$1
-dontwarn android.os.ILockScreenService$Stub
-dontwarn android.os.ILockScreenService
-dontwarn android.os.IRemoteCallback$Stub
-dontwarn android.os.IRemoteCallback
-dontwarn android.os.IStatusChangeListener
-dontwarn android.os.LastPinInfo$1
