-dontwarn com.yandex.metrica.**

-keeppackagenames com.yandex.metrica*

-keep class com.yandex.metrica.impl.ob.** { *; }
-dontwarn com.yandex.metrica.impl.ob.**

-keep class com.yandex.metrica.impl.ac.** { *; }
-dontwarn com.yandex.metrica.impl.ac.**

-keep class com.android.installreferrer.api.* { *; }
-dontwarn com.android.installreferrer.api.*

-keep class com.google.protobuf.nano.ym.* {
    *;
}

# Important Yandex Metrica classes
-keep class com.yandex.metrica.CounterConfiguration
-keep public class com.yandex.metrica.MetricaService
-keep public class com.yandex.metrica.MetricaEventHandler

# Yandex Metrica API
-keep public class com.yandex.metrica.YandexMetrica {
	public <methods>;
}

-keep public class com.yandex.metrica.YandexMetricaDefaultValues* {
    public static final *;
}

-keep public interface com.yandex.metrica.IReporter {
    public <methods>;
}

-keep public interface com.yandex.metrica.DeferredDeeplinkParametersListener {
    public <methods>;
}

-keep public class com.yandex.metrica.AppMetricaDeviceIDListener** {
    *;
}

-keep enum com.yandex.metrica.DeferredDeeplinkParametersListener$Error {
    *;
}

-keep public class com.yandex.metrica.IIdentifierCallback** {
    *;
}

-keep public class com.yandex.metrica.YandexMetricaConfig* {
    public <methods>;
    public <fields>;
}

-keep public class com.yandex.metrica.ReporterConfig* {
    public <methods>;
    public <fields>;
}

# Bridge
-keep class com.yandex.metrica.p {
    <methods>;
}

-keep class com.yandex.metrica.h {
    <methods>;
}

-keep public class com.yandex.metrica.impl.interact.* {
    public *;
}

# Non Metrica classes
-keepattributes *Annotation*

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.content.Context {
   public void *(android.view.View);
   public void *(android.view.MenuItem);
}

# To keep the interface by AIDL.
-keepclasseswithmembernames class * implements android.os.IInterface {
    public <methods>;
}

# Preserve all native method names and the names of their classes.
-keepclasseswithmembernames class * {
    native <methods>;
}

# Keep classes that are referenced on the AndroidManifest.
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.Service
-keep public class * implements android.os.IInterface
-keep public class * extends android.content.BroadcastReceiver

-keepclassmembernames class * {
    java.lang.Class class$(java.lang.String);
    java.lang.Class class$(java.lang.String, boolean);
}