# Preserve all native method names and the classes that declare them.
-keepclasseswithmembernames, includedescriptorclasses class * {
    native <methods>;
}

# BugseeDetectionCrashNdkNative — JNI methods registered dynamically via
# JNI_OnLoad. The class and native method names must survive obfuscation.
-keep class com.bugsee.library.ndk.detection.BugseeDetectionCrashNdkNative {
    native <methods>;
}

# BugseeCrashpadMain — invoked by /system/bin/app_process at crash time via
# Crashpad's StartJavaHandlerAtCrash, using the literal fully-qualified
# class name "com.bugsee.library.BugseeCrashpadMain". The class name and
# the main/crashpadMain signatures must not be obfuscated.
-keep class com.bugsee.library.BugseeCrashpadMain {
    public static void main(java.lang.String[]);
    private static native int crashpadMain(java.lang.String[]);
}

# BugseeNdk facade — public API surface.
-keep class com.bugsee.library.BugseeNdk {
    public *;
}

# BugseeNdkInitProvider — registered in the manifest and instantiated by
# Android's ContentProvider machinery.
-keep class com.bugsee.library.BugseeNdkInitProvider { *; }

# Ndk contract interface — facade implements it; consumers fetch it via
# Bugsee.ext(Ndk.class).
-keep interface com.bugsee.library.ndk.contracts.extensions.Ndk { *; }
