Updated on 2026-08-14

This commit is contained in:
Tangem 2025-08-11 14:42:09 +05:00
parent ae33c00aae
commit 85cff6b0d3
10 changed files with 169 additions and 22 deletions

View file

@ -4,6 +4,7 @@ import com.tangem.datasource.api.common.blockaid.models.request.DomainScanReques
import com.tangem.datasource.api.common.blockaid.models.request.EvmTransactionScanRequest
import com.tangem.datasource.api.common.blockaid.models.request.SolanaTransactionScanRequest
import com.tangem.datasource.api.common.blockaid.models.response.DomainScanResponse
import com.tangem.datasource.api.common.blockaid.models.response.SolanaTransactionResponse
import com.tangem.datasource.api.common.blockaid.models.response.TransactionScanResponse
import retrofit2.http.Body
import retrofit2.http.POST
@ -17,5 +18,5 @@ interface BlockAidApi {
suspend fun scanJsonRpc(@Body request: EvmTransactionScanRequest): TransactionScanResponse
@POST("solana/message/scan")
suspend fun scanSolanaMessage(@Body request: SolanaTransactionScanRequest): TransactionScanResponse
suspend fun scanSolanaMessage(@Body request: SolanaTransactionScanRequest): SolanaTransactionResponse
}

View file

@ -7,7 +7,7 @@ import com.tangem.datasource.api.common.blockaid.models.response.TransactionMeta
@JsonClass(generateAdapter = true)
data class SolanaTransactionScanRequest(
@Json(name = "encoding") val encoding: String = "base64",
@Json(name = "chain") val chain: String,
@Json(name = "blockchain") val blockchain: String,
@Json(name = "method") val method: String,
@Json(name = "options") val options: List<String> = listOf("simulation", "validation"),
@Json(name = "metadata") val metadata: TransactionMetadata,

View file

@ -0,0 +1,58 @@
package com.tangem.datasource.api.common.blockaid.models.response
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
@JsonClass(generateAdapter = true)
data class SolanaTransactionResponse(
@Json(name = "result") val result: SolanaTransactionResult,
)
@JsonClass(generateAdapter = true)
data class SolanaTransactionResult(
@Json(name = "validation") val validation: SolanaTransactionValidation,
@Json(name = "simulation") val simulation: SolanaTransactionSimulation? = null,
)
@JsonClass(generateAdapter = true)
data class SolanaTransactionValidation(
@Json(name = "result_type") val resultType: String,
@Json(name = "description") val description: String?,
)
@JsonClass(generateAdapter = true)
data class SolanaTransactionSimulation(
@Json(name = "account_summary") val accountSummary: SolanaTransactionAccountSummary,
@Json(name = "error") val error: String? = null,
@Json(name = "error_details") val errorDetails: String? = null,
)
@JsonClass(generateAdapter = true)
data class SolanaTransactionAccountSummary(
@Json(name = "account_assets_diff")
val accountAssetsDiff: List<SolanaTransactionAssetDiff>,
)
@JsonClass(generateAdapter = true)
data class SolanaTransactionAssetDiff(
@Json(name = "asset_type") val assetType: String,
@Json(name = "asset") val asset: SolanaTransactionAsset,
@Json(name = "in") val inTransfer: SolanaTransferDetail? = null,
@Json(name = "out") val outTransfer: SolanaTransferDetail? = null,
)
@JsonClass(generateAdapter = true)
data class SolanaTransactionAsset(
@Json(name = "address") val address: String? = null,
@Json(name = "symbol") val symbol: String? = null,
@Json(name = "name") val name: String? = null,
@Json(name = "decimals") val decimals: Int? = null,
@Json(name = "type") val type: String? = null,
@Json(name = "logo") val logoUrl: String? = null,
)
@JsonClass(generateAdapter = true)
data class SolanaTransferDetail(
@Json(name = "value") val amount: String? = null,
@Json(name = "summary") val summary: String? = null,
)