Updated on 2026-08-14

This commit is contained in:
Tangem 2026-05-26 17:07:40 +02:00
parent e04ac1fb2c
commit 99d32963b5
20 changed files with 336 additions and 27 deletions

View file

@ -219,6 +219,9 @@ interface TangemTechApi {
@POST("v2/transaction-events")
suspend fun transactionEvents(@Body name: TransactionEventBody): ApiResponse<Unit>
@GET("v1/coins/settings")
suspend fun getCoinsSettings(): ApiResponse<CoinsSettingsResponse>
// region Earn
@GET("v1/earn/markets")
suspend fun getEarnTokens(

View file

@ -0,0 +1,22 @@
package com.tangem.datasource.api.tangemTech.models
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
import java.math.BigDecimal
@JsonClass(generateAdapter = true)
data class CoinsSettingsResponse(
@Json(name = "staking") val staking: StakingSettingsDTO?,
)
@JsonClass(generateAdapter = true)
data class StakingSettingsDTO(
@Json(name = "vaults") val vaults: List<VaultSettingsDTO> = emptyList(),
)
@JsonClass(generateAdapter = true)
data class VaultSettingsDTO(
@Json(name = "vaultAddress") val vaultAddress: String,
@Json(name = "limit") val limit: BigDecimal?,
@Json(name = "coefficient") val coefficient: BigDecimal?,
)

View file

@ -0,0 +1,15 @@
package com.tangem.datasource.local.token
import com.tangem.datasource.local.datastore.RuntimeStateStore
import com.tangem.domain.staking.model.ethpool.VaultLimitInfo
import javax.inject.Inject
import javax.inject.Singleton
/**
* In-memory store for P2P vault limits from Tangem API /v1/coins/settings.
* Map key is vaultAddress.lowercase(). Null map value means limits not yet fetched.
* A missing key means the vault is full (null-limit vaults are excluded at fetch time).
*/
@Singleton
class P2PVaultLimitsStore @Inject constructor() :
RuntimeStateStore<Map<String, VaultLimitInfo>?> by RuntimeStateStore(defaultValue = null)