# ── QTrust Scanner consumer rules ──────────────────────────────────────────
# Bundled in the AAR. Applied during the CONSUMER app's R8 pass so the public
# SDK surface and serialized models survive shrinking/obfuscation.

# Public API surface — consumers reference these directly.
-keep public class id.qtrust.scanner.Scanner { public *; }
-keep public class id.qtrust.scanner.ScannerConfig { public *; }
-keep public class id.qtrust.scanner.VendorConfig { public *; }
-keep public class id.qtrust.scanner.ScannerView { public *; }
-keep public class id.qtrust.scanner.ScannerError { public *; }
-keep public class id.qtrust.scanner.ScannerError$* { public *; }

# Public enums (also reached by serialization / int value lookups).
-keep public enum id.qtrust.scanner.ScanType { *; }
-keep public enum id.qtrust.scanner.ScannerTheme { *; }
-keep public enum id.qtrust.scanner.ScannerLocale { *; }

# JavascriptInterface methods — invoked reflectively from the WebView JS.
-keepclassmembers class id.qtrust.scanner.internal.ScannerBridge {
    @android.webkit.JavascriptInterface <methods>;
}

# ── kotlinx.serialization ───────────────────────────────────────────────────
# Keep @Serializable models and their generated serializers.
-keep class id.qtrust.scanner.ScanResult { *; }
-keep class id.qtrust.scanner.BoundingBox { *; }
-keepclassmembers class id.qtrust.scanner.** {
    *** Companion;
}
-keepclasseswithmembers class id.qtrust.scanner.** {
    kotlinx.serialization.KSerializer serializer(...);
}
-if @kotlinx.serialization.Serializable class id.qtrust.scanner.**
-keepclassmembers class id.qtrust.scanner.<1>$$serializer {
    *** INSTANCE;
}
