{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Test.Cardano.Ledger.Dijkstra.Binary.Annotator (

) where

import Cardano.Ledger.Binary
import Cardano.Ledger.Binary.Coders
import Cardano.Ledger.Core
import Cardano.Ledger.Dijkstra (DijkstraEra)
import Cardano.Ledger.Dijkstra.Scripts
import Cardano.Ledger.Dijkstra.Tx (Tx (..))
import Cardano.Ledger.Dijkstra.TxBody (TxBody (..))
import Cardano.Ledger.MemoBytes (decodeMemoized)
import Test.Cardano.Ledger.Conway.Binary.Annotator ()

deriving newtype instance DecCBOR (TxBody DijkstraEra)

instance Era era => DecCBOR (DijkstraNativeScriptRaw era) where
  decCBOR :: forall s. Decoder s (DijkstraNativeScriptRaw era)
decCBOR = Decode ('Closed 'Dense) (DijkstraNativeScriptRaw era)
-> Decoder s (DijkstraNativeScriptRaw era)
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode ('Closed 'Dense) (DijkstraNativeScriptRaw era)
 -> Decoder s (DijkstraNativeScriptRaw era))
-> Decode ('Closed 'Dense) (DijkstraNativeScriptRaw era)
-> Decoder s (DijkstraNativeScriptRaw era)
forall a b. (a -> b) -> a -> b
$ Text
-> (Word -> Decode 'Open (DijkstraNativeScriptRaw era))
-> Decode ('Closed 'Dense) (DijkstraNativeScriptRaw era)
forall t.
Text -> (Word -> Decode 'Open t) -> Decode ('Closed 'Dense) t
Summands Text
"DijkstraNativeScriptRaw" ((Word -> Decode 'Open (DijkstraNativeScriptRaw era))
 -> Decode ('Closed 'Dense) (DijkstraNativeScriptRaw era))
-> (Word -> Decode 'Open (DijkstraNativeScriptRaw era))
-> Decode ('Closed 'Dense) (DijkstraNativeScriptRaw era)
forall a b. (a -> b) -> a -> b
$ \case
    Word
0 -> (KeyHash 'Witness -> DijkstraNativeScriptRaw era)
-> Decode 'Open (KeyHash 'Witness -> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD KeyHash 'Witness -> DijkstraNativeScriptRaw era
forall era. KeyHash 'Witness -> DijkstraNativeScriptRaw era
DijkstraRequireSignature Decode 'Open (KeyHash 'Witness -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) (KeyHash 'Witness)
-> Decode 'Open (DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) (KeyHash 'Witness)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
1 -> (StrictSeq (DijkstraNativeScript era)
 -> DijkstraNativeScriptRaw era)
-> Decode
     'Open
     (StrictSeq (DijkstraNativeScript era)
      -> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
forall era.
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
DijkstraRequireAllOf Decode
  'Open
  (StrictSeq (DijkstraNativeScript era)
   -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) (StrictSeq (DijkstraNativeScript era))
-> Decode 'Open (DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) (StrictSeq (DijkstraNativeScript era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
2 -> (StrictSeq (DijkstraNativeScript era)
 -> DijkstraNativeScriptRaw era)
-> Decode
     'Open
     (StrictSeq (DijkstraNativeScript era)
      -> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
forall era.
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
DijkstraRequireAnyOf Decode
  'Open
  (StrictSeq (DijkstraNativeScript era)
   -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) (StrictSeq (DijkstraNativeScript era))
-> Decode 'Open (DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) (StrictSeq (DijkstraNativeScript era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
3 -> (Int
 -> StrictSeq (DijkstraNativeScript era)
 -> DijkstraNativeScriptRaw era)
-> Decode
     'Open
     (Int
      -> StrictSeq (DijkstraNativeScript era)
      -> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era
forall era.
Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era
DijkstraRequireMOf Decode
  'Open
  (Int
   -> StrictSeq (DijkstraNativeScript era)
   -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) Int
-> Decode
     'Open
     (StrictSeq (DijkstraNativeScript era)
      -> DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) Int
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode
  'Open
  (StrictSeq (DijkstraNativeScript era)
   -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) (StrictSeq (DijkstraNativeScript era))
-> Decode 'Open (DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) (StrictSeq (DijkstraNativeScript era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
4 -> (SlotNo -> DijkstraNativeScriptRaw era)
-> Decode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD SlotNo -> DijkstraNativeScriptRaw era
forall era. SlotNo -> DijkstraNativeScriptRaw era
DijkstraTimeStart Decode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) SlotNo
-> Decode 'Open (DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
5 -> (SlotNo -> DijkstraNativeScriptRaw era)
-> Decode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD SlotNo -> DijkstraNativeScriptRaw era
forall era. SlotNo -> DijkstraNativeScriptRaw era
DijkstraTimeExpire Decode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) SlotNo
-> Decode 'Open (DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
6 -> (Credential 'Guard -> DijkstraNativeScriptRaw era)
-> Decode 'Open (Credential 'Guard -> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD Credential 'Guard -> DijkstraNativeScriptRaw era
forall era. Credential 'Guard -> DijkstraNativeScriptRaw era
DijkstraRequireGuard Decode 'Open (Credential 'Guard -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) (Credential 'Guard)
-> Decode 'Open (DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) (Credential 'Guard)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
n -> Word -> Decode 'Open (DijkstraNativeScriptRaw era)
forall (w :: Wrapped) t. Word -> Decode w t
Invalid Word
n

instance Era era => DecCBOR (DijkstraNativeScript era) where
  decCBOR :: forall s. Decoder s (DijkstraNativeScript era)
decCBOR = MemoBytes (DijkstraNativeScriptRaw era) -> DijkstraNativeScript era
forall era.
MemoBytes (DijkstraNativeScriptRaw era) -> DijkstraNativeScript era
MkDijkstraNativeScript (MemoBytes (DijkstraNativeScriptRaw era)
 -> DijkstraNativeScript era)
-> Decoder s (MemoBytes (DijkstraNativeScriptRaw era))
-> Decoder s (DijkstraNativeScript era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (DijkstraNativeScriptRaw era)
-> Decoder s (MemoBytes (DijkstraNativeScriptRaw era))
forall s t. Decoder s t -> Decoder s (MemoBytes t)
decodeMemoized Decoder s (DijkstraNativeScriptRaw era)
forall s. Decoder s (DijkstraNativeScriptRaw era)
forall a s. DecCBOR a => Decoder s a
decCBOR

deriving newtype instance DecCBOR (Tx DijkstraEra)