#![cfg_attr(docsrs, feature(doc_cfg))]
#[cfg(not(any(feature = "tmdb", feature = "anilist")))]
compile_error!(
"cameo needs at least one provider feature: enable `tmdb` and/or `anilist` \
(the default `full` feature enables both)."
);
#[cfg(feature = "tmdb")]
pub(crate) mod generated;
#[cfg(feature = "cache")]
pub mod cache;
pub mod core;
pub mod providers;
pub mod unified;
pub use core::error::ProviderError;
pub use core::{
config::TimeWindow,
pagination::{Page, PageToken, into_stream},
};
pub use async_trait;
#[cfg(feature = "cache")]
pub use cache::{CacheBackend, CacheError, CacheKey, CacheTtlConfig, MediaType, SqliteCache};
#[cfg(feature = "anilist")]
pub use providers::anilist::error::{AniListErrorLocation, AniListGqlError};
#[cfg(feature = "anilist")]
pub use providers::anilist::{AniListClient, AniListConfig, AniListError};
#[cfg(any(feature = "tmdb", feature = "anilist"))]
pub use providers::rate_limit::RateLimit;
#[cfg(any(feature = "tmdb", feature = "anilist"))]
pub use providers::retry::RetryPolicy;
#[cfg(feature = "tmdb")]
pub use providers::tmdb::{TmdbAuth, TmdbClient, TmdbConfig, TmdbError};
pub use unified::{
CameoClient, CameoClientBuilder, CameoClientError, Capability, Collection, Company, Creator,
DetailProvider, DiscoveryProvider, Gender, Genre, MediaId, MediaProvider, NativeId, Network,
ParseDateError, PartialDate, Provider, RecommendationProvider, SearchProvider, SeasonProvider,
UnifiedEpisode, UnifiedMovie, UnifiedMovieDetails, UnifiedPerson, UnifiedPersonDetails,
UnifiedSearchResult, UnifiedSeason, UnifiedSeasonDetails, UnifiedStreamingService,
UnifiedTvShow, UnifiedTvShowDetails, UnifiedWatchProviderEntry, UnifiedWatchProviders,
UnknownGenre, WatchAvailabilityProvider,
};