# Vable Android Library — Consumer ProGuard Rules
# Automatically merged into any consuming app's R8/ProGuard config.
# Tells the app's R8 pass what to preserve from this library.

# Main SDK entry point
-keep class ai.vable.mobile.Vable { public *; }
-keepclassmembers class ai.vable.mobile.Vable$Companion { public *; }

# Public callback interface
-keep interface ai.vable.mobile.VableEventCallback { *; }

# Public enum
-keep enum ai.vable.mobile.ClientType {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    *;
}

# Public data models
-keep class ai.vable.mobile.FlutterRoute { *; }
-keep class ai.vable.mobile.Intent { *; }
-keep class ai.vable.mobile.IntentParameterDefinition { *; }
-keep class ai.vable.mobile.IntentState { *; }
-keep class ai.vable.mobile.IntentPrompt { *; }
-keep class ai.vable.mobile.ContextUpdate { *; }
-keep class ai.vable.mobile.VoiceChatManager$VoiceChatConfig { *; }

# Logger — used directly by the Flutter plugin
-keep class ai.vable.mobile.Logger { *; }
-keep class ai.vable.mobile.Logger$LoggerInstance { *; }

# WebRTC JNI bridge — class names are hardcoded in native code
-keep class org.webrtc.** { *; }
-keep class io.getstream.webrtc.** { *; }
-dontwarn org.webrtc.**
-dontwarn io.getstream.webrtc.**

# NATS client
-keep class io.nats.client.** { *; }
-dontwarn io.nats.**

# BouncyCastle (transitive from jnats)
-keep class org.bouncycastle.** { *; }
-dontwarn org.bouncycastle.**

# Kotlin metadata
-keepattributes *Annotation*
-keepattributes Signature
-keep class kotlin.Metadata { *; }