-keepclasseswithmembernames class * {
    native <methods>;
}
-keep class uniffi.netrunner_client.** { *; }

# Jackson находит @JsonCreator/@JsonProperty только через runtime-reflection —
# без сохранённых атрибутов аннотаций и параметров R8 может вырезать саму
# видимость аннотаций, даже если сами классы/поля ниже помечены -keep.
-keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod
-keep class com.fasterxml.jackson.** { *; }
-dontwarn com.fasterxml.jackson.**

-keep class app.netrunner.vpn.TunnelConfig {
    @com.fasterxml.jackson.annotation.JsonProperty <fields>;
    <init>(...);
    void set*(...);
    *** get*();
}

-keep class app.netrunner.vpn.TunVpnService { *; }
-keepnames class app.netrunner.vpn.TunVpnService { *; }
-keepnames class app.netrunner.vpn.TunnelConfig { *; }

# @InvokeArg-классы Tauri-плагина (VpnPlugin$VpnArgs, LaunchAppArgs) — тот же
# reflection-путь десериализации, что и у TunnelConfig; VpnArgs как раз и
# оборачивает TunnelConfig в реальном invoke-запросе.
-keep class app.netrunner.vpn.VpnPlugin$* { *; }

-keep class com.sun.jna.** { *; }
-dontwarn com.sun.jna.**