-keep public class com.amplitude.android.sessionreplay.** { *; }
-keep public class com.amplitude.android.sessionreplay.internal.** { *; }
-keep class kotlin.Metadata
-keep public class com.amplitude.android.sessionreplay.compose.ModifiersKt { *; }

-keepclassmembers,allowobfuscation class * {
    @com.google.gson.annotations.SerializedName <fields>;
}

-keep class androidx.compose.ui.platform.AndroidComposeView { *; }
-keep class androidx.compose.ui.platform.ComposeView { *; }
-keep class androidx.compose.ui.graphics.Canvas { *; }
-keep class androidx.core.graphics.Insets { *; }
-keep class androidx.compose.ui.node.LayoutNode { *; }
-keep class androidx.compose.ui.node.NodeChain { *; }
-keep class androidx.compose.ui.node.BackwardsCompatNode { *; }

# Keep LogcatLogger implementation for session replay
-keep class com.amplitude.android.sessionreplay.LogcatLogger { *; }
-keep class com.amplitude.android.sessionreplay.LogcatLogger$Companion { *; }

# Keep CoreTextFieldSemanticsModifier and its imeOptions property
-keep class androidx.compose.foundation.text.input.internal.CoreTextFieldSemanticsModifier {
    androidx.compose.ui.text.input.ImeOptions imeOptions;
}

# Keep the ImeOptions class that imeOptions references
-keep class androidx.compose.ui.text.input.ImeOptions { *; }

# Keep Owner class, used by AndroidComposeViewUtils
-keep class androidx.compose.ui.node.Owner { *; }

-keep class dev.chrisbanes.haze.HazeEffectNode
-keep class dev.chrisbanes.haze.HazeSourceNode

# Keep BrowserEvent class and its no-argument constructor
-keep class com.amplitude.android.internal.webview.BrowserEvent { *; }

# Keep WebView classes for better error messages
# Keep only the WebView communication callback function
-keepclassmembers class com.amplitude.android.internal.webview.WebViewData {
    # Callback method referenced via ::handleWebViewEvent in setMessageCallback
    public void handleWebViewEvent(java.lang.String);
}
