import preserves, dataspacePatterns type Observe*[Cap] {.acyclic, preservesRecord: "Observe".} = ref object `pattern`*: dataspacePatterns.Pattern[Cap] `observer`*: Cap proc `$`*[Cap](x: Observe[Cap]): string = `$`(toPreserve(x, Cap)) proc encode*[Cap](x: Observe[Cap]): seq[byte] = encode(toPreserve(x, Cap))