#![cfg_attr(any(), rustfmt::skip)]
///////////////////////////////////////////////
//                                           //
//                     !                     //
//   This file is automatically generated!   //
//           Do not directly edit!           //
//                                           //
///////////////////////////////////////////////

// http://www.mingweisamuel.com/riotapi-schema/tool/
// Version a2ccdc60991a963528b99c289cd43bbbcefd70ec

#![allow(missing_docs)]

//! Data transfer structs.
//!
//! Separated into separate modules for each endpoint.
//! Several modules contain structs with the same name, so be sure to use the right ones.
//!
//! Note: these modules are automatically generated.

/// Data structs used by [`AccountV1`](crate::endpoints::AccountV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod account_v1 {
    /// Account data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Account {
        #[serde(rename = "puuid")]
        pub puuid: String,
        /// This field may be excluded from the response if the account doesn't have a gameName.
        #[serde(rename = "gameName")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub game_name: Option<String>,
        /// This field may be excluded from the response if the account doesn't have a tagLine.
        #[serde(rename = "tagLine")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub tag_line: Option<String>,
    }
    /// ActiveShard data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ActiveShard {
        #[serde(rename = "puuid")]
        pub puuid: String,
        #[serde(rename = "game")]
        pub game: String,
        #[serde(rename = "activeShard")]
        pub active_shard: String,
    }
}

/// Data structs used by [`ChampionMasteryV4`](crate::endpoints::ChampionMasteryV4).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod champion_mastery_v4 {
    /// ChampionMastery data object.
    /// # Description
    /// This object contains single Champion Mastery information for player and champion combination.
    ///
    /// Note: This struct is automatically generated
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ChampionMastery {
        /// Player Universal Unique Identifier. Exact length of 78 characters. (Encrypted)
        #[serde(rename = "puuid")]
        pub puuid: String,
        /// Number of points needed to achieve next level. Zero if player reached maximum champion level for this champion.
        #[serde(rename = "championPointsUntilNextLevel")]
        pub champion_points_until_next_level: i64,
        /// Is chest granted for this champion or not in current season.
        #[serde(rename = "chestGranted")]
        pub chest_granted: bool,
        /// Champion ID for this entry.
        #[serde(rename = "championId")]
        pub champion_id: crate::consts::Champion,
        /// Last time this champion was played by this player - in Unix milliseconds time format.
        #[serde(rename = "lastPlayTime")]
        pub last_play_time: i64,
        /// Champion level for specified player and champion combination.
        #[serde(rename = "championLevel")]
        pub champion_level: i32,
        /// Total number of champion points for this player and champion combination - they are used to determine championLevel.
        #[serde(rename = "championPoints")]
        pub champion_points: i32,
        /// Number of points earned since current level has been achieved.
        #[serde(rename = "championPointsSinceLastLevel")]
        pub champion_points_since_last_level: i64,
        /// The token earned for this champion at the current championLevel. When the championLevel is advanced the tokensEarned resets to 0.
        #[serde(rename = "tokensEarned")]
        pub tokens_earned: i32,
        #[serde(rename = "markRequiredForNextLevel")]
        pub mark_required_for_next_level: i32,
        #[serde(rename = "championSeasonMilestone")]
        pub champion_season_milestone: i32,
        #[serde(rename = "milestoneGrades")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub milestone_grades: Option<std::vec::Vec<String>>,
        #[serde(rename = "nextSeasonMilestone")]
        pub next_season_milestone: NextSeasonMilestone,
    }
    /// NextSeasonMilestone data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct NextSeasonMilestone {
        #[serde(rename = "requireGradeCounts")]
        pub require_grade_counts: std::collections::HashMap<String, i32>,
        #[serde(rename = "rewardMarks")]
        pub reward_marks: i32,
        #[serde(rename = "bonus")]
        pub bonus: bool,
        #[serde(rename = "rewardConfig")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub reward_config: Option<RewardConfig>,
    }
    /// RewardConfig data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct RewardConfig {
        #[serde(rename = "rewardValue")]
        pub reward_value: String,
        #[serde(rename = "rewardType")]
        pub reward_type: String,
        #[serde(rename = "maximumReward")]
        pub maximum_reward: i32,
    }
}

/// Data structs used by [`ChampionV3`](crate::endpoints::ChampionV3).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod champion_v3 {
    /// ChampionInfo data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ChampionInfo {
        #[serde(rename = "maxNewPlayerLevel")]
        pub max_new_player_level: i32,
        #[serde(rename = "freeChampionIdsForNewPlayers")]
        pub free_champion_ids_for_new_players: std::vec::Vec<crate::consts::Champion>,
        #[serde(rename = "freeChampionIds")]
        pub free_champion_ids: std::vec::Vec<crate::consts::Champion>,
    }
}

/// Data structs used by [`ClashV1`](crate::endpoints::ClashV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod clash_v1 {
    /// Player data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Player {
        #[serde(rename = "summonerId")]
        pub summoner_id: String,
        #[serde(rename = "teamId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub team_id: Option<String>,
        /// (Legal values:  UNSELECTED,  FILL,  TOP,  JUNGLE,  MIDDLE,  BOTTOM,  UTILITY)
        #[serde(rename = "position")]
        pub position: String,
        /// (Legal values:  CAPTAIN,  MEMBER)
        #[serde(rename = "role")]
        pub role: String,
    }
    /// Team data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Team {
        #[serde(rename = "id")]
        pub id: String,
        #[serde(rename = "tournamentId")]
        pub tournament_id: i32,
        #[serde(rename = "name")]
        pub name: String,
        #[serde(rename = "iconId")]
        pub icon_id: i32,
        #[serde(rename = "tier")]
        pub tier: i32,
        /// Summoner ID of the team captain.
        #[serde(rename = "captain")]
        pub captain: String,
        #[serde(rename = "abbreviation")]
        pub abbreviation: String,
        /// Team members.
        #[serde(rename = "players")]
        pub players: std::vec::Vec<Player>,
    }
    /// Tournament data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Tournament {
        #[serde(rename = "id")]
        pub id: i32,
        #[serde(rename = "themeId")]
        pub theme_id: i32,
        #[serde(rename = "nameKey")]
        pub name_key: String,
        #[serde(rename = "nameKeySecondary")]
        pub name_key_secondary: String,
        /// Tournament phase.
        #[serde(rename = "schedule")]
        pub schedule: std::vec::Vec<TournamentPhase>,
    }
    /// TournamentPhase data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TournamentPhase {
        #[serde(rename = "id")]
        pub id: i32,
        #[serde(rename = "registrationTime")]
        pub registration_time: i64,
        #[serde(rename = "startTime")]
        pub start_time: i64,
        #[serde(rename = "cancelled")]
        pub cancelled: bool,
    }
}

/// Data structs used by [`LeagueExpV4`](crate::endpoints::LeagueExpV4).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod league_exp_v4 {
    /// LeagueEntry data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LeagueEntry {
        #[serde(rename = "leagueId")]
        pub league_id: String,
        /// Player's summonerId (Encrypted)
        #[serde(rename = "summonerId")]
        pub summoner_id: String,
        #[serde(rename = "queueType")]
        pub queue_type: crate::consts::QueueType,
        #[serde(rename = "tier")]
        pub tier: crate::consts::Tier,
        /// The player's division within a tier.
        #[serde(rename = "rank")]
        pub rank: crate::consts::Division,
        #[serde(rename = "leaguePoints")]
        pub league_points: i32,
        /// Winning team on Summoners Rift. First placement in Teamfight Tactics.
        #[serde(rename = "wins")]
        pub wins: i32,
        /// Losing team on Summoners Rift. Second through eighth placement in Teamfight Tactics.
        #[serde(rename = "losses")]
        pub losses: i32,
        #[serde(rename = "hotStreak")]
        pub hot_streak: bool,
        #[serde(rename = "veteran")]
        pub veteran: bool,
        #[serde(rename = "freshBlood")]
        pub fresh_blood: bool,
        #[serde(rename = "inactive")]
        pub inactive: bool,
        #[serde(rename = "miniSeries")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub mini_series: Option<MiniSeries>,
    }
    /// MiniSeries data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct MiniSeries {
        #[serde(rename = "losses")]
        pub losses: i32,
        #[serde(rename = "progress")]
        pub progress: String,
        #[serde(rename = "target")]
        pub target: i32,
        #[serde(rename = "wins")]
        pub wins: i32,
    }
}

/// Data structs used by [`LeagueV4`](crate::endpoints::LeagueV4).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod league_v4 {
    /// LeagueList data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LeagueList {
        #[serde(rename = "leagueId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub league_id: Option<String>,
        #[serde(rename = "entries")]
        pub entries: std::vec::Vec<LeagueItem>,
        #[serde(rename = "tier")]
        pub tier: crate::consts::Tier,
        #[serde(rename = "name")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub name: Option<String>,
        #[serde(rename = "queue")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub queue: Option<crate::consts::QueueType>,
    }
    /// LeagueItem data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LeagueItem {
        #[serde(rename = "freshBlood")]
        pub fresh_blood: bool,
        /// Winning team on Summoners Rift.
        #[serde(rename = "wins")]
        pub wins: i32,
        #[serde(rename = "miniSeries")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub mini_series: Option<MiniSeries>,
        #[serde(rename = "inactive")]
        pub inactive: bool,
        #[serde(rename = "veteran")]
        pub veteran: bool,
        #[serde(rename = "hotStreak")]
        pub hot_streak: bool,
        #[serde(rename = "rank")]
        pub rank: crate::consts::Division,
        #[serde(rename = "leaguePoints")]
        pub league_points: i32,
        /// Losing team on Summoners Rift.
        #[serde(rename = "losses")]
        pub losses: i32,
        /// Player's encrypted summonerId.
        #[serde(rename = "summonerId")]
        pub summoner_id: String,
    }
    /// MiniSeries data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct MiniSeries {
        #[serde(rename = "losses")]
        pub losses: i32,
        #[serde(rename = "progress")]
        pub progress: String,
        #[serde(rename = "target")]
        pub target: i32,
        #[serde(rename = "wins")]
        pub wins: i32,
    }
    /// LeagueEntry data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LeagueEntry {
        #[serde(rename = "leagueId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub league_id: Option<String>,
        /// Player's encrypted summonerId.
        #[serde(rename = "summonerId")]
        pub summoner_id: String,
        #[serde(rename = "queueType")]
        pub queue_type: crate::consts::QueueType,
        #[serde(rename = "tier")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub tier: Option<crate::consts::Tier>,
        /// The player's division within a tier.
        #[serde(rename = "rank")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub rank: Option<crate::consts::Division>,
        #[serde(rename = "leaguePoints")]
        pub league_points: i32,
        /// Winning team on Summoners Rift.
        #[serde(rename = "wins")]
        pub wins: i32,
        /// Losing team on Summoners Rift.
        #[serde(rename = "losses")]
        pub losses: i32,
        #[serde(rename = "hotStreak")]
        pub hot_streak: bool,
        #[serde(rename = "veteran")]
        pub veteran: bool,
        #[serde(rename = "freshBlood")]
        pub fresh_blood: bool,
        #[serde(rename = "inactive")]
        pub inactive: bool,
        #[serde(rename = "miniSeries")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub mini_series: Option<MiniSeries>,
    }
}

/// Data structs used by [`LolChallengesV1`](crate::endpoints::LolChallengesV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod lol_challenges_v1 {
    /// ChallengeConfigInfo data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ChallengeConfigInfo {
        #[serde(rename = "id")]
        pub id: i64,
        #[serde(rename = "localizedNames")]
        pub localized_names: std::collections::HashMap<String, std::collections::HashMap<String, String>>,
        /// DISABLED - not visible and not calculated, HIDDEN - not visible, but calculated, ENABLED - visible and calculated, ARCHIVED - visible, but not calculated
        #[serde(rename = "state")]
        pub state: String,
        /// LIFETIME - stats are incremented without reset, SEASON - stats are accumulated by season and reset at the beginning of new season
        #[serde(rename = "tracking")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub tracking: Option<String>,
        #[serde(rename = "startTimestamp")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub start_timestamp: Option<i64>,
        #[serde(rename = "endTimestamp")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub end_timestamp: Option<i64>,
        #[serde(rename = "leaderboard")]
        pub leaderboard: bool,
        #[serde(rename = "thresholds")]
        pub thresholds: std::collections::HashMap<String, f64>,
    }
    /// State data object.
    /// # Description
    /// DISABLED - not visible and not calculated,<br>
    /// HIDDEN - not visible, but calculated,<br>
    /// ENABLED - visible and calculated,<br>
    /// ARCHIVED - visible, but not calculated
    ///
    /// Note: This struct is automatically generated
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct State {
    }
    /// Tracking data object.
    /// # Description
    /// LIFETIME - stats are incremented without reset,<br>
    /// SEASON - stats are accumulated by season and reset at the beginning of new season
    ///
    /// Note: This struct is automatically generated
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Tracking {
    }
    /// ApexPlayerInfo data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ApexPlayerInfo {
        #[serde(rename = "puuid")]
        pub puuid: String,
        #[serde(rename = "value")]
        pub value: f64,
        #[serde(rename = "position")]
        pub position: i32,
    }
    /// Level data object.
    /// # Description
    /// 0 NONE,<br>
    /// 1 IRON,<br>
    /// 2 BRONZE,<br>
    /// 3 SILVER,<br>
    /// 4 GOLD,<br>
    /// 5 PLATINUM,<br>
    /// 6 DIAMOND,<br>
    /// 7 MASTER,<br>
    /// 8 GRANDMASTER,<br>
    /// 9 CHALLENGER
    ///
    /// Note: This struct is automatically generated
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Level {
    }
    /// PlayerInfo data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PlayerInfo {
        #[serde(rename = "challenges")]
        pub challenges: std::vec::Vec<ChallengeInfo>,
        #[serde(rename = "preferences")]
        pub preferences: PlayerClientPreferences,
        #[serde(rename = "totalPoints")]
        pub total_points: ChallengePoints,
        #[serde(rename = "categoryPoints")]
        pub category_points: std::collections::HashMap<String, ChallengePoints>,
    }
    /// ChallengeInfo data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ChallengeInfo {
        #[serde(rename = "challengeId")]
        pub challenge_id: i64,
        #[serde(rename = "percentile")]
        pub percentile: f64,
        #[serde(rename = "level")]
        pub level: crate::consts::Tier,
        #[serde(rename = "value")]
        pub value: f64,
        #[serde(rename = "achievedTime")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub achieved_time: Option<i64>,
        #[serde(rename = "position")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub position: Option<i64>,
        #[serde(rename = "playersInLevel")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub players_in_level: Option<i64>,
    }
    /// PlayerClientPreferences data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PlayerClientPreferences {
        #[serde(rename = "bannerAccent")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub banner_accent: Option<String>,
        #[serde(rename = "title")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub title: Option<String>,
        #[serde(rename = "challengeIds")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub challenge_ids: Option<std::vec::Vec<i64>>,
        #[serde(rename = "crestBorder")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub crest_border: Option<String>,
        #[serde(rename = "prestigeCrestBorderLevel")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub prestige_crest_border_level: Option<i32>,
    }
    /// ChallengePoints data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ChallengePoints {
        #[serde(rename = "level")]
        pub level: crate::consts::Tier,
        #[serde(rename = "current")]
        pub current: i64,
        #[serde(rename = "max")]
        pub max: i64,
        #[serde(rename = "percentile")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub percentile: Option<f64>,
    }
}

