# This classes are from the Hubspot SDK
-keep class com.hubspot.mobilesdk.** { *; }
-keep enum com.hubspot.mobilesdk.** { *; }
-keepnames class com.hubspot.mobilesdk.** { *; }
-keepnames interface com.hubspot.mobilesdk.** { *; }

#https://github.com/square/retrofit/blame/master/retrofit/src/main/resources/META-INF/proguard/retrofit2.pro
 -keep,allowobfuscation,allowshrinking interface retrofit2.Call
 -keep,allowobfuscation,allowshrinking class retrofit2.Response
 -keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
 # Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
 # EnclosingMethod is required to use InnerClasses.
 -keepattributes Signature, InnerClasses, EnclosingMethod
 # Retrofit does reflection on method and parameter annotations.
 -keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
 # Keep annotation default values (e.g., retrofit2.http.Field.encoded).
 -keepattributes AnnotationDefault
 # Retain service method parameters when optimizing.
 -keepclassmembers,allowshrinking,allowobfuscation interface * {
     @retrofit2.http.* <methods>;
 }
 # Ignore annotation used for build tooling.
 -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
 # Ignore JSR 305 annotations for embedding nullability information.
 -dontwarn javax.annotation.**
 # Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
 -dontwarn kotlin.Unit
 # Top-level functions that can only be used by Kotlin.
 -dontwarn retrofit2.KotlinExtensions
 -dontwarn retrofit2.KotlinExtensions$*
 # With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy
 # and replaces all potential values with null. Explicitly keeping the interfaces prevents this.
 -if interface * { @retrofit2.http.* <methods>; }
 -keep,allowobfuscation interface <1>
 # Keep inherited services.
 -if interface * { @retrofit2.http.* <methods>; }
 -keep,allowobfuscation interface * extends <1>
 # With R8 full mode generic signatures are stripped for classes that are not
 # kept. Suspend functions are wrapped in continuations where the type argument
 # is used.
 -keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
 # R8 full mode strips generic signatures from return types if not kept.
 -if interface * { @retrofit2.http.* public *** *(...); }
 -keep,allowoptimization,allowshrinking,allowobfuscation class <3>
-if class com.hubspot.mobilesdk.errorhandling.ApiError
-keepnames class com.hubspot.mobilesdk.errorhandling.ApiError
-if class com.hubspot.mobilesdk.errorhandling.ApiError
-keep class com.hubspot.mobilesdk.errorhandling.ApiErrorJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.hubspot.mobilesdk.model.AddDeviceTokenRequest
-keepnames class com.hubspot.mobilesdk.model.AddDeviceTokenRequest
-if class com.hubspot.mobilesdk.model.AddDeviceTokenRequest
-keep class com.hubspot.mobilesdk.model.AddDeviceTokenRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.hubspot.mobilesdk.model.AddDeviceTokenResponse
-keepnames class com.hubspot.mobilesdk.model.AddDeviceTokenResponse
-if class com.hubspot.mobilesdk.model.AddDeviceTokenResponse
-keep class com.hubspot.mobilesdk.model.AddDeviceTokenResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class com.hubspot.mobilesdk.model.MetaDataRequest
-keepnames class com.hubspot.mobilesdk.model.MetaDataRequest
-if class com.hubspot.mobilesdk.model.MetaDataRequest
-keep class com.hubspot.mobilesdk.model.MetaDataRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
