# ============================================================================
# BlinkReceipt Camera Module - Consumer ProGuard Rules
# ============================================================================
# These rules protect the camera module when used by consuming applications

# ============================================================================
# CameraX Framework Protection
# ============================================================================

# Keep CameraX callback interfaces (used via reflection by CameraX)
-keep class * implements androidx.camera.core.ImageAnalysis$Analyzer {
    public <methods>;
}

-keep class * extends androidx.camera.core.ImageCapture$OnImageCapturedCallback {
    public <methods>;
}

# ============================================================================
# Camera Frame Data Classes
# ============================================================================

# Keep all camera frame classes and their public members
-keep class com.microblink.camera.CameraFrame { *; }
-keep class com.microblink.camera.CameraAnalysisFrame { *; }
-keep class com.microblink.camera.CameraCaptureFrame { *; }

# ============================================================================
# Frame Conversion Utilities
# ============================================================================

# Keep utility extension functions for ImageProxy conversion
-keep class com.microblink.camera.internal.UtilsKt {
    public static com.microblink.camera.CameraAnalysisFrame toCameraAnalysisFrame(androidx.camera.core.ImageProxy);
    public static com.microblink.camera.CameraCaptureFrame toCameraCaptureFrame(androidx.camera.core.ImageProxy);
}

# ============================================================================
# Orientation Enum (accessed from native code)
# ============================================================================

# Keep orientation enum and its native-accessed method
-keep class com.microblink.camera.Orientation {
    public static com.microblink.camera.Orientation fromInt(int);
    public <methods>;
    public <fields>;
}

# ============================================================================
# Public Camera API
# ============================================================================

# Keep all public classes and methods that form the API
-keep public class com.microblink.camera.** {
    public <methods>;
    public <fields>;
}

# ============================================================================
# CameraView Abstract Methods
# ============================================================================

# Keep abstract methods that must be implemented by consumers
-keep class com.microblink.camera.CameraView {
    public abstract <methods>;
}

# ============================================================================
# Debugging Support
# ============================================================================

# Keep source file names and line numbers for better crash reports
-keepattributes SourceFile,LineNumberTable

# Keep parameter names for better debugging
-keepattributes MethodParameters

# Guava R8/Pro-guard
-dontwarn java.lang.reflect.AnnotatedType
