22{-# LANGUAGE DerivingVia #-}
33{-# LANGUAGE FlexibleContexts #-}
44{-# LANGUAGE FlexibleInstances #-}
5+ {-# LANGUAGE GeneralisedNewtypeDeriving #-}
56{-# LANGUAGE LambdaCase #-}
67{-# LANGUAGE OverloadedStrings #-}
78{-# LANGUAGE ScopedTypeVariables #-}
@@ -21,12 +22,14 @@ import Cardano.Ledger.Allegra.TxBody
2122import Cardano.Ledger.Binary
2223import Cardano.Ledger.Binary.Coders
2324import Cardano.Ledger.Core
25+ import Cardano.Ledger.MemoBytes (decodeMemoized )
2426import qualified Data.Sequence.Strict as StrictSeq
2527import Test.Cardano.Ledger.Allegra.Arbitrary ()
26- import Test.Cardano.Ledger.Core.Binary.Annotator
2728import Test.Cardano.Ledger.Shelley.Binary.Annotator
2829
29- instance Era era => DecCBOR (Annotator (AllegraTxAuxDataRaw era )) where
30+ deriving newtype instance DecCBOR (TxBody AllegraEra )
31+
32+ instance Era era => DecCBOR (AllegraTxAuxDataRaw era ) where
3033 decCBOR =
3134 peekTokenType >>= \ case
3235 TypeMapLen -> decodeFromMap
@@ -39,44 +42,28 @@ instance Era era => DecCBOR (Annotator (AllegraTxAuxDataRaw era)) where
3942 where
4043 decodeFromMap =
4144 decode
42- ( Ann ( Emit AllegraTxAuxDataRaw )
43- <*! Ann From
44- <*! Ann ( Emit StrictSeq. empty)
45+ ( Emit AllegraTxAuxDataRaw
46+ <! From
47+ <! Emit StrictSeq. empty
4548 )
4649 decodeFromList =
4750 decode
48- ( Ann ( RecD AllegraTxAuxDataRaw )
49- <*! Ann From
50- <*! D ( sequence <$> decCBOR)
51+ ( RecD AllegraTxAuxDataRaw
52+ <! From
53+ <! From
5154 )
5255
53- deriving via
54- (Mem (AllegraTxAuxDataRaw era))
55- instance
56- Era era => DecCBOR (Annotator (AllegraTxAuxData era ))
57-
58- instance Era era => DecCBOR (Annotator (TimelockRaw era )) where
59- decCBOR = decode (Summands " TimelockRaw" decRaw)
60- where
61- decRaw :: Word -> Decode 'Open (Annotator (TimelockRaw era ))
62- decRaw 0 = Ann (SumD TimelockSignature <! From )
63- decRaw 1 = Ann (SumD TimelockAllOf ) <*! D (sequence <$> decCBOR)
64- decRaw 2 = Ann (SumD TimelockAnyOf ) <*! D (sequence <$> decCBOR)
65- decRaw 3 = Ann (SumD TimelockMOf ) <*! Ann From <*! D (sequence <$> decCBOR)
66- decRaw 4 = Ann (SumD TimelockTimeStart <! From )
67- decRaw 5 = Ann (SumD TimelockTimeExpire <! From )
68- decRaw n = Invalid n
69-
70- instance Era era => DecCBOR (Annotator (Timelock era )) where
71- decCBOR = fmap MkTimelock <$> decCBOR
56+ deriving newtype instance Era era => DecCBOR (AllegraTxAuxData era )
7257
73- instance
74- (DecCBOR m , Monoid m , AllegraEraTxBody era ) =>
75- DecCBOR (Annotator (AllegraTxBodyRaw m era ))
76- where
77- decCBOR = pure <$> decCBOR
58+ instance Era era => DecCBOR (TimelockRaw era ) where
59+ decCBOR = decode $ Summands " TimelockRaw" $ \ case
60+ 0 -> SumD TimelockSignature <! From
61+ 1 -> SumD TimelockAllOf <! From
62+ 2 -> SumD TimelockAnyOf <! From
63+ 3 -> SumD TimelockMOf <! From <! From
64+ 4 -> SumD TimelockTimeStart <! From
65+ 5 -> SumD TimelockTimeExpire <! From
66+ n -> Invalid n
7867
79- deriving via
80- Mem (AllegraTxBodyRaw () AllegraEra )
81- instance
82- DecCBOR (Annotator (TxBody AllegraEra ))
68+ instance Era era => DecCBOR (Timelock era ) where
69+ decCBOR = MkTimelock <$> decodeMemoized decCBOR
0 commit comments