Updated on 2026-08-14
This commit is contained in:
parent
f642bd1e28
commit
de3cdf0c47
8 changed files with 380 additions and 48 deletions
|
|
@ -1,6 +1,7 @@
|
|||
package com.tangem.datasource.api.ethpool
|
||||
|
||||
import com.tangem.datasource.api.common.response.ApiResponse
|
||||
import com.tangem.datasource.api.ethpool.models.request.P2PEthPoolAccountsListRequest
|
||||
import com.tangem.datasource.api.ethpool.models.request.P2PEthPoolBroadcastRequest
|
||||
import com.tangem.datasource.api.ethpool.models.request.P2PEthPoolTransactionRequest
|
||||
import com.tangem.datasource.api.ethpool.models.response.*
|
||||
|
|
@ -94,4 +95,20 @@ interface P2PEthPoolApi {
|
|||
@Path("delegatorAddress") delegatorAddress: String,
|
||||
@Path("vaultAddress") vaultAddress: String,
|
||||
): ApiResponse<P2PEthPoolResponse<P2PEthPoolAccountResponse>>
|
||||
|
||||
/**
|
||||
* Get account summaries for multiple delegators in a vault (batch).
|
||||
*
|
||||
* Designed to be called once per client to avoid rate-limit bursts.
|
||||
*
|
||||
* @param network Ethereum pool network: "mainnet" or "hoodi"
|
||||
* @param vaultAddress Ethereum address of the vault
|
||||
* @param body Delegator addresses to fetch (up to 255)
|
||||
*/
|
||||
@POST("api/v1/staking/pool/{network}/vaults/{vaultAddress}/accounts/list")
|
||||
suspend fun getAccountsList(
|
||||
@Path("network") network: String,
|
||||
@Path("vaultAddress") vaultAddress: String,
|
||||
@Body body: P2PEthPoolAccountsListRequest,
|
||||
): ApiResponse<P2PEthPoolResponse<P2PEthPoolAccountsListResponse>>
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package com.tangem.datasource.api.ethpool.models.request
|
||||
|
||||
import com.squareup.moshi.Json
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
||||
/**
|
||||
* Request body for POST /api/v1/staking/pool/{network}/vaults/{vaultAddress}/accounts/list
|
||||
*
|
||||
* Batch fetch of staking balances for multiple delegator addresses within a single vault.
|
||||
* Limit: up to 255 addresses per request. Addresses are deduplicated server-side.
|
||||
*/
|
||||
@JsonClass(generateAdapter = true)
|
||||
data class P2PEthPoolAccountsListRequest(
|
||||
@Json(name = "delegatorAddresses")
|
||||
val delegatorAddresses: List<String>,
|
||||
)
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package com.tangem.datasource.api.ethpool.models.response
|
||||
|
||||
import com.squareup.moshi.Json
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
||||
/**
|
||||
* Response for POST /api/v1/staking/pool/{network}/vaults/{vaultAddress}/accounts/list
|
||||
*
|
||||
* Each item is keyed by delegatorAddress and carries either a non-null [account]
|
||||
* or a per-address [error] (e.g. code 127108 — invalid delegator address).
|
||||
*/
|
||||
@JsonClass(generateAdapter = true)
|
||||
data class P2PEthPoolAccountsListResponse(
|
||||
@Json(name = "list")
|
||||
val list: List<P2PEthPoolAccountListItem>,
|
||||
)
|
||||
|
||||
@JsonClass(generateAdapter = true)
|
||||
data class P2PEthPoolAccountListItem(
|
||||
@Json(name = "delegatorAddress")
|
||||
val delegatorAddress: String,
|
||||
@Json(name = "account")
|
||||
val account: P2PEthPoolAccountResponse?,
|
||||
@Json(name = "error")
|
||||
val error: P2PEthPoolErrorDetailsDTO?,
|
||||
)
|
||||
|
|
@ -23,7 +23,7 @@ data class P2PEthPoolErrorDetailsDTO(
|
|||
@Json(name = "message")
|
||||
val message: String, // Human-readable error message
|
||||
@Json(name = "name")
|
||||
val name: String, // Error name/type
|
||||
val name: String?, // Error name/type
|
||||
@Json(name = "errors")
|
||||
val errors: List<String>? = null, // Optional validation errors array
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue