namespace TwitchEventSub.Types.HypeTrain { public abstract class HypeTrainEvents : Event { public string id { get; set; } //The Hype Train ID. public string broadcaster_user_id { get; set; } //The requested broadcaster ID. public string broadcaster_user_login { get; set; } //The requested broadcaster login. public string broadcaster_user_name { get; set; } //The requested broadcaster display name. public int level { get; set; } //The current level of the Hype Train. public int total { get; set; } //Total points contributed to the Hype Train. public Contribution top_contributions { get; set; } //The contributors with the most points contributed. public string started_at { get; set; } //The time when the Hype Train started. } public class HypeTrainProgress: HypeTrainEvents { public int progress { get; set; } //The number of points contributed to the Hype Train at the current level. public int goal { get; set; } //The number of points required to reach the next level. public Contribution last_contribution { get; set; } //The most recent contribution. public string expires_at { get; set; } //The time when the Hype Train expires. The expiration is extended when the Hype Train reaches a new level. } public class HypeTrainBegin : HypeTrainProgress { new private int level{get;set;} = 1; } public class HypeTrainEnd : HypeTrainEvents { public string ended_at { get; set; } //The time when the Hype Train ended. public string cooldown_ends_at { get; set; } //The time when the Hype Train cooldown ends so that the next Hype Train can start. } }