Updated on 2026-08-14
This commit is contained in:
parent
193dea813e
commit
ca286232ba
13 changed files with 111 additions and 92 deletions
|
|
@ -20,4 +20,10 @@ class GetYieldUseCase(
|
|||
.catch { stakingRepository.getYield(cryptoCurrencyId, symbol) }
|
||||
.mapLeft { stakingErrorResolver.resolve(it) }
|
||||
}
|
||||
|
||||
suspend operator fun invoke(yieldId: String): Either<StakingError, Yield> {
|
||||
return Either
|
||||
.catch { stakingRepository.getYield(yieldId) }
|
||||
.mapLeft { stakingErrorResolver.resolve(it) }
|
||||
}
|
||||
}
|
||||
|
|
@ -33,6 +33,8 @@ interface StakingRepository {
|
|||
|
||||
suspend fun getYield(cryptoCurrencyId: CryptoCurrency.ID, symbol: String): Yield
|
||||
|
||||
suspend fun getYield(yieldId: String): Yield
|
||||
|
||||
suspend fun getStakingAvailability(userWalletId: UserWalletId, cryptoCurrency: CryptoCurrency): StakingAvailability
|
||||
|
||||
suspend fun getActions(
|
||||
|
|
|
|||
|
|
@ -39,78 +39,9 @@ class MockStakingRepository : StakingRepository {
|
|||
rewardSchedule = Yield.Metadata.RewardSchedule.DAY,
|
||||
)
|
||||
|
||||
override suspend fun getYield(cryptoCurrencyId: CryptoCurrency.ID, symbol: String): Yield = Yield(
|
||||
id = "1",
|
||||
token = Token(
|
||||
name = "Solana",
|
||||
network = NetworkType.SOLANA,
|
||||
symbol = "SOL",
|
||||
decimals = 18,
|
||||
address = null,
|
||||
coinGeckoId = "solana",
|
||||
logoURI = null,
|
||||
isPoints = null,
|
||||
),
|
||||
tokens = listOf(),
|
||||
args = Yield.Args(
|
||||
enter = Yield.Args.Enter(
|
||||
addresses = Yield.Args.Enter.Addresses(
|
||||
address = AddressArgument(
|
||||
required = false,
|
||||
network = null,
|
||||
minimum = null,
|
||||
maximum = null,
|
||||
),
|
||||
additionalAddresses = mapOf(),
|
||||
),
|
||||
args = mapOf(),
|
||||
),
|
||||
exit = null,
|
||||
),
|
||||
status = Yield.Status(enter = false, exit = null),
|
||||
apy = 1.toBigDecimal(),
|
||||
rewardRate = 2.3,
|
||||
rewardType = Yield.RewardType.APR,
|
||||
metadata = Yield.Metadata(
|
||||
name = "Yield",
|
||||
logoUri = "",
|
||||
description = "",
|
||||
documentation = null,
|
||||
gasFeeToken = Token(
|
||||
name = "Solana",
|
||||
network = NetworkType.SOLANA,
|
||||
symbol = "SOL",
|
||||
decimals = 18,
|
||||
address = null,
|
||||
coinGeckoId = null,
|
||||
logoURI = null,
|
||||
isPoints = null,
|
||||
),
|
||||
token = Token(
|
||||
name = "Solana",
|
||||
network = NetworkType.SOLANA,
|
||||
symbol = "SOL",
|
||||
decimals = 18,
|
||||
address = null,
|
||||
coinGeckoId = null,
|
||||
logoURI = null,
|
||||
isPoints = null,
|
||||
),
|
||||
tokens = listOf(),
|
||||
type = "auto",
|
||||
rewardSchedule = Yield.Metadata.RewardSchedule.DAY,
|
||||
cooldownPeriod = Yield.Metadata.Period(days = 1),
|
||||
warmupPeriod = Yield.Metadata.Period(days = 1),
|
||||
rewardClaiming = Yield.Metadata.RewardClaiming.AUTO,
|
||||
defaultValidator = null,
|
||||
minimumStake = null,
|
||||
supportsMultipleValidators = false,
|
||||
revshare = Yield.Metadata.Enabled(enabled = false),
|
||||
fee = Yield.Metadata.Enabled(enabled = false),
|
||||
),
|
||||
validators = listOf(),
|
||||
isAvailable = false,
|
||||
)
|
||||
override suspend fun getYield(cryptoCurrencyId: CryptoCurrency.ID, symbol: String): Yield = yield
|
||||
|
||||
override suspend fun getYield(yieldId: String) = yield
|
||||
|
||||
override suspend fun getStakingAvailability(
|
||||
userWalletId: UserWalletId,
|
||||
|
|
@ -245,4 +176,79 @@ class MockStakingRepository : StakingRepository {
|
|||
override fun getStakingApproval(cryptoCurrency: CryptoCurrency): StakingApproval = StakingApproval.Empty
|
||||
|
||||
override suspend fun isAnyTokenStaked(userWalletId: UserWalletId): Boolean = false
|
||||
|
||||
private companion object {
|
||||
val yield = Yield(
|
||||
id = "1",
|
||||
token = Token(
|
||||
name = "Solana",
|
||||
network = NetworkType.SOLANA,
|
||||
symbol = "SOL",
|
||||
decimals = 18,
|
||||
address = null,
|
||||
coinGeckoId = "solana",
|
||||
logoURI = null,
|
||||
isPoints = null,
|
||||
),
|
||||
tokens = listOf(),
|
||||
args = Yield.Args(
|
||||
enter = Yield.Args.Enter(
|
||||
addresses = Yield.Args.Enter.Addresses(
|
||||
address = AddressArgument(
|
||||
required = false,
|
||||
network = null,
|
||||
minimum = null,
|
||||
maximum = null,
|
||||
),
|
||||
additionalAddresses = mapOf(),
|
||||
),
|
||||
args = mapOf(),
|
||||
),
|
||||
exit = null,
|
||||
),
|
||||
status = Yield.Status(enter = false, exit = null),
|
||||
apy = 1.toBigDecimal(),
|
||||
rewardRate = 2.3,
|
||||
rewardType = Yield.RewardType.APR,
|
||||
metadata = Yield.Metadata(
|
||||
name = "Yield",
|
||||
logoUri = "",
|
||||
description = "",
|
||||
documentation = null,
|
||||
gasFeeToken = Token(
|
||||
name = "Solana",
|
||||
network = NetworkType.SOLANA,
|
||||
symbol = "SOL",
|
||||
decimals = 18,
|
||||
address = null,
|
||||
coinGeckoId = null,
|
||||
logoURI = null,
|
||||
isPoints = null,
|
||||
),
|
||||
token = Token(
|
||||
name = "Solana",
|
||||
network = NetworkType.SOLANA,
|
||||
symbol = "SOL",
|
||||
decimals = 18,
|
||||
address = null,
|
||||
coinGeckoId = null,
|
||||
logoURI = null,
|
||||
isPoints = null,
|
||||
),
|
||||
tokens = listOf(),
|
||||
type = "auto",
|
||||
rewardSchedule = Yield.Metadata.RewardSchedule.DAY,
|
||||
cooldownPeriod = Yield.Metadata.Period(days = 1),
|
||||
warmupPeriod = Yield.Metadata.Period(days = 1),
|
||||
rewardClaiming = Yield.Metadata.RewardClaiming.AUTO,
|
||||
defaultValidator = null,
|
||||
minimumStake = null,
|
||||
supportsMultipleValidators = false,
|
||||
revshare = Yield.Metadata.Enabled(enabled = false),
|
||||
fee = Yield.Metadata.Enabled(enabled = false),
|
||||
),
|
||||
validators = listOf(),
|
||||
isAvailable = false,
|
||||
)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue