#ifndef ARTIST_H_
#define ARTIST_H_
#include <glib.h>
#include "callback.h"
//
//primary information
//
typedef enum image_size image_size;
//
//Primary artist information
//
//Asynchronous calls
void artist_get_name(const gchar* musicbrainz_id, utf8_callback callback, gpointer user_data);
void artist_get_musicbrainz_id(const gchar* artist, utf8_callback callback, gpointer user_data);
void artist_get_url(const gchar* artist, url_callback callback, gpointer user_data);
void artist_get_image_url(const gchar* artist, image_size size, url_callback callback, gpointer user_data);
void artist_is_streamable(const gchar* artist, boolean_callback callback, gpointer user_data);
void artist_get_listener_count(const gchar* artist, uint_callback callback, gpointer user_data);
void artist_get_play_count(const gchar* artist, uint_callback callback, gpointer user_data);
void artist_get_published_date_time(const gchar* artist, date_time_callback callback, gpointer user_data);
void artist_get_summary(const gchar* artist, utf8_callback callback, gpointer user_data);
void artist_get_description(const gchar* artist, utf8_callback callback, gpointer user_data);
//Synchronous calls
gchar* s_artist_get_name(const gchar* musicbrainz_id, GError** error);
gchar* s_artist_get_musicbrainz_id(const gchar* artist, GError** error);
gchar* s_artist_get_url(const gchar* artist, GError** error);
gchar* s_artist_get_image_url(const gchar* artist, image_size size, GError** error);
gboolean s_artist_is_streamable(const gchar* artist, GError** error);
guint s_artist_get_listener_count(const gchar* artist, GError** error);
guint s_artist_get_play_count(const gchar* artist, GError** error);
struct tm s_artist_get_published_date_time(const gchar* artist, GError** error);
gchar* s_artist_get_summary(const gchar* artist, GError** error);
gchar* s_artist_get_description(const gchar* artist, GError** error);
//
//Related information
//
void artist_add_tags(const gchar* artist, const gchar** tags, void_callback callback, gpointer user_data);
void artist_remove_tag(const gchar* artist, const gchar* tag, void_callback callback, gpointer user_data);
void artist_get_events(const gchar* artist, events_callback callback, gpointer user_data);
//0 means no limit
void artist_get_similar_artists(const gchar* artist, guint limit, artists_callback callback, gpointer user_data);
void artist_get_tags(const gchar* artist, tags_callback callback, gpointer user_data);
void artist_get_top_albums(const gchar* artist, albums_callback callback, gpointer user_data);
void artist_get_top_fans(const gchar* artist, users_callback callback, gpointer user_data);
void artist_get_top_tags(const gchar* artist, tags_callback callback, gpointer user_data);
void artist_get_top_tracks(const gchar* artist, tracks_callback, gpointer user_data);
#endif /*ARTIST_H_*/