use af_move_type::MoveInstance;
use af_sui_types::{Address, Version};
use futures::Stream;
use sui_gql_client::GraphQlClient;
use sui_gql_client::queries::Error;
pub use crate::graphql::price_feed_for_source::Error as PfForSourceError;
use crate::oracle::PriceFeed;
pub(crate) mod price_feed_for_source;
pub(crate) mod price_feeds;
pub trait GraphQlClientExt: GraphQlClient + Sized {
fn price_feeds(
&self,
pfs: Address,
version: Option<Version>,
) -> impl Stream<Item = Result<(Address, MoveInstance<PriceFeed>), Error<Self::Error>>> + '_
{
price_feeds::query(self, pfs, version)
}
fn price_feed_for_source(
&self,
af_oracle_pkg: Address,
pfs: Address,
source_wrapper_id: Address,
) -> impl Future<Output = Result<Option<MoveInstance<PriceFeed>>, PfForSourceError<Self::Error>>>
+ Send {
price_feed_for_source::query(self, af_oracle_pkg, pfs, source_wrapper_id)
}
}
impl<T: GraphQlClient> GraphQlClientExt for T {}