# 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 *;
#}

# Package names
-keeppackagenames

# Common attributes
-keepattributes Signature, Exceptions, InnerClasses, EnclosingMethod, *Annotation*

# Firebase
-dontnote com.google.firebase.**

# OkHttp
-dontwarn okhttp3.**
-dontnote okhttp3.**

# Retrofit
-dontwarn retrofit2.HttpServiceMethod*
-dontwarn retrofit2.RequestFactory*

# Gson
-dontwarn sun.misc.**
-dontnote com.google.gson.internal.**

# Prevent proguard from stripping interface information from TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
-keep class com.google.gson.** { *; }

# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
  @com.google.gson.annotations.SerializedName <fields>;
}

# com.avaya.core
-keepclassmembers enum com.avaya.core.** { *; }
-keep public class com.avaya.core.AbstractNotificationReceiver { public *; }
-keep public class com.avaya.core.ActionState { public *; }
-keep public interface com.avaya.core.AuthenticationCallback { *; }
-keep public interface com.avaya.core.AuthenticationDelegate { *; }
-keep public class com.avaya.core.AuthenticationError { public *; }
-keep public class com.avaya.core.CardSummary { public *; }
-keep public class com.avaya.core.Config { public *; }
-keep public interface com.avaya.core.Conversation { *; }
-keep public interface com.avaya.core.ConversationDelegate { *; }
-keep public interface com.avaya.core.ConversationDetails { *; }
-keep public class com.avaya.core.ConversationEvent { public *; }
-keep public enum com.avaya.core.ConversationEventType { public *; }
-keep public interface com.avaya.core.ConversationViewDelegate { *; }
-keep public class com.avaya.core.ConversationViewDelegateAdapter { *; }
-keep public class com.avaya.core.Coordinates { public *; }
-keep public class com.avaya.core.CreditCard { public *; }
-keep public class com.avaya.core.DisplaySettings { public *; }
-keep public class com.avaya.core.FcmService { public *; }
-keep public enum com.avaya.core.InitializationStatus { public *; }
-keep public class com.avaya.core.Integration { public *; }
-keep public class com.avaya.core.Logger { public *; }
-keep public enum com.avaya.core.LoginResult { public *; }
-keep public enum com.avaya.core.LogoutResult { public *; }
-keep public class com.avaya.core.Message { public *; }
-keep public class com.avaya.core.MessageAction { public *; }
-keep public class com.avaya.core.MessageItem { public *; }
-keep public interface com.avaya.core.MessageModifierDelegate { *; }
-keep public class com.avaya.core.ConversationDelegateAdapter { *; }
-keep public class com.avaya.core.MessageType { public *; }
-keep public enum com.avaya.core.MessageUploadStatus { public *; }
-keep public class com.avaya.core.Participant { public *; }
-keep public enum com.avaya.core.PaymentStatus { public *; }
-keep public class com.avaya.core.Settings { public *; }
-keep public class com.avaya.core.AvMessagingSdk { public *; }
-keep public interface com.avaya.core.AvMessagingSdkCallback { public *; }
-keep public class com.avaya.core.AvMessagingSdkCallback$Response { public *; }
-keep public enum com.avaya.core.AvMessagingSdkConnectionStatus { public *; }
-keep public class com.avaya.core.User { public *; }
-keep public class com.avaya.core.utils.FileUtils { public *; }
-keep public class com.avaya.core.utils.StringUtils { public *; }
-keep public class com.avaya.core.utils.JavaUtils { public *; }
-keep public class com.avaya.core.AvMessagingSdkCallback { public *; }
-keep public class com.avaya.core.AvMessagingSdkCallback$* { public *; }
-keep public class com.avaya.core.ConversationUiSettings* { public *; }

-dontnote com.avaya.core.Notifier

# com.avaya.core.service
-keep public class com.avaya.core.service.AvMessagingSdkService

# com.avaya.core.model
-keep class com.avaya.core.model.** { <fields>; }
-keepclassmembers enum com.avaya.core.model.** { *; }

-keep class com.avaya.core.monitor.WsActivityDto { <fields>; }
-keep class com.avaya.core.monitor.WsClientDto { <fields>; }
-keep class com.avaya.core.monitor.WsConversationDto { <fields>; }
-keep class com.avaya.core.monitor.WsErrorDataDto { <fields>; }
-keep class com.avaya.core.monitor.WsErrorDto { <fields>; }
-keep class com.avaya.core.monitor.WsMessageDto { <fields>; }
-keep class com.avaya.core.monitor.WsParticipantDto { <fields>; }
