{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Mary.Tx (
validateTimelock,
) where
import Cardano.Ledger.Allegra.Tx (validateTimelock)
import Cardano.Ledger.Core (EraTx (..))
import Cardano.Ledger.Mary.Era (MaryEra)
import Cardano.Ledger.Mary.PParams ()
import Cardano.Ledger.Mary.TxAuxData ()
import Cardano.Ledger.Mary.TxBody ()
import Cardano.Ledger.Mary.TxWits ()
import Cardano.Ledger.Shelley.Tx (
ShelleyTx (..),
auxDataShelleyTxL,
bodyShelleyTxL,
mkBasicShelleyTx,
shelleyMinFeeTx,
sizeShelleyTxF,
witsShelleyTxL,
)
instance EraTx MaryEra where
type Tx MaryEra = ShelleyTx MaryEra
mkBasicTx :: TxBody MaryEra -> Tx MaryEra
mkBasicTx = TxBody MaryEra -> Tx MaryEra
TxBody MaryEra -> ShelleyTx MaryEra
forall era. EraTx era => TxBody era -> ShelleyTx era
mkBasicShelleyTx
bodyTxL :: Lens' (Tx MaryEra) (TxBody MaryEra)
bodyTxL = (TxBody MaryEra -> f (TxBody MaryEra))
-> Tx MaryEra -> f (Tx MaryEra)
(TxBody MaryEra -> f (TxBody MaryEra))
-> ShelleyTx MaryEra -> f (ShelleyTx MaryEra)
forall era (f :: * -> *).
Functor f =>
(TxBody era -> f (TxBody era))
-> ShelleyTx era -> f (ShelleyTx era)
bodyShelleyTxL
{-# INLINE bodyTxL #-}
witsTxL :: Lens' (Tx MaryEra) (TxWits MaryEra)
witsTxL = (TxWits MaryEra -> f (TxWits MaryEra))
-> Tx MaryEra -> f (Tx MaryEra)
(TxWits MaryEra -> f (TxWits MaryEra))
-> ShelleyTx MaryEra -> f (ShelleyTx MaryEra)
forall era (f :: * -> *).
Functor f =>
(TxWits era -> f (TxWits era))
-> ShelleyTx era -> f (ShelleyTx era)
witsShelleyTxL
{-# INLINE witsTxL #-}
auxDataTxL :: Lens' (Tx MaryEra) (StrictMaybe (TxAuxData MaryEra))
auxDataTxL = (StrictMaybe (TxAuxData MaryEra)
-> f (StrictMaybe (TxAuxData MaryEra)))
-> Tx MaryEra -> f (Tx MaryEra)
(StrictMaybe (TxAuxData MaryEra)
-> f (StrictMaybe (TxAuxData MaryEra)))
-> ShelleyTx MaryEra -> f (ShelleyTx MaryEra)
forall era (f :: * -> *).
Functor f =>
(StrictMaybe (TxAuxData era) -> f (StrictMaybe (TxAuxData era)))
-> ShelleyTx era -> f (ShelleyTx era)
auxDataShelleyTxL
{-# INLINE auxDataTxL #-}
sizeTxF :: SimpleGetter (Tx MaryEra) Integer
sizeTxF = (Integer -> Const r Integer) -> Tx MaryEra -> Const r (Tx MaryEra)
Getting r (ShelleyTx MaryEra) Integer
forall era. EraTx era => SimpleGetter (ShelleyTx era) Integer
SimpleGetter (ShelleyTx MaryEra) Integer
sizeShelleyTxF
{-# INLINE sizeTxF #-}
validateNativeScript :: Tx MaryEra -> NativeScript MaryEra -> Bool
validateNativeScript = Tx MaryEra -> NativeScript MaryEra -> Bool
forall era.
(EraTx era, AllegraEraTxBody era, AllegraEraScript era,
NativeScript era ~ Timelock era) =>
Tx era -> NativeScript era -> Bool
validateTimelock
{-# INLINE validateNativeScript #-}
getMinFeeTx :: PParams MaryEra -> Tx MaryEra -> Int -> Coin
getMinFeeTx PParams MaryEra
pp Tx MaryEra
tx Int
_ = PParams MaryEra -> Tx MaryEra -> Coin
forall era. EraTx era => PParams era -> Tx era -> Coin
shelleyMinFeeTx PParams MaryEra
pp Tx MaryEra
tx