# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in android-sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

-printmapping mapping.txt

-keepattributes InnerClasses
-keepattributes Signature
-keepattributes EnclosingMethod

# Third party libraries
-dontwarn okio.**
-dontwarn okhttp3.internal.platform.*
-keep class com.google.gson.** { *; }
-keep class sun.misc.Unsafe { *; }
-keepattributes Signature
-keepattributes *Annotation*

# io.smooch.core
-keepclassmembers enum io.smooch.core.** { *; }
-keep public enum io.smooch.core.InitializationStatus { public *; }
-keep public enum io.smooch.core.LoginResult { public *; }
-keep public enum io.smooch.core.LogoutResult { public *; }
-keep public enum io.smooch.core.MessageUploadStatus { public *; }
-keep public enum io.smooch.core.ConversationEventType { public *; }
-keep public enum io.smooch.core.PaymentStatus { public *; }
-keep public enum io.smooch.core.SmoochConnectionStatus { public *; }
-keep public class io.smooch.core.AbstractNotificationReceiver { public *; }
-keep public class io.smooch.core.AuthenticationError { public *; }
-keep public class io.smooch.core.Conversation { public *; }
-keep public class io.smooch.core.FcmService { public *; }
-keep public class io.smooch.core.Config { public *; }
-keep public class io.smooch.core.Message { public *; }
-keep public class io.smooch.core.Integration { public *; }
-keep public class io.smooch.core.MessageAction { public *; }
-keep public class io.smooch.core.MessageItem { public *; }
-keep public class io.smooch.core.ActionState { public *; }
-keep public class io.smooch.core.DisplaySettings { public *; }
-keep public class io.smooch.core.MessageType { public *; }
-keep public class io.smooch.core.CreditCard { public *; }
-keep public class io.smooch.core.CardSummary { public *; }
-keep public class io.smooch.core.Settings { public *; }
-keep public class io.smooch.core.Smooch { public *; }
-keep public class io.smooch.core.User { public *; }
-keep public class io.smooch.core.ConversationEvent { public *; }
-keep public class io.smooch.core.Coordinates { public *; }
-keep public class io.smooch.core.utils.FileUtils { public *; }
-keep public interface io.smooch.core.SmoochCallback { public *; }
-keep public class io.smooch.core.SmoochCallback$Response { public *; }
-keep public interface io.smooch.core.Conversation$Delegate { *; }
-keep public interface io.smooch.core.Conversation$MessageModifierDelegate { *; }
-keep public interface io.smooch.core.Conversation$ViewDelegate { *; }
-keep public interface io.smooch.core.AuthenticationDelegate { *; }
-keep public interface io.smooch.core.AuthenticationCallback { *; }

# io.smooch.core.service
-keep public class io.smooch.core.service.SmoochService

# io.smooch.core.model
-keepclassmembers enum io.smooch.core.model.** { *; }