Updated on 2026-08-14

This commit is contained in:
Tangem 2025-07-30 17:42:54 +04:00
parent 011df1a797
commit 4c51193221
31 changed files with 130 additions and 117 deletions

View file

@ -1,10 +1,13 @@
package com.tangem.domain.models
import kotlinx.serialization.Serializable
/**
* Source of the status of any loaded data
*
[REDACTED_AUTHOR]
*/
@Serializable
enum class StatusSource {
/**

View file

@ -1,22 +1,26 @@
package com.tangem.domain.models
import java.math.BigDecimal
import com.tangem.domain.models.serialization.SerializedBigDecimal
import kotlinx.serialization.Serializable
/**
* Represents the possible states of the fiat balance, including loading, failure, or a loaded amount
*/
@Serializable
sealed interface TotalFiatBalance {
/**
* Represents the loading state of the fiat balance.
* This state indicates that the fiat balance is currently being retrieved or calculated.
*/
@Serializable
data object Loading : TotalFiatBalance
/**
* Represents the failure state of the fiat balance.
* This state indicates that an attempt to retrieve or calculate the fiat balance has failed.
*/
@Serializable
data object Failed : TotalFiatBalance
/**
@ -25,8 +29,9 @@ sealed interface TotalFiatBalance {
* @property amount the loaded fiat balance amount
* @property isAllAmountsSummarized indicates whether the amount includes a summary of all underlying amounts
*/
@Serializable
data class Loaded(
val amount: BigDecimal,
val amount: SerializedBigDecimal,
val isAllAmountsSummarized: Boolean,
val source: StatusSource,
) : TotalFiatBalance

View file

@ -0,0 +1,88 @@
package com.tangem.domain.models.tokenlist
import com.tangem.domain.models.StatusSource
import com.tangem.domain.models.TokensSortType
import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.network.Network
import com.tangem.domain.models.serialization.SerializedBigDecimal
import kotlinx.serialization.Serializable
/**
* Represents a list of cryptocurrency tokens, which can be grouped by network or ungrouped.
*
* The tokens can be represented in two forms: either grouped by the network or as an ungrouped collection.
* Additional details like the total fiat balance and the sorting type can be associated with the list.
*/
@Serializable
sealed interface TokenList {
/** The total fiat balance across all tokens */
val totalFiatBalance: TotalFiatBalance
/** The criteria used for sorting the tokens */
val sortedBy: TokensSortType
/**
* Represents tokens that are grouped by their network
*
* @property totalFiatBalance the total fiat balance across all groups
* @property sortedBy the criteria used for sorting the tokens within the groups
* @property groups a list of network groups containing tokens
*/
@Serializable
data class GroupedByNetwork(
override val totalFiatBalance: TotalFiatBalance,
override val sortedBy: TokensSortType,
val groups: List<NetworkGroup>,
) : TokenList {
/**
* Represents a group of cryptocurrencies associated with a specific network
*
* @property network the blockchain network associated with the group
* @property currencies a list of cryptocurrency statuses that belong to the network
*/
@Serializable
data class NetworkGroup(
val network: Network,
val currencies: List<CryptoCurrencyStatus>,
)
}
/**
* Represents tokens that are not grouped by any specific criteria.
*
* @property totalFiatBalance the total fiat balance across all groups
* @property sortedBy the criteria used for sorting the tokens within the groups
* @property currencies a list of cryptocurrency statuses
*/
@Serializable
data class Ungrouped(
override val totalFiatBalance: TotalFiatBalance,
override val sortedBy: TokensSortType,
val currencies: List<CryptoCurrencyStatus>,
) : TokenList
/** Represents a state where the token list is empty */
@Serializable
data object Empty : TokenList {
override val totalFiatBalance: TotalFiatBalance = TotalFiatBalance.Loaded(
amount = SerializedBigDecimal.ZERO,
isAllAmountsSummarized = true,
source = StatusSource.ACTUAL,
)
override val sortedBy: TokensSortType = TokensSortType.NONE
}
/** Get flatten list of cryptocurrency status [CryptoCurrencyStatus] */
fun flattenCurrencies(): List<CryptoCurrencyStatus> {
return when (this) {
is GroupedByNetwork -> groups.flatMap(GroupedByNetwork.NetworkGroup::currencies)
is Ungrouped -> currencies
is Empty -> emptyList()
}
}
}

View file

@ -5,10 +5,10 @@ import com.tangem.domain.core.utils.lceError
import com.tangem.domain.core.utils.lceLoading
import com.tangem.domain.core.utils.toLce
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.tokens.error.TokenListError
import com.tangem.domain.tokens.error.mapper.mapToTokenListError
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.tokens.operations.BaseCurrenciesStatusesOperations
import com.tangem.domain.tokens.operations.TokenListOperations
import com.tangem.domain.tokens.repository.CurrenciesRepository

View file

@ -6,9 +6,9 @@ import arrow.core.raise.either
import arrow.core.raise.ensure
import arrow.core.raise.withError
import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.tokens.error.TokenListSortingError
import com.tangem.domain.tokens.error.mapper.mapToTokenListSortingError
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.tokens.operations.TokenListSortingOperations
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.withContext

View file

@ -7,9 +7,9 @@ import arrow.core.raise.ensure
import arrow.core.raise.withError
import com.tangem.domain.models.TokensSortType
import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.tokens.error.TokenListSortingError
import com.tangem.domain.tokens.error.mapper.mapToTokenListSortingError
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.tokens.operations.TokenListSortingOperations
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.withContext

View file

@ -1,6 +1,6 @@
package com.tangem.domain.tokens.error
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.models.tokenlist.TokenList
sealed class TokenListError {

View file

@ -1,17 +0,0 @@
package com.tangem.domain.tokens.model
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.network.Network
/**
* Represents a group of cryptocurrencies associated with a specific network.
*
* This class encapsulates a collection of cryptocurrency statuses, all of which are part of the same blockchain network.
*
* @property network The blockchain network associated with the group.
* @property currencies A list of cryptocurrency statuses that belong to the network.
*/
data class NetworkGroup(
val network: Network,
val currencies: List<CryptoCurrencyStatus>,
)

View file

@ -1,66 +0,0 @@
package com.tangem.domain.tokens.model
import com.tangem.domain.models.StatusSource
import com.tangem.domain.models.TokensSortType
import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import java.math.BigDecimal
/**
* Represents a list of cryptocurrency tokens, which can be grouped by network or ungrouped.
*
* The tokens can be represented in two forms: either grouped by the network or as an ungrouped collection.
* Additional details like the total fiat balance and the sorting type can be associated with the list.
*
* @property totalFiatBalance The total fiat balance across all tokens, which could be in a loading state, failed, or loaded with a specific amount.
* @property sortedBy The criteria used for sorting the tokens.
*/
sealed class TokenList {
open val totalFiatBalance: TotalFiatBalance = TotalFiatBalance.Loading
open val sortedBy: TokensSortType = TokensSortType.NONE
/**
* Represents tokens that are grouped by their network.
*
* @property groups A list of network groups containing tokens.
* @property totalFiatBalance The total fiat balance across all groups.
* @property sortedBy The criteria used for sorting the tokens within the groups.
*/
data class GroupedByNetwork(
val groups: List<NetworkGroup>,
override val totalFiatBalance: TotalFiatBalance,
override val sortedBy: TokensSortType,
) : TokenList()
/**
* Represents tokens that are not grouped by any specific criteria.
*
* @property currencies A list of cryptocurrency statuses.
* @property totalFiatBalance The total fiat balance across all currencies.
* @property sortedBy The criteria used for sorting the currencies.
*/
data class Ungrouped(
val currencies: List<CryptoCurrencyStatus>,
override val totalFiatBalance: TotalFiatBalance,
override val sortedBy: TokensSortType,
) : TokenList()
/** Represents a state where the token list is empty. */
data object Empty : TokenList() {
override val totalFiatBalance: TotalFiatBalance = TotalFiatBalance.Loaded(
amount = BigDecimal.ZERO,
isAllAmountsSummarized = true,
source = StatusSource.ACTUAL,
)
}
/** Get flatten list of cryptocurrency status [CryptoCurrencyStatus] */
fun flattenCurrencies(): List<CryptoCurrencyStatus> {
return when (this) {
is GroupedByNetwork -> groups.flatMap(NetworkGroup::currencies)
is Ungrouped -> currencies
is Empty -> emptyList()
}
}
}

View file

@ -7,8 +7,8 @@ import arrow.core.raise.withError
import com.tangem.domain.models.TokensSortType
import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.tokens.repository.CurrenciesRepository
import kotlinx.coroutines.flow.*

View file

@ -12,9 +12,9 @@ import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.network.Network
import com.tangem.domain.models.staking.YieldBalance
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.tokenlist.TokenList.GroupedByNetwork.NetworkGroup
import com.tangem.domain.staking.utils.getTotalWithRewardsStakingBalance
import com.tangem.domain.tokens.model.NetworkGroup
import com.tangem.domain.tokens.model.TokenList
import com.tangem.utils.extensions.orZero
import java.math.BigDecimal

View file

@ -2,7 +2,7 @@ package com.tangem.domain.tokens.mock
import arrow.core.nonEmptyListOf
import arrow.core.toNonEmptyListOrNull
import com.tangem.domain.tokens.model.NetworkGroup
import com.tangem.domain.models.tokenlist.TokenList.GroupedByNetwork.NetworkGroup
@Suppress("MemberVisibilityCanBePrivate")
internal object MockNetworksGroups {

View file

@ -6,10 +6,10 @@ import com.tangem.domain.models.StatusSource
import com.tangem.domain.models.TokensSortType
import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.tokens.mock.MockNetworksGroups.failedNetworksGroups
import com.tangem.domain.tokens.mock.MockNetworksGroups.loadedNetworksGroups
import com.tangem.domain.tokens.mock.MockNetworksGroups.sortedNetworksGroups
import com.tangem.domain.tokens.model.TokenList
import java.math.BigDecimal
@Suppress("MemberVisibilityCanBePrivate")

View file

@ -17,8 +17,8 @@ import com.tangem.domain.core.utils.lceError
import com.tangem.domain.core.utils.lceLoading
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.tokens.GetTokenListUseCase
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.wallets.usecase.GetWalletsUseCase
import com.tangem.feature.swap.domain.GetAvailablePairsUseCase
import com.tangem.feature.swap.domain.models.domain.LeastTokenInfo
@ -200,7 +200,7 @@ internal class AvailableSwapPairsModel @Inject constructor(
.collectLatest { selectedStatus ->
val networkInfo = selectedStatus.toLeastTokenInfo()
val isAlreadyLoaded = availablePairsByNetworkFlow.value[networkInfo]?.isContent() ?: false
val isAlreadyLoaded = availablePairsByNetworkFlow.value[networkInfo]?.isContent() == true
if (isAlreadyLoaded) return@collectLatest
val statuses = tokenListFlow.firstOrNull() ?: return@collectLatest

View file

@ -14,13 +14,13 @@ import com.tangem.domain.core.utils.getOrElse
import com.tangem.domain.exchange.RampStateManager
import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.wallet.requireColdWallet
import com.tangem.domain.settings.usercountry.GetUserCountryUseCase
import com.tangem.domain.settings.usercountry.models.UserCountry
import com.tangem.domain.tokens.GetTokenListUseCase
import com.tangem.domain.tokens.error.TokenListError
import com.tangem.domain.tokens.model.ScenarioUnavailabilityReason
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.wallets.usecase.GetWalletsUseCase
import com.tangem.features.onramp.impl.R
import com.tangem.features.onramp.tokenlist.OnrampTokenListComponent

View file

@ -12,12 +12,12 @@ import com.tangem.domain.appcurrency.model.AppCurrency
import com.tangem.domain.balancehiding.GetBalanceHidingSettingsUseCase
import com.tangem.domain.core.lce.Lce
import com.tangem.domain.models.TokensSortType
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.tokens.ApplyTokenListSortingUseCase
import com.tangem.domain.tokens.GetTokenListUseCase
import com.tangem.domain.tokens.ToggleTokenListGroupingUseCase
import com.tangem.domain.tokens.ToggleTokenListSortingUseCase
import com.tangem.domain.tokens.error.TokenListError
import com.tangem.domain.tokens.model.TokenList
import com.tangem.feature.wallet.child.organizetokens.OrganizeTokensComponent
import com.tangem.feature.wallet.presentation.organizetokens.OrganizeTokensIntents
import com.tangem.feature.wallet.presentation.organizetokens.OrganizeTokensStateHolder

View file

@ -3,9 +3,9 @@ package com.tangem.feature.wallet.presentation.organizetokens
import com.tangem.core.ui.event.consumedEvent
import com.tangem.core.ui.event.triggeredEvent
import com.tangem.domain.appcurrency.model.AppCurrency
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.tokens.error.TokenListError
import com.tangem.domain.tokens.error.TokenListSortingError
import com.tangem.domain.tokens.model.TokenList
import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensListState
import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensState
import com.tangem.feature.wallet.presentation.organizetokens.utils.converter.InProgressStateConverter

View file

@ -1,7 +1,7 @@
package com.tangem.feature.wallet.presentation.organizetokens.utils
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.feature.wallet.presentation.organizetokens.model.DraggableItem
import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensListState

View file

@ -1,7 +1,7 @@
package com.tangem.feature.wallet.presentation.organizetokens.utils.common
import com.tangem.domain.models.TokensSortType
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.models.tokenlist.TokenList
internal fun TokenList.disableSortingByBalance(): TokenList {
return when (this) {

View file

@ -1,7 +1,7 @@
package com.tangem.feature.wallet.presentation.organizetokens.utils.converter
import com.tangem.domain.models.TokensSortType
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensListState
import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensState
import com.tangem.feature.wallet.presentation.organizetokens.utils.converter.items.TokenListToListStateConverter

View file

@ -1,6 +1,6 @@
package com.tangem.feature.wallet.presentation.organizetokens.utils.converter.items
import com.tangem.domain.tokens.model.NetworkGroup
import com.tangem.domain.models.tokenlist.TokenList.GroupedByNetwork.NetworkGroup
import com.tangem.feature.wallet.presentation.organizetokens.model.DraggableItem
import com.tangem.feature.wallet.presentation.organizetokens.utils.common.getGroupHeaderId
import com.tangem.feature.wallet.presentation.organizetokens.utils.common.getGroupPlaceholder

View file

@ -1,6 +1,6 @@
package com.tangem.feature.wallet.presentation.organizetokens.utils.converter.items
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.feature.wallet.presentation.organizetokens.model.DraggableItem
import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensListState
import com.tangem.feature.wallet.presentation.organizetokens.utils.common.uniteItems

View file

@ -14,10 +14,10 @@ import com.tangem.domain.analytics.model.WalletBalanceState
import com.tangem.domain.models.StatusSource
import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.models.wallet.isMultiCurrency
import com.tangem.domain.tokens.model.TokenList
import com.tangem.feature.wallet.presentation.wallet.analytics.WalletScreenAnalyticsEvent.Basic
import com.tangem.feature.wallet.presentation.wallet.analytics.WalletScreenAnalyticsEvent.MainScreen
import com.tangem.feature.wallet.presentation.wallet.state.model.WalletState

View file

@ -9,12 +9,12 @@ import com.tangem.domain.models.StatusSource
import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.promo.ShouldShowPromoWalletUseCase
import com.tangem.domain.promo.models.PromoId
import com.tangem.domain.settings.IsReadyToShowRateAppUseCase
import com.tangem.domain.tokens.error.TokenListError
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.wallets.models.SeedPhraseNotificationsStatus
import com.tangem.domain.wallets.usecase.IsNeedToBackupUseCase
import com.tangem.domain.wallets.usecase.SeedPhraseNotificationUseCase

View file

@ -2,10 +2,10 @@ package com.tangem.feature.wallet.presentation.wallet.domain
import com.tangem.core.decompose.di.ModelScoped
import com.tangem.domain.core.lce.LceFlow
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.tokens.GetTokenListUseCase
import com.tangem.domain.tokens.error.TokenListError
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.models.wallet.UserWalletId
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.flow.SharingStarted

View file

@ -2,8 +2,8 @@ package com.tangem.feature.wallet.presentation.wallet.domain
import com.tangem.common.extensions.isZero
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.settings.SetWalletWithFundsFoundUseCase
import com.tangem.domain.tokens.model.TokenList
import javax.inject.Inject
internal class WalletWithFundsChecker @Inject constructor(

View file

@ -1,15 +1,15 @@
package com.tangem.feature.wallet.presentation.wallet.state.transformers
import com.tangem.domain.appcurrency.model.AppCurrency
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.feature.wallet.child.wallet.model.intents.WalletClickIntents
import com.tangem.feature.wallet.presentation.wallet.state.model.WalletCardState
import com.tangem.feature.wallet.presentation.wallet.state.model.WalletState
import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTokensListState
import com.tangem.feature.wallet.presentation.wallet.state.transformers.converter.MultiWalletCardStateConverter
import com.tangem.feature.wallet.presentation.wallet.state.transformers.converter.TokenListStateConverter
import com.tangem.feature.wallet.presentation.wallet.state.utils.enableButtons
import com.tangem.feature.wallet.child.wallet.model.intents.WalletClickIntents
import timber.log.Timber
internal class SetTokenListTransformer(

View file

@ -8,9 +8,9 @@ import com.tangem.domain.appcurrency.model.AppCurrency
import com.tangem.domain.card.common.util.cardTypesResolver
import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.currency.CryptoCurrencyStatus
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.tokenlist.TokenList.GroupedByNetwork.NetworkGroup
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.tokens.model.NetworkGroup
import com.tangem.domain.tokens.model.TokenList
import com.tangem.feature.wallet.child.wallet.model.intents.WalletClickIntents
import com.tangem.feature.wallet.impl.R
import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTokensListState

View file

@ -6,10 +6,10 @@ import com.tangem.domain.appcurrency.model.AppCurrency
import com.tangem.domain.core.lce.Lce
import com.tangem.domain.core.lce.LceFlow
import com.tangem.domain.core.utils.getOrElse
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.tokens.RunPolkadotAccountHealthCheckUseCase
import com.tangem.domain.tokens.error.TokenListError
import com.tangem.domain.tokens.model.TokenList
import com.tangem.feature.wallet.child.wallet.model.intents.WalletClickIntents
import com.tangem.feature.wallet.presentation.wallet.analytics.utils.TokenListAnalyticsSender
import com.tangem.feature.wallet.presentation.wallet.domain.WalletWithFundsChecker

View file

@ -6,11 +6,11 @@ import com.tangem.domain.core.lce.LceFlow
import com.tangem.domain.models.TokensSortType
import com.tangem.domain.models.TotalFiatBalance
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.tokens.ApplyTokenListSortingUseCase
import com.tangem.domain.tokens.RunPolkadotAccountHealthCheckUseCase
import com.tangem.domain.tokens.error.TokenListError
import com.tangem.domain.tokens.model.TokenList
import com.tangem.feature.wallet.child.wallet.model.intents.WalletClickIntents
import com.tangem.feature.wallet.presentation.wallet.analytics.utils.TokenListAnalyticsSender
import com.tangem.feature.wallet.presentation.wallet.domain.MultiWalletTokenListStore

View file

@ -3,10 +3,10 @@ package com.tangem.feature.wallet.presentation.wallet.subscribers
import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase
import com.tangem.domain.core.lce.Lce
import com.tangem.domain.core.lce.LceFlow
import com.tangem.domain.models.tokenlist.TokenList
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.tokens.RunPolkadotAccountHealthCheckUseCase
import com.tangem.domain.tokens.error.TokenListError
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.feature.wallet.child.wallet.model.intents.WalletClickIntents
import com.tangem.feature.wallet.presentation.wallet.analytics.utils.TokenListAnalyticsSender
import com.tangem.feature.wallet.presentation.wallet.domain.MultiWalletTokenListStore