Updated on 2026-08-14

This commit is contained in:
Tangem 2025-07-30 13:45:45 +04:00
parent fb54de419b
commit 177da9798e
86 changed files with 183 additions and 154 deletions

View file

@ -2,7 +2,7 @@ package com.tangem.domain.staking
import arrow.core.Either
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.staking.model.stakekit.NetworkType
import com.tangem.domain.models.staking.NetworkType
import com.tangem.domain.staking.model.stakekit.StakingError
import com.tangem.domain.staking.model.stakekit.action.StakingActionStatus
import com.tangem.domain.staking.repositories.StakingActionRepository

View file

@ -1,7 +1,7 @@
package com.tangem.domain.staking
import com.tangem.domain.staking.model.StakingIntegrationID
import com.tangem.domain.staking.model.stakekit.action.StakingActionType
import com.tangem.domain.models.staking.action.StakingActionType
import java.math.BigDecimal
class GetActionRequirementAmountUseCase {

View file

@ -1,10 +1,14 @@
package com.tangem.domain.staking
import arrow.core.Either
import com.tangem.domain.staking.model.stakekit.*
import com.tangem.domain.models.staking.BalanceItem
import com.tangem.domain.models.staking.BalanceType
import com.tangem.domain.models.staking.NetworkType
import com.tangem.domain.models.staking.YieldToken
import com.tangem.domain.models.staking.action.StakingActionType
import com.tangem.domain.staking.model.stakekit.StakingError
import com.tangem.domain.staking.model.stakekit.action.StakingAction
import com.tangem.domain.staking.model.stakekit.action.StakingActionStatus
import com.tangem.domain.staking.model.stakekit.action.StakingActionType
import com.tangem.domain.staking.repositories.StakingErrorResolver
import com.tangem.utils.extensions.isEqualTo
import java.math.BigDecimal
@ -17,7 +21,7 @@ class InvalidatePendingTransactionsUseCase(
operator fun invoke(
balanceItems: List<BalanceItem>,
stakingActions: List<StakingAction>,
token: Token,
token: YieldToken,
): Either<StakingError, List<BalanceItem>> {
return Either.catch {
val balancesToDisplay = mergeBalancesAndProcessingActions(
@ -34,7 +38,7 @@ class InvalidatePendingTransactionsUseCase(
private fun mergeBalancesAndProcessingActions(
realBalances: List<BalanceItem>,
processingActions: List<StakingAction>,
token: Token,
token: YieldToken,
): List<BalanceItem> {
val balances = realBalances.toMutableList()
@ -87,7 +91,7 @@ class InvalidatePendingTransactionsUseCase(
private fun addStubStakedPendingTransaction(
balances: MutableList<BalanceItem>,
action: StakingAction,
token: Token,
token: YieldToken,
) {
balances.add(
BalanceItem(
@ -153,7 +157,7 @@ class InvalidatePendingTransactionsUseCase(
return index to action.amount
}
private fun doPostProcessing(balances: MutableList<BalanceItem>, action: StakingAction, token: Token) {
private fun doPostProcessing(balances: MutableList<BalanceItem>, action: StakingAction, token: YieldToken) {
val validatorAddress = action.validatorAddress ?: action.validatorAddresses?.firstOrNull()
if (token.network == NetworkType.TON && validatorAddress != null) {
for (index in balances.indices) {

View file

@ -6,7 +6,7 @@ import arrow.core.raise.ensureNotNull
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.models.network.Network
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.staking.model.StakingID
import com.tangem.domain.models.staking.StakingID
import com.tangem.domain.staking.model.StakingIntegrationID
import com.tangem.domain.walletmanager.WalletManagersFacade

View file

@ -4,7 +4,7 @@ import com.tangem.core.analytics.models.AnalyticsEvent
import com.tangem.core.analytics.models.AnalyticsParam
import com.tangem.domain.staking.analytics.StakingAnalyticsEvent.ButtonRewards.addIfValueIsNotNull
import com.tangem.domain.staking.model.stakekit.StakingError
import com.tangem.domain.staking.model.stakekit.action.StakingActionType
import com.tangem.domain.models.staking.action.StakingActionType
sealed class StakingAnalyticsEvent(
event: String,

View file

@ -2,7 +2,7 @@ package com.tangem.domain.staking.multi
import com.tangem.domain.core.flow.FlowFetcher
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.staking.model.StakingID
import com.tangem.domain.models.staking.StakingID
/**
* Fetcher of yields balances

View file

@ -1,7 +1,7 @@
package com.tangem.domain.staking.multi
import com.tangem.domain.core.flow.FlowProducer
import com.tangem.domain.staking.model.stakekit.YieldBalance
import com.tangem.domain.models.staking.YieldBalance
import com.tangem.domain.models.wallet.UserWalletId
/**

View file

@ -2,7 +2,7 @@ package com.tangem.domain.staking.multi
import com.tangem.domain.core.flow.FlowCachingSupplier
import com.tangem.domain.core.flow.FlowProducer
import com.tangem.domain.staking.model.stakekit.YieldBalance
import com.tangem.domain.models.staking.YieldBalance
/**
* Supplier of all yield balances for selected wallet [MultiYieldBalanceProducer.Params]

View file

@ -8,7 +8,7 @@ import com.tangem.domain.models.network.Network
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.staking.model.StakingAvailability
import com.tangem.domain.staking.model.StakingEntryInfo
import com.tangem.domain.staking.model.stakekit.NetworkType
import com.tangem.domain.models.staking.NetworkType
import com.tangem.domain.staking.model.stakekit.Yield
import com.tangem.domain.staking.model.stakekit.action.StakingAction
import com.tangem.domain.staking.model.stakekit.action.StakingActionStatus

View file

@ -2,7 +2,7 @@ package com.tangem.domain.staking.single
import com.tangem.domain.core.flow.FlowFetcher
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.staking.model.StakingID
import com.tangem.domain.models.staking.StakingID
/**
* Fetcher of yield balance

View file

@ -2,8 +2,8 @@ package com.tangem.domain.staking.single
import com.tangem.domain.core.flow.FlowProducer
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.staking.model.StakingID
import com.tangem.domain.staking.model.stakekit.YieldBalance
import com.tangem.domain.models.staking.StakingID
import com.tangem.domain.models.staking.YieldBalance
/**
* Producer of yield balance for selected wallet [UserWalletId]

View file

@ -2,7 +2,7 @@ package com.tangem.domain.staking.single
import com.tangem.domain.core.flow.FlowCachingSupplier
import com.tangem.domain.core.flow.FlowProducer
import com.tangem.domain.staking.model.stakekit.YieldBalance
import com.tangem.domain.models.staking.YieldBalance
/**
* Supplier of yield balance for selected wallet [SingleYieldBalanceProducer.Params]

View file

@ -1,7 +1,7 @@
package com.tangem.domain.staking.utils
import com.tangem.domain.staking.model.stakekit.BalanceType
import com.tangem.domain.staking.model.stakekit.YieldBalance
import com.tangem.domain.models.staking.BalanceType
import com.tangem.domain.models.staking.YieldBalance
import com.tangem.lib.crypto.BlockchainUtils
import java.math.BigDecimal

View file

@ -9,7 +9,7 @@ import com.tangem.common.test.domain.token.MockCryptoCurrencyFactory
import com.tangem.common.test.utils.ProvideTestModels
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.staking.model.StakingID
import com.tangem.domain.models.staking.StakingID
import com.tangem.domain.staking.model.StakingIntegrationID
import com.tangem.domain.walletmanager.WalletManagersFacade
import io.mockk.clearMocks