import '../models/artist_announcement.dart'; import '../models/artist_link.dart'; import '../models/artist_profile.dart'; import '../models/artist_tag.dart'; import '../models/artist_work_query.dart'; import '../models/post.dart'; import '../models/post_comment.dart'; import '../models/provider_health.dart'; import '../models/tag_suggestion.dart'; import '../models/top_period_filter.dart'; abstract class ContentProvider { String get id; String get name; String get baseUrl; Future> searchPosts({ required List tags, required int page, int limit = 50, String? rating, TopPeriodFilter topPeriod = TopPeriodFilter.none, }); Future getPost(String id); Future checkHealth(); } abstract class PostPageProvider { String? postPageUrl(Post post); } abstract class MediaHeadersProvider { Map mediaHeaders(Post post); } abstract class CommentProvider { Future> getComments(String postId); } abstract class TagSuggestionProvider { Future> suggestTags(String query, {int limit = 20}); } abstract class TagMetadataProvider { Future>> categorizeTags(List tags); } abstract class ArtistProvider { Future> listArtists({ String? service, List? services, String? query, int page = 1, int limit = 30, }); Future> searchArtists( String query, { String? service, List? services, int page = 1, int limit = 30, }); Future> getArtistPosts({ required ArtistWorkQuery query, int page = 0, int limit = 50, }); Future> getArtistPostComments( String service, String artistId, String postId, ); Future> getArtistTags(String service, String artistId) async => const []; Future> getArtistLinks( String service, String artistId) async => const []; Future> getArtistAnnouncements( String service, String artistId) async => const []; }