import preserves type TimerExpired* {.preservesRecord: "timer-expired".} = object `label`*: Value `seconds`*: BiggestFloat SetTimer* {.preservesRecord: "set-timer".} = object `label`*: Value `seconds`*: BiggestFloat `kind`*: TimerKind `TimerKind`* {.preservesOr, pure.} = enum `relative`, `absolute`, `clear` LaterThan* {.preservesRecord: "later-than".} = object `seconds`*: BiggestFloat proc `$`*(x: TimerExpired | SetTimer | LaterThan): string = `$`(toPreserves(x)) proc encode*(x: TimerExpired | SetTimer | LaterThan): seq[byte] = encode(toPreserves(x))