use crate::{
client::{
node_api::indexer::{
query_parameters::{
verify_query_parameters_alias_outputs, verify_query_parameters_basic_outputs,
verify_query_parameters_foundry_outputs, verify_query_parameters_nft_outputs, QueryParameter,
},
QueryParameters,
},
Client, Result,
},
types::{
api::plugins::indexer::OutputIdsResponse,
block::output::{AliasId, FoundryId, NftId, OutputId},
},
};
impl Client {
pub async fn basic_output_ids(&self, query_parameters: Vec<QueryParameter>) -> Result<OutputIdsResponse> {
let route = "api/indexer/v1/outputs/basic";
let query_parameters = verify_query_parameters_basic_outputs(query_parameters)?;
self.get_output_ids(route, query_parameters, true, false).await
}
pub async fn alias_output_ids(&self, query_parameters: Vec<QueryParameter>) -> Result<OutputIdsResponse> {
let route = "api/indexer/v1/outputs/alias";
let query_parameters = verify_query_parameters_alias_outputs(query_parameters)?;
self.get_output_ids(route, query_parameters, true, false).await
}
pub async fn alias_output_id(&self, alias_id: AliasId) -> Result<OutputId> {
let route = format!("api/indexer/v1/outputs/alias/{alias_id}");
Ok(*(self
.get_output_ids(&route, QueryParameters::empty(), true, false)
.await?
.first()
.ok_or_else(|| crate::client::Error::Node("no output id for alias".to_string()))?))
}
pub async fn foundry_output_ids(&self, query_parameters: Vec<QueryParameter>) -> Result<OutputIdsResponse> {
let route = "api/indexer/v1/outputs/foundry";
let query_parameters = verify_query_parameters_foundry_outputs(query_parameters)?;
self.get_output_ids(route, query_parameters, true, false).await
}
pub async fn foundry_output_id(&self, foundry_id: FoundryId) -> Result<OutputId> {
let route = format!("api/indexer/v1/outputs/foundry/{foundry_id}");
Ok(*(self
.get_output_ids(&route, QueryParameters::empty(), true, false)
.await?
.first()
.ok_or_else(|| crate::client::Error::Node("no output id for foundry".to_string()))?))
}
pub async fn nft_output_ids(&self, query_parameters: Vec<QueryParameter>) -> Result<OutputIdsResponse> {
let route = "api/indexer/v1/outputs/nft";
let query_parameters = verify_query_parameters_nft_outputs(query_parameters)?;
self.get_output_ids(route, query_parameters, true, false).await
}
pub async fn nft_output_id(&self, nft_id: NftId) -> Result<OutputId> {
let route = format!("api/indexer/v1/outputs/nft/{nft_id}");
Ok(*(self
.get_output_ids(&route, QueryParameters::empty(), true, false)
.await?
.first()
.ok_or_else(|| crate::client::Error::Node("no output id for nft".to_string()))?))
}
}