using System.Text.Json.Serialization;
using YandexMusic.API.Models.Common;
using YandexMusic.API.Models.Search.Album;
using YandexMusic.API.Models.Search.Artist;
using YandexMusic.API.Models.Search.Playlist;
using YandexMusic.API.Models.Search.Track;
using YandexMusic.API.Models.Search.User;
using YandexMusic.API.Models.Search.Video;

namespace YandexMusic.API.Models.Search
{
    public class YSearch
    {
        public YSearchResult<YSearchAlbumModel> Albums { get; set; }
        public YSearchResult<YSearchArtistModel> Artists { get; set; }

        public YSearchBest Best { get; set; }

        public bool MisspellCorrected { get; set; }
        public string MisspellOriginal { get; set; }
        public string MisspellResult { get; set; }
        public bool NoCorrect { get; set; }
        public int Page { get; set; }
        public int PerPage { get; set; }
        public YSearchResult<YSearchPlaylistModel> Playlists { get; set; }
        [JsonPropertyName("podcast_episodes")]
        public YSearchResult<YSearchTrackModel> PodcastEpisode { get; set; }
        public string SearchRequestId { get; set; }
        public string Text { get; set; }
        public YSearchResult<YSearchTrackModel> Tracks { get; set; }

        public YSearchType Type { get; set; }
        public YSearchResult<YSearchUserModel> Users { get; set; }
        public YSearchResult<YSearchVideoModel> Videos { get; set; }
    }
}