/// Data structs used by [`LolStatusV4`](crate::endpoints::LolStatusV4).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod lol_status_v4 {
    /// PlatformData data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PlatformData {
        #[serde(rename = "id")]
        pub id: String,
        #[serde(rename = "name")]
        pub name: String,
        #[serde(rename = "locales")]
        pub locales: std::vec::Vec<String>,
        #[serde(rename = "maintenances")]
        pub maintenances: std::vec::Vec<Status>,
        #[serde(rename = "incidents")]
        pub incidents: std::vec::Vec<Status>,
    }
    /// Status data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Status {
        #[serde(rename = "id")]
        pub id: i32,
        /// (Legal values:  scheduled,  in_progress,  complete)
        #[serde(rename = "maintenance_status")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub maintenance_status: Option<String>,
        /// (Legal values:  info,  warning,  critical)
        #[serde(rename = "incident_severity")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub incident_severity: Option<String>,
        #[serde(rename = "titles")]
        pub titles: std::vec::Vec<Content>,
        #[serde(rename = "updates")]
        pub updates: std::vec::Vec<Update>,
        #[serde(rename = "created_at")]
        pub created_at: String,
        #[serde(rename = "archive_at")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub archive_at: Option<String>,
        #[serde(rename = "updated_at")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub updated_at: Option<String>,
        /// (Legal values: windows, macos, android, ios, ps4, xbone, switch)
        #[serde(rename = "platforms")]
        pub platforms: std::vec::Vec<String>,
    }
    /// Content data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Content {
        #[serde(rename = "locale")]
        pub locale: String,
        #[serde(rename = "content")]
        pub content: String,
    }
    /// Update data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Update {
        #[serde(rename = "id")]
        pub id: i32,
        #[serde(rename = "author")]
        pub author: String,
        #[serde(rename = "publish")]
        pub publish: bool,
        /// (Legal values: riotclient, riotstatus, game)
        #[serde(rename = "publish_locations")]
        pub publish_locations: std::vec::Vec<String>,
        #[serde(rename = "translations")]
        pub translations: std::vec::Vec<Content>,
        #[serde(rename = "created_at")]
        pub created_at: String,
        #[serde(rename = "updated_at")]
        pub updated_at: String,
    }
}

/// Data structs used by [`LorDeckV1`](crate::endpoints::LorDeckV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod lor_deck_v1 {
    /// Deck data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Deck {
        #[serde(rename = "id")]
        pub id: String,
        #[serde(rename = "name")]
        pub name: String,
        #[serde(rename = "code")]
        pub code: String,
    }
    /// NewDeck data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct NewDeck {
        #[serde(rename = "name")]
        pub name: String,
        #[serde(rename = "code")]
        pub code: String,
    }
}

/// Data structs used by [`LorInventoryV1`](crate::endpoints::LorInventoryV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod lor_inventory_v1 {
    /// Card data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Card {
        #[serde(rename = "code")]
        pub code: String,
        #[serde(rename = "count")]
        pub count: String,
    }
}

/// Data structs used by [`LorMatchV1`](crate::endpoints::LorMatchV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod lor_match_v1 {
    /// Match data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Match {
        /// Match metadata.
        #[serde(rename = "metadata")]
        pub metadata: Metadata,
        /// Match info.
        #[serde(rename = "info")]
        pub info: Info,
    }
    /// Metadata data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Metadata {
        /// Match data version.
        #[serde(rename = "data_version")]
        pub data_version: String,
        /// Match id.
        #[serde(rename = "match_id")]
        pub match_id: String,
        /// A list of participant PUUIDs.
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<String>,
    }
    /// Info data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Info {
        /// (Legal values:  Constructed,  Expeditions,  Tutorial)
        #[serde(rename = "game_mode")]
        pub game_mode: String,
        /// (Legal values:  Ranked,  Normal,  AI,  Tutorial,  VanillaTrial,  Singleton,  StandardGauntlet)
        #[serde(rename = "game_type")]
        pub game_type: String,
        #[serde(rename = "game_start_time_utc")]
        pub game_start_time_utc: String,
        #[serde(rename = "game_version")]
        pub game_version: String,
        /// (Legal values:  standard,  eternal)
        #[serde(rename = "game_format")]
        pub game_format: String,
        #[serde(rename = "players")]
        pub players: std::vec::Vec<Player>,
        /// Total turns taken by both players.
        #[serde(rename = "total_turn_count")]
        pub total_turn_count: i32,
    }
    /// Player data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Player {
        #[serde(rename = "puuid")]
        pub puuid: String,
        #[serde(rename = "deck_id")]
        pub deck_id: String,
        /// Code for the deck played. Refer to LOR documentation for details on deck codes.
        #[serde(rename = "deck_code")]
        pub deck_code: String,
        #[serde(rename = "factions")]
        pub factions: std::vec::Vec<String>,
        #[serde(rename = "game_outcome")]
        pub game_outcome: String,
        /// The order in which the players took turns.
        #[serde(rename = "order_of_play")]
        pub order_of_play: i32,
    }
}

/// Data structs used by [`LorRankedV1`](crate::endpoints::LorRankedV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod lor_ranked_v1 {
    /// Leaderboard data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Leaderboard {
        /// A list of players in Master tier.
        #[serde(rename = "players")]
        pub players: std::vec::Vec<Player>,
    }
    /// Player data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Player {
        #[serde(rename = "name")]
        pub name: String,
        #[serde(rename = "rank")]
        pub rank: i32,
        /// League points.
        #[serde(rename = "lp")]
        pub lp: i32,
    }
}

/// Data structs used by [`LorStatusV1`](crate::endpoints::LorStatusV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod lor_status_v1 {
    /// PlatformData data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PlatformData {
        #[serde(rename = "id")]
        pub id: String,
        #[serde(rename = "name")]
        pub name: String,
        #[serde(rename = "locales")]
        pub locales: std::vec::Vec<String>,
        #[serde(rename = "maintenances")]
        pub maintenances: std::vec::Vec<Status>,
        #[serde(rename = "incidents")]
        pub incidents: std::vec::Vec<Status>,
    }
    /// Status data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Status {
        #[serde(rename = "id")]
        pub id: i32,
        /// (Legal values:  scheduled,  in_progress,  complete)
        #[serde(rename = "maintenance_status")]
        pub maintenance_status: String,
        /// (Legal values:  info,  warning,  critical)
        #[serde(rename = "incident_severity")]
        pub incident_severity: String,
        #[serde(rename = "titles")]
        pub titles: std::vec::Vec<Content>,
        #[serde(rename = "updates")]
        pub updates: std::vec::Vec<Update>,
        #[serde(rename = "created_at")]
        pub created_at: String,
        #[serde(rename = "archive_at")]
        pub archive_at: String,
        #[serde(rename = "updated_at")]
        pub updated_at: String,
        /// (Legal values: windows, macos, android, ios, ps4, xbone, switch)
        #[serde(rename = "platforms")]
        pub platforms: std::vec::Vec<String>,
    }
    /// Content data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Content {
        #[serde(rename = "locale")]
        pub locale: String,
        #[serde(rename = "content")]
        pub content: String,
    }
    /// Update data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Update {
        #[serde(rename = "id")]
        pub id: i32,
        #[serde(rename = "author")]
        pub author: String,
        #[serde(rename = "publish")]
        pub publish: bool,
        /// (Legal values: riotclient, riotstatus, game)
        #[serde(rename = "publish_locations")]
        pub publish_locations: std::vec::Vec<String>,
        #[serde(rename = "translations")]
        pub translations: std::vec::Vec<Content>,
        #[serde(rename = "created_at")]
        pub created_at: String,
        #[serde(rename = "updated_at")]
        pub updated_at: String,
    }
}

