# ===================================================================
# Daro SDK Consumer ProGuard Rules
# ===================================================================
# These rules are automatically applied to apps using this SDK.
# App developers can override these rules in their own proguard-rules.pro
# ===================================================================

# -------------------------------------------------------------------
# Daro SDK Public API
# -------------------------------------------------------------------

# Entry Point
-keep public class droom.daro.a.Daro { public *; }

# Listeners (all public interfaces)
-keep public interface droom.daro.core.listener.** { *; }

# Ad Units (all public)
-keep public class droom.daro.core.adunit.** { *; }

# Loaders (public API)
-keep public class droom.daro.loader.** {
    public protected *;
}

# Models - Public classes only (excludes internal like AdUnitInfo)
-keep public class droom.daro.core.model.DaroAd { *; }
-keep public class droom.daro.core.model.DaroAd$* { *; }
-keep public class droom.daro.core.model.DaroViewAd { *; }
-keep public class droom.daro.core.model.DaroInterstitialAd { *; }
-keep public class droom.daro.core.model.DaroAppOpenAd { *; }
-keep public class droom.daro.core.model.DaroRewardedAd { *; }
-keep public class droom.daro.core.model.DaroLightPopupAd { *; }
-keep public class droom.daro.core.model.DaroNativeAd { *; }
-keep public class droom.daro.core.model.DaroAdInfo { *; }
-keep public class droom.daro.core.model.DaroAdLoadError { *; }
-keep public class droom.daro.core.model.DaroAdDisplayFailError { *; }
-keep public class droom.daro.core.model.DaroNativeAdBinder { *; }
-keep public class droom.daro.core.model.DaroNativeAdBinder$* { *; }
-keep public class droom.daro.core.model.DaroBannerSize { *; }
-keep public class droom.daro.core.model.DaroMediationType { *; }
-keep public class droom.daro.core.model.DaroNativeAdChoicePlacement { *; }
-keep public class droom.daro.core.model.DaroLightPopupAdOptions { *; }
-keep public class droom.daro.core.model.nativetemplate.** { *; }

# -------------------------------------------------------------------
# Ad Network SDKs
# -------------------------------------------------------------------

# Pangle (ByteDance)
-keep class com.bytedance.sdk.** { *; }

# Verve (PubNative)
-keepattributes Signature
-keep class net.pubnative.** { *; }
-keep class com.iab.omid.library.pubnativenet.** { *; }

# Amazon APS
-keep class com.amazon.** { *; }
-keep public class com.google.android.gms.ads.** { public *; }
-keep class com.iabtcf.** { *; }

# IronSource
-keepclassmembers class * implements android.os.Parcelable {
    public static final android.os.Parcelable$Creator *;
}
-keep class com.ironsource.adapters.** { *; }
-dontwarn com.ironsource.**
-dontwarn com.ironsource.adapters.**
-keepclassmembers class com.ironsource.** { public *; }
-keep public class com.ironsource.**
-keep class com.ironsource.adapters.** { *; }

# IronSource - AppLovin integration
-keepclassmembers class com.applovin.sdk.AppLovinSdk { static *; }
-keep public interface com.applovin.sdk.** { *; }
-keep public interface com.applovin.adview.** { *; }
-keep public interface com.applovin.mediation.** { *; }
-keep public interface com.applovin.communicator.** { *; }

# IronSource - AndroidX
-keep class androidx.localbroadcastmanager.content.LocalBroadcastManager { *; }
-keep class androidx.recyclerview.widget.RecyclerView { *; }
-keep class androidx.recyclerview.widget.RecyclerView$OnScrollListener { *; }

# IronSource - Android
-keep class * extends android.app.Activity

# -------------------------------------------------------------------
# Internal Dependencies (Reflection-based)
# -------------------------------------------------------------------

# Room Database - Entity classes for reflection
-keep class droom.daro.core.data.database.*Entity { *; }
-keep class droom.daro.core.data.database.*Database { *; }

# Retrofit
-keep,allowobfuscation,allowshrinking interface retrofit2.Call
-keep,allowobfuscation,allowshrinking class retrofit2.Response

# Gson
-keepattributes Signature
-keepattributes *Annotation*
-dontwarn sun.misc.**
-keep class com.google.gson.** { *; }
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

# Kotlin Coroutines
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
