diff --git a/SVSim.Database/Enums/BattlePassTrack.cs b/SVSim.Database/Enums/BattlePassTrack.cs
new file mode 100644
index 0000000..8b4e073
--- /dev/null
+++ b/SVSim.Database/Enums/BattlePassTrack.cs
@@ -0,0 +1,11 @@
+namespace SVSim.Database.Enums;
+
+///
+/// Reward track on a battle pass season. Wire shape uses the section keys
+/// "normal" and "premium" under reward_info.
+///
+public enum BattlePassTrack
+{
+ Normal = 0,
+ Premium = 1,
+}
diff --git a/SVSim.Database/Models/BattlePassRewardEntry.cs b/SVSim.Database/Models/BattlePassRewardEntry.cs
new file mode 100644
index 0000000..c226359
--- /dev/null
+++ b/SVSim.Database/Models/BattlePassRewardEntry.cs
@@ -0,0 +1,22 @@
+using SVSim.Database.Common;
+using SVSim.Database.Enums;
+
+namespace SVSim.Database.Models;
+
+///
+/// One reward cell on a battle pass season (track × level). Capture shows at most one
+/// reward per (season, track, level) — enforced by unique index in DbContext.
+/// RewardType integers come from .
+///
+public class BattlePassRewardEntry : BaseEntity
+{
+ public int SeasonId { get; set; }
+ public BattlePassTrack Track { get; set; }
+ public int Level { get; set; }
+ public int RewardType { get; set; }
+ public long RewardDetailId { get; set; }
+ public int RewardNumber { get; set; }
+ public bool IsAppealExclusion { get; set; }
+
+ public BattlePassSeasonEntry Season { get; set; } = null!;
+}
diff --git a/SVSim.Database/Models/BattlePassSeasonEntry.cs b/SVSim.Database/Models/BattlePassSeasonEntry.cs
new file mode 100644
index 0000000..314aef5
--- /dev/null
+++ b/SVSim.Database/Models/BattlePassSeasonEntry.cs
@@ -0,0 +1,20 @@
+using SVSim.Database.Common;
+
+namespace SVSim.Database.Models;
+
+///
+/// One battle pass season. Active season is resolved by time-window
+/// (StartDate <= now < EndDate). Rewards are loaded via Rewards collection.
+///
+public class BattlePassSeasonEntry : BaseEntity
+{
+ public string Name { get; set; } = "";
+ public int MaxLevel { get; set; }
+ public DateTimeOffset StartDate { get; set; }
+ public DateTimeOffset EndDate { get; set; }
+ public bool CanPurchase { get; set; }
+ public int PriceCrystal { get; set; }
+ public string Description { get; set; } = "";
+
+ public List Rewards { get; set; } = new();
+}