/// Data structs used by [`MatchV5`](crate::endpoints::MatchV5).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod match_v5 {
    /// Match data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Match {
        /// Match metadata.
        #[serde(rename = "metadata")]
        pub metadata: Metadata,
        /// Match info.
        #[serde(rename = "info")]
        pub info: Info,
    }
    /// Metadata data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Metadata {
        /// Match data version.
        #[serde(rename = "dataVersion")]
        pub data_version: String,
        /// Match id.
        #[serde(rename = "matchId")]
        pub match_id: String,
        /// A list of participant PUUIDs.
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<String>,
    }
    /// Info data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Info {
        /// Refer to indicate if the game ended in termination.
        #[serde(rename = "endOfGameResult")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub end_of_game_result: Option<String>,
        /// Unix timestamp for when the game is created on the game server (i.e., the loading screen).
        #[serde(rename = "gameCreation")]
        pub game_creation: i64,
        /// Prior to patch 11.20, this field returns the game length in milliseconds calculated from gameEndTimestamp - gameStartTimestamp. Post patch 11.20, this field returns the max timePlayed of any participant in the game in seconds, which makes the behavior of this field consistent with that of match-v4. The best way to handling the change in this field is to treat the value as milliseconds if the gameEndTimestamp field isn't in the response and to treat the value as seconds if gameEndTimestamp is in the response.
        #[serde(rename = "gameDuration")]
        pub game_duration: i64,
        /// Unix timestamp for when match ends on the game server. This timestamp can occasionally be significantly longer than when the match "ends". The most reliable way of determining the timestamp for the end of the match would be to add the max time played of any participant to the gameStartTimestamp. This field was added to match-v5 in patch 11.20 on Oct 5th, 2021.
        #[serde(rename = "gameEndTimestamp")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub game_end_timestamp: Option<i64>,
        #[serde(rename = "gameId")]
        pub game_id: i64,
        /// Refer to the Game Constants documentation.
        #[serde(rename = "gameMode")]
        pub game_mode: crate::consts::GameMode,
        #[serde(rename = "gameName")]
        pub game_name: String,
        /// Unix timestamp for when match starts on the game server.
        #[serde(rename = "gameStartTimestamp")]
        pub game_start_timestamp: i64,
        #[serde(rename = "gameType")]
        ///
        /// Will be `None` if empty string is returned: https://github.com/RiotGames/developer-relations/issues/898
        #[serde(serialize_with = "crate::consts::serialize_empty_string_none")]
        #[serde(deserialize_with = "crate::consts::deserialize_empty_string_none")]
        pub game_type: Option<crate::consts::GameType>,
        /// The first two parts can be used to determine the patch a game was played on.
        #[serde(rename = "gameVersion")]
        pub game_version: String,
        /// Refer to the Game Constants documentation.
        #[serde(rename = "mapId")]
        pub map_id: crate::consts::Map,
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<Participant>,
        /// Platform where the match was played.
        #[serde(rename = "platformId")]
        pub platform_id: String,
        /// Refer to the Game Constants documentation.
        #[serde(rename = "queueId")]
        pub queue_id: crate::consts::Queue,
        #[serde(rename = "teams")]
        pub teams: std::vec::Vec<Team>,
        /// Tournament code used to generate the match. This field was added to match-v5 in patch 11.13 on June 23rd, 2021.
        #[serde(rename = "tournamentCode")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub tournament_code: Option<String>,
    }
    /// Participant data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Participant {
        #[serde(rename = "allInPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub all_in_pings: Option<i32>,
        #[serde(rename = "assistMePings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub assist_me_pings: Option<i32>,
        #[serde(rename = "assists")]
        pub assists: i32,
        #[serde(rename = "baronKills")]
        pub baron_kills: i32,
        #[serde(rename = "bountyLevel")]
        pub bounty_level: i32,
        #[serde(rename = "champExperience")]
        pub champ_experience: i32,
        #[serde(rename = "champLevel")]
        pub champ_level: i32,
        /// Prior to patch 11.4, on Feb 18th, 2021, this field returned invalid championIds. We recommend determining the champion based on the championName field for matches played prior to patch 11.4.
        #[serde(rename = "championId")]
        ///
        /// Instead use [`Self::champion()`] which checks this field then parses [`Self::champion_name`].
        #[deprecated(since = "2.5.0", note = "Use `Participant.champion()` instead. Riot sometimes returns corrupted data for this field: https://github.com/RiotGames/developer-relations/issues/553")]
        #[serde(serialize_with = "crate::consts::Champion::serialize_result")]
        #[serde(deserialize_with = "crate::consts::Champion::deserialize_result")]
        pub champion_id: Result<crate::consts::Champion, std::num::TryFromIntError>,
        #[serde(rename = "championName")]
        pub champion_name: String,
        #[serde(rename = "commandPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub command_pings: Option<i32>,
        /// This field is currently only utilized for Kayn's transformations. (Legal values: 0 - None, 1 - Slayer, 2 - Assassin)
        #[serde(rename = "championTransform")]
        pub champion_transform: i32,
        #[serde(rename = "consumablesPurchased")]
        pub consumables_purchased: i32,
        #[serde(rename = "challenges")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub challenges: Option<Challenges>,
        #[serde(rename = "damageDealtToBuildings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub damage_dealt_to_buildings: Option<i32>,
        #[serde(rename = "damageDealtToObjectives")]
        pub damage_dealt_to_objectives: i32,
        #[serde(rename = "damageDealtToTurrets")]
        pub damage_dealt_to_turrets: i32,
        #[serde(rename = "dangerPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub danger_pings: Option<i32>,
        #[serde(rename = "damageSelfMitigated")]
        pub damage_self_mitigated: i32,
        #[serde(rename = "deaths")]
        pub deaths: i32,
        #[serde(rename = "detectorWardsPlaced")]
        pub detector_wards_placed: i32,
        #[serde(rename = "doubleKills")]
        pub double_kills: i32,
        #[serde(rename = "dragonKills")]
        pub dragon_kills: i32,
        #[serde(rename = "eligibleForProgression")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub eligible_for_progression: Option<bool>,
        #[serde(rename = "enemyMissingPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub enemy_missing_pings: Option<i32>,
        #[serde(rename = "enemyVisionPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub enemy_vision_pings: Option<i32>,
        #[serde(rename = "firstBloodAssist")]
        pub first_blood_assist: bool,
        #[serde(rename = "firstBloodKill")]
        pub first_blood_kill: bool,
        #[serde(rename = "firstTowerAssist")]
        pub first_tower_assist: bool,
        #[serde(rename = "firstTowerKill")]
        pub first_tower_kill: bool,
        #[serde(rename = "gameEndedInEarlySurrender")]
        pub game_ended_in_early_surrender: bool,
        #[serde(rename = "gameEndedInSurrender")]
        pub game_ended_in_surrender: bool,
        #[serde(rename = "holdPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub hold_pings: Option<i32>,
        #[serde(rename = "getBackPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub get_back_pings: Option<i32>,
        #[serde(rename = "goldEarned")]
        pub gold_earned: i32,
        #[serde(rename = "goldSpent")]
        pub gold_spent: i32,
        /// Both individualPosition and teamPosition are computed by the game server and are different versions of the most likely position played by a player. The individualPosition is the best guess for which position the player actually played in isolation of anything else. The teamPosition is the best guess for which position the player actually played if we add the constraint that each team must have one top player, one jungle, one middle, etc. Generally the recommendation is to use the teamPosition field over the individualPosition field.
        #[serde(rename = "individualPosition")]
        pub individual_position: String,
        #[serde(rename = "inhibitorKills")]
        pub inhibitor_kills: i32,
        #[serde(rename = "inhibitorTakedowns")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub inhibitor_takedowns: Option<i32>,
        #[serde(rename = "inhibitorsLost")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub inhibitors_lost: Option<i32>,
        #[serde(rename = "item0")]
        pub item0: i32,
        #[serde(rename = "item1")]
        pub item1: i32,
        #[serde(rename = "item2")]
        pub item2: i32,
        #[serde(rename = "item3")]
        pub item3: i32,
        #[serde(rename = "item4")]
        pub item4: i32,
        #[serde(rename = "item5")]
        pub item5: i32,
        #[serde(rename = "item6")]
        pub item6: i32,
        #[serde(rename = "itemsPurchased")]
        pub items_purchased: i32,
        #[serde(rename = "killingSprees")]
        pub killing_sprees: i32,
        #[serde(rename = "kills")]
        pub kills: i32,
        #[serde(rename = "lane")]
        pub lane: String,
        #[serde(rename = "largestCriticalStrike")]
        pub largest_critical_strike: i32,
        #[serde(rename = "largestKillingSpree")]
        pub largest_killing_spree: i32,
        #[serde(rename = "largestMultiKill")]
        pub largest_multi_kill: i32,
        #[serde(rename = "longestTimeSpentLiving")]
        pub longest_time_spent_living: i32,
        #[serde(rename = "magicDamageDealt")]
        pub magic_damage_dealt: i32,
        #[serde(rename = "magicDamageDealtToChampions")]
        pub magic_damage_dealt_to_champions: i32,
        #[serde(rename = "magicDamageTaken")]
        pub magic_damage_taken: i32,
        #[serde(rename = "missions")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub missions: Option<Missions>,
        #[serde(rename = "neutralMinionsKilled")]
        pub neutral_minions_killed: i32,
        #[serde(rename = "needVisionPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub need_vision_pings: Option<i32>,
        #[serde(rename = "nexusKills")]
        pub nexus_kills: i32,
        #[serde(rename = "nexusTakedowns")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub nexus_takedowns: Option<i32>,
        #[serde(rename = "nexusLost")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub nexus_lost: Option<i32>,
        #[serde(rename = "objectivesStolen")]
        pub objectives_stolen: i32,
        #[serde(rename = "objectivesStolenAssists")]
        pub objectives_stolen_assists: i32,
        #[serde(rename = "onMyWayPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub on_my_way_pings: Option<i32>,
        #[serde(rename = "participantId")]
        pub participant_id: i32,
        #[serde(rename = "pentaKills")]
        pub penta_kills: i32,
        #[serde(rename = "perks")]
        pub perks: Perks,
        #[serde(rename = "physicalDamageDealt")]
        pub physical_damage_dealt: i32,
        #[serde(rename = "physicalDamageDealtToChampions")]
        pub physical_damage_dealt_to_champions: i32,
        #[serde(rename = "physicalDamageTaken")]
        pub physical_damage_taken: i32,
        #[serde(rename = "placement")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub placement: Option<i32>,
        #[serde(rename = "playerAugment1")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_augment1: Option<i32>,
        #[serde(rename = "playerAugment2")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_augment2: Option<i32>,
        #[serde(rename = "playerAugment3")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_augment3: Option<i32>,
        #[serde(rename = "playerAugment4")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_augment4: Option<i32>,
        #[serde(rename = "playerSubteamId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_subteam_id: Option<i32>,
        #[serde(rename = "pushPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub push_pings: Option<i32>,
        #[serde(rename = "profileIcon")]
        pub profile_icon: i32,
        #[serde(rename = "puuid")]
        pub puuid: String,
        #[serde(rename = "quadraKills")]
        pub quadra_kills: i32,
        #[serde(rename = "riotIdGameName")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub riot_id_game_name: Option<String>,
        #[serde(rename = "riotIdName")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub riot_id_name: Option<String>,
        #[serde(rename = "riotIdTagline")]
        pub riot_id_tagline: String,
        #[serde(rename = "role")]
        pub role: String,
        #[serde(rename = "sightWardsBoughtInGame")]
        pub sight_wards_bought_in_game: i32,
        #[serde(rename = "spell1Casts")]
        pub spell1_casts: i32,
        #[serde(rename = "spell2Casts")]
        pub spell2_casts: i32,
        #[serde(rename = "spell3Casts")]
        pub spell3_casts: i32,
        #[serde(rename = "spell4Casts")]
        pub spell4_casts: i32,
        #[serde(rename = "subteamPlacement")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub subteam_placement: Option<i32>,
        #[serde(rename = "summoner1Casts")]
        pub summoner1_casts: i32,
        #[serde(rename = "summoner1Id")]
        pub summoner1_id: i32,
        #[serde(rename = "summoner2Casts")]
        pub summoner2_casts: i32,
        #[serde(rename = "summoner2Id")]
        pub summoner2_id: i32,
        #[serde(rename = "summonerId")]
        pub summoner_id: String,
        #[serde(rename = "summonerLevel")]
        pub summoner_level: i32,
        #[serde(rename = "summonerName")]
        pub summoner_name: String,
        #[serde(rename = "teamEarlySurrendered")]
        pub team_early_surrendered: bool,
        #[serde(rename = "teamId")]
        pub team_id: crate::consts::Team,
        /// Both individualPosition and teamPosition are computed by the game server and are different versions of the most likely position played by a player. The individualPosition is the best guess for which position the player actually played in isolation of anything else. The teamPosition is the best guess for which position the player actually played if we add the constraint that each team must have one top player, one jungle, one middle, etc. Generally the recommendation is to use the teamPosition field over the individualPosition field.
        #[serde(rename = "teamPosition")]
        pub team_position: String,
        #[serde(rename = "timeCCingOthers")]
        pub time_c_cing_others: i32,
        #[serde(rename = "timePlayed")]
        pub time_played: i32,
        #[serde(rename = "totalAllyJungleMinionsKilled")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub total_ally_jungle_minions_killed: Option<i32>,
        #[serde(rename = "totalDamageDealt")]
        pub total_damage_dealt: i32,
        #[serde(rename = "totalDamageDealtToChampions")]
        pub total_damage_dealt_to_champions: i32,
        #[serde(rename = "totalDamageShieldedOnTeammates")]
        pub total_damage_shielded_on_teammates: i32,
        #[serde(rename = "totalDamageTaken")]
        pub total_damage_taken: i32,
        #[serde(rename = "totalEnemyJungleMinionsKilled")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub total_enemy_jungle_minions_killed: Option<i32>,
        #[serde(rename = "totalHeal")]
        pub total_heal: i32,
        #[serde(rename = "totalHealsOnTeammates")]
        pub total_heals_on_teammates: i32,
        #[serde(rename = "totalMinionsKilled")]
        pub total_minions_killed: i32,
        #[serde(rename = "totalTimeCCDealt")]
        pub total_time_cc_dealt: i32,
        #[serde(rename = "totalTimeSpentDead")]
        pub total_time_spent_dead: i32,
        #[serde(rename = "totalUnitsHealed")]
        pub total_units_healed: i32,
        #[serde(rename = "tripleKills")]
        pub triple_kills: i32,
        #[serde(rename = "trueDamageDealt")]
        pub true_damage_dealt: i32,
        #[serde(rename = "trueDamageDealtToChampions")]
        pub true_damage_dealt_to_champions: i32,
        #[serde(rename = "trueDamageTaken")]
        pub true_damage_taken: i32,
        #[serde(rename = "turretKills")]
        pub turret_kills: i32,
        #[serde(rename = "turretTakedowns")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub turret_takedowns: Option<i32>,
        #[serde(rename = "turretsLost")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub turrets_lost: Option<i32>,
        #[serde(rename = "unrealKills")]
        pub unreal_kills: i32,
        #[serde(rename = "visionScore")]
        pub vision_score: i32,
        #[serde(rename = "visionClearedPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub vision_cleared_pings: Option<i32>,
        #[serde(rename = "visionWardsBoughtInGame")]
        pub vision_wards_bought_in_game: i32,
        #[serde(rename = "wardsKilled")]
        pub wards_killed: i32,
        #[serde(rename = "wardsPlaced")]
        pub wards_placed: i32,
        #[serde(rename = "win")]
        pub win: bool,
        #[serde(rename = "baitPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub bait_pings: Option<i32>,
        #[serde(rename = "basicPings")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub basic_pings: Option<i32>,
        #[serde(rename = "playerScore0")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score0: Option<i32>,
        #[serde(rename = "playerScore1")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score1: Option<i32>,
        #[serde(rename = "playerScore10")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score10: Option<i32>,
        #[serde(rename = "playerScore11")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score11: Option<i32>,
        #[serde(rename = "playerScore2")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score2: Option<i32>,
        #[serde(rename = "playerScore3")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score3: Option<i32>,
        #[serde(rename = "playerScore4")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score4: Option<i32>,
        #[serde(rename = "playerScore5")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score5: Option<i32>,
        #[serde(rename = "playerScore6")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score6: Option<i32>,
        #[serde(rename = "playerScore7")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score7: Option<i32>,
        #[serde(rename = "playerScore8")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score8: Option<i32>,
        #[serde(rename = "playerScore9")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score9: Option<i32>,
    }
    /// Challenges data object.
    /// # Description
    /// Challenges DTO
    ///
    /// Note: This struct is automatically generated
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Challenges {
        #[serde(rename = "12AssistStreakCount")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub x12_assist_streak_count: Option<i32>,
        #[serde(rename = "abilityUses")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub ability_uses: Option<i32>,
        #[serde(rename = "acesBefore15Minutes")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub aces_before15_minutes: Option<i32>,
        #[serde(rename = "alliedJungleMonsterKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub allied_jungle_monster_kills: Option<f64>,
        #[serde(rename = "baronTakedowns")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub baron_takedowns: Option<i32>,
        #[serde(rename = "blastConeOppositeOpponentCount")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub blast_cone_opposite_opponent_count: Option<i32>,
        #[serde(rename = "bountyGold")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub bounty_gold: Option<i32>,
        #[serde(rename = "buffsStolen")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub buffs_stolen: Option<i32>,
        #[serde(rename = "completeSupportQuestInTime")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub complete_support_quest_in_time: Option<i32>,
        #[serde(rename = "controlWardsPlaced")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub control_wards_placed: Option<i32>,
        #[serde(rename = "damagePerMinute")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub damage_per_minute: Option<f64>,
        #[serde(rename = "damageTakenOnTeamPercentage")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub damage_taken_on_team_percentage: Option<f64>,
        #[serde(rename = "dancedWithRiftHerald")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub danced_with_rift_herald: Option<i32>,
        #[serde(rename = "deathsByEnemyChamps")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub deaths_by_enemy_champs: Option<i32>,
        #[serde(rename = "dodgeSkillShotsSmallWindow")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub dodge_skill_shots_small_window: Option<i32>,
        #[serde(rename = "doubleAces")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub double_aces: Option<i32>,
        #[serde(rename = "dragonTakedowns")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub dragon_takedowns: Option<i32>,
        #[serde(rename = "legendaryItemUsed")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub legendary_item_used: Option<std::vec::Vec<i32>>,
        #[serde(rename = "effectiveHealAndShielding")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub effective_heal_and_shielding: Option<f32>,
        #[serde(rename = "elderDragonKillsWithOpposingSoul")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub elder_dragon_kills_with_opposing_soul: Option<i32>,
        #[serde(rename = "elderDragonMultikills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub elder_dragon_multikills: Option<i32>,
        #[serde(rename = "enemyChampionImmobilizations")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub enemy_champion_immobilizations: Option<i32>,
        #[serde(rename = "enemyJungleMonsterKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub enemy_jungle_monster_kills: Option<f64>,
        #[serde(rename = "epicMonsterKillsNearEnemyJungler")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub epic_monster_kills_near_enemy_jungler: Option<i32>,
        #[serde(rename = "epicMonsterKillsWithin30SecondsOfSpawn")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub epic_monster_kills_within30_seconds_of_spawn: Option<i32>,
        #[serde(rename = "epicMonsterSteals")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub epic_monster_steals: Option<i32>,
        #[serde(rename = "epicMonsterStolenWithoutSmite")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub epic_monster_stolen_without_smite: Option<i32>,
        #[serde(rename = "firstTurretKilled")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub first_turret_killed: Option<f64>,
        #[serde(rename = "firstTurretKilledTime")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub first_turret_killed_time: Option<f32>,
        #[serde(rename = "flawlessAces")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub flawless_aces: Option<i32>,
        #[serde(rename = "fullTeamTakedown")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub full_team_takedown: Option<i32>,
        #[serde(rename = "gameLength")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub game_length: Option<f64>,
        #[serde(rename = "getTakedownsInAllLanesEarlyJungleAsLaner")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub get_takedowns_in_all_lanes_early_jungle_as_laner: Option<i32>,
        #[serde(rename = "goldPerMinute")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub gold_per_minute: Option<f64>,
        #[serde(rename = "hadOpenNexus")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub had_open_nexus: Option<i32>,
        #[serde(rename = "immobilizeAndKillWithAlly")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub immobilize_and_kill_with_ally: Option<i32>,
        #[serde(rename = "initialBuffCount")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub initial_buff_count: Option<i32>,
        #[serde(rename = "initialCrabCount")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub initial_crab_count: Option<i32>,
        #[serde(rename = "jungleCsBefore10Minutes")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub jungle_cs_before10_minutes: Option<f64>,
        #[serde(rename = "junglerTakedownsNearDamagedEpicMonster")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub jungler_takedowns_near_damaged_epic_monster: Option<i32>,
        #[serde(rename = "kda")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub kda: Option<f64>,
        #[serde(rename = "killAfterHiddenWithAlly")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub kill_after_hidden_with_ally: Option<i32>,
        #[serde(rename = "killedChampTookFullTeamDamageSurvived")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub killed_champ_took_full_team_damage_survived: Option<i32>,
        #[serde(rename = "killingSprees")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub killing_sprees: Option<i32>,
        #[serde(rename = "killParticipation")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub kill_participation: Option<f64>,
        #[serde(rename = "killsNearEnemyTurret")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub kills_near_enemy_turret: Option<i32>,
        #[serde(rename = "killsOnOtherLanesEarlyJungleAsLaner")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub kills_on_other_lanes_early_jungle_as_laner: Option<i32>,
        #[serde(rename = "killsOnRecentlyHealedByAramPack")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub kills_on_recently_healed_by_aram_pack: Option<i32>,
        #[serde(rename = "killsUnderOwnTurret")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub kills_under_own_turret: Option<i32>,
        #[serde(rename = "killsWithHelpFromEpicMonster")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub kills_with_help_from_epic_monster: Option<i32>,
        #[serde(rename = "knockEnemyIntoTeamAndKill")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub knock_enemy_into_team_and_kill: Option<i32>,
        #[serde(rename = "kTurretsDestroyedBeforePlatesFall")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub k_turrets_destroyed_before_plates_fall: Option<i32>,
        #[serde(rename = "landSkillShotsEarlyGame")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub land_skill_shots_early_game: Option<i32>,
        #[serde(rename = "laneMinionsFirst10Minutes")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub lane_minions_first10_minutes: Option<i32>,
        #[serde(rename = "lostAnInhibitor")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub lost_an_inhibitor: Option<i32>,
        #[serde(rename = "maxKillDeficit")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub max_kill_deficit: Option<i32>,
        #[serde(rename = "mejaisFullStackInTime")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub mejais_full_stack_in_time: Option<i32>,
        #[serde(rename = "moreEnemyJungleThanOpponent")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub more_enemy_jungle_than_opponent: Option<f64>,
        #[serde(rename = "multiKillOneSpell")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub multi_kill_one_spell: Option<i32>,
        #[serde(rename = "multikills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub multikills: Option<i32>,
        #[serde(rename = "multikillsAfterAggressiveFlash")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub multikills_after_aggressive_flash: Option<i32>,
        #[serde(rename = "multiTurretRiftHeraldCount")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub multi_turret_rift_herald_count: Option<i32>,
        #[serde(rename = "outerTurretExecutesBefore10Minutes")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub outer_turret_executes_before10_minutes: Option<i32>,
        #[serde(rename = "outnumberedKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub outnumbered_kills: Option<i32>,
        #[serde(rename = "outnumberedNexusKill")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub outnumbered_nexus_kill: Option<i32>,
        #[serde(rename = "perfectDragonSoulsTaken")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub perfect_dragon_souls_taken: Option<i32>,
        #[serde(rename = "perfectGame")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub perfect_game: Option<i32>,
        #[serde(rename = "pickKillWithAlly")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub pick_kill_with_ally: Option<i32>,
        #[serde(rename = "poroExplosions")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub poro_explosions: Option<i32>,
        #[serde(rename = "quickCleanse")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub quick_cleanse: Option<i32>,
        #[serde(rename = "quickFirstTurret")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub quick_first_turret: Option<i32>,
        #[serde(rename = "quickSoloKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub quick_solo_kills: Option<i32>,
        #[serde(rename = "riftHeraldTakedowns")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub rift_herald_takedowns: Option<i32>,
        #[serde(rename = "saveAllyFromDeath")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub save_ally_from_death: Option<i32>,
        #[serde(rename = "scuttleCrabKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub scuttle_crab_kills: Option<i32>,
        #[serde(rename = "shortestTimeToAceFromFirstTakedown")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub shortest_time_to_ace_from_first_takedown: Option<f32>,
        #[serde(rename = "skillshotsDodged")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub skillshots_dodged: Option<i32>,
        #[serde(rename = "skillshotsHit")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub skillshots_hit: Option<i32>,
        #[serde(rename = "snowballsHit")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub snowballs_hit: Option<i32>,
        #[serde(rename = "soloBaronKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub solo_baron_kills: Option<i32>,
        #[serde(rename = "soloKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub solo_kills: Option<i32>,
        #[serde(rename = "stealthWardsPlaced")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub stealth_wards_placed: Option<i32>,
        #[serde(rename = "survivedSingleDigitHpCount")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub survived_single_digit_hp_count: Option<i32>,
        #[serde(rename = "survivedThreeImmobilizesInFight")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub survived_three_immobilizes_in_fight: Option<i32>,
        #[serde(rename = "takedownOnFirstTurret")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub takedown_on_first_turret: Option<i32>,
        #[serde(rename = "takedowns")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub takedowns: Option<i32>,
        #[serde(rename = "takedownsAfterGainingLevelAdvantage")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub takedowns_after_gaining_level_advantage: Option<i32>,
        #[serde(rename = "takedownsBeforeJungleMinionSpawn")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub takedowns_before_jungle_minion_spawn: Option<i32>,
        #[serde(rename = "takedownsFirstXMinutes")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub takedowns_first_x_minutes: Option<i32>,
        #[serde(rename = "takedownsInAlcove")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub takedowns_in_alcove: Option<i32>,
        #[serde(rename = "takedownsInEnemyFountain")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub takedowns_in_enemy_fountain: Option<i32>,
        #[serde(rename = "teamBaronKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub team_baron_kills: Option<i32>,
        #[serde(rename = "teamDamagePercentage")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub team_damage_percentage: Option<f64>,
        #[serde(rename = "teamElderDragonKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub team_elder_dragon_kills: Option<i32>,
        #[serde(rename = "teamRiftHeraldKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub team_rift_herald_kills: Option<i32>,
        #[serde(rename = "tookLargeDamageSurvived")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub took_large_damage_survived: Option<i32>,
        #[serde(rename = "turretPlatesTaken")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub turret_plates_taken: Option<i32>,
        #[serde(rename = "turretsTakenWithRiftHerald")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub turrets_taken_with_rift_herald: Option<i32>,
        #[serde(rename = "turretTakedowns")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub turret_takedowns: Option<i32>,
        #[serde(rename = "twentyMinionsIn3SecondsCount")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub twenty_minions_in3_seconds_count: Option<i32>,
        #[serde(rename = "twoWardsOneSweeperCount")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub two_wards_one_sweeper_count: Option<i32>,
        #[serde(rename = "unseenRecalls")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub unseen_recalls: Option<i32>,
        #[serde(rename = "visionScorePerMinute")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub vision_score_per_minute: Option<f64>,
        #[serde(rename = "wardsGuarded")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub wards_guarded: Option<i32>,
        #[serde(rename = "wardTakedowns")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub ward_takedowns: Option<i32>,
        #[serde(rename = "wardTakedownsBefore20M")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub ward_takedowns_before20_m: Option<i32>,
        #[serde(rename = "baronBuffGoldAdvantageOverThreshold")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub baron_buff_gold_advantage_over_threshold: Option<f64>,
        #[serde(rename = "controlWardTimeCoverageInRiverOrEnemyHalf")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub control_ward_time_coverage_in_river_or_enemy_half: Option<f64>,
        #[serde(rename = "earliestBaron")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub earliest_baron: Option<f64>,
        #[serde(rename = "earliestDragonTakedown")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub earliest_dragon_takedown: Option<f64>,
        #[serde(rename = "earliestElderDragon")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub earliest_elder_dragon: Option<f64>,
        #[serde(rename = "earlyLaningPhaseGoldExpAdvantage")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub early_laning_phase_gold_exp_advantage: Option<f64>,
        #[serde(rename = "fasterSupportQuestCompletion")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub faster_support_quest_completion: Option<f64>,
        #[serde(rename = "fastestLegendary")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub fastest_legendary: Option<f64>,
        #[serde(rename = "hadAfkTeammate")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub had_afk_teammate: Option<f64>,
        #[serde(rename = "highestChampionDamage")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub highest_champion_damage: Option<f64>,
        #[serde(rename = "highestCrowdControlScore")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub highest_crowd_control_score: Option<f64>,
        #[serde(rename = "highestWardKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub highest_ward_kills: Option<f64>,
        #[serde(rename = "junglerKillsEarlyJungle")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub jungler_kills_early_jungle: Option<f64>,
        #[serde(rename = "killsOnLanersEarlyJungleAsJungler")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub kills_on_laners_early_jungle_as_jungler: Option<f64>,
        #[serde(rename = "laningPhaseGoldExpAdvantage")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub laning_phase_gold_exp_advantage: Option<f64>,
        #[serde(rename = "legendaryCount")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub legendary_count: Option<f64>,
        #[serde(rename = "maxCsAdvantageOnLaneOpponent")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub max_cs_advantage_on_lane_opponent: Option<f64>,
        #[serde(rename = "maxLevelLeadLaneOpponent")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub max_level_lead_lane_opponent: Option<f64>,
        #[serde(rename = "mostWardsDestroyedOneSweeper")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub most_wards_destroyed_one_sweeper: Option<f64>,
        #[serde(rename = "mythicItemUsed")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub mythic_item_used: Option<f64>,
        #[serde(rename = "playedChampSelectPosition")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub played_champ_select_position: Option<f64>,
        #[serde(rename = "soloTurretsLategame")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub solo_turrets_lategame: Option<f64>,
        #[serde(rename = "takedownsFirst25Minutes")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub takedowns_first25_minutes: Option<f64>,
        #[serde(rename = "teleportTakedowns")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub teleport_takedowns: Option<f64>,
        #[serde(rename = "thirdInhibitorDestroyedTime")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub third_inhibitor_destroyed_time: Option<f64>,
        #[serde(rename = "threeWardsOneSweeperCount")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub three_wards_one_sweeper_count: Option<f64>,
        #[serde(rename = "visionScoreAdvantageLaneOpponent")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub vision_score_advantage_lane_opponent: Option<f64>,
        #[serde(rename = "InfernalScalePickup")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub infernal_scale_pickup: Option<f64>,
        #[serde(rename = "fistBumpParticipation")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub fist_bump_participation: Option<i32>,
        #[serde(rename = "voidMonsterKill")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub void_monster_kill: Option<i32>,
    }
    /// Missions data object.
    /// # Description
    /// Missions DTO
    ///
    /// Note: This struct is automatically generated
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Missions {
        #[serde(rename = "playerScore0")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score0: Option<i32>,
        #[serde(rename = "playerScore1")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score1: Option<i32>,
        #[serde(rename = "playerScore2")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score2: Option<i32>,
        #[serde(rename = "playerScore3")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score3: Option<i32>,
        #[serde(rename = "playerScore4")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score4: Option<i32>,
        #[serde(rename = "playerScore5")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score5: Option<i32>,
        #[serde(rename = "playerScore6")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score6: Option<i32>,
        #[serde(rename = "playerScore7")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score7: Option<i32>,
        #[serde(rename = "playerScore8")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score8: Option<i32>,
        #[serde(rename = "playerScore9")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score9: Option<i32>,
        #[serde(rename = "playerScore10")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score10: Option<i32>,
        #[serde(rename = "playerScore11")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub player_score11: Option<i32>,
    }
    /// Perks data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Perks {
        #[serde(rename = "statPerks")]
        pub stat_perks: PerkStats,
        #[serde(rename = "styles")]
        pub styles: std::vec::Vec<PerkStyle>,
    }
    /// PerkStats data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PerkStats {
        #[serde(rename = "defense")]
        pub defense: i32,
        #[serde(rename = "flex")]
        pub flex: i32,
        #[serde(rename = "offense")]
        pub offense: i32,
    }
    /// PerkStyle data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PerkStyle {
        #[serde(rename = "description")]
        pub description: String,
        #[serde(rename = "selections")]
        pub selections: std::vec::Vec<PerkStyleSelection>,
        #[serde(rename = "style")]
        pub style: i32,
    }
    /// PerkStyleSelection data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PerkStyleSelection {
        #[serde(rename = "perk")]
        pub perk: i32,
        #[serde(rename = "var1")]
        pub var1: i32,
        #[serde(rename = "var2")]
        pub var2: i32,
        #[serde(rename = "var3")]
        pub var3: i32,
    }
    /// Team data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Team {
        #[serde(rename = "bans")]
        pub bans: std::vec::Vec<Ban>,
        #[serde(rename = "objectives")]
        pub objectives: Objectives,
        #[serde(rename = "teamId")]
        pub team_id: crate::consts::Team,
        #[serde(rename = "win")]
        pub win: bool,
    }
    /// Ban data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Ban {
        #[serde(rename = "championId")]
        pub champion_id: crate::consts::Champion,
        #[serde(rename = "pickTurn")]
        pub pick_turn: i32,
    }
    /// Objectives data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Objectives {
        #[serde(rename = "baron")]
        pub baron: Objective,
        #[serde(rename = "champion")]
        pub champion: Objective,
        #[serde(rename = "dragon")]
        pub dragon: Objective,
        #[serde(rename = "horde")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub horde: Option<Objective>,
        #[serde(rename = "inhibitor")]
        pub inhibitor: Objective,
        #[serde(rename = "riftHerald")]
        pub rift_herald: Objective,
        #[serde(rename = "tower")]
        pub tower: Objective,
    }
    /// Objective data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Objective {
        #[serde(rename = "first")]
        pub first: bool,
        #[serde(rename = "kills")]
        pub kills: i32,
    }
    /// Timeline data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Timeline {
        /// Match metadata.
        #[serde(rename = "metadata")]
        pub metadata: MetadataTimeLine,
        /// Match info.
        #[serde(rename = "info")]
        pub info: InfoTimeLine,
    }
    /// MetadataTimeLine data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct MetadataTimeLine {
        /// Match data version.
        #[serde(rename = "dataVersion")]
        pub data_version: String,
        /// Match id.
        #[serde(rename = "matchId")]
        pub match_id: String,
        /// A list of participant PUUIDs.
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<String>,
    }
    /// InfoTimeLine data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct InfoTimeLine {
        /// Refer to indicate if the game ended in termination.
        #[serde(rename = "endOfGameResult")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub end_of_game_result: Option<String>,
        #[serde(rename = "frameInterval")]
        pub frame_interval: i64,
        #[serde(rename = "gameId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub game_id: Option<i64>,
        #[serde(rename = "participants")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub participants: Option<std::vec::Vec<ParticipantTimeLine>>,
        #[serde(rename = "frames")]
        pub frames: std::vec::Vec<FramesTimeLine>,
    }
    /// ParticipantTimeLine data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ParticipantTimeLine {
        #[serde(rename = "participantId")]
        pub participant_id: i32,
        #[serde(rename = "puuid")]
        pub puuid: String,
    }
    /// FramesTimeLine data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct FramesTimeLine {
        #[serde(rename = "events")]
        pub events: std::vec::Vec<EventsTimeLine>,
        #[serde(rename = "participantFrames")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub participant_frames: Option<std::collections::HashMap<i32, ParticipantFrame>>,
        #[serde(rename = "timestamp")]
        pub timestamp: i32,
    }
    /// EventsTimeLine data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct EventsTimeLine {
        #[serde(rename = "timestamp")]
        pub timestamp: i64,
        #[serde(rename = "realTimestamp")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub real_timestamp: Option<i64>,
        #[serde(rename = "type")]
        pub r#type: String,
        #[serde(rename = "itemId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub item_id: Option<i32>,
        #[serde(rename = "participantId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub participant_id: Option<i32>,
        #[serde(rename = "levelUpType")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub level_up_type: Option<String>,
        #[serde(rename = "skillSlot")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub skill_slot: Option<i32>,
        #[serde(rename = "creatorId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub creator_id: Option<i32>,
        #[serde(rename = "wardType")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub ward_type: Option<String>,
        #[serde(rename = "level")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub level: Option<i32>,
        #[serde(rename = "assistingParticipantIds")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub assisting_participant_ids: Option<std::vec::Vec<i32>>,
        #[serde(rename = "bounty")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub bounty: Option<i32>,
        #[serde(rename = "killStreakLength")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub kill_streak_length: Option<i32>,
        #[serde(rename = "killerId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub killer_id: Option<i32>,
        #[serde(rename = "position")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub position: Option<Position>,
        #[serde(rename = "victimDamageDealt")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub victim_damage_dealt: Option<std::vec::Vec<MatchTimelineVictimDamage>>,
        #[serde(rename = "victimDamageReceived")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub victim_damage_received: Option<std::vec::Vec<MatchTimelineVictimDamage>>,
        #[serde(rename = "victimId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub victim_id: Option<i32>,
        #[serde(rename = "killType")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub kill_type: Option<String>,
        #[serde(rename = "laneType")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub lane_type: Option<String>,
        #[serde(rename = "teamId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub team_id: Option<crate::consts::Team>,
        #[serde(rename = "multiKillLength")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub multi_kill_length: Option<i32>,
        #[serde(rename = "killerTeamId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub killer_team_id: Option<crate::consts::Team>,
        #[serde(rename = "monsterType")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub monster_type: Option<String>,
        #[serde(rename = "monsterSubType")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub monster_sub_type: Option<String>,
        #[serde(rename = "buildingType")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub building_type: Option<String>,
        #[serde(rename = "towerType")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub tower_type: Option<String>,
        #[serde(rename = "afterId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub after_id: Option<i32>,
        #[serde(rename = "beforeId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub before_id: Option<i32>,
        #[serde(rename = "goldGain")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub gold_gain: Option<i32>,
        #[serde(rename = "gameId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub game_id: Option<i64>,
        #[serde(rename = "winningTeam")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub winning_team: Option<i32>,
        #[serde(rename = "transformType")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub transform_type: Option<String>,
        #[serde(rename = "name")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub name: Option<String>,
        #[serde(rename = "shutdownBounty")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub shutdown_bounty: Option<i32>,
        #[serde(rename = "actualStartTime")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub actual_start_time: Option<i64>,
    }
    /// ParticipantFrames data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ParticipantFrames {
        #[serde(rename = "1")]
        pub x1: ParticipantFrame,
        #[serde(rename = "2")]
        pub x2: ParticipantFrame,
        #[serde(rename = "3")]
        pub x3: ParticipantFrame,
        #[serde(rename = "4")]
        pub x4: ParticipantFrame,
        #[serde(rename = "5")]
        pub x5: ParticipantFrame,
        #[serde(rename = "6")]
        pub x6: ParticipantFrame,
        #[serde(rename = "7")]
        pub x7: ParticipantFrame,
        #[serde(rename = "8")]
        pub x8: ParticipantFrame,
        #[serde(rename = "9")]
        pub x9: ParticipantFrame,
        #[serde(rename = "10")]
        pub x10: ParticipantFrame,
    }
    /// ParticipantFrame data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ParticipantFrame {
        #[serde(rename = "championStats")]
        pub champion_stats: ChampionStats,
        #[serde(rename = "currentGold")]
        pub current_gold: i32,
        #[serde(rename = "damageStats")]
        pub damage_stats: DamageStats,
        #[serde(rename = "goldPerSecond")]
        pub gold_per_second: i32,
        #[serde(rename = "jungleMinionsKilled")]
        pub jungle_minions_killed: i32,
        #[serde(rename = "level")]
        pub level: i32,
        #[serde(rename = "minionsKilled")]
        pub minions_killed: i32,
        #[serde(rename = "participantId")]
        pub participant_id: i32,
        #[serde(rename = "position")]
        pub position: Position,
        #[serde(rename = "timeEnemySpentControlled")]
        pub time_enemy_spent_controlled: i32,
        #[serde(rename = "totalGold")]
        pub total_gold: i32,
        #[serde(rename = "xp")]
        pub xp: i32,
    }
    /// ChampionStats data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ChampionStats {
        #[serde(rename = "abilityHaste")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub ability_haste: Option<i32>,
        #[serde(rename = "abilityPower")]
        pub ability_power: i32,
        #[serde(rename = "armor")]
        pub armor: i32,
        #[serde(rename = "armorPen")]
        pub armor_pen: i32,
        #[serde(rename = "armorPenPercent")]
        pub armor_pen_percent: i32,
        #[serde(rename = "attackDamage")]
        pub attack_damage: i32,
        #[serde(rename = "attackSpeed")]
        pub attack_speed: i32,
        #[serde(rename = "bonusArmorPenPercent")]
        pub bonus_armor_pen_percent: i32,
        #[serde(rename = "bonusMagicPenPercent")]
        pub bonus_magic_pen_percent: i32,
        #[serde(rename = "ccReduction")]
        pub cc_reduction: i32,
        #[serde(rename = "cooldownReduction")]
        pub cooldown_reduction: i32,
        #[serde(rename = "health")]
        pub health: i32,
        #[serde(rename = "healthMax")]
        pub health_max: i32,
        #[serde(rename = "healthRegen")]
        pub health_regen: i32,
        #[serde(rename = "lifesteal")]
        pub lifesteal: i32,
        #[serde(rename = "magicPen")]
        pub magic_pen: i32,
        #[serde(rename = "magicPenPercent")]
        pub magic_pen_percent: i32,
        #[serde(rename = "magicResist")]
        pub magic_resist: i32,
        #[serde(rename = "movementSpeed")]
        pub movement_speed: i32,
        #[serde(rename = "omnivamp")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub omnivamp: Option<i32>,
        #[serde(rename = "physicalVamp")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub physical_vamp: Option<i32>,
        #[serde(rename = "power")]
        pub power: i32,
        #[serde(rename = "powerMax")]
        pub power_max: i32,
        #[serde(rename = "powerRegen")]
        pub power_regen: i32,
        #[serde(rename = "spellVamp")]
        pub spell_vamp: i32,
    }
    /// DamageStats data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct DamageStats {
        #[serde(rename = "magicDamageDone")]
        pub magic_damage_done: i32,
        #[serde(rename = "magicDamageDoneToChampions")]
        pub magic_damage_done_to_champions: i32,
        #[serde(rename = "magicDamageTaken")]
        pub magic_damage_taken: i32,
        #[serde(rename = "physicalDamageDone")]
        pub physical_damage_done: i32,
        #[serde(rename = "physicalDamageDoneToChampions")]
        pub physical_damage_done_to_champions: i32,
        #[serde(rename = "physicalDamageTaken")]
        pub physical_damage_taken: i32,
        #[serde(rename = "totalDamageDone")]
        pub total_damage_done: i32,
        #[serde(rename = "totalDamageDoneToChampions")]
        pub total_damage_done_to_champions: i32,
        #[serde(rename = "totalDamageTaken")]
        pub total_damage_taken: i32,
        #[serde(rename = "trueDamageDone")]
        pub true_damage_done: i32,
        #[serde(rename = "trueDamageDoneToChampions")]
        pub true_damage_done_to_champions: i32,
        #[serde(rename = "trueDamageTaken")]
        pub true_damage_taken: i32,
    }
    /// Position data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Position {
        #[serde(rename = "x")]
        pub x: i32,
        #[serde(rename = "y")]
        pub y: i32,
    }
    /// MatchTimelineVictimDamage data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct MatchTimelineVictimDamage {
        #[serde(rename = "basic")]
        pub basic: bool,
        #[serde(rename = "magicDamage")]
        pub magic_damage: i32,
        #[serde(rename = "name")]
        pub name: String,
        #[serde(rename = "participantId")]
        pub participant_id: i32,
        #[serde(rename = "physicalDamage")]
        pub physical_damage: i32,
        #[serde(rename = "spellName")]
        pub spell_name: String,
        #[serde(rename = "spellSlot")]
        pub spell_slot: i32,
        #[serde(rename = "trueDamage")]
        pub true_damage: i32,
        #[serde(rename = "type")]
        pub r#type: String,
    }
}

/// Data structs used by [`SpectatorTftV5`](crate::endpoints::SpectatorTftV5).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod spectator_tft_v5 {
    /// CurrentGameInfo data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct CurrentGameInfo {
        /// The ID of the game
        #[serde(rename = "gameId")]
        pub game_id: i64,
        /// The game type
        #[serde(rename = "gameType")]
        pub game_type: crate::consts::GameType,
        /// The game start time represented in epoch milliseconds
        #[serde(rename = "gameStartTime")]
        pub game_start_time: i64,
        /// The ID of the map
        #[serde(rename = "mapId")]
        pub map_id: crate::consts::Map,
        /// The amount of time in seconds that has passed since the game started
        #[serde(rename = "gameLength")]
        pub game_length: i64,
        /// The ID of the platform on which the game is being played
        #[serde(rename = "platformId")]
        pub platform_id: String,
        /// The game mode
        #[serde(rename = "gameMode")]
        pub game_mode: crate::consts::GameMode,
        /// Banned champion information
        #[serde(rename = "bannedChampions")]
        pub banned_champions: std::vec::Vec<BannedChampion>,
        /// The queue type (queue types are documented on the Game Constants page)
        #[serde(rename = "gameQueueConfigId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub game_queue_config_id: Option<crate::consts::Queue>,
        /// The observer information
        #[serde(rename = "observers")]
        pub observers: Observer,
        /// The participant information
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<CurrentGameParticipant>,
    }
    /// BannedChampion data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct BannedChampion {
        /// The turn during which the champion was banned
        #[serde(rename = "pickTurn")]
        pub pick_turn: i32,
        /// The ID of the banned champion
        #[serde(rename = "championId")]
        pub champion_id: crate::consts::Champion,
        /// The ID of the team that banned the champion
        #[serde(rename = "teamId")]
        pub team_id: crate::consts::Team,
    }
    /// Observer data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Observer {
        /// Key used to decrypt the spectator grid game data for playback
        #[serde(rename = "encryptionKey")]
        pub encryption_key: String,
    }
    /// CurrentGameParticipant data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct CurrentGameParticipant {
        /// The ID of the champion played by this participant
        #[serde(rename = "championId")]
        pub champion_id: crate::consts::Champion,
        /// Perks/Runes Reforged Information
        #[serde(rename = "perks")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub perks: Option<Perks>,
        /// The ID of the profile icon used by this participant
        #[serde(rename = "profileIconId")]
        pub profile_icon_id: i64,
        /// The team ID of this participant, indicating the participant's team
        #[serde(rename = "teamId")]
        pub team_id: crate::consts::Team,
        /// The encrypted summoner ID of this participant
        #[serde(rename = "summonerId")]
        pub summoner_id: String,
        /// The encrypted puuid of this participant
        #[serde(rename = "puuid")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub puuid: Option<String>,
        /// The ID of the first summoner spell used by this participant
        #[serde(rename = "spell1Id")]
        pub spell1_id: i64,
        /// The ID of the second summoner spell used by this participant
        #[serde(rename = "spell2Id")]
        pub spell2_id: i64,
        /// List of Game Customizations
        #[serde(rename = "gameCustomizationObjects")]
        pub game_customization_objects: std::vec::Vec<GameCustomizationObject>,
        #[serde(rename = "riotId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub riot_id: Option<String>,
    }
    /// Perks data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Perks {
        /// IDs of the perks/runes assigned.
        #[serde(rename = "perkIds")]
        pub perk_ids: std::vec::Vec<i64>,
        /// Primary runes path
        #[serde(rename = "perkStyle")]
        pub perk_style: i64,
        /// Secondary runes path
        #[serde(rename = "perkSubStyle")]
        pub perk_sub_style: i64,
    }
    /// GameCustomizationObject data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct GameCustomizationObject {
        /// Category identifier for Game Customization
        #[serde(rename = "category")]
        pub category: String,
        /// Game Customization content
        #[serde(rename = "content")]
        pub content: String,
    }
    /// FeaturedGames data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct FeaturedGames {
        /// The list of featured games
        #[serde(rename = "gameList")]
        pub game_list: std::vec::Vec<FeaturedGameInfo>,
        /// The suggested interval to wait before requesting FeaturedGames again
        #[serde(rename = "clientRefreshInterval")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub client_refresh_interval: Option<i64>,
    }
    /// FeaturedGameInfo data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct FeaturedGameInfo {
        /// The game mode<br>
        /// (Legal values:  TFT)
        #[serde(rename = "gameMode")]
        pub game_mode: crate::consts::GameMode,
        /// The amount of time in seconds that has passed since the game started
        #[serde(rename = "gameLength")]
        pub game_length: i64,
        /// The ID of the map
        #[serde(rename = "mapId")]
        pub map_id: crate::consts::Map,
        /// The game type<br>
        /// (Legal values:  MATCHED)
        #[serde(rename = "gameType")]
        pub game_type: crate::consts::GameType,
        /// Banned champion information
        #[serde(rename = "bannedChampions")]
        pub banned_champions: std::vec::Vec<BannedChampion>,
        /// The ID of the game
        #[serde(rename = "gameId")]
        pub game_id: i64,
        /// The observer information
        #[serde(rename = "observers")]
        pub observers: Observer,
        /// The queue type (queue types are documented on the Game Constants page)
        #[serde(rename = "gameQueueConfigId")]
        pub game_queue_config_id: crate::consts::Queue,
        /// The participant information
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<Participant>,
        /// The ID of the platform on which the game is being played
        #[serde(rename = "platformId")]
        pub platform_id: String,
    }
    /// Participant data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Participant {
        /// The ID of the second summoner spell used by this participant
        #[serde(rename = "spell2Id")]
        pub spell2_id: i64,
        /// The ID of the profile icon used by this participant
        #[serde(rename = "profileIconId")]
        pub profile_icon_id: i64,
        /// Encrypted summoner ID of this participant
        #[serde(rename = "summonerId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub summoner_id: Option<String>,
        /// Encrypted puuid of this participant
        #[serde(rename = "puuid")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub puuid: Option<String>,
        /// The ID of the champion played by this participant
        #[serde(rename = "championId")]
        pub champion_id: crate::consts::Champion,
        /// The team ID of this participant, indicating the participant's team
        #[serde(rename = "teamId")]
        pub team_id: crate::consts::Team,
        /// The ID of the first summoner spell used by this participant
        #[serde(rename = "spell1Id")]
        pub spell1_id: i64,
        #[serde(rename = "riotId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub riot_id: Option<String>,
    }
}

