#PGW
-keep class com.ccpp.pgw.sdk.android.** { *; }
-keepnames class com.ccpp.pgw.sdk.android.* { *; }
-keepnames interface com.ccpp.pgw.sdk.android.* { *; }

#PGWUI
-dontwarn io.flutter.embedding.android.FlutterActivity$CachedEngineIntentBuilder
-dontwarn io.flutter.embedding.android.FlutterActivity
-dontwarn io.flutter.embedding.engine.FlutterEngine
-dontwarn io.flutter.embedding.engine.FlutterEngineCache
-dontwarn io.flutter.embedding.engine.dart.DartExecutor$DartEntrypoint
-dontwarn io.flutter.embedding.engine.dart.DartExecutor
-dontwarn io.flutter.plugin.common.BinaryMessenger
-dontwarn io.flutter.plugin.common.MethodCall
-dontwarn io.flutter.plugin.common.MethodChannel$MethodCallHandler
-dontwarn io.flutter.plugin.common.MethodChannel$Result
-dontwarn io.flutter.plugin.common.MethodChannel

#BouncyCastle
-keep class org.bouncycastle.** { *; }
-keepnames class org.bouncycastle.** { *; }
-keepnames interface org.bouncycastle.* { *; }
-dontwarn org.bouncycastle.**

#Kotlin-serialization
-if @kotlinx.serialization.Serializable class **
-keepclassmembers class <1> {
    static <1>$Companion Companion;
}

-if @kotlinx.serialization.Serializable class ** {
    static **$* *;
}
-keepclassmembers class <2>$<3> {
    kotlinx.serialization.KSerializer serializer(...);
}

-if @kotlinx.serialization.Serializable class ** {
    public static ** INSTANCE;
}
-keepclassmembers class <1> {
    public static <1> INSTANCE;
    kotlinx.serialization.KSerializer serializer(...);
}

-keepattributes RuntimeVisibleAnnotations,AnnotationDefault
-dontnote kotlinx.serialization.**
-dontwarn kotlinx.serialization.internal.ClassValueReferences

#Kotlin-parcelize
-keep @kotlinx.parcelize.Parcelize public class *
-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

#Androidx-preference
-keep public class androidx.preference.Preference {
    public <init>(android.content.Context, android.util.AttributeSet);
}
-keep public class * extends androidx.preference.Preference {
    public <init>(android.content.Context, android.util.AttributeSet);
}

#SecurePay
-keep class com.ccpp.pgw.sdk.android.securepay.** { *; }

#BouncyCastle
-keep class org.bouncycastle.** { *; }
-keepnames class org.bouncycastle.** { *; }
-keepnames interface org.bouncycastle.* { *; }
-dontwarn org.bouncycastle.**

#SecurePay
-keep class com.ccpp.pgw.sdk.android.securepay.** { *; }

#BouncyCastle
-keep class org.bouncycastle.** { *; }
-keepnames class org.bouncycastle.** { *; }
-keepnames interface org.bouncycastle.* { *; }
-dontwarn org.bouncycastle.**
