package nmos

type Resource struct {
	ID    string `json:"id"`
	Label string `json:"label,omitempty"`
}

type Sender struct {
	ID             string   `json:"id"`
	Label          string   `json:"label,omitempty"`
	Description    string   `json:"description,omitempty"`
	Transport      string   `json:"transport,omitempty"`
	DeviceID       string   `json:"device_id,omitempty"`
	ManifestURL    string   `json:"manifest_href,omitempty"`
	Subscription   any      `json:"subscription,omitempty"`
	InterfaceBinds []string `json:"interface_bindings,omitempty"`
}

type Receiver struct {
	ID          string `json:"id"`
	Label       string `json:"label,omitempty"`
	Description string `json:"description,omitempty"`
	DeviceID    string `json:"device_id,omitempty"`
	Transport   string `json:"transport,omitempty"`
	Format      string `json:"format,omitempty"`
}

type Activation struct {
	Mode          string `json:"mode"`
	RequestedTime string `json:"requested_time,omitempty"`
}

type StagedReceiverRequest struct {
	MasterEnable    bool              `json:"master_enable"`
	Activation      Activation        `json:"activation"`
	SenderID        *string           `json:"sender_id,omitempty"`
	TransportFile   map[string]string `json:"transport_file,omitempty"`
	TransportParams []map[string]any  `json:"transport_params,omitempty"`
}
