package niri import ( "encoding/json" "errors" ) type LayoutSwitchTarget struct { prev Option[bool] next Option[bool] index Option[int] } func LayoutSwitchTargetPrev() LayoutSwitchTarget { return LayoutSwitchTarget{prev: OptionOf(true)} } func LayoutSwitchTargetNext() LayoutSwitchTarget { return LayoutSwitchTarget{next: OptionOf(true)} } func LayoutSwitchTargetIndex(index int) LayoutSwitchTarget { return LayoutSwitchTarget{index: OptionOf(index)} } func (m LayoutSwitchTarget) MarshalJSON() ([]byte, error) { if m.prev != nil { return json.Marshal("Prev") } else if m.next != nil { return json.Marshal("Next") } else if m.index != nil { return json.Marshal(map[string]int{"Index": *m.index}) } return nil, errors.New("LayoutSwitchTarget.MarshalJson()") }