import std/typetraits, preserves type XdgOpen* {.preservesRecord: "xdg-open".} = object `uris`*: seq[string] UriRunnerConfigKind* {.pure.} = enum `ListenOn`, `ActionHandler` `UriRunnerConfig`* {.preservesOr.} = object case orKind*: UriRunnerConfigKind of UriRunnerConfigKind.`ListenOn`: `listenon`*: ListenOn of UriRunnerConfigKind.`ActionHandler`: `actionhandler`*: ActionHandler ListenOn* {.preservesRecord: "listen-on".} = object `dataspace`* {.preservesEmbedded.}: Preserve[void] ActionHandler* {.preservesRecord: "action-handler".} = object `pat`*: string `entity`* {.preservesEmbedded.}: Preserve[void] `action`*: Preserve[void] proc `$`*(x: XdgOpen | UriRunnerConfig | ListenOn | ActionHandler): string = `$`(toPreserve(x)) proc encode*(x: XdgOpen | UriRunnerConfig | ListenOn | ActionHandler): seq[byte] = encode(toPreserve(x))