/// Data structs used by [`SpectatorV5`](crate::endpoints::SpectatorV5).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod spectator_v5 {
    /// CurrentGameInfo data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct CurrentGameInfo {
        /// The ID of the game
        #[serde(rename = "gameId")]
        pub game_id: i64,
        /// The game type
        #[serde(rename = "gameType")]
        pub game_type: crate::consts::GameType,
        /// The game start time represented in epoch milliseconds
        #[serde(rename = "gameStartTime")]
        pub game_start_time: i64,
        /// The ID of the map
        #[serde(rename = "mapId")]
        pub map_id: crate::consts::Map,
        /// The amount of time in seconds that has passed since the game started
        #[serde(rename = "gameLength")]
        pub game_length: i64,
        /// The ID of the platform on which the game is being played
        #[serde(rename = "platformId")]
        pub platform_id: String,
        /// The game mode
        #[serde(rename = "gameMode")]
        pub game_mode: crate::consts::GameMode,
        /// Banned champion information
        #[serde(rename = "bannedChampions")]
        pub banned_champions: std::vec::Vec<BannedChampion>,
        /// The queue type (queue types are documented on the Game Constants page)
        #[serde(rename = "gameQueueConfigId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub game_queue_config_id: Option<crate::consts::Queue>,
        /// The observer information
        #[serde(rename = "observers")]
        pub observers: Observer,
        /// The participant information
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<CurrentGameParticipant>,
    }
    /// BannedChampion data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct BannedChampion {
        /// The turn during which the champion was banned
        #[serde(rename = "pickTurn")]
        pub pick_turn: i32,
        /// The ID of the banned champion
        #[serde(rename = "championId")]
        pub champion_id: crate::consts::Champion,
        /// The ID of the team that banned the champion
        #[serde(rename = "teamId")]
        pub team_id: crate::consts::Team,
    }
    /// Observer data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Observer {
        /// Key used to decrypt the spectator grid game data for playback
        #[serde(rename = "encryptionKey")]
        pub encryption_key: String,
    }
    /// CurrentGameParticipant data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct CurrentGameParticipant {
        /// The ID of the champion played by this participant
        #[serde(rename = "championId")]
        pub champion_id: crate::consts::Champion,
        /// Perks/Runes Reforged Information
        #[serde(rename = "perks")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub perks: Option<Perks>,
        /// The ID of the profile icon used by this participant
        #[serde(rename = "profileIconId")]
        pub profile_icon_id: i64,
        /// Flag indicating whether or not this participant is a bot
        #[serde(rename = "bot")]
        pub bot: bool,
        /// The team ID of this participant, indicating the participant's team
        #[serde(rename = "teamId")]
        pub team_id: crate::consts::Team,
        /// The encrypted summoner ID of this participant
        #[serde(rename = "summonerId")]
        pub summoner_id: String,
        /// The encrypted puuid of this participant
        #[serde(rename = "puuid")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub puuid: Option<String>,
        /// The ID of the first summoner spell used by this participant
        #[serde(rename = "spell1Id")]
        pub spell1_id: i64,
        /// The ID of the second summoner spell used by this participant
        #[serde(rename = "spell2Id")]
        pub spell2_id: i64,
        /// List of Game Customizations
        #[serde(rename = "gameCustomizationObjects")]
        pub game_customization_objects: std::vec::Vec<GameCustomizationObject>,
        #[serde(rename = "riotId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub riot_id: Option<String>,
    }
    /// Perks data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Perks {
        /// IDs of the perks/runes assigned.
        #[serde(rename = "perkIds")]
        pub perk_ids: std::vec::Vec<i64>,
        /// Primary runes path
        #[serde(rename = "perkStyle")]
        pub perk_style: i64,
        /// Secondary runes path
        #[serde(rename = "perkSubStyle")]
        pub perk_sub_style: i64,
    }
    /// GameCustomizationObject data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct GameCustomizationObject {
        /// Category identifier for Game Customization
        #[serde(rename = "category")]
        pub category: String,
        /// Game Customization content
        #[serde(rename = "content")]
        pub content: String,
    }
    /// FeaturedGames data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct FeaturedGames {
        /// The list of featured games
        #[serde(rename = "gameList")]
        pub game_list: std::vec::Vec<FeaturedGameInfo>,
        /// The suggested interval to wait before requesting FeaturedGames again
        #[serde(rename = "clientRefreshInterval")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub client_refresh_interval: Option<i64>,
    }
    /// FeaturedGameInfo data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct FeaturedGameInfo {
        /// The game mode<br>
        /// (Legal values:  CLASSIC,  ODIN,  ARAM,  TUTORIAL,  ONEFORALL,  ASCENSION,  FIRSTBLOOD,  KINGPORO)
        #[serde(rename = "gameMode")]
        pub game_mode: crate::consts::GameMode,
        /// The amount of time in seconds that has passed since the game started
        #[serde(rename = "gameLength")]
        pub game_length: i64,
        /// The ID of the map
        #[serde(rename = "mapId")]
        pub map_id: crate::consts::Map,
        /// The game type<br>
        /// (Legal values:  CUSTOM_GAME,  MATCHED_GAME,  TUTORIAL_GAME)
        #[serde(rename = "gameType")]
        pub game_type: crate::consts::GameType,
        /// Banned champion information
        #[serde(rename = "bannedChampions")]
        pub banned_champions: std::vec::Vec<BannedChampion>,
        /// The ID of the game
        #[serde(rename = "gameId")]
        pub game_id: i64,
        /// The observer information
        #[serde(rename = "observers")]
        pub observers: Observer,
        /// The queue type (queue types are documented on the Game Constants page)
        #[serde(rename = "gameQueueConfigId")]
        pub game_queue_config_id: crate::consts::Queue,
        /// The participant information
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<Participant>,
        /// The ID of the platform on which the game is being played
        #[serde(rename = "platformId")]
        pub platform_id: String,
    }
    /// Participant data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Participant {
        /// Flag indicating whether or not this participant is a bot
        #[serde(rename = "bot")]
        pub bot: bool,
        /// The ID of the second summoner spell used by this participant
        #[serde(rename = "spell2Id")]
        pub spell2_id: i64,
        /// The ID of the profile icon used by this participant
        #[serde(rename = "profileIconId")]
        pub profile_icon_id: i64,
        /// Encrypted summoner ID of this participant
        #[serde(rename = "summonerId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub summoner_id: Option<String>,
        /// Encrypted puuid of this participant
        #[serde(rename = "puuid")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub puuid: Option<String>,
        /// The ID of the champion played by this participant
        #[serde(rename = "championId")]
        pub champion_id: crate::consts::Champion,
        /// The team ID of this participant, indicating the participant's team
        #[serde(rename = "teamId")]
        pub team_id: crate::consts::Team,
        /// The ID of the first summoner spell used by this participant
        #[serde(rename = "spell1Id")]
        pub spell1_id: i64,
        #[serde(rename = "riotId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub riot_id: Option<String>,
    }
}

