-ignorewarnings
-keep class com.bytedance.sdk.** { *; }
-keep class com.bytedance.adsdk.** { *; }
-keep class com.bytedance.mobsec.** { *; }
-keep class com.bytedance.applog.** { *; }
-keep class com.apm.insight.** { *; }
-keep class com.bykv.vk.openvk.component.** { *; }
-keep class com.com.bytedance.overseas.sdk.** { *; }
-keep class ms.bd.o.Pgl.** { *; }
-keep class com.bykv.vk.openvk.preload.**{*;}
-keep class com.iab.omid.library.bytedance2.**{*;}
-keep class com.pgl.ssdk.**{*;}
-keep class com.inmobi.media.**{*;}
-keep class com.vungle.ads.internal.**{*;}
-keep class com.bytedance.sdk.openadsdk.core.**{*;}
-keep class com.applovin.sdk.**{*;}
-keep public class com.bytedance.sdk.openadsdk.core.act.ActServiceConnection{*;}
-keep public class com.bytedance.sdk.openadsdk.core.act.AdActAction$*{*;}
-dontskipnonpubliclibraryclassmembers
-keep,allowobfuscation @interface androidx.annotation.Keep

-keep @androidx.annotation.Keep class *
-keepclassmembers class * {
    @androidx.annotation.Keep *;
}

-keep class com.bykv.vk.openvk.preload.**{*;}

-dontskipnonpubliclibraryclassmembers
-keep,allowobfuscation @interface androidx.annotation.Keep

-keep @androidx.annotation.Keep class *
-keepclassmembers class * {
    @androidx.annotation.Keep *;
}

-keep class com.bykv.vk.openvk.preload.**{*;}


# Appodeal SDK fix proguard rules
# Kotlin enum ExceptionInInitializerError on gradle plugin 4.x.x
# https://appodeal.atlassian.net/browse/SDK-4557
-keepclassmembers class **$WhenMappings {
    <fields>;
}
-keep class io.pubstar.mobile.core.base.BaseAd$CacheListener$DefaultImpls { *; }
-keepclassmembers class io.pubstar.mobile.core.utils.LogUtils {
    public static ** INSTANCE;
}
# ============================================
# PubStar Adapter Classes - Keep for Reflection
# ============================================
# Keep all adapter classes that are loaded via Class.forName() in AdapterRegistry
# These classes are dynamically loaded using reflection, so they must be kept

# Core adapter interface and classes
-keep interface io.pubstar.mobile.core.adapter.PubstarAdapterFactory { *; }
-keep class io.pubstar.mobile.core.adapter.PubstarAdapterFactory { *; }
-keep class io.pubstar.mobile.core.adapter.PubstarAdapterConfig { *; }
-keep class io.pubstar.mobile.core.adapter.AdapterCreateAdParam { *; }
-keep class io.pubstar.mobile.core.adapter.AdapterRegistry { *; }
-keep class io.pubstar.mobile.core.adapter.AdapterController { *; }

# Keep all adapter classes (loaded via reflection)
-keep class io.pubstar.mobile.adapter.prebid.PubStarPrebidAdapter { *; }
-keep class io.pubstar.mobile.adapter.prebid.PrebidAdProvider { *; }
-keep class io.pubstar.mobile.adapter.ortb.PubStarORTBAdapter { *; }
-keep class io.pubstar.mobile.adapter.ortb.ORTBAdProvider { *; }
-keep class io.pubstar.mobile.adapter.direct.PubStarDirectAdapter { *; }
-keep class io.pubstar.mobile.adapter.direct.PubStarAdProvider { *; }
-keep class io.pubstar.mobile.adapter.google.PubStarGoogleAdapter { *; }
-keep class io.pubstar.mobile.adapter.google.GoogleAdmobProvider { *; }
-keep class io.pubstar.mobile.adapter.applovin.PubStarAppLovinAdapter { *; }
-keep class io.pubstar.mobile.adapter.applovin.AppLovinAdProvider { *; }

# Keep optional adapter classes (from separate modules)
-keep class io.pubstar.pangle.adapter.PubStarPangleAdapter { *; }
-keep class io.pubstar.inmobi.adapter.PubStarInMobiAdapter { *; }
-keep class io.pubstar.vungle.adapter.PubStarVungleAdapter { *; }
-keep class io.pubstar.mintegral.adapter.PubStarMintegralAdapter { *; }
-keep class io.pubstar.unity.adapter.PubStarUnityAdapter { *; }
-keep class io.pubstar.appodeal.adapter.PubStarAppodealAdapter { *; }
-keep class io.pubstar.yandex.adapter.PubStarYandexAdapter { *; }
-keep class io.pubstar.facebook.adapter.PubStarFacebookAdapter { *; }
-keep class io.pubstar.offerwall.adapter.PubStarOfferWallAdapter { *; }

# Keep companion objects and getInstance methods (used for singleton pattern)
-keepclassmembers class * implements io.pubstar.mobile.core.adapter.PubstarAdapterFactory {
    <fields>;
    <methods>;
}

# Keep constructors for adapter classes (needed for reflection instantiation)
-keepclassmembers class * implements io.pubstar.mobile.core.adapter.PubstarAdapterFactory {
    <init>(io.pubstar.mobile.core.adapter.PubstarAdapterConfig);
}

-keepclassmembers class io.pubstar.mobile.core.api.PubStarAd {
    public static *** getScopeMain(...);
    public static *** getScopeBackground(...);
}

-keep class io.pubstar.mobile.core.api.PubStarAd$Companion {
    *** getScopeMain(...);
    *** getScopeBackground(...);
}