@tool
extends TwitchData

# CLASS GOT AUTOGENERATED DON'T CHANGE MANUALLY. CHANGES CAN BE OVERWRITTEN EASILY.

## 
## #/components/schemas/Prediction
class_name TwitchPrediction
	
## An ID that identifies this prediction.
@export var id: String:
	set(val): 
		id = val
		track_data(&"id", val)

## An ID that identifies the broadcaster that created the prediction.
@export var broadcaster_id: String:
	set(val): 
		broadcaster_id = val
		track_data(&"broadcaster_id", val)

## The broadcaster’s display name.
@export var broadcaster_name: String:
	set(val): 
		broadcaster_name = val
		track_data(&"broadcaster_name", val)

## The broadcaster’s login name.
@export var broadcaster_login: String:
	set(val): 
		broadcaster_login = val
		track_data(&"broadcaster_login", val)

## The question that the prediction asks. For example, _Will I finish this entire pizza?_
@export var title: String:
	set(val): 
		title = val
		track_data(&"title", val)

## The ID of the winning outcome. Is **null** unless `status` is RESOLVED.
@export var winning_outcome_id: String:
	set(val): 
		winning_outcome_id = val
		track_data(&"winning_outcome_id", val)

## The list of possible outcomes for the prediction.
@export var outcomes: Array[TwitchPredictionOutcome]:
	set(val): 
		outcomes = val
		track_data(&"outcomes", val)

## The length of time (in seconds) that the prediction will run for.
@export var prediction_window: int:
	set(val): 
		prediction_window = val
		track_data(&"prediction_window", val)

## The prediction’s status. Valid values are:  
##   
## * ACTIVE — The Prediction is running and viewers can make predictions.
## * CANCELED — The broadcaster canceled the Prediction and refunded the Channel Points to the participants.
## * LOCKED — The broadcaster locked the Prediction, which means viewers can no longer make predictions.
## * RESOLVED — The winning outcome was determined and the Channel Points were distributed to the viewers who predicted the correct outcome.
@export var status: String:
	set(val): 
		status = val
		track_data(&"status", val)

## The UTC date and time of when the Prediction began.
@export var created_at: String:
	set(val): 
		created_at = val
		track_data(&"created_at", val)

## The UTC date and time of when the Prediction ended. If `status` is ACTIVE, this is set to **null**.
@export var ended_at: String:
	set(val): 
		ended_at = val
		track_data(&"ended_at", val)

## The UTC date and time of when the Prediction was locked. If `status` is not LOCKED, this is set to **null**.
@export var locked_at: String:
	set(val): 
		locked_at = val
		track_data(&"locked_at", val)
var response: BufferedHTTPClient.ResponseData


## Constructor with all required fields.
static func create(_id: String, _broadcaster_id: String, _broadcaster_name: String, _broadcaster_login: String, _title: String, _winning_outcome_id: String, _outcomes: Array[TwitchPredictionOutcome], _prediction_window: int, _status: String, _created_at: String, _ended_at: String, _locked_at: String) -> TwitchPrediction:
	var twitch_prediction: TwitchPrediction = TwitchPrediction.new()
	twitch_prediction.id = _id
	twitch_prediction.broadcaster_id = _broadcaster_id
	twitch_prediction.broadcaster_name = _broadcaster_name
	twitch_prediction.broadcaster_login = _broadcaster_login
	twitch_prediction.title = _title
	twitch_prediction.winning_outcome_id = _winning_outcome_id
	twitch_prediction.outcomes = _outcomes
	twitch_prediction.prediction_window = _prediction_window
	twitch_prediction.status = _status
	twitch_prediction.created_at = _created_at
	twitch_prediction.ended_at = _ended_at
	twitch_prediction.locked_at = _locked_at
	return twitch_prediction


static func from_json(d: Dictionary) -> TwitchPrediction:
	var result: TwitchPrediction = TwitchPrediction.new()
	if d.get("id", null) != null:
		result.id = d["id"]
	if d.get("broadcaster_id", null) != null:
		result.broadcaster_id = d["broadcaster_id"]
	if d.get("broadcaster_name", null) != null:
		result.broadcaster_name = d["broadcaster_name"]
	if d.get("broadcaster_login", null) != null:
		result.broadcaster_login = d["broadcaster_login"]
	if d.get("title", null) != null:
		result.title = d["title"]
	if d.get("winning_outcome_id", null) != null:
		result.winning_outcome_id = d["winning_outcome_id"]
	if d.get("outcomes", null) != null:
		for value in d["outcomes"]:
			result.outcomes.append(TwitchPredictionOutcome.from_json(value))
	if d.get("prediction_window", null) != null:
		result.prediction_window = d["prediction_window"]
	if d.get("status", null) != null:
		result.status = d["status"]
	if d.get("created_at", null) != null:
		result.created_at = d["created_at"]
	if d.get("ended_at", null) != null:
		result.ended_at = d["ended_at"]
	if d.get("locked_at", null) != null:
		result.locked_at = d["locked_at"]
	return result
