diff --git a/AnimeON/Models/AnimeONAggregatedStructure.cs b/AnimeON/Models/AnimeONAggregatedStructure.cs
new file mode 100644
index 0000000..d3f3f32
--- /dev/null
+++ b/AnimeON/Models/AnimeONAggregatedStructure.cs
@@ -0,0 +1,58 @@
+using System.Collections.Generic;
+
+namespace AnimeON.Models
+{
+ /// Aggregated structure for AnimeON serial content to match Lampac standard navigation.
+ public class AnimeONAggregatedStructure
+ {
+ /// Anime identifier from AnimeON API.
+ public int AnimeId { get; set; }
+
+ /// Season number.
+ public int Season { get; set; }
+
+ /// Voices mapped by display key e.g. "[Moon] AniUA".
+ public Dictionary Voices { get; set; } = new Dictionary();
+ }
+
+ /// Voice information for a specific player/studio combination within a season.
+ public class AnimeONVoiceInfo
+ {
+ /// Studio/voice name (e.g., AniUA).
+ public string Name { get; set; }
+
+ /// Player type ("moon" or "ashdi").
+ public string PlayerType { get; set; }
+
+ /// Display name (e.g., "[Moon] AniUA").
+ public string DisplayName { get; set; }
+
+ /// Player identifier from API.
+ public int PlayerId { get; set; }
+
+ /// Fundub identifier from API.
+ public int FundubId { get; set; }
+
+ /// Flat list of episodes for the selected season.
+ public List Episodes { get; set; } = new List();
+ }
+
+ /// Episode information within a voice.
+ public class AnimeONEpisodeInfo
+ {
+ /// Episode number.
+ public int Number { get; set; }
+
+ /// Episode title.
+ public string Title { get; set; }
+
+ /// Primary HLS link if available.
+ public string Hls { get; set; }
+
+ /// Fallback video URL (iframe or direct).
+ public string VideoUrl { get; set; }
+
+ /// Episode identifier from API.
+ public int EpisodeId { get; set; }
+ }
+}
\ No newline at end of file