# =============================================================================
# ComplyCube SDK — consumer ProGuard/R8 rules
# =============================================================================
# These rules are applied by every app that depends on the ComplyCube SDK AAR.
# They must protect every type listed in the Binary Compatibility Validator
# dumps (api/sdk.api, api/sdk-nonNfc.api) from being stripped or obfuscated
# in the consumer's release build.
#
# To audit alignment with the .api surface, run:
#     python3 sdk/scripts/audit_consumer_rules.py
# The script will list any public type from .api that is not covered by a
# -keep rule below. CI should fail on uncovered types.
#
# When you change the public API (adding/removing a public class or member):
#   1. Run `./gradlew apiDump` to refresh api/*.api
#   2. Re-run the audit script
#   3. If it reports gaps, add targeted -keep rules here
# =============================================================================


# -----------------------------------------------------------------------------
# Public API surface
# -----------------------------------------------------------------------------
# Per-type -keep rules for every public type in the BCV .api surface are
# generated into the fenced block at the bottom of this file by
# `sdk/scripts/generate_consumer_rules.py`. We deliberately do NOT blanket-keep
# the entire `com.complycube.sdk` namespace: that forced consumers to retain ~1,900
# internal SDK classes. Keeping only the .api types lets client apps shrink and
# obfuscate the SDK internals while every public type stays protected.
#
# The audit script (audit_consumer_rules.py) fails if any .api type is left
# uncovered or if a namespace blanket is reintroduced.


# -----------------------------------------------------------------------------
# kotlinx.serialization
# -----------------------------------------------------------------------------
# SDK models annotated with @Serializable rely on companion-based serializer
# lookup. Without these rules R8 can strip the synthetic Companion / $serializer
# members even though the enclosing class is kept, causing SerializationException
# at runtime in the consumer app.

# Keep `Companion` object fields of serializable classes.
-if @kotlinx.serialization.Serializable class **
-keepclassmembers class <1> {
    static <1>$Companion Companion;
}

# Keep `serializer()` on companion objects (default and named) of serializable classes.
-if @kotlinx.serialization.Serializable class ** {
    static **$* *;
}
-keepclassmembers class <2>$<3> {
    kotlinx.serialization.KSerializer serializer(...);
}

# Keep `INSTANCE.serializer()` on serializable `object` declarations.
-if @kotlinx.serialization.Serializable class ** {
    public static ** INSTANCE;
}
-keepclassmembers class <1> {
    public static <1> INSTANCE;
    kotlinx.serialization.KSerializer serializer(...);
}

# CUBE-1074 (https://complycube.atlassian.net/browse/CUBE-1074): the SDK ships already-minified,
# so a consumer app runs a SECOND R8 pass over it. That flattens each @Serializable model's nested
# $Companion to a top-level class and renames its reflectively-invoked serializer() factory, which
# breaks kotlinx's runtime serializer(KType) lookup ("Serializer for class '<obf>' is not found")
# on the first API call. The two rules below keep internal @Serializable DTOs (absent from the .api
# keep block) and their serializer() factory intact. Annotation-/member-scoped, not a namespace
# blanket, so audit_consumer_rules.py stays green.
-keep @kotlinx.serialization.Serializable class com.complycube.sdk.** { *; }
-keepclassmembers class ** {
    kotlinx.serialization.KSerializer serializer(...);
}


# -----------------------------------------------------------------------------
# Gson reflective TypeToken usage
# -----------------------------------------------------------------------------
# Some SDK code paths deserialize generic types through Gson's TypeToken.
# Anonymous TypeToken subclasses must retain their generic signature.
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken**
-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken**
-keepattributes Signature


# -----------------------------------------------------------------------------
# Annotations on the public API
# -----------------------------------------------------------------------------
# Compose uses invisible runtime annotations (@Composable, @Stable, @Immutable)
# for behavioural guarantees; strip them and the consumer's Compose compiler
# output can diverge from the SDK's. Visible annotations are kept for any
# reflective framework the consumer may plug in.
-keepattributes RuntimeVisibleAnnotations
-keepattributes RuntimeInvisibleAnnotations
-keepattributes AnnotationDefault
-keepattributes InnerClasses
-keepattributes EnclosingMethod


