#########################
# retrofit2 - additions #
#########################

# 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>

# R8 full mode strips generic signatures from return types if not kept.
-keep,allowobfuscation,allowshrinking class retrofit2.Response



#######################
# okhttp3 - additions #
#######################

# OkHttp platform used only on JVM and when Conscrypt and other security providers are available.
-dontwarn org.conscrypt.**
-dontwarn org.bouncycastle.**
-dontwarn org.openjsse.**



#####################
# moshi - additions #
#####################

# Keep ToJson/FromJson-annotated methods
-keepclassmembers class * {
  @com.squareup.moshi.FromJson <methods>;
  @com.squareup.moshi.ToJson <methods>;
}

# R8 full mode strips generic signatures from return types if not kept.
-keep,allowobfuscation,allowshrinking class com.squareup.moshi.JsonAdapter



#######################
# glassfy android-sdk #
#######################

-keep class io.glassfy.androidsdk.** { *; }

-if class io.glassfy.androidsdk.internal.network.model.AccountableSkuDto
-keepnames class io.glassfy.androidsdk.internal.network.model.AccountableSkuDto
-if class io.glassfy.androidsdk.internal.network.model.AccountableSkuDto
-keep class io.glassfy.androidsdk.internal.network.model.AccountableSkuDtoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.ErrorDto
-keepnames class io.glassfy.androidsdk.internal.network.model.ErrorDto
-if class io.glassfy.androidsdk.internal.network.model.ErrorDto
-keep class io.glassfy.androidsdk.internal.network.model.ErrorDtoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.OfferingDto
-keepnames class io.glassfy.androidsdk.internal.network.model.OfferingDto
-if class io.glassfy.androidsdk.internal.network.model.OfferingDto
-keep class io.glassfy.androidsdk.internal.network.model.OfferingDtoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.PaddlePriceDto
-keepnames class io.glassfy.androidsdk.internal.network.model.PaddlePriceDto
-if class io.glassfy.androidsdk.internal.network.model.PaddlePriceDto
-keep class io.glassfy.androidsdk.internal.network.model.PaddlePriceDtoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.PermissionDto
-keepnames class io.glassfy.androidsdk.internal.network.model.PermissionDto
-if class io.glassfy.androidsdk.internal.network.model.PermissionDto
-keep class io.glassfy.androidsdk.internal.network.model.PermissionDtoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.PurchaseHistoryDto
-keepnames class io.glassfy.androidsdk.internal.network.model.PurchaseHistoryDto
-if class io.glassfy.androidsdk.internal.network.model.PurchaseHistoryDto
-keep class io.glassfy.androidsdk.internal.network.model.PurchaseHistoryDtoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.SkuDetailsParamsDto
-keepnames class io.glassfy.androidsdk.internal.network.model.SkuDetailsParamsDto
-if class io.glassfy.androidsdk.internal.network.model.SkuDetailsParamsDto
-keep class io.glassfy.androidsdk.internal.network.model.SkuDetailsParamsDtoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.SkuDto
-keepnames class io.glassfy.androidsdk.internal.network.model.SkuDto
-if class io.glassfy.androidsdk.internal.network.model.SkuDto
-keep class io.glassfy.androidsdk.internal.network.model.SkuDtoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.StoreInfoDto
-keepnames class io.glassfy.androidsdk.internal.network.model.StoreInfoDto
-if class io.glassfy.androidsdk.internal.network.model.StoreInfoDto
-keep class io.glassfy.androidsdk.internal.network.model.StoreInfoDtoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.UserPropertiesDto
-keepnames class io.glassfy.androidsdk.internal.network.model.UserPropertiesDto
-if class io.glassfy.androidsdk.internal.network.model.UserPropertiesDto
-keep class io.glassfy.androidsdk.internal.network.model.UserPropertiesDtoJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.request.ConnectRequest
-keepnames class io.glassfy.androidsdk.internal.network.model.request.ConnectRequest
-if class io.glassfy.androidsdk.internal.network.model.request.ConnectRequest
-keep class io.glassfy.androidsdk.internal.network.model.request.ConnectRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
-if class io.glassfy.androidsdk.internal.network.model.request.ConnectRequest
-keepnames class kotlin.jvm.internal.DefaultConstructorMarker
-if class io.glassfy.androidsdk.internal.network.model.request.ConnectRequest
-keepclassmembers class io.glassfy.androidsdk.internal.network.model.request.ConnectRequest {
    public synthetic <init>(java.lang.String,java.lang.Integer,java.lang.String,java.lang.Boolean,int,kotlin.jvm.internal.DefaultConstructorMarker);
}

