from bu4.evaluation.aftervalue import envtype, Evaluable class LinkingState: pass class Linked: future: set[bytes] def link(self) -> LinkingState: raise NotImplementedError def evaluable(self, env: envtype) -> Evaluable: raise NotImplementedError def unlink(self) -> 'Parsed': raise NotImplementedError def __bytes__(self): return bytes(self.unlink()) class Parsed: def link(self, promise: set[bytes]) -> Linked: raise NotImplementedError def __bytes__(self): raise NotImplementedError