/// Data structs used by [`SummonerV4`](crate::endpoints::SummonerV4).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod summoner_v4 {
    /// Summoner data object.
    /// # Description
    /// represents a summoner
    ///
    /// Note: This struct is automatically generated
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Summoner {
        /// Encrypted account ID. Max length 56 characters.
        #[serde(rename = "accountId")]
        pub account_id: String,
        /// ID of the summoner icon associated with the summoner.
        #[serde(rename = "profileIconId")]
        pub profile_icon_id: i32,
        /// Date summoner was last modified specified as epoch milliseconds. The following events will update this timestamp: profile icon change, playing the tutorial or advanced tutorial, finishing a game, summoner name change
        #[serde(rename = "revisionDate")]
        pub revision_date: i64,
        /// Encrypted summoner ID. Max length 63 characters.
        #[serde(rename = "id")]
        pub id: String,
        /// Encrypted PUUID. Exact length of 78 characters.
        #[serde(rename = "puuid")]
        pub puuid: String,
        /// Summoner level associated with the summoner.
        #[serde(rename = "summonerLevel")]
        pub summoner_level: i64,
    }
}

/// Data structs used by [`TftLeagueV1`](crate::endpoints::TftLeagueV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod tft_league_v1 {
    /// LeagueList data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LeagueList {
        #[serde(rename = "leagueId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub league_id: Option<String>,
        #[serde(rename = "entries")]
        pub entries: std::vec::Vec<LeagueItem>,
        #[serde(rename = "tier")]
        pub tier: crate::consts::Tier,
        #[serde(rename = "name")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub name: Option<String>,
        #[serde(rename = "queue")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub queue: Option<crate::consts::QueueType>,
    }
    /// LeagueItem data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LeagueItem {
        #[serde(rename = "freshBlood")]
        pub fresh_blood: bool,
        /// First placement.
        #[serde(rename = "wins")]
        pub wins: i32,
        #[serde(rename = "miniSeries")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub mini_series: Option<MiniSeries>,
        #[serde(rename = "inactive")]
        pub inactive: bool,
        #[serde(rename = "veteran")]
        pub veteran: bool,
        #[serde(rename = "hotStreak")]
        pub hot_streak: bool,
        #[serde(rename = "rank")]
        pub rank: crate::consts::Division,
        #[serde(rename = "leaguePoints")]
        pub league_points: i32,
        /// Second through eighth placement.
        #[serde(rename = "losses")]
        pub losses: i32,
        /// Player's encrypted summonerId.
        #[serde(rename = "summonerId")]
        pub summoner_id: String,
    }
    /// MiniSeries data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct MiniSeries {
        #[serde(rename = "losses")]
        pub losses: i32,
        #[serde(rename = "progress")]
        pub progress: String,
        #[serde(rename = "target")]
        pub target: i32,
        #[serde(rename = "wins")]
        pub wins: i32,
    }
    /// LeagueEntry data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LeagueEntry {
        /// Player Universal Unique Identifier. Exact length of 78 characters. (Encrypted)
        #[serde(rename = "puuid")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub puuid: Option<String>,
        /// Not included for the RANKED_TFT_TURBO queueType.
        #[serde(rename = "leagueId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub league_id: Option<String>,
        /// Player's encrypted summonerId.
        #[serde(rename = "summonerId")]
        pub summoner_id: String,
        #[serde(rename = "queueType")]
        pub queue_type: crate::consts::QueueType,
        /// Only included for the RANKED_TFT_TURBO queueType.<br>
        /// (Legal values:  ORANGE,  PURPLE,  BLUE,  GREEN,  GRAY)
        #[serde(rename = "ratedTier")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub rated_tier: Option<String>,
        /// Only included for the RANKED_TFT_TURBO queueType.
        #[serde(rename = "ratedRating")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub rated_rating: Option<i32>,
        /// Not included for the RANKED_TFT_TURBO queueType.
        #[serde(rename = "tier")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub tier: Option<crate::consts::Tier>,
        /// The player's division within a tier. Not included for the RANKED_TFT_TURBO queueType.
        #[serde(rename = "rank")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub rank: Option<crate::consts::Division>,
        /// Not included for the RANKED_TFT_TURBO queueType.
        #[serde(rename = "leaguePoints")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub league_points: Option<i32>,
        /// First placement.
        #[serde(rename = "wins")]
        pub wins: i32,
        /// Second through eighth placement.
        #[serde(rename = "losses")]
        pub losses: i32,
        /// Not included for the RANKED_TFT_TURBO queueType.
        #[serde(rename = "hotStreak")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub hot_streak: Option<bool>,
        /// Not included for the RANKED_TFT_TURBO queueType.
        #[serde(rename = "veteran")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub veteran: Option<bool>,
        /// Not included for the RANKED_TFT_TURBO queueType.
        #[serde(rename = "freshBlood")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub fresh_blood: Option<bool>,
        /// Not included for the RANKED_TFT_TURBO queueType.
        #[serde(rename = "inactive")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub inactive: Option<bool>,
        /// Not included for the RANKED_TFT_TURBO queueType.
        #[serde(rename = "miniSeries")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub mini_series: Option<MiniSeries>,
    }
    /// TopRatedLadderEntry data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TopRatedLadderEntry {
        #[serde(rename = "summonerId")]
        pub summoner_id: String,
        /// (Legal values:  ORANGE,  PURPLE,  BLUE,  GREEN,  GRAY)
        #[serde(rename = "ratedTier")]
        pub rated_tier: String,
        #[serde(rename = "ratedRating")]
        pub rated_rating: i32,
        /// First placement.
        #[serde(rename = "wins")]
        pub wins: i32,
        #[serde(rename = "previousUpdateLadderPosition")]
        pub previous_update_ladder_position: i32,
    }
}

/// Data structs used by [`TftMatchV1`](crate::endpoints::TftMatchV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod tft_match_v1 {
    /// Match data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Match {
        /// Match metadata.
        #[serde(rename = "metadata")]
        pub metadata: Metadata,
        /// Match info.
        #[serde(rename = "info")]
        pub info: Info,
    }
    /// Metadata data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Metadata {
        /// Match data version.
        #[serde(rename = "data_version")]
        pub data_version: String,
        /// Match id.
        #[serde(rename = "match_id")]
        pub match_id: String,
        /// A list of participant PUUIDs.
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<String>,
    }
    /// Info data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Info {
        /// Unix timestamp.
        #[serde(rename = "game_datetime")]
        pub game_datetime: i64,
        /// Game length in seconds.
        #[serde(rename = "game_length")]
        pub game_length: f32,
        /// Game variation key. Game variations documented in TFT static data.
        #[serde(rename = "game_variation")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub game_variation: Option<String>,
        /// Game client version.
        #[serde(rename = "game_version")]
        pub game_version: String,
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<Participant>,
        /// Please refer to the League of Legends documentation.
        #[serde(rename = "queue_id")]
        pub queue_id: crate::consts::Queue,
        /// Teamfight Tactics set number.
        #[serde(rename = "tft_set_number")]
        pub tft_set_number: i32,
        #[serde(rename = "tft_game_type")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub tft_game_type: Option<String>,
        #[serde(rename = "tft_set_core_name")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub tft_set_core_name: Option<String>,
        #[serde(rename = "endOfGameResult")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub end_of_game_result: Option<String>,
        #[serde(rename = "gameCreation")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub game_creation: Option<i64>,
        #[serde(rename = "gameId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub game_id: Option<i64>,
        #[serde(rename = "mapId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub map_id: Option<i64>,
        /// Please refer to the League of Legends documentation.
        #[serde(rename = "queueId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub queue_id_: Option<crate::consts::Queue>,
    }
    /// Participant data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Participant {
        /// Participant's companion.
        #[serde(rename = "companion")]
        pub companion: Companion,
        /// Gold left after participant was eliminated.
        #[serde(rename = "gold_left")]
        pub gold_left: i32,
        /// The round the participant was eliminated in. Note: If the player was eliminated in stage 2-1 their last_round would be 5.
        #[serde(rename = "last_round")]
        pub last_round: i32,
        /// Participant Little Legend level. Note: This is not the number of active units.
        #[serde(rename = "level")]
        pub level: i32,
        /// Participant placement upon elimination.
        #[serde(rename = "placement")]
        pub placement: i32,
        /// Number of players the participant eliminated.
        #[serde(rename = "players_eliminated")]
        pub players_eliminated: i32,
        #[serde(rename = "puuid")]
        pub puuid: String,
        /// The number of seconds before the participant was eliminated.
        #[serde(rename = "time_eliminated")]
        pub time_eliminated: f32,
        /// Damage the participant dealt to other players.
        #[serde(rename = "total_damage_to_players")]
        pub total_damage_to_players: i32,
        /// A complete list of traits for the participant's active units.
        #[serde(rename = "traits")]
        pub traits: std::vec::Vec<Trait>,
        /// A list of active units for the participant.
        #[serde(rename = "units")]
        pub units: std::vec::Vec<Unit>,
        #[serde(rename = "augments")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub augments: Option<std::vec::Vec<String>>,
        #[serde(rename = "partner_group_id")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub partner_group_id: Option<i32>,
        #[serde(rename = "missions")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub missions: Option<ParticipantMissions>,
    }
    /// Trait data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Trait {
        /// Trait name.
        #[serde(rename = "name")]
        pub name: String,
        /// Number of units with this trait.
        #[serde(rename = "num_units")]
        pub num_units: i32,
        /// Current style for this trait. (0 = No style, 1 = Bronze, 2 = Silver, 3 = Gold, 4 = Chromatic)
        #[serde(rename = "style")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub style: Option<i32>,
        /// Current active tier for the trait.
        #[serde(rename = "tier_current")]
        pub tier_current: i32,
        /// Total tiers for the trait.
        #[serde(rename = "tier_total")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub tier_total: Option<i32>,
    }
    /// Unit data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Unit {
        /// A list of the unit's items. Please refer to the Teamfight Tactics documentation for item ids.
        #[serde(rename = "items")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub items: Option<std::vec::Vec<i32>>,
        /// This field was introduced in patch 9.22 with data_version 2.
        #[serde(rename = "character_id")]
        pub character_id: String,
        /// If a unit is chosen as part of the Fates set mechanic, the chosen trait will be indicated by this field. Otherwise this field is excluded from the response.
        #[serde(rename = "chosen")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub chosen: Option<String>,
        /// Unit name. This field is often left blank.
        #[serde(rename = "name")]
        pub name: String,
        /// Unit rarity. This doesn't equate to the unit cost.
        #[serde(rename = "rarity")]
        pub rarity: i32,
        /// Unit tier.
        #[serde(rename = "tier")]
        pub tier: i32,
        #[serde(rename = "itemNames")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub item_names: Option<std::vec::Vec<String>>,
    }
    /// Companion data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Companion {
        #[serde(rename = "item_ID")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub item_id: Option<i32>,
        #[serde(rename = "skin_ID")]
        pub skin_id: i32,
        #[serde(rename = "content_ID")]
        pub content_id: String,
        #[serde(rename = "species")]
        pub species: String,
    }
    /// ParticipantMissions data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ParticipantMissions {
        #[serde(rename = "Assists")]
        pub assists: i32,
        #[serde(rename = "DamageDealt")]
        pub damage_dealt: i32,
        #[serde(rename = "DamageDealtToObjectives")]
        pub damage_dealt_to_objectives: i32,
        #[serde(rename = "DamageDealtToTurrets")]
        pub damage_dealt_to_turrets: i32,
        #[serde(rename = "DamageTaken")]
        pub damage_taken: i32,
        #[serde(rename = "DoubleKills")]
        pub double_kills: i32,
        #[serde(rename = "GoldEarned")]
        pub gold_earned: i32,
        #[serde(rename = "GoldSpent")]
        pub gold_spent: i32,
        #[serde(rename = "InhibitorsDestroyed")]
        pub inhibitors_destroyed: i32,
        #[serde(rename = "Kills")]
        pub kills: i32,
        #[serde(rename = "LargestKillingSpree")]
        pub largest_killing_spree: i32,
        #[serde(rename = "LargestMultiKill")]
        pub largest_multi_kill: i32,
        #[serde(rename = "MagicDamageDealt")]
        pub magic_damage_dealt: i32,
        #[serde(rename = "MagicDamageDealtToChampions")]
        pub magic_damage_dealt_to_champions: i32,
        #[serde(rename = "NeutralMinionsKilledTeamJungle")]
        pub neutral_minions_killed_team_jungle: i32,
        #[serde(rename = "PhysicalDamageDealt")]
        pub physical_damage_dealt: i32,
        #[serde(rename = "PhysicalDamageTaken")]
        pub physical_damage_taken: i32,
        #[serde(rename = "PlayerScore0")]
        pub player_score0: i32,
        #[serde(rename = "PlayerScore1")]
        pub player_score1: i32,
        #[serde(rename = "PlayerScore2")]
        pub player_score2: i32,
        #[serde(rename = "PlayerScore3")]
        pub player_score3: i32,
        #[serde(rename = "PlayerScore4")]
        pub player_score4: i32,
        #[serde(rename = "PlayerScore5")]
        pub player_score5: i32,
        #[serde(rename = "PlayerScore6")]
        pub player_score6: i32,
        #[serde(rename = "PlayerScore9")]
        pub player_score9: i32,
        #[serde(rename = "PlayerScore10")]
        pub player_score10: i32,
        #[serde(rename = "PlayerScore11")]
        pub player_score11: i32,
        #[serde(rename = "QuadraKills")]
        pub quadra_kills: i32,
        #[serde(rename = "Spell1Casts")]
        pub spell1_casts: i32,
        #[serde(rename = "Spell2Casts")]
        pub spell2_casts: i32,
        #[serde(rename = "Spell3Casts")]
        pub spell3_casts: i32,
        #[serde(rename = "Spell4Casts")]
        pub spell4_casts: i32,
        #[serde(rename = "SummonerSpell1Casts")]
        pub summoner_spell1_casts: i32,
        #[serde(rename = "TimeCCOthers")]
        pub time_cc_others: i32,
        #[serde(rename = "TotalMinionsKilled")]
        pub total_minions_killed: i32,
        #[serde(rename = "TrueDamageDealtToChampions")]
        pub true_damage_dealt_to_champions: i32,
        #[serde(rename = "UnrealKills")]
        pub unreal_kills: i32,
        #[serde(rename = "VisionScore")]
        pub vision_score: i32,
        #[serde(rename = "WardsKilled")]
        pub wards_killed: i32,
        #[serde(rename = "Deaths")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub deaths: Option<i32>,
        #[serde(rename = "KillingSprees")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub killing_sprees: Option<i32>,
        #[serde(rename = "MagicDamageTaken")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub magic_damage_taken: Option<i32>,
        #[serde(rename = "PentaKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub penta_kills: Option<i32>,
        #[serde(rename = "PhysicalDamageDealtToChampions")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub physical_damage_dealt_to_champions: Option<i32>,
        #[serde(rename = "TotalDamageDealtToChampions")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub total_damage_dealt_to_champions: Option<i32>,
        #[serde(rename = "TripleKills")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub triple_kills: Option<i32>,
        #[serde(rename = "TrueDamageDealt")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub true_damage_dealt: Option<i32>,
        #[serde(rename = "TrueDamageTaken")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub true_damage_taken: Option<i32>,
    }
}

