-keepclassmembers enum ir.tapsell.mediation.** { *; }

-keep class * extends ir.tapsell.mediation.core.internal.init.TapsellComponentInitializer {
    public <methods>;
}

# Keep Exception names
-keepnames class ir.tapsell.mediation.** extends java.lang.Exception
-keeppackagenames ir.tapsell.mediation.core

-dontwarn com.chuckerteam.chucker.**
-dontwarn okhttp3.logging.**

-keep @interface ir.tapsell.mediation.core.network.NoStandardHeaders { public *; }
-keep class * implements ir.tapsell.mediation.core.network.NoStandardHeaders { public *; }
-keepattributes *Annotation*


# Retrofit rules for supporting fullMode R8 shrinking/obfuscation.
# These should be removed after upgrading retrofit to newer versions
# https://github.com/square/retrofit/blob/b4745c40cab4b9977a775796635a7e2b0613fde7/retrofit/src/main/resources/META-INF/proguard/retrofit2.pro

# 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,allowoptimization,allowshrinking,allowobfuscation 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>

# With R8 full mode generic signatures are stripped for classes that are not kept.
-keep,allowoptimization,allowshrinking,allowobfuscation class retrofit2.Response
-if class ir.tapsell.mediation.core.network.model.UserIdRequest
-keepnames class ir.tapsell.mediation.core.network.model.UserIdRequest
-if class ir.tapsell.mediation.core.network.model.UserIdRequest
-keep class ir.tapsell.mediation.core.network.model.UserIdRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class ir.tapsell.mediation.core.network.model.DeviceInfoModel
-keepnames class ir.tapsell.mediation.core.network.model.DeviceInfoModel
-if class ir.tapsell.mediation.core.network.model.DeviceInfoModel
-keep class ir.tapsell.mediation.core.network.model.DeviceInfoModelJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class ir.tapsell.mediation.core.network.model.UserIdResponse
-keepnames class ir.tapsell.mediation.core.network.model.UserIdResponse
-if class ir.tapsell.mediation.core.network.model.UserIdResponse
-keep class ir.tapsell.mediation.core.network.model.UserIdResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}


