// config/ComplyCubeSettings.kt package com.complycube.reactnative.config import com.complycube.sdk.presentation.theme.DesignTokens import com.complycube.sdk.presentation.theme.LookAndFeel import com.complycube.sdk.presentation.theme.SdkColors import com.complycube.sdk.common.data.Country import com.complycube.sdk.common.data.Stage import com.complycube.reactnative.logging.Logger import com.complycube.reactnative.logging.LogTag class ComplyCubeSettings private constructor( private val config: ComplyCubeConfig ) { val clientID: String get() = config.clientID val clientToken: String get() = config.clientToken val workflowTemplateId: String get() = config.workflowTemplateId ?: "" val stages: Array get() = config.stages.toTypedArray() val countries: Array get() = config.countries.toTypedArray() val designTokens: DesignTokens? get() = config.designTokens val lookAndFeel: LookAndFeel? get() = config.lookAndFeel val colorScheme: SdkColors? get() = config.colorScheme companion object { private val configurationFactory = ComplyCubeConfigurationFactory() fun create(settings: HashMap): ComplyCubeSettings { val configBuilder = configurationFactory.createConfigBuilder() val result = configBuilder.build(settings) return when (result) { is ValidationResult.Success -> ComplyCubeSettings(result.data) is ValidationResult.Error -> { throw IllegalArgumentException("Invalid configuration: ${result.message}") } } } internal fun createWithFactory( settings: HashMap, factory: ComplyCubeConfigurationFactory ): ComplyCubeSettings { val configBuilder = factory.createConfigBuilder() val result = configBuilder.build(settings) return when (result) { is ValidationResult.Success -> ComplyCubeSettings(result.data) is ValidationResult.Error -> { throw IllegalArgumentException("Invalid configuration: ${result.message}") } } } } }