+impl Writeable for OnchainEventEntry {
+ fn write<W: Writer>(&self, writer: &mut W) -> Result<(), io::Error> {
+ write_tlv_fields!(writer, {
+ (0, self.txid, required),
+ (1, self.block_hash, option),
+ (2, self.height, required),
+ (4, self.event, required),
+ });
+ Ok(())
+ }
+}
+
+impl MaybeReadable for OnchainEventEntry {
+ fn read<R: io::Read>(reader: &mut R) -> Result<Option<Self>, DecodeError> {
+ let mut txid = Txid::all_zeros();
+ let mut height = 0;
+ let mut block_hash = None;
+ let mut event = UpgradableRequired(None);
+ read_tlv_fields!(reader, {
+ (0, txid, required),
+ (1, block_hash, option),
+ (2, height, required),
+ (4, event, upgradable_required),
+ });
+ Ok(Some(Self { txid, height, block_hash, event: _init_tlv_based_struct_field!(event, upgradable_required) }))
+ }
+}
+
+impl_writeable_tlv_based_enum_upgradable!(OnchainEvent,
+ (0, Claim) => {
+ (0, package_id, required),
+ },
+ (1, ContentiousOutpoint) => {
+ (0, package, required),
+ },
+);
+