/// Data structs used by [`TftStatusV1`](crate::endpoints::TftStatusV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod tft_status_v1 {
    /// PlatformData data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PlatformData {
        #[serde(rename = "id")]
        pub id: String,
        #[serde(rename = "name")]
        pub name: String,
        #[serde(rename = "locales")]
        pub locales: std::vec::Vec<String>,
        #[serde(rename = "maintenances")]
        pub maintenances: std::vec::Vec<Status>,
        #[serde(rename = "incidents")]
        pub incidents: std::vec::Vec<Status>,
    }
    /// Status data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Status {
        #[serde(rename = "id")]
        pub id: i32,
        /// (Legal values:  scheduled,  in_progress,  complete)
        #[serde(rename = "maintenance_status")]
        pub maintenance_status: String,
        /// (Legal values:  info,  warning,  critical)
        #[serde(rename = "incident_severity")]
        pub incident_severity: String,
        #[serde(rename = "titles")]
        pub titles: std::vec::Vec<Content>,
        #[serde(rename = "updates")]
        pub updates: std::vec::Vec<Update>,
        #[serde(rename = "created_at")]
        pub created_at: String,
        #[serde(rename = "archive_at")]
        pub archive_at: String,
        #[serde(rename = "updated_at")]
        pub updated_at: String,
        /// (Legal values: windows, macos, android, ios, ps4, xbone, switch)
        #[serde(rename = "platforms")]
        pub platforms: std::vec::Vec<String>,
    }
    /// Content data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Content {
        #[serde(rename = "locale")]
        pub locale: String,
        #[serde(rename = "content")]
        pub content: String,
    }
    /// Update data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Update {
        #[serde(rename = "id")]
        pub id: i32,
        #[serde(rename = "author")]
        pub author: String,
        #[serde(rename = "publish")]
        pub publish: bool,
        /// (Legal values: riotclient, riotstatus, game)
        #[serde(rename = "publish_locations")]
        pub publish_locations: std::vec::Vec<String>,
        #[serde(rename = "translations")]
        pub translations: std::vec::Vec<Content>,
        #[serde(rename = "created_at")]
        pub created_at: String,
        #[serde(rename = "updated_at")]
        pub updated_at: String,
    }
}

/// Data structs used by [`TftSummonerV1`](crate::endpoints::TftSummonerV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod tft_summoner_v1 {
    /// Summoner data object.
    /// # Description
    /// represents a summoner
    ///
    /// Note: This struct is automatically generated
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Summoner {
        /// Encrypted account ID. Max length 56 characters.
        #[serde(rename = "accountId")]
        pub account_id: String,
        /// ID of the summoner icon associated with the summoner.
        #[serde(rename = "profileIconId")]
        pub profile_icon_id: i32,
        /// Date summoner was last modified specified as epoch milliseconds. The following events will update this timestamp: summoner name change, summoner level change, or profile icon change.
        #[serde(rename = "revisionDate")]
        pub revision_date: i64,
        /// Encrypted summoner ID. Max length 63 characters.
        #[serde(rename = "id")]
        pub id: String,
        /// Encrypted PUUID. Exact length of 78 characters.
        #[serde(rename = "puuid")]
        pub puuid: String,
        /// Summoner level associated with the summoner.
        #[serde(rename = "summonerLevel")]
        pub summoner_level: i64,
    }
}

/// Data structs used by [`TournamentStubV5`](crate::endpoints::TournamentStubV5).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod tournament_stub_v5 {
    /// TournamentCodeParametersV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TournamentCodeParametersV5 {
        /// Optional list of encrypted puuids in order to validate the players eligible to join the lobby. NOTE: We currently do not enforce participants at the team level, but rather the aggregate of teamOne and teamTwo. We may add the ability to enforce at the team level in the future.
        #[serde(rename = "allowedParticipants")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub allowed_participants: Option<std::vec::Vec<String>>,
        /// Optional string that may contain any data in any format, if specified at all. Used to denote any custom information about the game.
        #[serde(rename = "metadata")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub metadata: Option<String>,
        /// The team size of the game. Valid values are 1-5.
        #[serde(rename = "teamSize")]
        pub team_size: i32,
        /// The pick type of the game.<br>
        /// (Legal values:  BLIND_PICK,  DRAFT_MODE,  ALL_RANDOM,  TOURNAMENT_DRAFT)
        #[serde(rename = "pickType")]
        pub pick_type: String,
        /// The map type of the game.<br>
        /// (Legal values:  SUMMONERS_RIFT,  HOWLING_ABYSS)
        #[serde(rename = "mapType")]
        pub map_type: String,
        /// The spectator type of the game.<br>
        /// (Legal values:  NONE,  LOBBYONLY,  ALL)
        #[serde(rename = "spectatorType")]
        pub spectator_type: String,
        /// Checks if allowed participants are enough to make full teams.
        #[serde(rename = "enoughPlayers")]
        pub enough_players: bool,
    }
    /// TournamentCodeV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TournamentCodeV5 {
        /// The tournament code.
        #[serde(rename = "code")]
        pub code: String,
        /// The spectator mode for the tournament code game.
        #[serde(rename = "spectators")]
        pub spectators: String,
        /// The lobby name for the tournament code game.
        #[serde(rename = "lobbyName")]
        pub lobby_name: String,
        /// The metadata for tournament code.
        #[serde(rename = "metaData")]
        pub meta_data: String,
        /// The password for the tournament code game.
        #[serde(rename = "password")]
        pub password: String,
        /// The team size for the tournament code game.
        #[serde(rename = "teamSize")]
        pub team_size: i32,
        /// The provider's ID.
        #[serde(rename = "providerId")]
        pub provider_id: i32,
        /// The pick mode for tournament code game.
        #[serde(rename = "pickType")]
        pub pick_type: String,
        /// The tournament's ID.
        #[serde(rename = "tournamentId")]
        pub tournament_id: i32,
        /// The tournament code's ID.
        #[serde(rename = "id")]
        pub id: i32,
        /// The tournament code's region.<br>
        /// (Legal values:  BR,  EUNE,  EUW,  JP,  LAN,  LAS,  NA,  OCE,  PBE,  RU,  TR,  KR)
        #[serde(rename = "region")]
        pub region: String,
        /// The game map for the tournament code game
        #[serde(rename = "map")]
        pub map: String,
        /// The puuids of the participants (Encrypted)
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<String>,
    }
    /// LobbyEventV5Wrapper data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LobbyEventV5Wrapper {
        #[serde(rename = "eventList")]
        pub event_list: std::vec::Vec<LobbyEventV5>,
    }
    /// LobbyEventV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LobbyEventV5 {
        /// Timestamp from the event
        #[serde(rename = "timestamp")]
        pub timestamp: String,
        /// The type of event that was triggered
        #[serde(rename = "eventType")]
        pub event_type: String,
        /// The puuid that triggered the event (Encrypted)
        #[serde(rename = "puuid")]
        pub puuid: String,
    }
    /// ProviderRegistrationParametersV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ProviderRegistrationParametersV5 {
        /// The region in which the provider will be running tournaments.<br>
        /// (Legal values:  BR,  EUNE,  EUW,  JP,  LAN,  LAS,  NA,  OCE,  PBE,  RU,  TR,  KR)
        #[serde(rename = "region")]
        pub region: String,
        /// The provider's callback URL to which tournament game results in this region should be posted. The URL must be well-formed, use the http or https protocol, and use the default port for the protocol (http URLs must use port 80, https URLs must use port 443).
        #[serde(rename = "url")]
        pub url: String,
    }
    /// TournamentRegistrationParametersV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TournamentRegistrationParametersV5 {
        /// The provider ID to specify the regional registered provider data to associate this tournament.
        #[serde(rename = "providerId")]
        pub provider_id: i32,
        /// The optional name of the tournament.
        #[serde(rename = "name")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub name: Option<String>,
    }
}

/// Data structs used by [`TournamentV5`](crate::endpoints::TournamentV5).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod tournament_v5 {
    /// TournamentCodeParametersV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TournamentCodeParametersV5 {
        /// Optional list of encrypted puuids in order to validate the players eligible to join the lobby. NOTE: We currently do not enforce participants at the team level, but rather the aggregate of teamOne and teamTwo. We may add the ability to enforce at the team level in the future.
        #[serde(rename = "allowedParticipants")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub allowed_participants: Option<std::vec::Vec<String>>,
        /// Optional string that may contain any data in any format, if specified at all. Used to denote any custom information about the game.
        #[serde(rename = "metadata")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub metadata: Option<String>,
        /// The team size of the game. Valid values are 1-5.
        #[serde(rename = "teamSize")]
        pub team_size: i32,
        /// The pick type of the game.<br>
        /// (Legal values:  BLIND_PICK,  DRAFT_MODE,  ALL_RANDOM,  TOURNAMENT_DRAFT)
        #[serde(rename = "pickType")]
        pub pick_type: String,
        /// The map type of the game.<br>
        /// (Legal values:  SUMMONERS_RIFT,  HOWLING_ABYSS)
        #[serde(rename = "mapType")]
        pub map_type: String,
        /// The spectator type of the game.<br>
        /// (Legal values:  NONE,  LOBBYONLY,  ALL)
        #[serde(rename = "spectatorType")]
        pub spectator_type: String,
        /// Checks if allowed participants are enough to make full teams.
        #[serde(rename = "enoughPlayers")]
        pub enough_players: bool,
    }
    /// TournamentCodeV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TournamentCodeV5 {
        /// The tournament code.
        #[serde(rename = "code")]
        pub code: String,
        /// The spectator mode for the tournament code game.
        #[serde(rename = "spectators")]
        pub spectators: String,
        /// The lobby name for the tournament code game.
        #[serde(rename = "lobbyName")]
        pub lobby_name: String,
        /// The metadata for tournament code.
        #[serde(rename = "metaData")]
        pub meta_data: String,
        /// The password for the tournament code game.
        #[serde(rename = "password")]
        pub password: String,
        /// The team size for the tournament code game.
        #[serde(rename = "teamSize")]
        pub team_size: i32,
        /// The provider's ID.
        #[serde(rename = "providerId")]
        pub provider_id: i32,
        /// The pick mode for tournament code game.
        #[serde(rename = "pickType")]
        pub pick_type: String,
        /// The tournament's ID.
        #[serde(rename = "tournamentId")]
        pub tournament_id: i32,
        /// The tournament code's ID.
        #[serde(rename = "id")]
        pub id: i32,
        /// The tournament code's region.<br>
        /// (Legal values:  BR,  EUNE,  EUW,  JP,  LAN,  LAS,  NA,  OCE,  PBE,  RU,  TR,  KR,  PH,  SG,  TH,  TW,  VN)
        #[serde(rename = "region")]
        pub region: String,
        /// The game map for the tournament code game
        #[serde(rename = "map")]
        pub map: String,
        /// The puuids of the participants (Encrypted)
        #[serde(rename = "participants")]
        pub participants: std::vec::Vec<String>,
    }
    /// TournamentCodeUpdateParametersV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TournamentCodeUpdateParametersV5 {
        /// Optional list of encrypted puuids in order to validate the players eligible to join the lobby. NOTE: We currently do not enforce participants at the team level, but rather the aggregate of teamOne and teamTwo. We may add the ability to enforce at the team level in the future.
        #[serde(rename = "allowedParticipants")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub allowed_participants: Option<std::vec::Vec<String>>,
        /// The pick type<br>
        /// (Legal values:  BLIND_PICK,  DRAFT_MODE,  ALL_RANDOM,  TOURNAMENT_DRAFT)
        #[serde(rename = "pickType")]
        pub pick_type: String,
        /// The map type<br>
        /// (Legal values:  SUMMONERS_RIFT,  HOWLING_ABYSS)
        #[serde(rename = "mapType")]
        pub map_type: String,
        /// The spectator type<br>
        /// (Legal values:  NONE,  LOBBYONLY,  ALL)
        #[serde(rename = "spectatorType")]
        pub spectator_type: String,
    }
    /// TournamentGamesV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TournamentGamesV5 {
        #[serde(rename = "winningTeam")]
        pub winning_team: std::vec::Vec<TournamentTeamV5>,
        #[serde(rename = "losingTeam")]
        pub losing_team: std::vec::Vec<TournamentTeamV5>,
        /// Tournament Code
        #[serde(rename = "shortCode")]
        pub short_code: String,
        /// Metadata for the TournamentCode
        #[serde(rename = "metaData")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub meta_data: Option<String>,
        #[serde(rename = "gameId")]
        pub game_id: i64,
        #[serde(rename = "gameName")]
        pub game_name: String,
        #[serde(rename = "gameType")]
        pub game_type: String,
        /// Game Map ID
        #[serde(rename = "gameMap")]
        pub game_map: i32,
        #[serde(rename = "gameMode")]
        pub game_mode: String,
        /// Region of the game
        #[serde(rename = "region")]
        pub region: String,
    }
    /// TournamentTeamV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TournamentTeamV5 {
        /// Player Unique UUID (Encrypted)
        #[serde(rename = "puuid")]
        pub puuid: String,
    }
    /// LobbyEventV5Wrapper data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LobbyEventV5Wrapper {
        #[serde(rename = "eventList")]
        pub event_list: std::vec::Vec<LobbyEventV5>,
    }
    /// LobbyEventV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LobbyEventV5 {
        /// Timestamp from the event
        #[serde(rename = "timestamp")]
        pub timestamp: String,
        /// The type of event that was triggered
        #[serde(rename = "eventType")]
        pub event_type: String,
        /// The puuid that triggered the event (Encrypted)
        #[serde(rename = "puuid")]
        pub puuid: String,
    }
    /// ProviderRegistrationParametersV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ProviderRegistrationParametersV5 {
        /// The region in which the provider will be running tournaments.<br>
        /// (Legal values:  BR,  EUNE,  EUW,  JP,  LAN,  LAS,  NA,  OCE,  PBE,  RU,  TR,  KR,  PH,  SG,  TH,  TW,  VN)
        #[serde(rename = "region")]
        pub region: String,
        /// The provider's callback URL to which tournament game results in this region should be posted. The URL must be well-formed, use the http or https protocol, and use the default port for the protocol (http URLs must use port 80, https URLs must use port 443).
        #[serde(rename = "url")]
        pub url: String,
    }
    /// TournamentRegistrationParametersV5 data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TournamentRegistrationParametersV5 {
        /// The provider ID to specify the regional registered provider data to associate this tournament.
        #[serde(rename = "providerId")]
        pub provider_id: i32,
        /// The optional name of the tournament.
        #[serde(rename = "name")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub name: Option<String>,
    }
}

/// Data structs used by [`ValContentV1`](crate::endpoints::ValContentV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod val_content_v1 {
    /// Content data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Content {
        #[serde(rename = "version")]
        pub version: String,
        #[serde(rename = "characters")]
        pub characters: std::vec::Vec<ContentItem>,
        #[serde(rename = "maps")]
        pub maps: std::vec::Vec<ContentItem>,
        #[serde(rename = "chromas")]
        pub chromas: std::vec::Vec<ContentItem>,
        #[serde(rename = "skins")]
        pub skins: std::vec::Vec<ContentItem>,
        #[serde(rename = "skinLevels")]
        pub skin_levels: std::vec::Vec<ContentItem>,
        #[serde(rename = "equips")]
        pub equips: std::vec::Vec<ContentItem>,
        #[serde(rename = "gameModes")]
        pub game_modes: std::vec::Vec<ContentItem>,
        #[serde(rename = "sprays")]
        pub sprays: std::vec::Vec<ContentItem>,
        #[serde(rename = "sprayLevels")]
        pub spray_levels: std::vec::Vec<ContentItem>,
        #[serde(rename = "charms")]
        pub charms: std::vec::Vec<ContentItem>,
        #[serde(rename = "charmLevels")]
        pub charm_levels: std::vec::Vec<ContentItem>,
        #[serde(rename = "playerCards")]
        pub player_cards: std::vec::Vec<ContentItem>,
        #[serde(rename = "playerTitles")]
        pub player_titles: std::vec::Vec<ContentItem>,
        #[serde(rename = "acts")]
        pub acts: std::vec::Vec<Act>,
        #[serde(rename = "ceremonies")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub ceremonies: Option<std::vec::Vec<ContentItem>>,
        /// Unknown type, this is a placeholder subject to change.
        #[serde(rename = "totems")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub totems: Option<std::vec::Vec<String>>,
    }
    /// ContentItem data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct ContentItem {
        #[serde(rename = "name")]
        pub name: String,
        /// This field is excluded from the response when a locale is set
        #[serde(rename = "localizedNames")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub localized_names: Option<LocalizedNames>,
        #[serde(rename = "id")]
        pub id: String,
        #[serde(rename = "assetName")]
        pub asset_name: String,
        /// This field is only included for maps and game modes. These values are used in the match response.
        #[serde(rename = "assetPath")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub asset_path: Option<String>,
    }
    /// LocalizedNames data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct LocalizedNames {
        #[serde(rename = "ar-AE")]
        pub ar_ae: String,
        #[serde(rename = "de-DE")]
        pub de_de: String,
        #[serde(rename = "en-GB")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub en_gb: Option<String>,
        #[serde(rename = "en-US")]
        pub en_us: String,
        #[serde(rename = "es-ES")]
        pub es_es: String,
        #[serde(rename = "es-MX")]
        pub es_mx: String,
        #[serde(rename = "fr-FR")]
        pub fr_fr: String,
        #[serde(rename = "id-ID")]
        pub id_id: String,
        #[serde(rename = "it-IT")]
        pub it_it: String,
        #[serde(rename = "ja-JP")]
        pub ja_jp: String,
        #[serde(rename = "ko-KR")]
        pub ko_kr: String,
        #[serde(rename = "pl-PL")]
        pub pl_pl: String,
        #[serde(rename = "pt-BR")]
        pub pt_br: String,
        #[serde(rename = "ru-RU")]
        pub ru_ru: String,
        #[serde(rename = "th-TH")]
        pub th_th: String,
        #[serde(rename = "tr-TR")]
        pub tr_tr: String,
        #[serde(rename = "vi-VN")]
        pub vi_vn: String,
        #[serde(rename = "zh-CN")]
        pub zh_cn: String,
        #[serde(rename = "zh-TW")]
        pub zh_tw: String,
    }
    /// Act data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Act {
        #[serde(rename = "name")]
        pub name: String,
        /// This field is excluded from the response when a locale is set
        #[serde(rename = "localizedNames")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub localized_names: Option<LocalizedNames>,
        #[serde(rename = "id")]
        pub id: String,
        #[serde(rename = "isActive")]
        pub is_active: bool,
        #[serde(rename = "parentId")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub parent_id: Option<String>,
        #[serde(rename = "type")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub r#type: Option<String>,
    }
}

