@tool
extends TwitchData

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

## 
## #/components/schemas/Guest
class_name TwitchGuest
	
## ID representing this guest’s slot assignment.   
##   
## * Host is always in slot "0"
## * Guests are assigned the following consecutive IDs (e.g, "1", "2", "3", etc)
## * Screen Share is represented as a special guest with the ID "SCREENSHARE"
## * The identifier here matches the ID referenced in browser source links used in broadcasting software.
@export var slot_id: String:
	set(val): 
		slot_id = val
		track_data(&"slot_id", val)

## Flag determining whether or not the guest is visible in the browser source in the host’s streaming software.
@export var is_live: bool:
	set(val): 
		is_live = val
		track_data(&"is_live", val)

## User ID of the guest assigned to this slot.
@export var user_id: String:
	set(val): 
		user_id = val
		track_data(&"user_id", val)

## Display name of the guest assigned to this slot.
@export var user_display_name: String:
	set(val): 
		user_display_name = val
		track_data(&"user_display_name", val)

## Login of the guest assigned to this slot.
@export var user_login: String:
	set(val): 
		user_login = val
		track_data(&"user_login", val)

## Value from 0 to 100 representing the host’s volume setting for this guest.
@export var volume: int:
	set(val): 
		volume = val
		track_data(&"volume", val)

## Timestamp when this guest was assigned a slot in the session.
@export var assigned_at: String:
	set(val): 
		assigned_at = val
		track_data(&"assigned_at", val)

## Information about the guest’s audio settings
@export var audio_settings: AudioSettings:
	set(val): 
		audio_settings = val
		track_data(&"audio_settings", val)

## Information about the guest’s video settings
@export var video_settings: VideoSettings:
	set(val): 
		video_settings = val
		track_data(&"video_settings", val)
var response: BufferedHTTPClient.ResponseData


## Constructor with all required fields.
static func create(_slot_id: String, _is_live: bool, _user_id: String, _user_display_name: String, _user_login: String, _volume: int, _assigned_at: String, _audio_settings: AudioSettings, _video_settings: VideoSettings) -> TwitchGuest:
	var twitch_guest: TwitchGuest = TwitchGuest.new()
	twitch_guest.slot_id = _slot_id
	twitch_guest.is_live = _is_live
	twitch_guest.user_id = _user_id
	twitch_guest.user_display_name = _user_display_name
	twitch_guest.user_login = _user_login
	twitch_guest.volume = _volume
	twitch_guest.assigned_at = _assigned_at
	twitch_guest.audio_settings = _audio_settings
	twitch_guest.video_settings = _video_settings
	return twitch_guest


static func from_json(d: Dictionary) -> TwitchGuest:
	var result: TwitchGuest = TwitchGuest.new()
	if d.get("slot_id", null) != null:
		result.slot_id = d["slot_id"]
	if d.get("is_live", null) != null:
		result.is_live = d["is_live"]
	if d.get("user_id", null) != null:
		result.user_id = d["user_id"]
	if d.get("user_display_name", null) != null:
		result.user_display_name = d["user_display_name"]
	if d.get("user_login", null) != null:
		result.user_login = d["user_login"]
	if d.get("volume", null) != null:
		result.volume = d["volume"]
	if d.get("assigned_at", null) != null:
		result.assigned_at = d["assigned_at"]
	if d.get("audio_settings", null) != null:
		result.audio_settings = AudioSettings.from_json(d["audio_settings"])
	if d.get("video_settings", null) != null:
		result.video_settings = VideoSettings.from_json(d["video_settings"])
	return result



## Information about the guest’s audio settings
## #/components/schemas/Guest/AudioSettings
class AudioSettings extends TwitchData:

	## Flag determining whether the host is allowing the guest’s audio to be seen or heard within the session.
	@export var is_host_enabled: bool:
		set(val): 
			is_host_enabled = val
			track_data(&"is_host_enabled", val)
	
	## Flag determining whether the guest is allowing their audio to be transmitted to the session.
	@export var is_guest_enabled: bool:
		set(val): 
			is_guest_enabled = val
			track_data(&"is_guest_enabled", val)
	
	## Flag determining whether the guest has an appropriate audio device available to be transmitted to the session.
	@export var is_available: bool:
		set(val): 
			is_available = val
			track_data(&"is_available", val)
	
	
	
	## Constructor with all required fields.
	static func create(_is_host_enabled: bool, _is_guest_enabled: bool, _is_available: bool) -> AudioSettings:
		var audio_settings: AudioSettings = AudioSettings.new()
		audio_settings.is_host_enabled = _is_host_enabled
		audio_settings.is_guest_enabled = _is_guest_enabled
		audio_settings.is_available = _is_available
		return audio_settings
	
	
	static func from_json(d: Dictionary) -> AudioSettings:
		var result: AudioSettings = AudioSettings.new()
		if d.get("is_host_enabled", null) != null:
			result.is_host_enabled = d["is_host_enabled"]
		if d.get("is_guest_enabled", null) != null:
			result.is_guest_enabled = d["is_guest_enabled"]
		if d.get("is_available", null) != null:
			result.is_available = d["is_available"]
		return result
	


## Information about the guest’s video settings
## #/components/schemas/Guest/VideoSettings
class VideoSettings extends TwitchData:

	## Flag determining whether the host is allowing the guest’s video to be seen or heard within the session.
	@export var is_host_enabled: bool:
		set(val): 
			is_host_enabled = val
			track_data(&"is_host_enabled", val)
	
	## Flag determining whether the guest is allowing their video to be transmitted to the session.
	@export var is_guest_enabled: bool:
		set(val): 
			is_guest_enabled = val
			track_data(&"is_guest_enabled", val)
	
	## Flag determining whether the guest has an appropriate video device available to be transmitted to the session.
	@export var is_available: bool:
		set(val): 
			is_available = val
			track_data(&"is_available", val)
	
	
	
	## Constructor with all required fields.
	static func create(_is_host_enabled: bool, _is_guest_enabled: bool, _is_available: bool) -> VideoSettings:
		var video_settings: VideoSettings = VideoSettings.new()
		video_settings.is_host_enabled = _is_host_enabled
		video_settings.is_guest_enabled = _is_guest_enabled
		video_settings.is_available = _is_available
		return video_settings
	
	
	static func from_json(d: Dictionary) -> VideoSettings:
		var result: VideoSettings = VideoSettings.new()
		if d.get("is_host_enabled", null) != null:
			result.is_host_enabled = d["is_host_enabled"]
		if d.get("is_guest_enabled", null) != null:
			result.is_guest_enabled = d["is_guest_enabled"]
		if d.get("is_available", null) != null:
			result.is_available = d["is_available"]
		return result
	