# ProGuard rules applied to customer apps that depend on this SDK.
# Keeping these minimal — most of the SDK is fine to obfuscate.

# Public facade + configuration types must survive obfuscation —
# customers reference them by name.
-keep class com.foctta.sdk.FOCTTA { *; }
-keep class com.foctta.sdk.Configuration { *; }
-keep class com.foctta.sdk.Environment { *; }

# Models — kotlinx.serialization needs the class names preserved for
# serializer lookup. The serialization plugin's default rules handle
# this, but we keep model classes explicitly to be safe.
-keep,allowobfuscation @kotlinx.serialization.Serializable class com.foctta.sdk.models.** { *; }
-keepclassmembers class com.foctta.sdk.models.** {
    *** Companion;
}
-keepclasseswithmembers class com.foctta.sdk.models.** {
    kotlinx.serialization.KSerializer serializer(...);
}

# Exception types — customers catch these, so names must survive.
-keep public class com.foctta.sdk.network.FocttaException { *; }
-keep public class com.foctta.sdk.network.FocttaException$* { *; }
