# VirtuesDimens SDPS / HDP / WDP — consumer ProGuard / R8 rules
# Merged into apps that depend on this library when minifyEnabled is true.
# Covers R8 default and full mode (android.enableR8.fullMode=true).

# --- Enums in the public API (Java Enum.valueOf / values + constants) ---
-keepclassmembers enum com.virtues.dimens.app.common.** {
    <fields>;
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

# --- Kotlin objects exposed to Java via @JvmStatic ---
-keep class com.virtues.dimens.app.code.DimenSdp { *; }
-keep class com.virtues.dimens.app.code.DimenSsp { *; }
-keep class com.virtues.dimens.app.code.DimenPhysicalUnits { *; }
-keep class com.virtues.dimens.app.compose.DimenPhysicalUnits { *; }

# --- Aspect-ratio factor cache + dimen ID cache (reachable from *a / resolve paths) ---
-keep class com.virtues.dimens.app.core.VirtuesDimensSdpsFactors { *; }
-keep class com.virtues.dimens.app.core.DimenResourceIdCache { *; }

# --- DimenScaled / ScaledSp builders (code + Compose packages) ---
-keep class com.virtues.dimens.app.code.DimenScaled { *; }
-keep class com.virtues.dimens.app.compose.DimenScaled { *; }
-keep class com.virtues.dimens.app.code.ScaledSp { *; }
-keep class com.virtues.dimens.app.compose.ScaledSp { *; }

# --- Data classes used by the builder API ---
-keep class com.virtues.dimens.app.common.DpQualifierEntry { *; }
-keep class com.virtues.dimens.app.code.CustomDpEntry { *; }
-keep class com.virtues.dimens.app.compose.CustomDpEntry { *; }
-keep class com.virtues.dimens.app.code.CustomSpEntry { *; }
-keep class com.virtues.dimens.app.compose.CustomSpEntry { *; }

# Dynamic dimen lookup uses Resources.getIdentifier; resource shrinking is handled via
# res/raw/keep.xml (tools:keep) packaged in this AAR.
