@tool
extends TwitchData

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

class_name TwitchGetChannelGuestStarSettings
	


## 
## #/components/schemas/GetChannelGuestStarSettingsResponse
class Response extends TwitchData:

	## Flag determining if Guest Star moderators have access to control whether a guest is live once assigned to a slot.
	@export var is_moderator_send_live_enabled: bool:
		set(val): 
			is_moderator_send_live_enabled = val
			track_data(&"is_moderator_send_live_enabled", val)
	
	## Number of slots the Guest Star call interface will allow the host to add to a call. Required to be between 1 and 6.
	@export var slot_count: int:
		set(val): 
			slot_count = val
			track_data(&"slot_count", val)
	
	## Flag determining if Browser Sources subscribed to sessions on this channel should output audio
	@export var is_browser_source_audio_enabled: bool:
		set(val): 
			is_browser_source_audio_enabled = val
			track_data(&"is_browser_source_audio_enabled", val)
	
	## This setting determines how the guests within a session should be laid out within the browser source. Can be one of the following values:   
	##   
	## * `TILED_LAYOUT`: All live guests are tiled within the browser source with the same size.
	## * `SCREENSHARE_LAYOUT`: All live guests are tiled within the browser source with the same size. If there is an active screen share, it is sized larger than the other guests.
	@export var group_layout: String:
		set(val): 
			group_layout = val
			track_data(&"group_layout", val)
	
	## View only token to generate browser source URLs
	@export var browser_source_token: String:
		set(val): 
			browser_source_token = val
			track_data(&"browser_source_token", val)
	var response: BufferedHTTPClient.ResponseData
	
	
	## Constructor with all required fields.
	static func create(_is_moderator_send_live_enabled: bool, _slot_count: int, _is_browser_source_audio_enabled: bool, _group_layout: String, _browser_source_token: String) -> Response:
		var response: Response = Response.new()
		response.is_moderator_send_live_enabled = _is_moderator_send_live_enabled
		response.slot_count = _slot_count
		response.is_browser_source_audio_enabled = _is_browser_source_audio_enabled
		response.group_layout = _group_layout
		response.browser_source_token = _browser_source_token
		return response
	
	
	static func from_json(d: Dictionary) -> Response:
		var result: Response = Response.new()
		if d.get("is_moderator_send_live_enabled", null) != null:
			result.is_moderator_send_live_enabled = d["is_moderator_send_live_enabled"]
		if d.get("slot_count", null) != null:
			result.slot_count = d["slot_count"]
		if d.get("is_browser_source_audio_enabled", null) != null:
			result.is_browser_source_audio_enabled = d["is_browser_source_audio_enabled"]
		if d.get("group_layout", null) != null:
			result.group_layout = d["group_layout"]
		if d.get("browser_source_token", null) != null:
			result.browser_source_token = d["browser_source_token"]
		return result
	