defmodule BazVenueAdapterOpenSea do
@moduledoc """
Baz adapter for OpenSea
"""
alias BazVenueAdapterOpenSea.FetchCollectionBySlug
alias BazVenueAdapterOpenSea.FetchCollectionAssetPageBySlug
alias BazVenueAdapterOpenSea.FetchCollectionEventPageBySlug
alias BazVenueAdapterOpenSea.StartVenueWebSocket
alias BazVenueAdapterOpenSea.SubscribeVenueWebSocket
@behaviour Baz.VenueAdapter
@type venue :: Baz.VenueAdapter.venue()
@type collection_slug :: Baz.VenueAdapter.collection_slug()
@spec fetch_collection_by_slug(venue, collection_slug) :: FetchCollectionBySlug.result()
defdelegate fetch_collection_by_slug(venue, collection_slug), to: FetchCollectionBySlug
@type token_ids :: Baz.VenueAdapter.token_ids()
@type page_cursor :: Baz.Page.cursor()
@spec fetch_collection_asset_page_by_slug(venue, collection_slug, token_ids, page_cursor) :: FetchCollectionAssetPageBySlug.result()
defdelegate fetch_collection_asset_page_by_slug(venue, collection_slug, token_ids, page_cursor), to: FetchCollectionAssetPageBySlug
@spec fetch_collection_event_page_by_slug(venue, collection_slug, token_ids, page_cursor) :: FetchCollectionEventPageBySlug.result()
defdelegate fetch_collection_event_page_by_slug(venue, collection_slug, token_ids, page_cursor), to: FetchCollectionEventPageBySlug
@spec start_venue_web_socket(venue) :: StartVenueWebSocket.result()
defdelegate start_venue_web_socket(venue), to: StartVenueWebSocket
@type slug_mask :: Baz.VenueAdapter.slug_mask()
@spec subscribe_venue_web_socket(venue, slug_mask) :: SubscribeVenueWebSocket.result()
defdelegate subscribe_venue_web_socket(venue, slugs), to: SubscribeVenueWebSocket
end