# Keep the main SDK entry point
-keep class co.datability.indixital.IndixitalSDK { *; }

# Keep public interfaces used for callbacks
-keep interface co.datability.indixital.event.subscriber.SubscriberResult { *; }
-keep interface co.datability.indixital.feature.deeplink.DeepLinkListener { *; }
-keep interface co.datability.indixital.feature.referrer.ReferrerListener { *; }

# Keep public result/data classes used in the callback interfaces
-keep class co.datability.indixital.feature.deeplink.DeepLinkResult { *; }
-keep class co.datability.indixital.feature.deeplink.DeepLinkResult$DeepLink { *; }
-keep class co.datability.indixital.feature.deeplink.DeepLinkResult$Status { *; }
-keep class co.datability.indixital.feature.deeplink.DeepLinkResult$Error { *; }

# Keep Kotlin metadata for data/enum classes (needed for reflection/serialization)
-keepattributes *Annotation*, InnerClasses, EnclosingMethod, Signature
-keepclassmembers class ** {
    @kotlin.Metadata *;
}

# Support external reflection-related classes used by SDK
-keep class com.android.installreferrer.api.InstallReferrerClient { *; }
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient { *; }

# Keep your package names intact for reflection or branding consistency
-keeppackagenames com.indixital.**