# -----------------------------------------------------------------------------
# Third-party warnings surfaced through the SDK classpath
# -----------------------------------------------------------------------------
# These come from optional transitive dependencies (Regula NFC reader,
# BouncyCastle) that are only reachable in specific flavors. Silence the
# warnings so consumer builds don't fail on -dontwarn-less setups.
-dontwarn com.regula.documentreader.api.errors.DocumentReaderException
-dontwarn com.regula.documentreader.api.params.rfid.PKDCertificate
-dontwarn com.regula.documentreader.api.results.DocumentReaderResults
-dontwarn org.bouncycastle.**
-keep class org.bouncycastle.** { *; }

# -----------------------------------------------------------------------------
# Optional nfc-plugin artifact (resolved by literal name, not compile-time API)
# -----------------------------------------------------------------------------
# common/Utils.kt#nfcPluginAvailable() gates the whole NFC capability on
# Class.forName("com.complycube.sdk.nfc_plugin.NfcCallback"). That class ships
# in the separate, optional `com.complycube:nfc-plugin` artifact, shares our
# package prefix, but isn't part of the public .api surface, so the generated
# per-type keeps below don't cover it. It's still referenced by real code in
# the nfc flavor, so R8 won't strip it — but without keeping its name, R8 can
# rename it and the Class.forName lookup silently fails, disabling NFC.
-keepnames class com.complycube.sdk.nfc_plugin.NfcCallback

# -----------------------------------------------------------------------------
# MediaPipe Tasks (face landmarker) + protobuf-javalite
# -----------------------------------------------------------------------------
# Neither dependency ships consumer rules of its own: the tasks-vision /
# tasks-core AARs contain no proguard.txt, and protobuf-javalite's jar carries
# no META-INF/proguard/ rules. Both are `implementation` dependencies of the
# SDK, so they are shrunk in the CONSUMER's R8 run (full mode by default on
# AGP 8) — a build we never execute — not in the SDK's own minified release.
#
# libmediapipe_tasks_jni resolves framework/tasks classes and methods by name
# through JNI (FindClass / GetMethodID) and registers proto types by name via
# ProtoUtil, none of which R8 can trace, so unreferenced-looking members get
# stripped or renamed and the selfie challenge dies only in the integrator's
# release build. Kept as the whole namespace deliberately: the JNI string
# table is Google's private implementation detail, and enumerating it would
# break silently on any MediaPipe upgrade.
-keep class com.google.mediapipe.** { *; }

# The blanket keep above retains members whose SIGNATURES reference proto
# classes MediaPipe compiles against but does not ship in tasks-core (e.g.
# com.google.mediapipe.proto.CalculatorProfileProto referenced from
# GraphProfiler). Before the keep, R8 shrank those unreferenced members away;
# with it, R8 full mode fails the CONSUMER's build on the dangling references.
# The affected members are never called at runtime — same load-if-present
# handling as the BouncyCastle pair above.
-dontwarn com.google.mediapipe.**

# protobuf-javalite parses each message's field layout reflectively from
# GeneratedMessageLite field metadata (the documented rule from the protobuf
# project for R8 full mode). Without it, MediaPipe's option/result protos lose
# their fields and decoding fails at runtime.
-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite {
    <fields>;
}