-if class io.glassfy.androidsdk.internal.network.model.request.InitializeRequest
-keepnames class io.glassfy.androidsdk.internal.network.model.request.InitializeRequest
-if class io.glassfy.androidsdk.internal.network.model.request.InitializeRequest
-keep class io.glassfy.androidsdk.internal.network.model.request.InitializeRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.request.SkuDetailsRequest
-keepnames class io.glassfy.androidsdk.internal.network.model.request.SkuDetailsRequest
-if class io.glassfy.androidsdk.internal.network.model.request.SkuDetailsRequest
-keep class io.glassfy.androidsdk.internal.network.model.request.SkuDetailsRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.request.TokenRequest
-keepnames class io.glassfy.androidsdk.internal.network.model.request.TokenRequest
-if class io.glassfy.androidsdk.internal.network.model.request.TokenRequest
-keep class io.glassfy.androidsdk.internal.network.model.request.TokenRequestJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.response.ErrorResponse
-keepnames class io.glassfy.androidsdk.internal.network.model.response.ErrorResponse
-if class io.glassfy.androidsdk.internal.network.model.response.ErrorResponse
-keep class io.glassfy.androidsdk.internal.network.model.response.ErrorResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.response.InitializeResponse
-keepnames class io.glassfy.androidsdk.internal.network.model.response.InitializeResponse
-if class io.glassfy.androidsdk.internal.network.model.response.InitializeResponse
-keep class io.glassfy.androidsdk.internal.network.model.response.InitializeResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.response.LastSeenResponse
-keepnames class io.glassfy.androidsdk.internal.network.model.response.LastSeenResponse
-if class io.glassfy.androidsdk.internal.network.model.response.LastSeenResponse
-keep class io.glassfy.androidsdk.internal.network.model.response.LastSeenResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.response.OfferingsResponse
-keepnames class io.glassfy.androidsdk.internal.network.model.response.OfferingsResponse
-if class io.glassfy.androidsdk.internal.network.model.response.OfferingsResponse
-keep class io.glassfy.androidsdk.internal.network.model.response.OfferingsResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.response.PermissionsResponse
-keepnames class io.glassfy.androidsdk.internal.network.model.response.PermissionsResponse
-if class io.glassfy.androidsdk.internal.network.model.response.PermissionsResponse
-keep class io.glassfy.androidsdk.internal.network.model.response.PermissionsResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.response.PurchaseHistoryResponse
-keepnames class io.glassfy.androidsdk.internal.network.model.response.PurchaseHistoryResponse
-if class io.glassfy.androidsdk.internal.network.model.response.PurchaseHistoryResponse
-keep class io.glassfy.androidsdk.internal.network.model.response.PurchaseHistoryResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.response.SkuResponse
-keepnames class io.glassfy.androidsdk.internal.network.model.response.SkuResponse
-if class io.glassfy.androidsdk.internal.network.model.response.SkuResponse
-keep class io.glassfy.androidsdk.internal.network.model.response.SkuResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.response.StoresInfoResponse
-keepnames class io.glassfy.androidsdk.internal.network.model.response.StoresInfoResponse
-if class io.glassfy.androidsdk.internal.network.model.response.StoresInfoResponse
-keep class io.glassfy.androidsdk.internal.network.model.response.StoresInfoResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.response.TransactionResponse
-keepnames class io.glassfy.androidsdk.internal.network.model.response.TransactionResponse
-if class io.glassfy.androidsdk.internal.network.model.response.TransactionResponse
-keep class io.glassfy.androidsdk.internal.network.model.response.TransactionResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.internal.network.model.response.UserPropertiesResponse
-keepnames class io.glassfy.androidsdk.internal.network.model.response.UserPropertiesResponse
-if class io.glassfy.androidsdk.internal.network.model.response.UserPropertiesResponse
-keep class io.glassfy.androidsdk.internal.network.model.response.UserPropertiesResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.paywall.PaywallData
-keepnames class io.glassfy.androidsdk.paywall.PaywallData
-if class io.glassfy.androidsdk.paywall.PaywallData
-keep class io.glassfy.androidsdk.paywall.PaywallDataJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}

-if class io.glassfy.androidsdk.paywall.PaywallResponse
-keepnames class io.glassfy.androidsdk.paywall.PaywallResponse
-if class io.glassfy.androidsdk.paywall.PaywallResponse
-keep class io.glassfy.androidsdk.paywall.PaywallResponseJsonAdapter {
    public <init>(com.squareup.moshi.Moshi);
}
