Updated on 2026-08-14

This commit is contained in:
Tangem 2024-06-20 02:26:36 +03:00
parent e26394399f
commit f506db9c0e
38 changed files with 1182 additions and 406 deletions

View file

@ -2,6 +2,8 @@ package com.tangem.data.staking
import com.tangem.blockchain.common.Blockchain
import com.tangem.blockchainsdk.utils.toCoinId
import com.tangem.data.staking.converters.StakingNetworkTypeConverter
import com.tangem.data.staking.converters.TokenConverter
import com.tangem.data.staking.converters.YieldConverter
import com.tangem.datasource.api.common.response.getOrThrow
import com.tangem.datasource.api.stakekit.StakeKitApi
@ -20,7 +22,14 @@ internal class DefaultStakingRepository(
private val dispatchers: CoroutineDispatcherProvider,
) : StakingRepository {
private val yieldConverter = YieldConverter()
private val stakingNetworkTypeConverter = StakingNetworkTypeConverter()
private val tokenConverter = TokenConverter(
stakingNetworkTypeConverter = stakingNetworkTypeConverter,
)
private val yieldConverter = YieldConverter(
tokenConverter = tokenConverter,
)
override fun isStakingSupported(currencyId: String): Boolean {
return integrationIds.contains(currencyId)

View file

@ -0,0 +1,81 @@
package com.tangem.data.staking.converters
import com.tangem.datasource.api.stakekit.models.response.model.NetworkTypeDTO
import com.tangem.domain.staking.model.NetworkType
import com.tangem.utils.converter.Converter
@Suppress("CyclomaticComplexMethod", "LongMethod")
class StakingNetworkTypeConverter : Converter<NetworkTypeDTO, NetworkType> {
override fun convert(value: NetworkTypeDTO): NetworkType {
return when (value) {
NetworkTypeDTO.AVALANCHE_C -> NetworkType.AVALANCHE_C
NetworkTypeDTO.AVALANCHE_ATOMIC -> NetworkType.AVALANCHE_ATOMIC
NetworkTypeDTO.AVALANCHE_P -> NetworkType.AVALANCHE_P
NetworkTypeDTO.ARBITRUM -> NetworkType.ARBITRUM
NetworkTypeDTO.BINANCE -> NetworkType.BINANCE
NetworkTypeDTO.CELO -> NetworkType.CELO
NetworkTypeDTO.ETHEREUM -> NetworkType.ETHEREUM
NetworkTypeDTO.ETHEREUM_GOERLI -> NetworkType.ETHEREUM_GOERLI
NetworkTypeDTO.ETHEREUM_HOLESKY -> NetworkType.ETHEREUM_HOLESKY
NetworkTypeDTO.FANTOM -> NetworkType.FANTOM
NetworkTypeDTO.HARMONY -> NetworkType.HARMONY
NetworkTypeDTO.OPTIMISM -> NetworkType.OPTIMISM
NetworkTypeDTO.POLYGON -> NetworkType.POLYGON
NetworkTypeDTO.GNOSIS -> NetworkType.GNOSIS
NetworkTypeDTO.MOONRIVER -> NetworkType.MOONRIVER
NetworkTypeDTO.OKC -> NetworkType.OKC
NetworkTypeDTO.ZKSYNC -> NetworkType.ZKSYNC
NetworkTypeDTO.VICTION -> NetworkType.VICTION
NetworkTypeDTO.AGORIC -> NetworkType.AGORIC
NetworkTypeDTO.AKASH -> NetworkType.AKASH
NetworkTypeDTO.AXELAR -> NetworkType.AXELAR
NetworkTypeDTO.BAND_PROTOCOL -> NetworkType.BAND_PROTOCOL
NetworkTypeDTO.BITSONG -> NetworkType.BITSONG
NetworkTypeDTO.CANTO -> NetworkType.CANTO
NetworkTypeDTO.CHIHUAHUA -> NetworkType.CHIHUAHUA
NetworkTypeDTO.COMDEX -> NetworkType.COMDEX
NetworkTypeDTO.COREUM -> NetworkType.COREUM
NetworkTypeDTO.COSMOS -> NetworkType.COSMOS
NetworkTypeDTO.CRESCENT -> NetworkType.CRESCENT
NetworkTypeDTO.CRONOS -> NetworkType.CRONOS
NetworkTypeDTO.CUDOS -> NetworkType.CUDOS
NetworkTypeDTO.DESMOS -> NetworkType.DESMOS
NetworkTypeDTO.DYDX -> NetworkType.DYDX
NetworkTypeDTO.EVMOS -> NetworkType.EVMOS
NetworkTypeDTO.FETCH_AI -> NetworkType.FETCH_AI
NetworkTypeDTO.GRAVITY_BRIDGE -> NetworkType.GRAVITY_BRIDGE
NetworkTypeDTO.INJECTIVE -> NetworkType.INJECTIVE
NetworkTypeDTO.IRISNET -> NetworkType.IRISNET
NetworkTypeDTO.JUNO -> NetworkType.JUNO
NetworkTypeDTO.KAVA -> NetworkType.KAVA
NetworkTypeDTO.KI_NETWORK -> NetworkType.KI_NETWORK
NetworkTypeDTO.MARS_PROTOCOL -> NetworkType.MARS_PROTOCOL
NetworkTypeDTO.NYM -> NetworkType.NYM
NetworkTypeDTO.OKEX_CHAIN -> NetworkType.OKEX_CHAIN
NetworkTypeDTO.ONOMY -> NetworkType.ONOMY
NetworkTypeDTO.OSMOSIS -> NetworkType.OSMOSIS
NetworkTypeDTO.PERSISTENCE -> NetworkType.PERSISTENCE
NetworkTypeDTO.QUICKSILVER -> NetworkType.QUICKSILVER
NetworkTypeDTO.REGEN -> NetworkType.REGEN
NetworkTypeDTO.SECRET -> NetworkType.SECRET
NetworkTypeDTO.SENTINEL -> NetworkType.SENTINEL
NetworkTypeDTO.SOMMELIER -> NetworkType.SOMMELIER
NetworkTypeDTO.STAFI -> NetworkType.STAFI
NetworkTypeDTO.STARGAZE -> NetworkType.STARGAZE
NetworkTypeDTO.STRIDE -> NetworkType.STRIDE
NetworkTypeDTO.TERITORI -> NetworkType.TERITORI
NetworkTypeDTO.TGRADE -> NetworkType.TGRADE
NetworkTypeDTO.UMEE -> NetworkType.UMEE
NetworkTypeDTO.POLKADOT -> NetworkType.POLKADOT
NetworkTypeDTO.KUSAMA -> NetworkType.KUSAMA
NetworkTypeDTO.WESTEND -> NetworkType.WESTEND
NetworkTypeDTO.BINANCEBEACON -> NetworkType.BINANCEBEACON
NetworkTypeDTO.NEAR -> NetworkType.NEAR
NetworkTypeDTO.SOLANA -> NetworkType.SOLANA
NetworkTypeDTO.TEZOS -> NetworkType.TEZOS
NetworkTypeDTO.TRON -> NetworkType.TRON
else -> NetworkType.UNKNOWN
}
}
}

View file

@ -0,0 +1,23 @@
package com.tangem.data.staking.converters
import com.tangem.datasource.api.stakekit.models.response.model.TokenDTO
import com.tangem.domain.staking.model.Token
import com.tangem.utils.converter.Converter
class TokenConverter(
private val stakingNetworkTypeConverter: StakingNetworkTypeConverter,
) : Converter<TokenDTO, Token> {
override fun convert(value: TokenDTO): Token {
return Token(
name = value.name,
network = stakingNetworkTypeConverter.convert(value.network),
symbol = value.symbol,
decimals = value.decimals,
address = value.address,
coinGeckoId = value.coinGeckoId,
logoURI = value.logoURI,
isPoints = value.isPoints,
)
}
}

View file

@ -1,18 +1,19 @@
package com.tangem.data.staking.converters
import com.tangem.datasource.api.stakekit.models.response.model.AddressArgumentDTO
import com.tangem.datasource.api.stakekit.models.response.model.TokenDTO
import com.tangem.datasource.api.stakekit.models.response.model.YieldDTO
import com.tangem.domain.staking.model.*
import com.tangem.utils.converter.Converter
class YieldConverter : Converter<YieldDTO, Yield> {
class YieldConverter(
private val tokenConverter: TokenConverter,
) : Converter<YieldDTO, Yield> {
override fun convert(value: YieldDTO): Yield {
return Yield(
id = value.id,
token = convertToken(value.token),
tokens = value.tokens.map { convertToken(it) },
token = tokenConverter.convert(value.token),
tokens = value.tokens.map { tokenConverter.convert(it) },
args = convertArgs(value.args),
status = convertStatus(value.status),
apy = value.apy,
@ -24,92 +25,6 @@ class YieldConverter : Converter<YieldDTO, Yield> {
)
}
private fun convertToken(tokenDTO: TokenDTO): Token {
return Token(
name = tokenDTO.name,
network = convertNetworkType(tokenDTO.network),
symbol = tokenDTO.symbol,
decimals = tokenDTO.decimals,
address = tokenDTO.address,
coinGeckoId = tokenDTO.coinGeckoId,
logoURI = tokenDTO.logoURI,
isPoints = tokenDTO.isPoints,
)
}
@Suppress("LongMethod", "CyclomaticComplexMethod")
private fun convertNetworkType(networkTypeDTO: TokenDTO.NetworkTypeDTO): Token.NetworkType {
return when (networkTypeDTO) {
TokenDTO.NetworkTypeDTO.AVALANCHE_C -> Token.NetworkType.AVALANCHE_C
TokenDTO.NetworkTypeDTO.AVALANCHE_ATOMIC -> Token.NetworkType.AVALANCHE_ATOMIC
TokenDTO.NetworkTypeDTO.AVALANCHE_P -> Token.NetworkType.AVALANCHE_P
TokenDTO.NetworkTypeDTO.ARBITRUM -> Token.NetworkType.ARBITRUM
TokenDTO.NetworkTypeDTO.BINANCE -> Token.NetworkType.BINANCE
TokenDTO.NetworkTypeDTO.CELO -> Token.NetworkType.CELO
TokenDTO.NetworkTypeDTO.ETHEREUM -> Token.NetworkType.ETHEREUM
TokenDTO.NetworkTypeDTO.ETHEREUM_GOERLI -> Token.NetworkType.ETHEREUM_GOERLI
TokenDTO.NetworkTypeDTO.ETHEREUM_HOLESKY -> Token.NetworkType.ETHEREUM_HOLESKY
TokenDTO.NetworkTypeDTO.FANTOM -> Token.NetworkType.FANTOM
TokenDTO.NetworkTypeDTO.HARMONY -> Token.NetworkType.HARMONY
TokenDTO.NetworkTypeDTO.OPTIMISM -> Token.NetworkType.OPTIMISM
TokenDTO.NetworkTypeDTO.POLYGON -> Token.NetworkType.POLYGON
TokenDTO.NetworkTypeDTO.GNOSIS -> Token.NetworkType.GNOSIS
TokenDTO.NetworkTypeDTO.MOONRIVER -> Token.NetworkType.MOONRIVER
TokenDTO.NetworkTypeDTO.OKC -> Token.NetworkType.OKC
TokenDTO.NetworkTypeDTO.ZKSYNC -> Token.NetworkType.ZKSYNC
TokenDTO.NetworkTypeDTO.VICTION -> Token.NetworkType.VICTION
TokenDTO.NetworkTypeDTO.AGORIC -> Token.NetworkType.AGORIC
TokenDTO.NetworkTypeDTO.AKASH -> Token.NetworkType.AKASH
TokenDTO.NetworkTypeDTO.AXELAR -> Token.NetworkType.AXELAR
TokenDTO.NetworkTypeDTO.BAND_PROTOCOL -> Token.NetworkType.BAND_PROTOCOL
TokenDTO.NetworkTypeDTO.BITSONG -> Token.NetworkType.BITSONG
TokenDTO.NetworkTypeDTO.CANTO -> Token.NetworkType.CANTO
TokenDTO.NetworkTypeDTO.CHIHUAHUA -> Token.NetworkType.CHIHUAHUA
TokenDTO.NetworkTypeDTO.COMDEX -> Token.NetworkType.COMDEX
TokenDTO.NetworkTypeDTO.COREUM -> Token.NetworkType.COREUM
TokenDTO.NetworkTypeDTO.COSMOS -> Token.NetworkType.COSMOS
TokenDTO.NetworkTypeDTO.CRESCENT -> Token.NetworkType.CRESCENT
TokenDTO.NetworkTypeDTO.CRONOS -> Token.NetworkType.CRONOS
TokenDTO.NetworkTypeDTO.CUDOS -> Token.NetworkType.CUDOS
TokenDTO.NetworkTypeDTO.DESMOS -> Token.NetworkType.DESMOS
TokenDTO.NetworkTypeDTO.DYDX -> Token.NetworkType.DYDX
TokenDTO.NetworkTypeDTO.EVMOS -> Token.NetworkType.EVMOS
TokenDTO.NetworkTypeDTO.FETCH_AI -> Token.NetworkType.FETCH_AI
TokenDTO.NetworkTypeDTO.GRAVITY_BRIDGE -> Token.NetworkType.GRAVITY_BRIDGE
TokenDTO.NetworkTypeDTO.INJECTIVE -> Token.NetworkType.INJECTIVE
TokenDTO.NetworkTypeDTO.IRISNET -> Token.NetworkType.IRISNET
TokenDTO.NetworkTypeDTO.JUNO -> Token.NetworkType.JUNO
TokenDTO.NetworkTypeDTO.KAVA -> Token.NetworkType.KAVA
TokenDTO.NetworkTypeDTO.KI_NETWORK -> Token.NetworkType.KI_NETWORK
TokenDTO.NetworkTypeDTO.MARS_PROTOCOL -> Token.NetworkType.MARS_PROTOCOL
TokenDTO.NetworkTypeDTO.NYM -> Token.NetworkType.NYM
TokenDTO.NetworkTypeDTO.OKEX_CHAIN -> Token.NetworkType.OKEX_CHAIN
TokenDTO.NetworkTypeDTO.ONOMY -> Token.NetworkType.ONOMY
TokenDTO.NetworkTypeDTO.OSMOSIS -> Token.NetworkType.OSMOSIS
TokenDTO.NetworkTypeDTO.PERSISTENCE -> Token.NetworkType.PERSISTENCE
TokenDTO.NetworkTypeDTO.QUICKSILVER -> Token.NetworkType.QUICKSILVER
TokenDTO.NetworkTypeDTO.REGEN -> Token.NetworkType.REGEN
TokenDTO.NetworkTypeDTO.SECRET -> Token.NetworkType.SECRET
TokenDTO.NetworkTypeDTO.SENTINEL -> Token.NetworkType.SENTINEL
TokenDTO.NetworkTypeDTO.SOMMELIER -> Token.NetworkType.SOMMELIER
TokenDTO.NetworkTypeDTO.STAFI -> Token.NetworkType.STAFI
TokenDTO.NetworkTypeDTO.STARGAZE -> Token.NetworkType.STARGAZE
TokenDTO.NetworkTypeDTO.STRIDE -> Token.NetworkType.STRIDE
TokenDTO.NetworkTypeDTO.TERITORI -> Token.NetworkType.TERITORI
TokenDTO.NetworkTypeDTO.TGRADE -> Token.NetworkType.TGRADE
TokenDTO.NetworkTypeDTO.UMEE -> Token.NetworkType.UMEE
TokenDTO.NetworkTypeDTO.POLKADOT -> Token.NetworkType.POLKADOT
TokenDTO.NetworkTypeDTO.KUSAMA -> Token.NetworkType.KUSAMA
TokenDTO.NetworkTypeDTO.WESTEND -> Token.NetworkType.WESTEND
TokenDTO.NetworkTypeDTO.BINANCEBEACON -> Token.NetworkType.BINANCEBEACON
TokenDTO.NetworkTypeDTO.NEAR -> Token.NetworkType.NEAR
TokenDTO.NetworkTypeDTO.SOLANA -> Token.NetworkType.SOLANA
TokenDTO.NetworkTypeDTO.TEZOS -> Token.NetworkType.TEZOS
TokenDTO.NetworkTypeDTO.TRON -> Token.NetworkType.TRON
else -> Token.NetworkType.UNKNOWN
}
}
private fun convertArgs(argsDTO: YieldDTO.ArgsDTO): Yield.Args {
return Yield.Args(
enter = convertEnter(argsDTO.enter),
@ -153,9 +68,9 @@ class YieldConverter : Converter<YieldDTO, Yield> {
logoUri = metadataDTO.logoUri,
description = metadataDTO.description,
documentation = metadataDTO.documentation,
gasFeeToken = convertToken(metadataDTO.gasFeeTokenDTO),
token = convertToken(metadataDTO.tokenDTO),
tokens = metadataDTO.tokensDTO.map { convertToken(it) },
gasFeeToken = tokenConverter.convert(metadataDTO.gasFeeTokenDTO),
token = tokenConverter.convert(metadataDTO.tokenDTO),
tokens = metadataDTO.tokensDTO.map { tokenConverter.convert(it) },
type = metadataDTO.type,
rewardSchedule = metadataDTO.rewardSchedule,
cooldownPeriod = convertPeriod(metadataDTO.cooldownPeriod),

View file

@ -0,0 +1,19 @@
package com.tangem.data.staking.converters.action
import com.tangem.datasource.api.stakekit.models.response.model.action.StakingActionStatusDTO
import com.tangem.domain.staking.model.action.StakingActionStatus
import com.tangem.utils.converter.Converter
class ActionStatusConverter : Converter<StakingActionStatusDTO, StakingActionStatus> {
override fun convert(value: StakingActionStatusDTO): StakingActionStatus {
return when (value) {
StakingActionStatusDTO.CANCELED -> StakingActionStatus.CANCELED
StakingActionStatusDTO.CREATED -> StakingActionStatus.CREATED
StakingActionStatusDTO.WAITING_FOR_NEXT -> StakingActionStatus.WAITING_FOR_NEXT
StakingActionStatusDTO.PROCESSING -> StakingActionStatus.PROCESSING
StakingActionStatusDTO.FAILED -> StakingActionStatus.FAILED
StakingActionStatusDTO.SUCCESS -> StakingActionStatus.SUCCESS
else -> StakingActionStatus.UNKNOWN
}
}
}

View file

@ -0,0 +1,28 @@
package com.tangem.data.staking.converters.action
import com.tangem.data.staking.converters.transaction.StakingTransactionConverter
import com.tangem.datasource.api.stakekit.models.response.EnterActionResponse
import com.tangem.domain.staking.model.action.EnterAction
import com.tangem.utils.converter.Converter
class EnterActionResponseConverter(
private val actionStatusConverter: ActionStatusConverter,
private val stakingActionTypeConverter: StakingActionTypeConverter,
private val transactionConverter: StakingTransactionConverter,
) : Converter<EnterActionResponse, EnterAction> {
override fun convert(value: EnterActionResponse): EnterAction {
return EnterAction(
id = value.id,
integrationId = value.integrationId,
status = actionStatusConverter.convert(value.status),
type = stakingActionTypeConverter.convert(value.type),
currentStepIndex = value.currentStepIndex,
amount = value.amount,
validatorAddress = value.validatorAddress,
validatorAddresses = value.validatorAddresses,
transactions = value.transactions?.map(transactionConverter::convert),
createdAt = value.createdAt,
)
}
}

View file

@ -0,0 +1,30 @@
package com.tangem.data.staking.converters.action
import com.tangem.datasource.api.stakekit.models.response.model.action.StakingActionTypeDTO
import com.tangem.domain.staking.model.action.StakingActionType
import com.tangem.utils.converter.Converter
@Suppress("CyclomaticComplexMethod")
class StakingActionTypeConverter : Converter<StakingActionTypeDTO, StakingActionType> {
override fun convert(value: StakingActionTypeDTO): StakingActionType {
return when (value) {
StakingActionTypeDTO.STAKE -> StakingActionType.STAKE
StakingActionTypeDTO.UNSTAKE -> StakingActionType.UNSTAKE
StakingActionTypeDTO.CLAIM_REWARDS -> StakingActionType.CLAIM_REWARDS
StakingActionTypeDTO.RESTAKE_REWARDS -> StakingActionType.RESTAKE_REWARDS
StakingActionTypeDTO.WITHDRAW -> StakingActionType.WITHDRAW
StakingActionTypeDTO.RESTAKE -> StakingActionType.RESTAKE
StakingActionTypeDTO.CLAIM_UNSTAKED -> StakingActionType.CLAIM_UNSTAKED
StakingActionTypeDTO.UNLOCK_LOCKED -> StakingActionType.UNLOCK_LOCKED
StakingActionTypeDTO.STAKE_LOCKED -> StakingActionType.STAKE_LOCKED
StakingActionTypeDTO.VOTE -> StakingActionType.VOTE
StakingActionTypeDTO.REVOKE -> StakingActionType.REVOKE
StakingActionTypeDTO.VOTE_LOCKED -> StakingActionType.VOTE_LOCKED
StakingActionTypeDTO.REVOTE -> StakingActionType.REVOTE
StakingActionTypeDTO.REBOND -> StakingActionType.REBOND
StakingActionTypeDTO.MIGRATE -> StakingActionType.MIGRATE
StakingActionTypeDTO.UNKNOWN -> StakingActionType.UNKNOWN
}
}
}

View file

@ -0,0 +1,19 @@
package com.tangem.data.staking.converters.transaction
import com.tangem.data.staking.converters.TokenConverter
import com.tangem.datasource.api.stakekit.models.response.model.transaction.StakingGasEstimateDTO
import com.tangem.domain.staking.model.transaction.StakingGasEstimate
import com.tangem.utils.converter.Converter
class GasEstimateConverter(
private val tokenConverter: TokenConverter,
) : Converter<StakingGasEstimateDTO, StakingGasEstimate> {
override fun convert(value: StakingGasEstimateDTO): StakingGasEstimate {
return StakingGasEstimate(
amount = value.amount,
token = tokenConverter.convert(value.token),
gasLimit = value.gasLimit,
)
}
}

View file

@ -0,0 +1,33 @@
package com.tangem.data.staking.converters.transaction
import com.tangem.data.staking.converters.StakingNetworkTypeConverter
import com.tangem.datasource.api.stakekit.models.response.model.transaction.StakingTransactionDTO
import com.tangem.domain.staking.model.transaction.StakingTransaction
import com.tangem.utils.converter.Converter
class StakingTransactionConverter(
private val networkTypeConverter: StakingNetworkTypeConverter,
private val transactionStatusConverter: StakingTransactionStatusConverter,
private val transactionTypeConverter: StakingTransactionTypeConverter,
private val gasEstimateConverter: GasEstimateConverter,
) : Converter<StakingTransactionDTO, StakingTransaction> {
override fun convert(value: StakingTransactionDTO): StakingTransaction {
return StakingTransaction(
id = value.id,
network = networkTypeConverter.convert(value.network),
status = transactionStatusConverter.convert(value.status),
type = transactionTypeConverter.convert(value.type),
hash = value.hash,
signedTransaction = value.signedTransaction,
unsignedTransaction = value.unsignedTransaction,
stepIndex = value.stepIndex,
error = value.error,
gasEstimate = value.gasEstimate?.let { gasEstimateConverter.convert(it) },
stakeId = value.stakeId,
explorerUrl = value.explorerUrl,
ledgerHwAppId = value.ledgerHwAppId,
isMessage = value.isMessage,
)
}
}

View file

@ -0,0 +1,24 @@
package com.tangem.data.staking.converters.transaction
import com.tangem.datasource.api.stakekit.models.response.model.transaction.StakingTransactionStatusDTO
import com.tangem.domain.staking.model.transaction.StakingTransactionStatus
import com.tangem.utils.converter.Converter
class StakingTransactionStatusConverter : Converter<StakingTransactionStatusDTO, StakingTransactionStatus> {
override fun convert(value: StakingTransactionStatusDTO): StakingTransactionStatus {
return when (value) {
StakingTransactionStatusDTO.NOT_FOUND -> StakingTransactionStatus.NOT_FOUND
StakingTransactionStatusDTO.CREATED -> StakingTransactionStatus.CREATED
StakingTransactionStatusDTO.BLOCKED -> StakingTransactionStatus.BLOCKED
StakingTransactionStatusDTO.WAITING_FOR_SIGNATURE -> StakingTransactionStatus.WAITING_FOR_SIGNATURE
StakingTransactionStatusDTO.SIGNED -> StakingTransactionStatus.SIGNED
StakingTransactionStatusDTO.BROADCASTED -> StakingTransactionStatus.BROADCASTED
StakingTransactionStatusDTO.PENDING -> StakingTransactionStatus.PENDING
StakingTransactionStatusDTO.CONFIRMED -> StakingTransactionStatus.CONFIRMED
StakingTransactionStatusDTO.FAILED -> StakingTransactionStatus.FAILED
StakingTransactionStatusDTO.SKIPPED -> StakingTransactionStatus.SKIPPED
StakingTransactionStatusDTO.UNKNOWN -> StakingTransactionStatus.UNKNOWN
}
}
}

View file

@ -0,0 +1,54 @@
package com.tangem.data.staking.converters.transaction
import com.tangem.datasource.api.stakekit.models.response.model.transaction.StakingTransactionTypeDTO
import com.tangem.domain.staking.model.transaction.StakingTransactionType
import com.tangem.utils.converter.Converter
@Suppress("CyclomaticComplexMethod")
class StakingTransactionTypeConverter : Converter<StakingTransactionTypeDTO, StakingTransactionType> {
override fun convert(value: StakingTransactionTypeDTO): StakingTransactionType {
return when (value) {
StakingTransactionTypeDTO.SWAP -> StakingTransactionType.SWAP
StakingTransactionTypeDTO.DEPOSIT -> StakingTransactionType.DEPOSIT
StakingTransactionTypeDTO.APPROVAL -> StakingTransactionType.APPROVAL
StakingTransactionTypeDTO.STAKE -> StakingTransactionType.STAKE
StakingTransactionTypeDTO.CLAIM_UNSTAKED -> StakingTransactionType.CLAIM_UNSTAKED
StakingTransactionTypeDTO.CLAIM_REWARDS -> StakingTransactionType.CLAIM_REWARDS
StakingTransactionTypeDTO.RESTAKE_REWARDS -> StakingTransactionType.RESTAKE_REWARDS
StakingTransactionTypeDTO.UNSTAKE -> StakingTransactionType.UNSTAKE
StakingTransactionTypeDTO.SPLIT -> StakingTransactionType.SPLIT
StakingTransactionTypeDTO.MERGE -> StakingTransactionType.MERGE
StakingTransactionTypeDTO.LOCK -> StakingTransactionType.LOCK
StakingTransactionTypeDTO.UNLOCK -> StakingTransactionType.UNLOCK
StakingTransactionTypeDTO.SUPPLY -> StakingTransactionType.SUPPLY
StakingTransactionTypeDTO.BRIDGE -> StakingTransactionType.BRIDGE
StakingTransactionTypeDTO.VOTE -> StakingTransactionType.VOTE
StakingTransactionTypeDTO.REVOKE -> StakingTransactionType.REVOKE
StakingTransactionTypeDTO.RESTAKE -> StakingTransactionType.RESTAKE
StakingTransactionTypeDTO.REBOND -> StakingTransactionType.REBOND
StakingTransactionTypeDTO.WITHDRAW -> StakingTransactionType.WITHDRAW
StakingTransactionTypeDTO.CREATE_ACCOUNT -> StakingTransactionType.CREATE_ACCOUNT
StakingTransactionTypeDTO.REVEAL -> StakingTransactionType.REVEAL
StakingTransactionTypeDTO.MIGRATE -> StakingTransactionType.MIGRATE
StakingTransactionTypeDTO.UTXO_P_TO_C_IMPORT -> StakingTransactionType.UTXO_P_TO_C_IMPORT
StakingTransactionTypeDTO.UTXO_C_TO_P_IMPORT -> StakingTransactionType.UTXO_C_TO_P_IMPORT
StakingTransactionTypeDTO.UNFREEZE_LEGACY -> StakingTransactionType.UNFREEZE_LEGACY
StakingTransactionTypeDTO.UNFREEZE_LEGACY_BANDWIDTH -> StakingTransactionType.UNFREEZE_LEGACY_BANDWIDTH
StakingTransactionTypeDTO.UNFREEZE_LEGACY_ENERGY -> StakingTransactionType.UNFREEZE_LEGACY_ENERGY
StakingTransactionTypeDTO.UNFREEZE_BANDWIDTH -> StakingTransactionType.UNFREEZE_BANDWIDTH
StakingTransactionTypeDTO.UNFREEZE_ENERGY -> StakingTransactionType.UNFREEZE_ENERGY
StakingTransactionTypeDTO.FREEZE_BANDWIDTH -> StakingTransactionType.FREEZE_BANDWIDTH
StakingTransactionTypeDTO.FREEZE_ENERGY -> StakingTransactionType.FREEZE_ENERGY
StakingTransactionTypeDTO.UNDELEGATE_BANDWIDTH -> StakingTransactionType.UNDELEGATE_BANDWIDTH
StakingTransactionTypeDTO.UNDELEGATE_ENERGY -> StakingTransactionType.UNDELEGATE_ENERGY
StakingTransactionTypeDTO.P2P_NODE_REQUEST -> StakingTransactionType.P2P_NODE_REQUEST
StakingTransactionTypeDTO.LUGANODES_PROVISION -> StakingTransactionType.LUGANODES_PROVISION
StakingTransactionTypeDTO.LUGANODES_EXIT_REQUEST -> StakingTransactionType.LUGANODES_EXIT_REQUEST
StakingTransactionTypeDTO.INFSTONES_PROVISION -> StakingTransactionType.INFSTONES_PROVISION
StakingTransactionTypeDTO.INFSTONES_EXIT_REQUEST -> StakingTransactionType.INFSTONES_EXIT_REQUEST
StakingTransactionTypeDTO.INFSTONES_CLAIM_REQUEST -> StakingTransactionType.INFSTONES_CLAIM_REQUEST
StakingTransactionTypeDTO.UNKNOWN -> StakingTransactionType.UNKNOWN
}
}
}