# >>> BEGIN GENERATED KEEP RULES (api/*.api) - do not edit by hand >>>
-keep class com.complycube.sdk.BuildConfig { *; }
-keep class com.complycube.sdk.ComplyCubeSdk { *; }
-keep class com.complycube.sdk.ComplyCubeSdk$Builder { *; }
-keep class com.complycube.sdk.ComplyCubeSdk$SdkResultContract { *; }
-keep class com.complycube.sdk.ComplyCubeSdkBuilder { *; }
-keep class com.complycube.sdk.R { *; }
-keep class com.complycube.sdk.R$drawable { *; }
-keep class com.complycube.sdk.R$font { *; }
-keep class com.complycube.sdk.R$raw { *; }
-keep class com.complycube.sdk.R$string { *; }
-keep class com.complycube.sdk.analytics.service.AnalyticsEvent { *; }
-keep class com.complycube.sdk.common.data.ClientAuth { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$BiometricStageCount { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$BiometricStageCount$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$Companion { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$Connectivity { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$Connectivity$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$DocumentMandatory { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$DocumentMandatory$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$ExpiredToken { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$ExpiredToken$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$FlowError { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$FlowError$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$InvalidCountryCode { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$InvalidCountryCode$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$InvalidWorkflowId { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$InvalidWorkflowId$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$JailBroken { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$JailBroken$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$NoDiskAccess { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$NoDiskAccess$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$NoDocumentTypes { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$NoDocumentTypes$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$NoResult { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$NoResult$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$NoUserConsent { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$NoUserConsent$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$NotAuthorized { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$NotAuthorized$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$ThirdPartyError { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$ThirdPartyError$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$Unknown { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$Unknown$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$UnsupportedCountryTypeCombination { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$UnsupportedCountryTypeCombination$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$UnsupportedDocumentType { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$UnsupportedDocumentType$Creator { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$UploadError { *; }
-keep class com.complycube.sdk.common.data.ComplyCubeErrorCode$UploadError$Creator { *; }
-keep class com.complycube.sdk.common.data.Country { *; }
-keep class com.complycube.sdk.common.data.Country$Companion { *; }
-keep class com.complycube.sdk.common.data.CountryWithCountryCode { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoCompanyField { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoCompanyField$$serializer { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoCompanyField$Companion { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoDetail { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoDetail$Companion { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoDetail$Company { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoDetail$Company$$serializer { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoDetail$Company$Companion { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoDetail$Person { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoDetail$Person$$serializer { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoDetail$Person$Companion { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$Companion { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$Details { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$Details$$serializer { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$Details$Companion { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$Email { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$ExternalId { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$JoinedDate { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$Metadata { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$Metadata$$serializer { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$Metadata$Companion { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$Mobile { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoField$Telephone { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoPersonField { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoPersonField$$serializer { *; }
-keep class com.complycube.sdk.common.data.CustomerInfoPersonField$Companion { *; }
-keep class com.complycube.sdk.common.data.DocumentType { *; }
-keep class com.complycube.sdk.common.data.DocumentType$Companion { *; }
-keep class com.complycube.sdk.common.data.Environment { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$Companion { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$DrivingLicence { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$DrivingLicence$$serializer { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$DrivingLicence$Companion { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$NationalIdentityCard { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$NationalIdentityCard$$serializer { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$NationalIdentityCard$Companion { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$Passport { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$Passport$$serializer { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$Passport$Companion { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$ResidencePermit { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$ResidencePermit$$serializer { *; }
-keep class com.complycube.sdk.common.data.IdentityDocumentType$ResidencePermit$Companion { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$BankStatement { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$BankStatement$$serializer { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$BankStatement$Companion { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$Companion { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$CouncilTaxBill { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$CouncilTaxBill$$serializer { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$CouncilTaxBill$Companion { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$DrivingLicenceAsProofOfAddressDocument { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$DrivingLicenceAsProofOfAddressDocument$$serializer { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$DrivingLicenceAsProofOfAddressDocument$Companion { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$UtilityBill { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$UtilityBill$$serializer { *; }
-keep class com.complycube.sdk.common.data.ProofOfAddressDocumentType$UtilityBill$Companion { *; }
-keep class com.complycube.sdk.common.data.Result { *; }
-keep class com.complycube.sdk.common.data.Result$Canceled { *; }
-keep class com.complycube.sdk.common.data.Result$Canceled$Creator { *; }
-keep class com.complycube.sdk.common.data.Result$Error { *; }
-keep class com.complycube.sdk.common.data.Result$Error$Creator { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$Address { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$Address$Creator { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$Document { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$Document$Creator { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$LivePhoto { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$LivePhoto$Creator { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$LiveVideo { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$LiveVideo$Creator { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$ProofOfAddress { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$ProofOfAddress$Creator { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$SmartFormResult { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$SmartFormResult$Creator { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$WorkFlowId { *; }
-keep class com.complycube.sdk.common.data.Result$StageResult$WorkFlowId$Creator { *; }
-keep class com.complycube.sdk.common.data.Result$Success { *; }
-keep class com.complycube.sdk.common.data.Result$Success$Creator { *; }
-keep class com.complycube.sdk.common.data.SdkFlow { *; }
-keep class com.complycube.sdk.common.data.SdkLanguage { *; }
-keep class com.complycube.sdk.common.data.SdkLanguage$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage { *; }
-keep class com.complycube.sdk.common.data.Stage$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$AddressCapture { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$AddressCapture$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$AddressCapture$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$CustomerInfo { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$CustomerInfo$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$CustomerInfo$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$Document { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$Document$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$EID { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$EID$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$EID$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$OTP { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$OTP$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$OTP$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$OTP$Mode { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$ProofOfAddress { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$ProofOfAddress$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$SelfiePhoto { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$SelfiePhoto$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$SelfiePhoto$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$SelfieVideo { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$SelfieVideo$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$SelfieVideo$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$SmartForm { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$SmartForm$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$CustomStage$SmartForm$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$DefaultStage { *; }
-keep class com.complycube.sdk.common.data.Stage$DefaultStage$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$DefaultStage$Complete { *; }
-keep class com.complycube.sdk.common.data.Stage$DefaultStage$Complete$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$DefaultStage$Complete$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$DefaultStage$UserConsent { *; }
-keep class com.complycube.sdk.common.data.Stage$DefaultStage$UserConsent$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$DefaultStage$UserConsent$Companion { *; }
-keep class com.complycube.sdk.common.data.Stage$DefaultStage$Welcome { *; }
-keep class com.complycube.sdk.common.data.Stage$DefaultStage$Welcome$$serializer { *; }
-keep class com.complycube.sdk.common.data.Stage$DefaultStage$Welcome$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.request.UploadedDocsEntry$Creator { *; }
-keep class com.complycube.sdk.data.remote.model.request.UploadedDocumentValue { *; }
-keep class com.complycube.sdk.data.remote.model.request.UploadedDocumentValue$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.request.UploadedDocumentValue$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.request.UploadedDocumentValue$Creator { *; }
-keep class com.complycube.sdk.data.remote.model.response.AutofillConfig { *; }
-keep class com.complycube.sdk.data.remote.model.response.AutofillConfig$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.AutofillConfig$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.ComponentFormat { *; }
-keep class com.complycube.sdk.data.remote.model.response.ComponentFormat$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.ComponentType { *; }
-keep class com.complycube.sdk.data.remote.model.response.ComponentType$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.Constraint { *; }
-keep class com.complycube.sdk.data.remote.model.response.Constraint$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.Constraint$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.GovIdCaptureSettings { *; }
-keep class com.complycube.sdk.data.remote.model.response.GovIdCaptureSettings$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.GovIdCaptureSettings$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.MapTo { *; }
-keep class com.complycube.sdk.data.remote.model.response.MapTo$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.MapTo$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.MapToDto { *; }
-keep class com.complycube.sdk.data.remote.model.response.MapToDto$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.MapToDto$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.PersistenceConstants { *; }
-keep class com.complycube.sdk.data.remote.model.response.PersistenceConstants$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.PersistenceConstants$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.PersistenceConstantsDto { *; }
-keep class com.complycube.sdk.data.remote.model.response.PersistenceConstantsDto$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.PersistenceConstantsDto$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.PersistenceRule { *; }
-keep class com.complycube.sdk.data.remote.model.response.PersistenceRule$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.PersistenceRule$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionItem { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionItem$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionItem$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionItemComponent { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionItemComponent$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionItemComponent$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionItemComponentFormat { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionItemComponentFormat$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionItemComponentFormat$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionOptionsItem { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionOptionsItem$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.QuestionOptionsItem$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.SectionItem { *; }
-keep class com.complycube.sdk.data.remote.model.response.SectionItem$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.SectionItem$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormData { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormData$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormData$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocale { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocale$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocale$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocaleFormText { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocaleFormText$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocaleFormText$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocaleQuestion { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocaleQuestion$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocaleQuestion$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocaleSection { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocaleSection$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormLocaleSection$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormTranslations { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormTranslations$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.SmartFormTranslations$Companion { *; }
-keep class com.complycube.sdk.data.remote.model.response.VisibilityRules { *; }
-keep class com.complycube.sdk.data.remote.model.response.VisibilityRules$$serializer { *; }
-keep class com.complycube.sdk.data.remote.model.response.VisibilityRules$Companion { *; }
-keep class com.complycube.sdk.domain.analyzer.AnalyzerUtilsKt { *; }
-keep class com.complycube.sdk.navigation.ComposableSingletons$SdkNavHostKt { *; }
-keep class com.complycube.sdk.presentation.ComposableSingletons$MainSdkActivityKt { *; }
-keep class com.complycube.sdk.presentation.accessrestriction.ComposableSingletons$AccessRestrictedScreenKt { *; }
-keep class com.complycube.sdk.presentation.addresscapture.ComposableSingletons$AddressCaptureViewKt { *; }
-keep class com.complycube.sdk.presentation.common.camera.AutoScanIndicatorKt { *; }
-keep class com.complycube.sdk.presentation.common.camera.ComposableSingletons$CameraPreviewKt { *; }
-keep class com.complycube.sdk.presentation.common.composable.ComposableSingletons$PermissionRequestKt { *; }
-keep class com.complycube.sdk.presentation.common.composable.ComposableSingletons$TopAppBarKt { *; }
-keep class com.complycube.sdk.presentation.common.composable.documentselector.ComposableSingletons$DocumentSelectorListViewKt { *; }
-keep class com.complycube.sdk.presentation.common.country.ComposableSingletons$CountrySelectorScreenKt { *; }
-keep class com.complycube.sdk.presentation.complete.ComposableSingletons$VerificationCompleteViewKt { *; }
-keep class com.complycube.sdk.presentation.dialog.ComposableSingletons$NoInternetConnectionDialogKt { *; }
-keep class com.complycube.sdk.presentation.document.ComposableSingletons$DocumentAndCountrySelectorViewKt { *; }
-keep class com.complycube.sdk.presentation.document.ComposableSingletons$DocumentCaptureGuidanceViewKt { *; }
-keep class com.complycube.sdk.presentation.document.ComposableSingletons$DocumentSelectorViewKt { *; }
-keep class com.complycube.sdk.presentation.document.ComposableSingletons$MultiDocumentStageCaptureGuidanceViewKt { *; }
-keep class com.complycube.sdk.presentation.eid.ui.ComposableSingletons$AadhaarVerificationScreenKt { *; }
-keep class com.complycube.sdk.presentation.eid.ui.ComposableSingletons$EidCaptureGuidanceViewKt { *; }
-keep class com.complycube.sdk.presentation.eid.ui.ComposableSingletons$EidSelectionScreenKt { *; }
-keep class com.complycube.sdk.presentation.nfc.ComposableSingletons$NfcCaptureGuidanceViewKt { *; }
-keep class com.complycube.sdk.presentation.otp.OtpType { *; }
-keep class com.complycube.sdk.presentation.permission.ComposableSingletons$PermissionCameraViewKt { *; }
-keep class com.complycube.sdk.presentation.permission.ComposableSingletons$PermissionDiskViewKt { *; }
-keep class com.complycube.sdk.presentation.permission.ComposableSingletons$PermissionGateScreensKt { *; }
-keep class com.complycube.sdk.presentation.permission.ComposableSingletons$PermissionMicViewKt { *; }
-keep class com.complycube.sdk.presentation.proofofaddress.ComposableSingletons$ProofOfAddressCaptureGuidanceViewKt { *; }
-keep class com.complycube.sdk.presentation.proofofaddress.ComposableSingletons$ProofOfAddressDocumentGuidanceViewKt { *; }
-keep class com.complycube.sdk.presentation.proofofaddress.ComposableSingletons$ProofOfAddressDocumentSelectorViewKt { *; }
-keep class com.complycube.sdk.presentation.proofofaddress.ComposableSingletons$ProofOfAddressQualityCheckerViewKt { *; }
-keep class com.complycube.sdk.presentation.proofofaddress.ComposableSingletons$ProofOfAddressStepGuidanceViewKt { *; }
-keep class com.complycube.sdk.presentation.selfie.ComposableSingletons$SelfiePhotoCaptureGuidanceViewKt { *; }
-keep class com.complycube.sdk.presentation.selfie.capture.ComposableSingletons$ChallengeOverlaysKt { *; }
-keep class com.complycube.sdk.presentation.smartform.components.ComposableSingletons$BottomSheetKt { *; }
-keep class com.complycube.sdk.presentation.smartform.components.ComposableSingletons$CountryCodeSelectorKt { *; }
-keep class com.complycube.sdk.presentation.smartform.components.ComposableSingletons$CountrySelectableKt { *; }
-keep class com.complycube.sdk.presentation.smartform.components.ComposableSingletons$InlineSelectableKt { *; }
-keep class com.complycube.sdk.presentation.smartform.components.ComposableSingletons$MultipleDocUploadKt { *; }
-keep class com.complycube.sdk.presentation.smartform.components.ComposableSingletons$TimePickerDialogKt { *; }
-keep class com.complycube.sdk.presentation.smartform.governmentid.ComposableSingletons$DocumentReuseConfirmScreenKt { *; }
-keep class com.complycube.sdk.presentation.smartform.governmentid.ComposableSingletons$GovIdCaptureModalContentKt { *; }
-keep class com.complycube.sdk.presentation.smartform.router.ComposableSingletons$RouterLoadingScreenKt { *; }
-keep class com.complycube.sdk.presentation.smartform.router.ComposableSingletons$RouterSelectionScreenKt { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenColorScheme { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenColorScheme$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenColorScheme$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenComponentColor { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenComponentColor$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenComponentColor$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenComponents { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenComponents$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenComponents$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenInteractiveRole { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenInteractiveRole$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenInteractiveRole$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenInteractiveStates { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenInteractiveStates$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenInteractiveStates$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenLogo { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenLogo$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenLogo$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenModes { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenModes$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenModes$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenScale { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenScale$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenScale$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenStaticRole { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenStaticRole$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenStaticRole$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenStaticState { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenStaticState$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenStaticState$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenTextStyle { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenTextStyle$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenTextStyle$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenToggle { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenToggle$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenToggle$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenTypography { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenTypography$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokenTypography$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokens { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokens$$serializer { *; }
-keep class com.complycube.sdk.presentation.theme.DesignTokens$Companion { *; }
-keep class com.complycube.sdk.presentation.theme.LookAndFeel { *; }
-keep class com.complycube.sdk.presentation.theme.ResolvedColorPalette$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.ResolvedDesignTokens$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.ResolvedFontFamily$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.ResolvedInteractiveColorRole$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.ResolvedScale$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.ResolvedStaticColorRole$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.ResolvedTextStyleSpec$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.ResolvedTypographySpec$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.RuntimeThemeDefaults$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.SdkColors { *; }
-keep class com.complycube.sdk.presentation.theme.SdkDesignMetrics$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.SdkFooterBranding$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.SdkThemeBehavior$Creator { *; }
-keep class com.complycube.sdk.presentation.theme.UIInterfaceStyle { *; }
-keep class com.complycube.sdk.presentation.theme.ValidatedRemoteLogoUrl$Creator { *; }
-keep class com.complycube.sdk.presentation.video.ComposableSingletons$SelfieVideoCaptureGuidanceViewKt { *; }
-keep class com.complycube.sdk.utils.CommonUtilsKt { *; }
-keep class com.complycube.sdk.utils.ExtensionsKt { *; }
# <<< END GENERATED KEEP RULES <<<
# OkHttp (bundled in the SDK) probes for optional TLS security providers —
# Conscrypt, OpenJSSE, BouncyCastle — via okhttp3.internal.platform.*. None
# of these are on the SDK/consumer classpath, so R8 full mode reports them as
# missing classes and fails minification (e.g. org.conscrypt.Conscrypt
# referenced from ConscryptPlatform). They are load-if-present at runtime, so
# suppressing the reference is the intended handling. BouncyCastle is already
# covered above.
-dontwarn org.conscrypt.**
-dontwarn org.openjsse.**
