{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Dijkstra.Tx (Tx (..)) where import Cardano.Ledger.Allegra.Tx (validateTimelock) import Cardano.Ledger.Alonzo.Tx ( AlonzoEraTx, AlonzoTx (..), alonzoTxEqRaw, auxDataAlonzoTxL, bodyAlonzoTxL, isValidAlonzoTxL, mkBasicAlonzoTx, sizeAlonzoTxF, witsAlonzoTxL, ) import Cardano.Ledger.Binary (Annotator, DecCBOR (..), EncCBOR, ToCBOR) import Cardano.Ledger.Conway.Tx (AlonzoEraTx (..), Tx (..), getConwayMinFeeTx) import Cardano.Ledger.Core (EraTx (..)) import Cardano.Ledger.Dijkstra.Era (DijkstraEra) import Cardano.Ledger.Dijkstra.TxAuxData () import Cardano.Ledger.Dijkstra.TxBody () import Cardano.Ledger.Dijkstra.TxWits () import Cardano.Ledger.MemoBytes (EqRaw (..)) import Control.DeepSeq (NFData) import GHC.Generics (Generic) import Lens.Micro (Lens', lens) import NoThunks.Class (NoThunks) instance EraTx DijkstraEra where newtype Tx DijkstraEra = MkDijkstraTx {Tx DijkstraEra -> AlonzoTx DijkstraEra unDijkstraTx :: AlonzoTx DijkstraEra} deriving newtype (Tx DijkstraEra -> Tx DijkstraEra -> Bool (Tx DijkstraEra -> Tx DijkstraEra -> Bool) -> (Tx DijkstraEra -> Tx DijkstraEra -> Bool) -> Eq (Tx DijkstraEra) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Tx DijkstraEra -> Tx DijkstraEra -> Bool == :: Tx DijkstraEra -> Tx DijkstraEra -> Bool $c/= :: Tx DijkstraEra -> Tx DijkstraEra -> Bool /= :: Tx DijkstraEra -> Tx DijkstraEra -> Bool Eq, Int -> Tx DijkstraEra -> ShowS [Tx DijkstraEra] -> ShowS Tx DijkstraEra -> String (Int -> Tx DijkstraEra -> ShowS) -> (Tx DijkstraEra -> String) -> ([Tx DijkstraEra] -> ShowS) -> Show (Tx DijkstraEra) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Tx DijkstraEra -> ShowS showsPrec :: Int -> Tx DijkstraEra -> ShowS $cshow :: Tx DijkstraEra -> String show :: Tx DijkstraEra -> String $cshowList :: [Tx DijkstraEra] -> ShowS showList :: [Tx DijkstraEra] -> ShowS Show, Tx DijkstraEra -> () (Tx DijkstraEra -> ()) -> NFData (Tx DijkstraEra) forall a. (a -> ()) -> NFData a $crnf :: Tx DijkstraEra -> () rnf :: Tx DijkstraEra -> () NFData, Context -> Tx DijkstraEra -> IO (Maybe ThunkInfo) Proxy (Tx DijkstraEra) -> String (Context -> Tx DijkstraEra -> IO (Maybe ThunkInfo)) -> (Context -> Tx DijkstraEra -> IO (Maybe ThunkInfo)) -> (Proxy (Tx DijkstraEra) -> String) -> NoThunks (Tx DijkstraEra) forall a. (Context -> a -> IO (Maybe ThunkInfo)) -> (Context -> a -> IO (Maybe ThunkInfo)) -> (Proxy a -> String) -> NoThunks a $cnoThunks :: Context -> Tx DijkstraEra -> IO (Maybe ThunkInfo) noThunks :: Context -> Tx DijkstraEra -> IO (Maybe ThunkInfo) $cwNoThunks :: Context -> Tx DijkstraEra -> IO (Maybe ThunkInfo) wNoThunks :: Context -> Tx DijkstraEra -> IO (Maybe ThunkInfo) $cshowTypeOf :: Proxy (Tx DijkstraEra) -> String showTypeOf :: Proxy (Tx DijkstraEra) -> String NoThunks, Typeable (Tx DijkstraEra) Typeable (Tx DijkstraEra) => (Tx DijkstraEra -> Encoding) -> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy (Tx DijkstraEra) -> Size) -> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy [Tx DijkstraEra] -> Size) -> ToCBOR (Tx DijkstraEra) Tx DijkstraEra -> Encoding (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [Tx DijkstraEra] -> Size (forall t. ToCBOR t => Proxy t -> Size) -> Proxy (Tx DijkstraEra) -> Size 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 $ctoCBOR :: Tx DijkstraEra -> Encoding toCBOR :: Tx DijkstraEra -> Encoding $cencodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy (Tx DijkstraEra) -> Size encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy (Tx DijkstraEra) -> Size $cencodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [Tx DijkstraEra] -> Size encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [Tx DijkstraEra] -> Size ToCBOR, Typeable (Tx DijkstraEra) Typeable (Tx DijkstraEra) => (Tx DijkstraEra -> Encoding) -> ((forall t. EncCBOR t => Proxy t -> Size) -> Proxy (Tx DijkstraEra) -> Size) -> ((forall t. EncCBOR t => Proxy t -> Size) -> Proxy [Tx DijkstraEra] -> Size) -> EncCBOR (Tx DijkstraEra) Tx DijkstraEra -> Encoding (forall t. EncCBOR t => Proxy t -> Size) -> Proxy [Tx DijkstraEra] -> Size (forall t. EncCBOR t => Proxy t -> Size) -> Proxy (Tx DijkstraEra) -> Size forall a. Typeable a => (a -> Encoding) -> ((forall t. EncCBOR t => Proxy t -> Size) -> Proxy a -> Size) -> ((forall t. EncCBOR t => Proxy t -> Size) -> Proxy [a] -> Size) -> EncCBOR a $cencCBOR :: Tx DijkstraEra -> Encoding encCBOR :: Tx DijkstraEra -> Encoding $cencodedSizeExpr :: (forall t. EncCBOR t => Proxy t -> Size) -> Proxy (Tx DijkstraEra) -> Size encodedSizeExpr :: (forall t. EncCBOR t => Proxy t -> Size) -> Proxy (Tx DijkstraEra) -> Size $cencodedListSizeExpr :: (forall t. EncCBOR t => Proxy t -> Size) -> Proxy [Tx DijkstraEra] -> Size encodedListSizeExpr :: (forall t. EncCBOR t => Proxy t -> Size) -> Proxy [Tx DijkstraEra] -> Size EncCBOR) deriving ((forall x. Tx DijkstraEra -> Rep (Tx DijkstraEra) x) -> (forall x. Rep (Tx DijkstraEra) x -> Tx DijkstraEra) -> Generic (Tx DijkstraEra) forall x. Rep (Tx DijkstraEra) x -> Tx DijkstraEra forall x. Tx DijkstraEra -> Rep (Tx DijkstraEra) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cfrom :: forall x. Tx DijkstraEra -> Rep (Tx DijkstraEra) x from :: forall x. Tx DijkstraEra -> Rep (Tx DijkstraEra) x $cto :: forall x. Rep (Tx DijkstraEra) x -> Tx DijkstraEra to :: forall x. Rep (Tx DijkstraEra) x -> Tx DijkstraEra Generic) mkBasicTx :: TxBody DijkstraEra -> Tx DijkstraEra mkBasicTx = AlonzoTx DijkstraEra -> Tx DijkstraEra MkDijkstraTx (AlonzoTx DijkstraEra -> Tx DijkstraEra) -> (TxBody DijkstraEra -> AlonzoTx DijkstraEra) -> TxBody DijkstraEra -> Tx DijkstraEra forall b c a. (b -> c) -> (a -> b) -> a -> c . TxBody DijkstraEra -> AlonzoTx DijkstraEra forall era. Monoid (TxWits era) => TxBody era -> AlonzoTx era mkBasicAlonzoTx bodyTxL :: Lens' (Tx DijkstraEra) (TxBody DijkstraEra) bodyTxL = (AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra) Lens' (Tx DijkstraEra) (AlonzoTx DijkstraEra) dijkstraTxL ((AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra)) -> ((TxBody DijkstraEra -> f (TxBody DijkstraEra)) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> (TxBody DijkstraEra -> f (TxBody DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra) forall b c a. (b -> c) -> (a -> b) -> a -> c . (TxBody DijkstraEra -> f (TxBody DijkstraEra)) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra) forall era (f :: * -> *). Functor f => (TxBody era -> f (TxBody era)) -> AlonzoTx era -> f (AlonzoTx era) bodyAlonzoTxL {-# INLINE bodyTxL #-} witsTxL :: Lens' (Tx DijkstraEra) (TxWits DijkstraEra) witsTxL = (AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra) Lens' (Tx DijkstraEra) (AlonzoTx DijkstraEra) dijkstraTxL ((AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra)) -> ((AlonzoTxWits DijkstraEra -> f (AlonzoTxWits DijkstraEra)) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> (AlonzoTxWits DijkstraEra -> f (AlonzoTxWits DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra) forall b c a. (b -> c) -> (a -> b) -> a -> c . (TxWits DijkstraEra -> f (TxWits DijkstraEra)) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra) (AlonzoTxWits DijkstraEra -> f (AlonzoTxWits DijkstraEra)) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra) forall era (f :: * -> *). Functor f => (TxWits era -> f (TxWits era)) -> AlonzoTx era -> f (AlonzoTx era) witsAlonzoTxL {-# INLINE witsTxL #-} auxDataTxL :: Lens' (Tx DijkstraEra) (StrictMaybe (TxAuxData DijkstraEra)) auxDataTxL = (AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra) Lens' (Tx DijkstraEra) (AlonzoTx DijkstraEra) dijkstraTxL ((AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra)) -> ((StrictMaybe (AlonzoTxAuxData DijkstraEra) -> f (StrictMaybe (AlonzoTxAuxData DijkstraEra))) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> (StrictMaybe (AlonzoTxAuxData DijkstraEra) -> f (StrictMaybe (AlonzoTxAuxData DijkstraEra))) -> Tx DijkstraEra -> f (Tx DijkstraEra) forall b c a. (b -> c) -> (a -> b) -> a -> c . (StrictMaybe (TxAuxData DijkstraEra) -> f (StrictMaybe (TxAuxData DijkstraEra))) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra) (StrictMaybe (AlonzoTxAuxData DijkstraEra) -> f (StrictMaybe (AlonzoTxAuxData DijkstraEra))) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra) forall era (f :: * -> *). Functor f => (StrictMaybe (TxAuxData era) -> f (StrictMaybe (TxAuxData era))) -> AlonzoTx era -> f (AlonzoTx era) auxDataAlonzoTxL {-# INLINE auxDataTxL #-} sizeTxF :: SimpleGetter (Tx DijkstraEra) Integer sizeTxF = (AlonzoTx DijkstraEra -> Const r (AlonzoTx DijkstraEra)) -> Tx DijkstraEra -> Const r (Tx DijkstraEra) Lens' (Tx DijkstraEra) (AlonzoTx DijkstraEra) dijkstraTxL ((AlonzoTx DijkstraEra -> Const r (AlonzoTx DijkstraEra)) -> Tx DijkstraEra -> Const r (Tx DijkstraEra)) -> ((Integer -> Const r Integer) -> AlonzoTx DijkstraEra -> Const r (AlonzoTx DijkstraEra)) -> (Integer -> Const r Integer) -> Tx DijkstraEra -> Const r (Tx DijkstraEra) forall b c a. (b -> c) -> (a -> b) -> a -> c . (Integer -> Const r Integer) -> AlonzoTx DijkstraEra -> Const r (AlonzoTx DijkstraEra) forall era. EraTx era => SimpleGetter (AlonzoTx era) Integer SimpleGetter (AlonzoTx DijkstraEra) Integer sizeAlonzoTxF {-# INLINE sizeTxF #-} validateNativeScript :: Tx DijkstraEra -> NativeScript DijkstraEra -> Bool validateNativeScript = Tx DijkstraEra -> NativeScript DijkstraEra -> Bool forall era. (EraTx era, AllegraEraTxBody era, AllegraEraScript era, NativeScript era ~ Timelock era) => Tx era -> NativeScript era -> Bool validateTimelock {-# INLINE validateNativeScript #-} getMinFeeTx :: PParams DijkstraEra -> Tx DijkstraEra -> Int -> Coin getMinFeeTx = PParams DijkstraEra -> Tx DijkstraEra -> Int -> Coin forall era. (EraTx era, AlonzoEraTxWits era, ConwayEraPParams era) => PParams era -> Tx era -> Int -> Coin getConwayMinFeeTx instance EqRaw (Tx DijkstraEra) where eqRaw :: Tx DijkstraEra -> Tx DijkstraEra -> Bool eqRaw = Tx DijkstraEra -> Tx DijkstraEra -> Bool forall era. AlonzoEraTx era => Tx era -> Tx era -> Bool alonzoTxEqRaw dijkstraTxL :: Lens' (Tx DijkstraEra) (AlonzoTx DijkstraEra) dijkstraTxL :: Lens' (Tx DijkstraEra) (AlonzoTx DijkstraEra) dijkstraTxL = (Tx DijkstraEra -> AlonzoTx DijkstraEra) -> (Tx DijkstraEra -> AlonzoTx DijkstraEra -> Tx DijkstraEra) -> Lens' (Tx DijkstraEra) (AlonzoTx DijkstraEra) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Tx DijkstraEra -> AlonzoTx DijkstraEra unDijkstraTx (\Tx DijkstraEra x AlonzoTx DijkstraEra y -> Tx DijkstraEra x {unDijkstraTx = y}) instance AlonzoEraTx DijkstraEra where isValidTxL :: Lens' (Tx DijkstraEra) IsValid isValidTxL = (AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra) Lens' (Tx DijkstraEra) (AlonzoTx DijkstraEra) dijkstraTxL ((AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra)) -> ((IsValid -> f IsValid) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra)) -> (IsValid -> f IsValid) -> Tx DijkstraEra -> f (Tx DijkstraEra) forall b c a. (b -> c) -> (a -> b) -> a -> c . (IsValid -> f IsValid) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra) forall era (f :: * -> *). Functor f => (IsValid -> f IsValid) -> AlonzoTx era -> f (AlonzoTx era) isValidAlonzoTxL {-# INLINE isValidTxL #-} instance DecCBOR (Annotator (Tx DijkstraEra)) where decCBOR :: forall s. Decoder s (Annotator (Tx DijkstraEra)) decCBOR = (AlonzoTx DijkstraEra -> Tx DijkstraEra) -> Annotator (AlonzoTx DijkstraEra) -> Annotator (Tx DijkstraEra) forall a b. (a -> b) -> Annotator a -> Annotator b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap AlonzoTx DijkstraEra -> Tx DijkstraEra MkDijkstraTx (Annotator (AlonzoTx DijkstraEra) -> Annotator (Tx DijkstraEra)) -> Decoder s (Annotator (AlonzoTx DijkstraEra)) -> Decoder s (Annotator (Tx DijkstraEra)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Decoder s (Annotator (AlonzoTx DijkstraEra)) forall s. Decoder s (Annotator (AlonzoTx DijkstraEra)) forall a s. DecCBOR a => Decoder s a decCBOR