{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
module Cardano.Api.Shelley.Serialisation.Legacy
( WrappedMultiSig (..)
) where
import Cardano.Prelude
import Cardano.Binary
import Cardano.Ledger.Era (Era)
import NoThunks.Class (NoThunks (..))
import Shelley.Spec.Ledger.BaseTypes (invalidKey)
import Shelley.Spec.Ledger.Scripts (MultiSig)
import Shelley.Spec.Ledger.Serialization (decodeRecordSum)
newtype WrappedMultiSig era = WrappedMultiSig
{ WrappedMultiSig era -> MultiSig era
unWrappedMultiSig :: MultiSig era }
deriving newtype (WrappedMultiSig era -> WrappedMultiSig era -> Bool
(WrappedMultiSig era -> WrappedMultiSig era -> Bool)
-> (WrappedMultiSig era -> WrappedMultiSig era -> Bool)
-> Eq (WrappedMultiSig era)
forall era. WrappedMultiSig era -> WrappedMultiSig era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WrappedMultiSig era -> WrappedMultiSig era -> Bool
$c/= :: forall era. WrappedMultiSig era -> WrappedMultiSig era -> Bool
== :: WrappedMultiSig era -> WrappedMultiSig era -> Bool
$c== :: forall era. WrappedMultiSig era -> WrappedMultiSig era -> Bool
Eq, Eq (WrappedMultiSig era)
Eq (WrappedMultiSig era)
-> (WrappedMultiSig era -> WrappedMultiSig era -> Ordering)
-> (WrappedMultiSig era -> WrappedMultiSig era -> Bool)
-> (WrappedMultiSig era -> WrappedMultiSig era -> Bool)
-> (WrappedMultiSig era -> WrappedMultiSig era -> Bool)
-> (WrappedMultiSig era -> WrappedMultiSig era -> Bool)
-> (WrappedMultiSig era
-> WrappedMultiSig era -> WrappedMultiSig era)
-> (WrappedMultiSig era
-> WrappedMultiSig era -> WrappedMultiSig era)
-> Ord (WrappedMultiSig era)
WrappedMultiSig era -> WrappedMultiSig era -> Bool
WrappedMultiSig era -> WrappedMultiSig era -> Ordering
WrappedMultiSig era -> WrappedMultiSig era -> WrappedMultiSig era
forall era. Eq (WrappedMultiSig era)
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall era. WrappedMultiSig era -> WrappedMultiSig era -> Bool
forall era. WrappedMultiSig era -> WrappedMultiSig era -> Ordering
forall era.
WrappedMultiSig era -> WrappedMultiSig era -> WrappedMultiSig era
min :: WrappedMultiSig era -> WrappedMultiSig era -> WrappedMultiSig era
$cmin :: forall era.
WrappedMultiSig era -> WrappedMultiSig era -> WrappedMultiSig era
max :: WrappedMultiSig era -> WrappedMultiSig era -> WrappedMultiSig era
$cmax :: forall era.
WrappedMultiSig era -> WrappedMultiSig era -> WrappedMultiSig era
>= :: WrappedMultiSig era -> WrappedMultiSig era -> Bool
$c>= :: forall era. WrappedMultiSig era -> WrappedMultiSig era -> Bool
> :: WrappedMultiSig era -> WrappedMultiSig era -> Bool
$c> :: forall era. WrappedMultiSig era -> WrappedMultiSig era -> Bool
<= :: WrappedMultiSig era -> WrappedMultiSig era -> Bool
$c<= :: forall era. WrappedMultiSig era -> WrappedMultiSig era -> Bool
< :: WrappedMultiSig era -> WrappedMultiSig era -> Bool
$c< :: forall era. WrappedMultiSig era -> WrappedMultiSig era -> Bool
compare :: WrappedMultiSig era -> WrappedMultiSig era -> Ordering
$ccompare :: forall era. WrappedMultiSig era -> WrappedMultiSig era -> Ordering
$cp1Ord :: forall era. Eq (WrappedMultiSig era)
Ord, Int -> WrappedMultiSig era -> ShowS
[WrappedMultiSig era] -> ShowS
WrappedMultiSig era -> String
(Int -> WrappedMultiSig era -> ShowS)
-> (WrappedMultiSig era -> String)
-> ([WrappedMultiSig era] -> ShowS)
-> Show (WrappedMultiSig era)
forall era. Int -> WrappedMultiSig era -> ShowS
forall era. [WrappedMultiSig era] -> ShowS
forall era. WrappedMultiSig era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WrappedMultiSig era] -> ShowS
$cshowList :: forall era. [WrappedMultiSig era] -> ShowS
show :: WrappedMultiSig era -> String
$cshow :: forall era. WrappedMultiSig era -> String
showsPrec :: Int -> WrappedMultiSig era -> ShowS
$cshowsPrec :: forall era. Int -> WrappedMultiSig era -> ShowS
Show, Context -> WrappedMultiSig era -> IO (Maybe ThunkInfo)
Proxy (WrappedMultiSig era) -> String
(Context -> WrappedMultiSig era -> IO (Maybe ThunkInfo))
-> (Context -> WrappedMultiSig era -> IO (Maybe ThunkInfo))
-> (Proxy (WrappedMultiSig era) -> String)
-> NoThunks (WrappedMultiSig era)
forall era.
Typeable era =>
Context -> WrappedMultiSig era -> IO (Maybe ThunkInfo)
forall era. Typeable era => Proxy (WrappedMultiSig era) -> String
forall a.
(Context -> a -> IO (Maybe ThunkInfo))
-> (Context -> a -> IO (Maybe ThunkInfo))
-> (Proxy a -> String)
-> NoThunks a
showTypeOf :: Proxy (WrappedMultiSig era) -> String
$cshowTypeOf :: forall era. Typeable era => Proxy (WrappedMultiSig era) -> String
wNoThunks :: Context -> WrappedMultiSig era -> IO (Maybe ThunkInfo)
$cwNoThunks :: forall era.
Typeable era =>
Context -> WrappedMultiSig era -> IO (Maybe ThunkInfo)
noThunks :: Context -> WrappedMultiSig era -> IO (Maybe ThunkInfo)
$cnoThunks :: forall era.
Typeable era =>
Context -> WrappedMultiSig era -> IO (Maybe ThunkInfo)
NoThunks)
deriving stock ((forall x. WrappedMultiSig era -> Rep (WrappedMultiSig era) x)
-> (forall x. Rep (WrappedMultiSig era) x -> WrappedMultiSig era)
-> Generic (WrappedMultiSig era)
forall x. Rep (WrappedMultiSig era) x -> WrappedMultiSig era
forall x. WrappedMultiSig era -> Rep (WrappedMultiSig era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x. Rep (WrappedMultiSig era) x -> WrappedMultiSig era
forall era x. WrappedMultiSig era -> Rep (WrappedMultiSig era) x
$cto :: forall era x. Rep (WrappedMultiSig era) x -> WrappedMultiSig era
$cfrom :: forall era x. WrappedMultiSig era -> Rep (WrappedMultiSig era) x
Generic)
instance (Era era, Typeable era) => FromCBOR (Annotator (WrappedMultiSig era)) where
fromCBOR :: Decoder s (Annotator (WrappedMultiSig era))
fromCBOR = String
-> (Word -> Decoder s (Int, Annotator (WrappedMultiSig era)))
-> Decoder s (Annotator (WrappedMultiSig era))
forall s a. String -> (Word -> Decoder s (Int, a)) -> Decoder s a
decodeRecordSum String
"WrappedMultiSig" ((Word -> Decoder s (Int, Annotator (WrappedMultiSig era)))
-> Decoder s (Annotator (WrappedMultiSig era)))
-> (Word -> Decoder s (Int, Annotator (WrappedMultiSig era)))
-> Decoder s (Annotator (WrappedMultiSig era))
forall a b. (a -> b) -> a -> b
$
\case
Word
0 -> do
Annotator (MultiSig era)
s <- Decoder s (Annotator (MultiSig era))
forall a s. FromCBOR a => Decoder s a
fromCBOR
(Int, Annotator (WrappedMultiSig era))
-> Decoder s (Int, Annotator (WrappedMultiSig era))
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int
2, MultiSig era -> WrappedMultiSig era
forall era. MultiSig era -> WrappedMultiSig era
WrappedMultiSig (MultiSig era -> WrappedMultiSig era)
-> Annotator (MultiSig era) -> Annotator (WrappedMultiSig era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Annotator (MultiSig era)
s)
Word
k -> Word -> Decoder s (Int, Annotator (WrappedMultiSig era))
forall s a. Word -> Decoder s a
invalidKey Word
k
instance Typeable era => ToCBOR (WrappedMultiSig era) where
toCBOR :: WrappedMultiSig era -> Encoding
toCBOR WrappedMultiSig era
ms =
Word -> Encoding
encodeListLen Word
2
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Word8 -> Encoding
forall a. ToCBOR a => a -> Encoding
toCBOR (Word8
0 :: Word8)
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> MultiSig era -> Encoding
forall a. ToCBOR a => a -> Encoding
toCBOR (WrappedMultiSig era -> MultiSig era
forall era. WrappedMultiSig era -> MultiSig era
unWrappedMultiSig WrappedMultiSig era
ms)