/// Data structs used by [`ValMatchV1`](crate::endpoints::ValMatchV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod val_match_v1 {
    /// Match data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Match {
        #[serde(rename = "matchInfo")]
        pub match_info: MatchInfo,
        #[serde(rename = "players")]
        pub players: std::vec::Vec<Player>,
        #[serde(rename = "coaches")]
        pub coaches: std::vec::Vec<Coach>,
        #[serde(rename = "teams")]
        pub teams: std::vec::Vec<Team>,
        #[serde(rename = "roundResults")]
        pub round_results: std::vec::Vec<RoundResult>,
    }
    /// MatchInfo data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct MatchInfo {
        #[serde(rename = "matchId")]
        pub match_id: String,
        #[serde(rename = "mapId")]
        pub map_id: String,
        #[serde(rename = "gameLengthMillis")]
        pub game_length_millis: i32,
        #[serde(rename = "gameStartMillis")]
        pub game_start_millis: i64,
        #[serde(rename = "provisioningFlowId")]
        pub provisioning_flow_id: String,
        #[serde(rename = "isCompleted")]
        pub is_completed: bool,
        #[serde(rename = "customGameName")]
        pub custom_game_name: String,
        #[serde(rename = "queueId")]
        pub queue_id: String,
        #[serde(rename = "gameMode")]
        pub game_mode: String,
        #[serde(rename = "isRanked")]
        pub is_ranked: bool,
        #[serde(rename = "seasonId")]
        pub season_id: String,
        #[serde(rename = "gameVersion")]
        pub game_version: String,
        #[serde(rename = "region")]
        pub region: String,
        #[serde(rename = "premierMatchInfo")]
        pub premier_match_info: serde_json::Map<String, serde_json::Value>,
    }
    /// Player data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Player {
        #[serde(rename = "puuid")]
        pub puuid: String,
        #[serde(rename = "gameName")]
        pub game_name: String,
        #[serde(rename = "tagLine")]
        pub tag_line: String,
        #[serde(rename = "teamId")]
        pub team_id: String,
        #[serde(rename = "partyId")]
        pub party_id: String,
        #[serde(rename = "characterId")]
        pub character_id: String,
        #[serde(rename = "stats")]
        pub stats: PlayerStats,
        #[serde(rename = "competitiveTier")]
        pub competitive_tier: i32,
        #[serde(rename = "playerCard")]
        pub player_card: String,
        #[serde(rename = "playerTitle")]
        pub player_title: String,
        #[serde(rename = "isObserver")]
        pub is_observer: bool,
        #[serde(rename = "accountLevel")]
        pub account_level: i32,
    }
    /// PlayerStats data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PlayerStats {
        #[serde(rename = "score")]
        pub score: i32,
        #[serde(rename = "roundsPlayed")]
        pub rounds_played: i32,
        #[serde(rename = "kills")]
        pub kills: i32,
        #[serde(rename = "deaths")]
        pub deaths: i32,
        #[serde(rename = "assists")]
        pub assists: i32,
        #[serde(rename = "playtimeMillis")]
        pub playtime_millis: i32,
        #[serde(rename = "abilityCasts")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub ability_casts: Option<AbilityCasts>,
    }
    /// AbilityCasts data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct AbilityCasts {
        #[serde(rename = "grenadeCasts")]
        pub grenade_casts: i32,
        #[serde(rename = "ability1Casts")]
        pub ability1_casts: i32,
        #[serde(rename = "ability2Casts")]
        pub ability2_casts: i32,
        #[serde(rename = "ultimateCasts")]
        pub ultimate_casts: i32,
    }
    /// Coach data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Coach {
        #[serde(rename = "puuid")]
        pub puuid: String,
        #[serde(rename = "teamId")]
        pub team_id: String,
    }
    /// Team data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Team {
        /// This is an arbitrary string. Red and Blue in bomb modes. The puuid of the player in deathmatch.
        #[serde(rename = "teamId")]
        pub team_id: String,
        #[serde(rename = "won")]
        pub won: bool,
        #[serde(rename = "roundsPlayed")]
        pub rounds_played: i32,
        #[serde(rename = "roundsWon")]
        pub rounds_won: i32,
        /// Team points scored. Number of kills in deathmatch.
        #[serde(rename = "numPoints")]
        pub num_points: i32,
    }
    /// RoundResult data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct RoundResult {
        #[serde(rename = "roundNum")]
        pub round_num: i32,
        #[serde(rename = "roundResult")]
        pub round_result: String,
        #[serde(rename = "roundCeremony")]
        pub round_ceremony: String,
        #[serde(rename = "winningTeam")]
        pub winning_team: String,
        /// PUUID of player
        #[serde(rename = "bombPlanter")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub bomb_planter: Option<String>,
        /// PUUID of player
        #[serde(rename = "bombDefuser")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub bomb_defuser: Option<String>,
        #[serde(rename = "plantRoundTime")]
        pub plant_round_time: i32,
        #[serde(rename = "plantPlayerLocations")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub plant_player_locations: Option<std::vec::Vec<PlayerLocations>>,
        #[serde(rename = "plantLocation")]
        pub plant_location: Location,
        #[serde(rename = "plantSite")]
        pub plant_site: String,
        #[serde(rename = "defuseRoundTime")]
        pub defuse_round_time: i32,
        #[serde(rename = "defusePlayerLocations")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub defuse_player_locations: Option<std::vec::Vec<PlayerLocations>>,
        #[serde(rename = "defuseLocation")]
        pub defuse_location: Location,
        #[serde(rename = "playerStats")]
        pub player_stats: std::vec::Vec<PlayerRoundStats>,
        #[serde(rename = "roundResultCode")]
        pub round_result_code: String,
    }
    /// PlayerLocations data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PlayerLocations {
        #[serde(rename = "puuid")]
        pub puuid: String,
        #[serde(rename = "viewRadians")]
        pub view_radians: f32,
        #[serde(rename = "location")]
        pub location: Location,
    }
    /// Location data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Location {
        #[serde(rename = "x")]
        pub x: i32,
        #[serde(rename = "y")]
        pub y: i32,
    }
    /// PlayerRoundStats data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PlayerRoundStats {
        #[serde(rename = "puuid")]
        pub puuid: String,
        #[serde(rename = "kills")]
        pub kills: std::vec::Vec<Kill>,
        #[serde(rename = "damage")]
        pub damage: std::vec::Vec<Damage>,
        #[serde(rename = "score")]
        pub score: i32,
        #[serde(rename = "economy")]
        pub economy: Economy,
        #[serde(rename = "ability")]
        pub ability: Ability,
    }
    /// Kill data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Kill {
        #[serde(rename = "timeSinceGameStartMillis")]
        pub time_since_game_start_millis: i32,
        #[serde(rename = "timeSinceRoundStartMillis")]
        pub time_since_round_start_millis: i32,
        /// PUUID
        #[serde(rename = "killer")]
        pub killer: String,
        /// PUUID
        #[serde(rename = "victim")]
        pub victim: String,
        #[serde(rename = "victimLocation")]
        pub victim_location: Location,
        /// List of PUUIDs
        #[serde(rename = "assistants")]
        pub assistants: std::vec::Vec<String>,
        #[serde(rename = "playerLocations")]
        pub player_locations: std::vec::Vec<PlayerLocations>,
        #[serde(rename = "finishingDamage")]
        pub finishing_damage: FinishingDamage,
    }
    /// FinishingDamage data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct FinishingDamage {
        #[serde(rename = "damageType")]
        pub damage_type: String,
        #[serde(rename = "damageItem")]
        pub damage_item: String,
        #[serde(rename = "isSecondaryFireMode")]
        pub is_secondary_fire_mode: bool,
    }
    /// Damage data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Damage {
        /// PUUID
        #[serde(rename = "receiver")]
        pub receiver: String,
        #[serde(rename = "damage")]
        pub damage: i32,
        #[serde(rename = "legshots")]
        pub legshots: i32,
        #[serde(rename = "bodyshots")]
        pub bodyshots: i32,
        #[serde(rename = "headshots")]
        pub headshots: i32,
    }
    /// Economy data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Economy {
        #[serde(rename = "loadoutValue")]
        pub loadout_value: i32,
        #[serde(rename = "weapon")]
        pub weapon: String,
        #[serde(rename = "armor")]
        pub armor: String,
        #[serde(rename = "remaining")]
        pub remaining: i32,
        #[serde(rename = "spent")]
        pub spent: i32,
    }
    /// Ability data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Ability {
        #[serde(rename = "grenadeEffects")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub grenade_effects: Option<String>,
        #[serde(rename = "ability1Effects")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub ability1_effects: Option<String>,
        #[serde(rename = "ability2Effects")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub ability2_effects: Option<String>,
        #[serde(rename = "ultimateEffects")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub ultimate_effects: Option<String>,
    }
    /// Matchlist data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Matchlist {
        #[serde(rename = "puuid")]
        pub puuid: String,
        #[serde(rename = "history")]
        pub history: std::vec::Vec<MatchlistEntry>,
    }
    /// MatchlistEntry data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct MatchlistEntry {
        #[serde(rename = "matchId")]
        pub match_id: String,
        #[serde(rename = "gameStartTimeMillis")]
        pub game_start_time_millis: i64,
        #[serde(rename = "queueId")]
        pub queue_id: String,
    }
    /// RecentMatches data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct RecentMatches {
        #[serde(rename = "currentTime")]
        pub current_time: i64,
        /// A list of recent match ids.
        #[serde(rename = "matchIds")]
        pub match_ids: std::vec::Vec<String>,
    }
}

/// Data structs used by [`ValRankedV1`](crate::endpoints::ValRankedV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod val_ranked_v1 {
    /// Leaderboard data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Leaderboard {
        /// The shard for the given leaderboard.
        #[serde(rename = "shard")]
        pub shard: String,
        /// The act id for the given leaderboard. Act ids can be found using the val-content API.
        #[serde(rename = "actId")]
        pub act_id: String,
        /// The total number of players in the leaderboard.
        #[serde(rename = "totalPlayers")]
        pub total_players: i64,
        #[serde(rename = "players")]
        pub players: std::vec::Vec<Player>,
        #[serde(rename = "immortalStartingPage")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub immortal_starting_page: Option<i64>,
        #[serde(rename = "immortalStartingIndex")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub immortal_starting_index: Option<i64>,
        #[serde(rename = "topTierRRThreshold")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub top_tier_rr_threshold: Option<i64>,
        #[serde(rename = "tierDetails")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub tier_details: Option<std::collections::HashMap<i64, TierDetail>>,
        #[serde(rename = "startIndex")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub start_index: Option<i64>,
        #[serde(rename = "query")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub query: Option<String>,
    }
    /// Player data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Player {
        /// This field may be omitted if the player has been anonymized.
        #[serde(rename = "puuid")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub puuid: Option<String>,
        /// This field may be omitted if the player has been anonymized.
        #[serde(rename = "gameName")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub game_name: Option<String>,
        /// This field may be omitted if the player has been anonymized.
        #[serde(rename = "tagLine")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub tag_line: Option<String>,
        #[serde(rename = "leaderboardRank")]
        pub leaderboard_rank: i64,
        #[serde(rename = "rankedRating")]
        pub ranked_rating: i64,
        #[serde(rename = "numberOfWins")]
        pub number_of_wins: i64,
        #[serde(rename = "competitiveTier")]
        #[serde(skip_serializing_if = "Option::is_none")]
        pub competitive_tier: Option<i64>,
    }
    /// TierDetail data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct TierDetail {
        #[serde(rename = "rankedRatingThreshold")]
        pub ranked_rating_threshold: i64,
        #[serde(rename = "startingPage")]
        pub starting_page: i64,
        #[serde(rename = "startingIndex")]
        pub starting_index: i64,
    }
}

/// Data structs used by [`ValStatusV1`](crate::endpoints::ValStatusV1).
/// 
/// Note: this module is automatically generated.
#[allow(dead_code)]
pub mod val_status_v1 {
    /// PlatformData data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct PlatformData {
        #[serde(rename = "id")]
        pub id: String,
        #[serde(rename = "name")]
        pub name: String,
        #[serde(rename = "locales")]
        pub locales: std::vec::Vec<String>,
        #[serde(rename = "maintenances")]
        pub maintenances: std::vec::Vec<Status>,
        #[serde(rename = "incidents")]
        pub incidents: std::vec::Vec<Status>,
    }
    /// Status data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Status {
        #[serde(rename = "id")]
        pub id: i32,
        /// (Legal values:  scheduled,  in_progress,  complete)
        #[serde(rename = "maintenance_status")]
        pub maintenance_status: String,
        /// (Legal values:  info,  warning,  critical)
        #[serde(rename = "incident_severity")]
        pub incident_severity: String,
        #[serde(rename = "titles")]
        pub titles: std::vec::Vec<Content>,
        #[serde(rename = "updates")]
        pub updates: std::vec::Vec<Update>,
        #[serde(rename = "created_at")]
        pub created_at: String,
        #[serde(rename = "archive_at")]
        pub archive_at: String,
        #[serde(rename = "updated_at")]
        pub updated_at: String,
        /// (Legal values: windows, macos, android, ios, ps4, xbone, switch)
        #[serde(rename = "platforms")]
        pub platforms: std::vec::Vec<String>,
    }
    /// Content data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Content {
        #[serde(rename = "locale")]
        pub locale: String,
        #[serde(rename = "content")]
        pub content: String,
    }
    /// Update data object.
    #[derive(Clone, Debug)]
    #[derive(serde::Serialize, serde::Deserialize)]
    #[cfg_attr(feature = "deny-unknown-fields", serde(deny_unknown_fields))]
    pub struct Update {
        #[serde(rename = "id")]
        pub id: i32,
        #[serde(rename = "author")]
        pub author: String,
        #[serde(rename = "publish")]
        pub publish: bool,
        /// (Legal values: riotclient, riotstatus, game)
        #[serde(rename = "publish_locations")]
        pub publish_locations: std::vec::Vec<String>,
        #[serde(rename = "translations")]
        pub translations: std::vec::Vec<Content>,
        #[serde(rename = "created_at")]
        pub created_at: String,
        #[serde(rename = "updated_at")]
        pub updated_at: String,
    }
}
