{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Allegra.TxAuxData (
AllegraTxAuxData (AllegraTxAuxData, MkAlegraTxAuxData),
AllegraTxAuxDataRaw (..),
metadataAllegraTxAuxDataL,
AllegraEraTxAuxData (..),
nativeScriptsAllegraTxAuxDataL,
) where
import Cardano.Ledger.Allegra.Era (AllegraEra)
import Cardano.Ledger.Allegra.Scripts (AllegraEraScript, Timelock)
import Cardano.Ledger.Binary (
Annotator,
DecCBOR (..),
EncCBOR (..),
ToCBOR,
peekTokenType,
)
import Cardano.Ledger.Binary.Coders
import Cardano.Ledger.MemoBytes (
EqRaw,
Mem,
MemoBytes,
MemoHashIndex,
Memoized (RawType),
getMemoRawType,
getMemoSafeHash,
lensMemoRawType,
mkMemoizedEra,
)
import Cardano.Ledger.Shelley.Core
import Cardano.Ledger.Shelley.TxAuxData (Metadatum, validMetadatum)
import Codec.CBOR.Decoding (
TokenType (
TypeListLen,
TypeListLen64,
TypeListLenIndef,
TypeMapLen,
TypeMapLen64,
TypeMapLenIndef
),
)
import Control.DeepSeq (NFData, deepseq)
import Data.Map.Strict (Map)
import Data.Sequence.Strict (StrictSeq)
import qualified Data.Sequence.Strict as StrictSeq
import Data.Typeable (Typeable)
import Data.Word (Word64)
import GHC.Generics (Generic)
import Lens.Micro (Lens')
import NoThunks.Class (NoThunks)
data AllegraTxAuxDataRaw era = AllegraTxAuxDataRaw
{ forall era. AllegraTxAuxDataRaw era -> Map Word64 Metadatum
atadrMetadata :: !(Map Word64 Metadatum)
, forall era. AllegraTxAuxDataRaw era -> StrictSeq (NativeScript era)
atadrNativeScripts :: !(StrictSeq (NativeScript era))
}
deriving ((forall x.
AllegraTxAuxDataRaw era -> Rep (AllegraTxAuxDataRaw era) x)
-> (forall x.
Rep (AllegraTxAuxDataRaw era) x -> AllegraTxAuxDataRaw era)
-> Generic (AllegraTxAuxDataRaw era)
forall x.
Rep (AllegraTxAuxDataRaw era) x -> AllegraTxAuxDataRaw era
forall x.
AllegraTxAuxDataRaw era -> Rep (AllegraTxAuxDataRaw era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (AllegraTxAuxDataRaw era) x -> AllegraTxAuxDataRaw era
forall era x.
AllegraTxAuxDataRaw era -> Rep (AllegraTxAuxDataRaw era) x
$cfrom :: forall era x.
AllegraTxAuxDataRaw era -> Rep (AllegraTxAuxDataRaw era) x
from :: forall x.
AllegraTxAuxDataRaw era -> Rep (AllegraTxAuxDataRaw era) x
$cto :: forall era x.
Rep (AllegraTxAuxDataRaw era) x -> AllegraTxAuxDataRaw era
to :: forall x.
Rep (AllegraTxAuxDataRaw era) x -> AllegraTxAuxDataRaw era
Generic)
deriving instance Eq (NativeScript era) => Eq (AllegraTxAuxDataRaw era)
class EraTxAuxData era => AllegraEraTxAuxData era where
nativeScriptsTxAuxDataL :: Lens' (TxAuxData era) (StrictSeq (NativeScript era))
timelockScriptsTxAuxDataL :: Lens' (TxAuxData era) (StrictSeq (Timelock era))
default timelockScriptsTxAuxDataL ::
NativeScript era ~ Timelock era => Lens' (TxAuxData era) (StrictSeq (Timelock era))
timelockScriptsTxAuxDataL = (StrictSeq (NativeScript era) -> f (StrictSeq (NativeScript era)))
-> TxAuxData era -> f (TxAuxData era)
(StrictSeq (Timelock era) -> f (StrictSeq (Timelock era)))
-> TxAuxData era -> f (TxAuxData era)
forall era.
AllegraEraTxAuxData era =>
Lens' (TxAuxData era) (StrictSeq (NativeScript era))
Lens' (TxAuxData era) (StrictSeq (NativeScript era))
nativeScriptsTxAuxDataL
{-# DEPRECATED timelockScriptsTxAuxDataL "In favor of `nativeScriptsTxAuxDataL`" #-}
instance EraTxAuxData AllegraEra where
type TxAuxData AllegraEra = AllegraTxAuxData AllegraEra
mkBasicTxAuxData :: TxAuxData AllegraEra
mkBasicTxAuxData = Map Word64 Metadatum
-> StrictSeq (NativeScript AllegraEra)
-> AllegraTxAuxData AllegraEra
forall era.
(Era era, EncCBOR (NativeScript era)) =>
Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxData era
AllegraTxAuxData Map Word64 Metadatum
forall a. Monoid a => a
mempty StrictSeq (NativeScript AllegraEra)
StrictSeq (Timelock AllegraEra)
forall a. Monoid a => a
mempty
metadataTxAuxDataL :: Lens' (TxAuxData AllegraEra) (Map Word64 Metadatum)
metadataTxAuxDataL = (Map Word64 Metadatum -> f (Map Word64 Metadatum))
-> TxAuxData AllegraEra -> f (TxAuxData AllegraEra)
(Map Word64 Metadatum -> f (Map Word64 Metadatum))
-> AllegraTxAuxData AllegraEra -> f (AllegraTxAuxData AllegraEra)
forall era.
(Era era, EncCBOR (NativeScript era)) =>
Lens' (AllegraTxAuxData era) (Map Word64 Metadatum)
Lens' (AllegraTxAuxData AllegraEra) (Map Word64 Metadatum)
metadataAllegraTxAuxDataL
validateTxAuxData :: ProtVer -> TxAuxData AllegraEra -> Bool
validateTxAuxData ProtVer
_ (AllegraTxAuxData Map Word64 Metadatum
md StrictSeq (NativeScript AllegraEra)
as) = StrictSeq (NativeScript AllegraEra)
StrictSeq (Timelock AllegraEra)
as StrictSeq (Timelock AllegraEra) -> Bool -> Bool
forall a b. NFData a => a -> b -> b
`deepseq` (Metadatum -> Bool) -> Map Word64 Metadatum -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all Metadatum -> Bool
validMetadatum Map Word64 Metadatum
md
metadataAllegraTxAuxDataL ::
forall era.
( Era era
, EncCBOR (NativeScript era)
) =>
Lens' (AllegraTxAuxData era) (Map Word64 Metadatum)
metadataAllegraTxAuxDataL :: forall era.
(Era era, EncCBOR (NativeScript era)) =>
Lens' (AllegraTxAuxData era) (Map Word64 Metadatum)
metadataAllegraTxAuxDataL =
forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @era RawType (AllegraTxAuxData era) -> Map Word64 Metadatum
AllegraTxAuxDataRaw era -> Map Word64 Metadatum
forall era. AllegraTxAuxDataRaw era -> Map Word64 Metadatum
atadrMetadata ((RawType (AllegraTxAuxData era)
-> Map Word64 Metadatum -> RawType (AllegraTxAuxData era))
-> forall {f :: * -> *}.
Functor f =>
(Map Word64 Metadatum -> f (Map Word64 Metadatum))
-> AllegraTxAuxData era -> f (AllegraTxAuxData era))
-> (RawType (AllegraTxAuxData era)
-> Map Word64 Metadatum -> RawType (AllegraTxAuxData era))
-> forall {f :: * -> *}.
Functor f =>
(Map Word64 Metadatum -> f (Map Word64 Metadatum))
-> AllegraTxAuxData era -> f (AllegraTxAuxData era)
forall a b. (a -> b) -> a -> b
$
\RawType (AllegraTxAuxData era)
txAuxDataRaw Map Word64 Metadatum
md -> RawType (AllegraTxAuxData era)
txAuxDataRaw {atadrMetadata = md}
instance AllegraEraTxAuxData AllegraEra where
nativeScriptsTxAuxDataL :: Lens' (TxAuxData AllegraEra) (StrictSeq (NativeScript AllegraEra))
nativeScriptsTxAuxDataL = (StrictSeq (NativeScript AllegraEra)
-> f (StrictSeq (NativeScript AllegraEra)))
-> TxAuxData AllegraEra -> f (TxAuxData AllegraEra)
(StrictSeq (NativeScript AllegraEra)
-> f (StrictSeq (NativeScript AllegraEra)))
-> AllegraTxAuxData AllegraEra -> f (AllegraTxAuxData AllegraEra)
forall era.
(Era era, EncCBOR (NativeScript era)) =>
Lens' (AllegraTxAuxData era) (StrictSeq (NativeScript era))
Lens'
(AllegraTxAuxData AllegraEra) (StrictSeq (NativeScript AllegraEra))
nativeScriptsAllegraTxAuxDataL
nativeScriptsAllegraTxAuxDataL ::
forall era.
(Era era, EncCBOR (NativeScript era)) =>
Lens' (AllegraTxAuxData era) (StrictSeq (NativeScript era))
nativeScriptsAllegraTxAuxDataL :: forall era.
(Era era, EncCBOR (NativeScript era)) =>
Lens' (AllegraTxAuxData era) (StrictSeq (NativeScript era))
nativeScriptsAllegraTxAuxDataL =
forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @era RawType (AllegraTxAuxData era) -> StrictSeq (NativeScript era)
AllegraTxAuxDataRaw era -> StrictSeq (NativeScript era)
forall era. AllegraTxAuxDataRaw era -> StrictSeq (NativeScript era)
atadrNativeScripts ((RawType (AllegraTxAuxData era)
-> StrictSeq (NativeScript era) -> RawType (AllegraTxAuxData era))
-> forall {f :: * -> *}.
Functor f =>
(StrictSeq (NativeScript era) -> f (StrictSeq (NativeScript era)))
-> AllegraTxAuxData era -> f (AllegraTxAuxData era))
-> (RawType (AllegraTxAuxData era)
-> StrictSeq (NativeScript era) -> RawType (AllegraTxAuxData era))
-> forall {f :: * -> *}.
Functor f =>
(StrictSeq (NativeScript era) -> f (StrictSeq (NativeScript era)))
-> AllegraTxAuxData era -> f (AllegraTxAuxData era)
forall a b. (a -> b) -> a -> b
$
\RawType (AllegraTxAuxData era)
txAuxDataRaw StrictSeq (NativeScript era)
ts -> RawType (AllegraTxAuxData era)
txAuxDataRaw {atadrNativeScripts = ts}
deriving instance Show (NativeScript era) => Show (AllegraTxAuxDataRaw era)
deriving instance (Era era, NoThunks (NativeScript era)) => NoThunks (AllegraTxAuxDataRaw era)
instance NFData (NativeScript era) => NFData (AllegraTxAuxDataRaw era)
newtype AllegraTxAuxData era = MkAlegraTxAuxData (MemoBytes (AllegraTxAuxDataRaw era))
deriving ((forall x. AllegraTxAuxData era -> Rep (AllegraTxAuxData era) x)
-> (forall x. Rep (AllegraTxAuxData era) x -> AllegraTxAuxData era)
-> Generic (AllegraTxAuxData era)
forall x. Rep (AllegraTxAuxData era) x -> AllegraTxAuxData era
forall x. AllegraTxAuxData era -> Rep (AllegraTxAuxData era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x. Rep (AllegraTxAuxData era) x -> AllegraTxAuxData era
forall era x. AllegraTxAuxData era -> Rep (AllegraTxAuxData era) x
$cfrom :: forall era x. AllegraTxAuxData era -> Rep (AllegraTxAuxData era) x
from :: forall x. AllegraTxAuxData era -> Rep (AllegraTxAuxData era) x
$cto :: forall era x. Rep (AllegraTxAuxData era) x -> AllegraTxAuxData era
to :: forall x. Rep (AllegraTxAuxData era) x -> AllegraTxAuxData era
Generic)
deriving newtype (Typeable (AllegraTxAuxData era)
Typeable (AllegraTxAuxData era) =>
(AllegraTxAuxData era -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (AllegraTxAuxData era) -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [AllegraTxAuxData era] -> Size)
-> ToCBOR (AllegraTxAuxData era)
AllegraTxAuxData era -> Encoding
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [AllegraTxAuxData era] -> Size
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (AllegraTxAuxData era) -> Size
forall era. Typeable era => Typeable (AllegraTxAuxData era)
forall era. Typeable era => AllegraTxAuxData era -> Encoding
forall a.
Typeable a =>
(a -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy a -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy [a] -> Size)
-> ToCBOR a
forall era.
Typeable era =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [AllegraTxAuxData era] -> Size
forall era.
Typeable era =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (AllegraTxAuxData era) -> Size
$ctoCBOR :: forall era. Typeable era => AllegraTxAuxData era -> Encoding
toCBOR :: AllegraTxAuxData era -> Encoding
$cencodedSizeExpr :: forall era.
Typeable era =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (AllegraTxAuxData era) -> Size
encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (AllegraTxAuxData era) -> Size
$cencodedListSizeExpr :: forall era.
Typeable era =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [AllegraTxAuxData era] -> Size
encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [AllegraTxAuxData era] -> Size
ToCBOR, AllegraTxAuxData era -> Int
AllegraTxAuxData era -> ByteString
(AllegraTxAuxData era -> ByteString)
-> (AllegraTxAuxData era -> Int)
-> (forall i. Proxy i -> AllegraTxAuxData era -> SafeHash i)
-> SafeToHash (AllegraTxAuxData era)
forall i. Proxy i -> AllegraTxAuxData era -> SafeHash i
forall era. AllegraTxAuxData era -> Int
forall era. AllegraTxAuxData era -> ByteString
forall t.
(t -> ByteString)
-> (t -> Int)
-> (forall i. Proxy i -> t -> SafeHash i)
-> SafeToHash t
forall era i. Proxy i -> AllegraTxAuxData era -> SafeHash i
$coriginalBytes :: forall era. AllegraTxAuxData era -> ByteString
originalBytes :: AllegraTxAuxData era -> ByteString
$coriginalBytesSize :: forall era. AllegraTxAuxData era -> Int
originalBytesSize :: AllegraTxAuxData era -> Int
$cmakeHashWithExplicitProxys :: forall era i. Proxy i -> AllegraTxAuxData era -> SafeHash i
makeHashWithExplicitProxys :: forall i. Proxy i -> AllegraTxAuxData era -> SafeHash i
SafeToHash)
deriving instance Eq (NativeScript era) => Eq (AllegraTxAuxData era)
instance Memoized (AllegraTxAuxData era) where
type RawType (AllegraTxAuxData era) = AllegraTxAuxDataRaw era
deriving via
(Mem (AllegraTxAuxDataRaw era))
instance
AllegraEraScript era => DecCBOR (Annotator (AllegraTxAuxData era))
type instance MemoHashIndex (AllegraTxAuxDataRaw era) = EraIndependentTxAuxData
instance HashAnnotated (AllegraTxAuxData era) EraIndependentTxAuxData where
hashAnnotated :: AllegraTxAuxData era -> SafeHash EraIndependentTxAuxData
hashAnnotated = AllegraTxAuxData era -> SafeHash EraIndependentTxAuxData
AllegraTxAuxData era
-> SafeHash (MemoHashIndex (RawType (AllegraTxAuxData era)))
forall t. Memoized t => t -> SafeHash (MemoHashIndex (RawType t))
getMemoSafeHash
deriving newtype instance Show (NativeScript era) => Show (AllegraTxAuxData era)
deriving newtype instance (Era era, NoThunks (NativeScript era)) => NoThunks (AllegraTxAuxData era)
deriving newtype instance NFData (NativeScript era) => NFData (AllegraTxAuxData era)
instance Eq (NativeScript era) => EqRaw (AllegraTxAuxData era)
pattern AllegraTxAuxData ::
forall era.
( Era era
, EncCBOR (NativeScript era)
) =>
Map Word64 Metadatum ->
StrictSeq (NativeScript era) ->
AllegraTxAuxData era
pattern $mAllegraTxAuxData :: forall {r} {era}.
(Era era, EncCBOR (NativeScript era)) =>
AllegraTxAuxData era
-> (Map Word64 Metadatum -> StrictSeq (NativeScript era) -> r)
-> ((# #) -> r)
-> r
$bAllegraTxAuxData :: forall era.
(Era era, EncCBOR (NativeScript era)) =>
Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxData era
AllegraTxAuxData blob sp <- (getMemoRawType -> AllegraTxAuxDataRaw blob sp)
where
AllegraTxAuxData Map Word64 Metadatum
blob StrictSeq (NativeScript era)
sp = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @era (RawType (AllegraTxAuxData era) -> AllegraTxAuxData era)
-> RawType (AllegraTxAuxData era) -> AllegraTxAuxData era
forall a b. (a -> b) -> a -> b
$ Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era
forall era.
Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era
AllegraTxAuxDataRaw Map Word64 Metadatum
blob StrictSeq (NativeScript era)
sp
{-# COMPLETE AllegraTxAuxData #-}
instance (Era era, EncCBOR (NativeScript era)) => EncCBOR (AllegraTxAuxDataRaw era) where
encCBOR :: AllegraTxAuxDataRaw era -> Encoding
encCBOR (AllegraTxAuxDataRaw Map Word64 Metadatum
blob StrictSeq (NativeScript era)
sp) =
Encode ('Closed 'Dense) (AllegraTxAuxDataRaw era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode ((Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era)
-> Encode
('Closed 'Dense)
(Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era)
forall t. t -> Encode ('Closed 'Dense) t
Rec Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era
forall era.
Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era
AllegraTxAuxDataRaw Encode
('Closed 'Dense)
(Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era)
-> Encode ('Closed 'Dense) (Map Word64 Metadatum)
-> Encode
('Closed 'Dense)
(StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode ('Closed r) a -> Encode w t
!> Map Word64 Metadatum
-> Encode ('Closed 'Dense) (Map Word64 Metadatum)
forall t. EncCBOR t => t -> Encode ('Closed 'Dense) t
To Map Word64 Metadatum
blob Encode
('Closed 'Dense)
(StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era)
-> Encode ('Closed 'Dense) (StrictSeq (NativeScript era))
-> Encode ('Closed 'Dense) (AllegraTxAuxDataRaw era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode ('Closed r) a -> Encode w t
!> StrictSeq (NativeScript era)
-> Encode ('Closed 'Dense) (StrictSeq (NativeScript era))
forall t. EncCBOR t => t -> Encode ('Closed 'Dense) t
To StrictSeq (NativeScript era)
sp)
instance Era era => EncCBOR (AllegraTxAuxData era)
instance
(Era era, Typeable (NativeScript era), DecCBOR (Annotator (NativeScript era))) =>
DecCBOR (Annotator (AllegraTxAuxDataRaw era))
where
decCBOR :: forall s. Decoder s (Annotator (AllegraTxAuxDataRaw era))
decCBOR =
Decoder s TokenType
forall s. Decoder s TokenType
peekTokenType Decoder s TokenType
-> (TokenType -> Decoder s (Annotator (AllegraTxAuxDataRaw era)))
-> Decoder s (Annotator (AllegraTxAuxDataRaw era))
forall a b. Decoder s a -> (a -> Decoder s b) -> Decoder s b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
TokenType
TypeMapLen -> Decoder s (Annotator (AllegraTxAuxDataRaw era))
forall s. Decoder s (Annotator (AllegraTxAuxDataRaw era))
decodeFromMap
TokenType
TypeMapLen64 -> Decoder s (Annotator (AllegraTxAuxDataRaw era))
forall s. Decoder s (Annotator (AllegraTxAuxDataRaw era))
decodeFromMap
TokenType
TypeMapLenIndef -> Decoder s (Annotator (AllegraTxAuxDataRaw era))
forall s. Decoder s (Annotator (AllegraTxAuxDataRaw era))
decodeFromMap
TokenType
TypeListLen -> Decoder s (Annotator (AllegraTxAuxDataRaw era))
forall s. Decoder s (Annotator (AllegraTxAuxDataRaw era))
decodeFromList
TokenType
TypeListLen64 -> Decoder s (Annotator (AllegraTxAuxDataRaw era))
forall s. Decoder s (Annotator (AllegraTxAuxDataRaw era))
decodeFromList
TokenType
TypeListLenIndef -> Decoder s (Annotator (AllegraTxAuxDataRaw era))
forall s. Decoder s (Annotator (AllegraTxAuxDataRaw era))
decodeFromList
TokenType
_ -> String -> Decoder s (Annotator (AllegraTxAuxDataRaw era))
forall a. String -> Decoder s a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Failed to decode AuxiliaryDataRaw"
where
decodeFromMap :: Decoder s (Annotator (AllegraTxAuxDataRaw era))
decodeFromMap =
Decode Any (Annotator (AllegraTxAuxDataRaw era))
-> Decoder s (Annotator (AllegraTxAuxDataRaw era))
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode
( Decode
Any
(Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era)
-> Decode
Any
(Annotator
(Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era)
-> Decode
Any
(Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era)
forall t (w :: Wrapped). t -> Decode w t
Emit Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era
forall era.
Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era
AllegraTxAuxDataRaw)
Decode
Any
(Annotator
(Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era))
-> Decode ('Closed Any) (Annotator (Map Word64 Metadatum))
-> Decode
Any
(Annotator
(StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode ('Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode ('Closed Any) (Map Word64 Metadatum)
-> Decode ('Closed Any) (Annotator (Map Word64 Metadatum))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann Decode ('Closed Any) (Map Word64 Metadatum)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
Any
(Annotator
(StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era))
-> Decode ('Closed Any) (Annotator (StrictSeq (NativeScript era)))
-> Decode Any (Annotator (AllegraTxAuxDataRaw era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode ('Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode ('Closed Any) (StrictSeq (NativeScript era))
-> Decode ('Closed Any) (Annotator (StrictSeq (NativeScript era)))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann (StrictSeq (NativeScript era)
-> Decode ('Closed Any) (StrictSeq (NativeScript era))
forall t (w :: Wrapped). t -> Decode w t
Emit StrictSeq (NativeScript era)
forall a. StrictSeq a
StrictSeq.empty)
)
decodeFromList :: Decoder s (Annotator (AllegraTxAuxDataRaw era))
decodeFromList =
Decode ('Closed 'Dense) (Annotator (AllegraTxAuxDataRaw era))
-> Decoder s (Annotator (AllegraTxAuxDataRaw era))
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode
( Decode
('Closed 'Dense)
(Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era)
-> Decode
('Closed 'Dense)
(Annotator
(Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era)
-> Decode
('Closed 'Dense)
(Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era)
forall t. t -> Decode ('Closed 'Dense) t
RecD Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era
forall era.
Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era
AllegraTxAuxDataRaw)
Decode
('Closed 'Dense)
(Annotator
(Map Word64 Metadatum
-> StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era))
-> Decode ('Closed Any) (Annotator (Map Word64 Metadatum))
-> Decode
('Closed 'Dense)
(Annotator
(StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode ('Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode ('Closed Any) (Map Word64 Metadatum)
-> Decode ('Closed Any) (Annotator (Map Word64 Metadatum))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann Decode ('Closed Any) (Map Word64 Metadatum)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
('Closed 'Dense)
(Annotator
(StrictSeq (NativeScript era) -> AllegraTxAuxDataRaw era))
-> Decode
('Closed 'Dense) (Annotator (StrictSeq (NativeScript era)))
-> Decode ('Closed 'Dense) (Annotator (AllegraTxAuxDataRaw era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode ('Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! (forall s. Decoder s (Annotator (StrictSeq (NativeScript era))))
-> Decode
('Closed 'Dense) (Annotator (StrictSeq (NativeScript era)))
forall t. (forall s. Decoder s t) -> Decode ('Closed 'Dense) t
D (StrictSeq (Annotator (NativeScript era))
-> Annotator (StrictSeq (NativeScript era))
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a.
Monad m =>
StrictSeq (m a) -> m (StrictSeq a)
sequence (StrictSeq (Annotator (NativeScript era))
-> Annotator (StrictSeq (NativeScript era)))
-> Decoder s (StrictSeq (Annotator (NativeScript era)))
-> Decoder s (Annotator (StrictSeq (NativeScript era)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (StrictSeq (Annotator (NativeScript era)))
forall s. Decoder s (StrictSeq (Annotator (NativeScript era)))
forall a s. DecCBOR a => Decoder s a
decCBOR)
)