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