from typing import Union from .secret import Secret, SecretKind class HTLCSecret(Secret): @classmethod def from_secret(cls, secret: Secret): assert SecretKind(secret.kind) == SecretKind.HTLC, "Secret is not a HTLC secret" # NOTE: exclude tags in .dict() because it doesn't deserialize it properly # need to add it back in manually with tags=secret.tags return cls(**secret.dict(exclude={"tags"}), tags=secret.tags) @property def locktime(self) -> Union[None, int]: locktime = self.tags.get_tag("locktime") return int(locktime) if locktime else None