-keep public class com.microblink.security.Crypto {
    public *;
    protected *;
}

-keep public class com.microblink.security.License {
    public *;
    protected *;
}

# Keep the companion object *class names* alongside the two classes above. Each rule keeps the
# public `Companion` field but not the nested class it points at, so R8 renames the class and
# rewrites kotlin.Metadata to the new name while the field keeps the old one — a Kotlin consumer
# that touches `Crypto.Companion` / `License.Companion` then compiles clean and fails at runtime
# with NoSuchFieldError. Only `NONE` lives in these companions and @JvmField hoists it onto the
# outer class, so nothing reachable trips today; these keep the shape sound as members are added.
-keep public class com.microblink.security.Crypto$Companion {
    public *;
    protected *;
}

-keep public class com.microblink.security.License$Companion {
    public *;
    protected *;
}

-keep public class com.microblink.security.LicenseInfo {
    public *;
    protected *;
}

-keep public class com.microblink.security.LicenseStateManager {
    public *;
    protected *;
}

-keep public class com.microblink.security.LicenseStateManager$Factory {
    public *;
    protected *;
}

-keep public class com.microblink.security.LicenseType {
    *;
}

-keep public class com.microblink.security.internal.LicenseStateInitializer {
    *;
}

-keep interface com.microblink.security.SecureStorage {
	*;
}