/*
Copyright (C) 2025 filifa

This file is part of mlbstats.

mlbstats is free software: you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.

mlbstats is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
mlbstats. If not, see <https://www.gnu.org/licenses/>.
*/

/*
 * Stats API Documentation
 *
 * Official API for Major League Baseball.
 *
 * API version: 2.0.0
 * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git)
 */
package models

import (
	"time"
)

type BaseballPlayEvent struct {
	Balls                               int32              `json:"balls,omitempty"`
	Strikes                             int32              `json:"strikes,omitempty"`
	Outs                                int32              `json:"outs,omitempty"`
	RunnerOn1b                          bool               `json:"runnerOn1b,omitempty"`
	RunnerOn2b                          bool               `json:"runnerOn2b,omitempty"`
	RunnerOn3b                          bool               `json:"runnerOn3b,omitempty"`
	Inning                              int32              `json:"inning,omitempty"`
	IsTopInning                         bool               `json:"isTopInning,omitempty"`
	PreBalls                            int32              `json:"preBalls,omitempty"`
	PreStrikes                          int32              `json:"preStrikes,omitempty"`
	PreOuts                             int32              `json:"preOuts,omitempty"`
	PostBalls                           int32              `json:"postBalls,omitempty"`
	PostStrikes                         int32              `json:"postStrikes,omitempty"`
	PostOuts                            int32              `json:"postOuts,omitempty"`
	PostRunnerOn1b                      bool               `json:"postRunnerOn1b,omitempty"`
	PostRunnerOn2b                      bool               `json:"postRunnerOn2b,omitempty"`
	PostRunnerOn3b                      bool               `json:"postRunnerOn3b,omitempty"`
	PitchNumber                         int32              `json:"pitchNumber,omitempty"`
	PickoffNumber                       int32              `json:"pickoffNumber,omitempty"`
	AtBatNumber                         int32              `json:"atBatNumber,omitempty"`
	EventTypeEnum                       *EventType         `json:"eventTypeEnum,omitempty"`
	Description                         string             `json:"description,omitempty"`
	DescriptionMap                      map[string]string  `json:"descriptionMap,omitempty"`
	PitchCall                           *DynamicLookupEnum `json:"pitchCall,omitempty"`
	PitchType                           *DynamicLookupEnum `json:"pitchType,omitempty"`
	Pitch                               *BaseballPitch     `json:"pitch,omitempty"`
	Hit                                 *BaseballHit       `json:"hit,omitempty"`
	Index                               int32              `json:"index,omitempty"`
	PfxId                               string             `json:"pfxId,omitempty"`
	PlayId                              string             `json:"playId,omitempty"`
	ActionPlayId                        string             `json:"actionPlayId,omitempty"`
	IsPitch                             bool               `json:"isPitch,omitempty"`
	IsInPlay                            bool               `json:"isInPlay,omitempty"`
	IsStrike                            bool               `json:"isStrike,omitempty"`
	IsBall                              bool               `json:"isBall,omitempty"`
	Event                               string             `json:"event,omitempty"`
	EventMap                            map[string]string  `json:"eventMap,omitempty"`
	Code                                string             `json:"code,omitempty"`
	Type_                               string             `json:"type,omitempty"`
	StartTime                           time.Time          `json:"startTime,omitempty"`
	EndTime                             time.Time          `json:"endTime,omitempty"`
	Player                              *BaseballPerson    `json:"player,omitempty"`
	Umpire                              *BaseballPerson    `json:"umpire,omitempty"`
	ReplacedPlayer                      *BaseballPerson    `json:"replacedPlayer,omitempty"`
	Position                            *BaseballPosition  `json:"position,omitempty"`
	BattingOrder                        string             `json:"battingOrder,omitempty"`
	Scored                              bool               `json:"scored,omitempty"`
	IsOut                               bool               `json:"isOut,omitempty"`
	AwayScore                           int32              `json:"awayScore,omitempty"`
	HomeScore                           int32              `json:"homeScore,omitempty"`
	IsAtBat                             bool               `json:"isAtBat,omitempty"`
	IsPlateAppearance                   bool               `json:"isPlateAppearance,omitempty"`
	IsBaseHit                           bool               `json:"isBaseHit,omitempty"`
	PitchHand                           *DynamicLookupEnum `json:"pitchHand,omitempty"`
	BatSide                             *DynamicLookupEnum `json:"batSide,omitempty"`
	HasReview                           bool               `json:"hasReview,omitempty"`
	ReviewType                          string             `json:"reviewType,omitempty"`
	ReviewOverturned                    bool               `json:"reviewOverturned,omitempty"`
	ReviewInProgress                    bool               `json:"reviewInProgress,omitempty"`
	ChallengeTeamId                     int32              `json:"challengeTeamId,omitempty"`
	Reviews                             []BaseballReview   `json:"reviews,omitempty"`
	FromCatcher                         bool               `json:"fromCatcher,omitempty"`
	InjuryType                          string             `json:"injuryType,omitempty"`
	Players                             *BaseballLinescore `json:"players,omitempty"`
	DefensiveAlignmentId                string             `json:"defensiveAlignmentId,omitempty"`
	OffensiveAlignmentId                string             `json:"offensiveAlignmentId,omitempty"`
	OffensiveLineupId                   string             `json:"offensiveLineupId,omitempty"`
	DefensiveLineupId                   string             `json:"defensiveLineupId,omitempty"`
	Umpires                             []Official         `json:"umpires,omitempty"`
	Credits                             []PlayCredit       `json:"credits,omitempty"`
	Base                                int32              `json:"base,omitempty"`
	IsDoublePlay                        bool               `json:"isDoublePlay,omitempty"`
	NumInheritedRunners                 int32              `json:"numInheritedRunners,omitempty"`
	DisengagementNum                    int32              `json:"disengagementNum,omitempty"`
	Violation                           *BaseballViolation `json:"violation,omitempty"`
	NumberOfPeopleOnBaseScoringPosition int32              `json:"numberOfPeopleOnBaseScoringPosition,omitempty"`
	Descriptions                        map[string]string  `json:"descriptions,omitempty"`
	Events                              map[string]string  `json:"events,omitempty"`
	RunnerGoing                         bool               `json:"runnerGoing,omitempty"`
	Summary                             *BaseballPlayEvent `json:"summary,omitempty"`
	NumberOfPeopleOnBase                int32              `json:"numberOfPeopleOnBase,omitempty"`
	DoublePlay                          bool               `json:"doublePlay,omitempty"`
	BaseRunningPlay                     bool               `json:"baseRunningPlay,omitempty"`
	Substitution                        bool               `json:"substitution,omitempty"`
}
