-keepattributes LineNumberTable, SourceFile, RuntimeVisibleAnnotations

## Keep public API including enums
-keep class io.embrace.android.embracesdk.Embrace { *; }
-keep class io.embrace.android.embracesdk.network.http.HttpMethod { *; }
-keep class io.embrace.android.embracesdk.network.EmbraceNetworkRequest { *; }
-keep class io.embrace.android.embracesdk.Severity { *; }
-keep class io.embrace.android.embracesdk.LogType { *; }
-keep class io.embrace.android.embracesdk.LogExceptionType { *; }
-keep class io.embrace.android.embracesdk.spans.ErrorCode { *; }

## Keep classes used by hosted SDKs
-keep class io.embrace.android.embracesdk.Embrace$AppFramework { *; }
-keep class io.embrace.android.embracesdk.Embrace$LastRunEndState { *; }
-keep public class * implements io.embrace.android.embracesdk.internal.EmbraceInternalInterface { *; }

## Keep classes used from native code
-keep class io.embrace.android.embracesdk.internal.payload.NativeThreadAnrSample { *; }
-keep class io.embrace.android.embracesdk.internal.payload.NativeThreadAnrStackframe { *; }
-keep class io.embrace.android.embracesdk.internal.anr.sigquit.SigquitDataSource { *; }
-keep class io.embrace.android.embracesdk.internal.anr.sigquit.SigquitDataSourceImpl { *; }

## Keep classes with JNI calls to native code
-keep class io.embrace.android.embracesdk.internal.anr.ndk.NativeThreadSamplerNdkDelegate { *; }
-keep class io.embrace.android.embracesdk.internal.ndk.jni.JniDelegateImpl { *; }

## Keep gradle plugin hooks
-keep class io.embrace.android.embracesdk.internal.config.instrumented.** { *; }

## Keep internal files for tracing
-keep class io.embrace.android.embracesdk.internal.injection.** { *; }

## OpenTelemetry Java SDK
-keep class io.opentelemetry.api.trace.StatusCode { *; }
-dontwarn com.google.auto.value.extension.memoized.Memoized
-dontwarn io.opentelemetry.api.incubator.common.ExtendedAttributeKey
-dontwarn io.opentelemetry.api.incubator.common.ExtendedAttributes
-dontwarn io.opentelemetry.api.incubator.common.ExtendedAttributesBuilder
-dontwarn io.opentelemetry.api.incubator.logs.ExtendedLogRecordBuilder
-dontwarn io.opentelemetry.api.incubator.logs.ExtendedLogger
-dontwarn io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder
-dontwarn io.opentelemetry.api.incubator.trace.ExtendedTracer
-dontwarn io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram
-dontwarn io.opentelemetry.api.incubator.metrics.ExtendedLongHistogram

## Keep OkHttp class so we can fetch the version correctly via reflection.
-keep class okhttp3.OkHttp { *; }
-keep class okhttp3.OkHttpClient { *; }

## Annotations used by some dependencies (such as OTel, Protobuf and Moshi) and features (FCM capture) at compile time.
## No need to keep them for runtime.
-dontwarn com.google.auto.value.AutoValue
-dontwarn com.google.auto.value.AutoValue$CopyAnnotations
-dontwarn com.google.errorprone.annotations.MustBeClosed
-dontwarn com.google.firebase.messaging.RemoteMessage$Notification
-dontwarn com.google.firebase.messaging.RemoteMessage
