{-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Dijkstra.TxOut () where import Cardano.Ledger.Alonzo.Core (AlonzoEraTxOut (..)) import Cardano.Ledger.Babbage (BabbageTxOut) import Cardano.Ledger.Babbage.TxBody (BabbageTxOut (..)) import Cardano.Ledger.Babbage.TxOut ( BabbageEraTxOut (..), addrEitherBabbageTxOutL, babbageMinUTxOValue, dataBabbageTxOutL, dataHashBabbageTxOutL, datumBabbageTxOutL, getDatumBabbageTxOut, referenceScriptBabbageTxOutL, valueEitherBabbageTxOutL, ) import Cardano.Ledger.Core (EraScript (..), EraTxOut (..)) import Cardano.Ledger.Dijkstra.Era (DijkstraEra) import Cardano.Ledger.Dijkstra.Scripts () import Cardano.Ledger.Plutus (Datum (..), translateDatum) import Data.Maybe.Strict (StrictMaybe (..)) import Lens.Micro (to) instance EraTxOut DijkstraEra where type TxOut DijkstraEra = BabbageTxOut DijkstraEra mkBasicTxOut :: HasCallStack => Addr -> Value DijkstraEra -> TxOut DijkstraEra mkBasicTxOut Addr addr Value DijkstraEra vl = Addr -> Value DijkstraEra -> Datum DijkstraEra -> StrictMaybe (Script DijkstraEra) -> BabbageTxOut DijkstraEra forall era. (Era era, Val (Value era), HasCallStack) => Addr -> Value era -> Datum era -> StrictMaybe (Script era) -> BabbageTxOut era BabbageTxOut Addr addr Value DijkstraEra vl Datum DijkstraEra forall era. Datum era NoDatum StrictMaybe (Script DijkstraEra) StrictMaybe (AlonzoScript DijkstraEra) forall a. StrictMaybe a SNothing upgradeTxOut :: EraTxOut (PreviousEra DijkstraEra) => TxOut (PreviousEra DijkstraEra) -> TxOut DijkstraEra upgradeTxOut (BabbageTxOut Addr addr Value ConwayEra value Datum ConwayEra d StrictMaybe (Script ConwayEra) s) = Addr -> Value DijkstraEra -> Datum DijkstraEra -> StrictMaybe (Script DijkstraEra) -> BabbageTxOut DijkstraEra forall era. (Era era, Val (Value era), HasCallStack) => Addr -> Value era -> Datum era -> StrictMaybe (Script era) -> BabbageTxOut era BabbageTxOut Addr addr Value ConwayEra Value DijkstraEra value (Datum ConwayEra -> Datum DijkstraEra forall era1 era2. Datum era1 -> Datum era2 translateDatum Datum ConwayEra d) (Script (PreviousEra DijkstraEra) -> Script DijkstraEra Script (PreviousEra DijkstraEra) -> AlonzoScript DijkstraEra forall era. (EraScript era, EraScript (PreviousEra era)) => Script (PreviousEra era) -> Script era upgradeScript (Script (PreviousEra DijkstraEra) -> AlonzoScript DijkstraEra) -> StrictMaybe (Script (PreviousEra DijkstraEra)) -> StrictMaybe (AlonzoScript DijkstraEra) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> StrictMaybe (Script (PreviousEra DijkstraEra)) StrictMaybe (Script ConwayEra) s) addrEitherTxOutL :: Lens' (TxOut DijkstraEra) (Either Addr CompactAddr) addrEitherTxOutL = (Either Addr CompactAddr -> f (Either Addr CompactAddr)) -> TxOut DijkstraEra -> f (TxOut DijkstraEra) (Either Addr CompactAddr -> f (Either Addr CompactAddr)) -> BabbageTxOut DijkstraEra -> f (BabbageTxOut DijkstraEra) forall era. EraTxOut era => Lens' (BabbageTxOut era) (Either Addr CompactAddr) Lens' (BabbageTxOut DijkstraEra) (Either Addr CompactAddr) addrEitherBabbageTxOutL {-# INLINE addrEitherTxOutL #-} valueEitherTxOutL :: Lens' (TxOut DijkstraEra) (Either (Value DijkstraEra) (CompactForm (Value DijkstraEra))) valueEitherTxOutL = (Either (Value DijkstraEra) (CompactForm (Value DijkstraEra)) -> f (Either (Value DijkstraEra) (CompactForm (Value DijkstraEra)))) -> TxOut DijkstraEra -> f (TxOut DijkstraEra) (Either (Value DijkstraEra) (CompactForm (Value DijkstraEra)) -> f (Either (Value DijkstraEra) (CompactForm (Value DijkstraEra)))) -> BabbageTxOut DijkstraEra -> f (BabbageTxOut DijkstraEra) forall era. EraTxOut era => Lens' (BabbageTxOut era) (Either (Value era) (CompactForm (Value era))) Lens' (BabbageTxOut DijkstraEra) (Either (Value DijkstraEra) (CompactForm (Value DijkstraEra))) valueEitherBabbageTxOutL {-# INLINE valueEitherTxOutL #-} getMinCoinSizedTxOut :: PParams DijkstraEra -> Sized (TxOut DijkstraEra) -> Coin getMinCoinSizedTxOut = PParams DijkstraEra -> Sized (TxOut DijkstraEra) -> Coin PParams DijkstraEra -> Sized (BabbageTxOut DijkstraEra) -> Coin forall era a. BabbageEraPParams era => PParams era -> Sized a -> Coin babbageMinUTxOValue instance AlonzoEraTxOut DijkstraEra where dataHashTxOutL :: Lens' (TxOut DijkstraEra) (StrictMaybe DataHash) dataHashTxOutL = (StrictMaybe DataHash -> f (StrictMaybe DataHash)) -> TxOut DijkstraEra -> f (TxOut DijkstraEra) (StrictMaybe DataHash -> f (StrictMaybe DataHash)) -> BabbageTxOut DijkstraEra -> f (BabbageTxOut DijkstraEra) forall era. EraTxOut era => Lens' (BabbageTxOut era) (StrictMaybe DataHash) Lens' (BabbageTxOut DijkstraEra) (StrictMaybe DataHash) dataHashBabbageTxOutL {-# INLINE dataHashTxOutL #-} datumTxOutF :: SimpleGetter (TxOut DijkstraEra) (Datum DijkstraEra) datumTxOutF = (BabbageTxOut DijkstraEra -> Datum DijkstraEra) -> SimpleGetter (BabbageTxOut DijkstraEra) (Datum DijkstraEra) forall s a. (s -> a) -> SimpleGetter s a to BabbageTxOut DijkstraEra -> Datum DijkstraEra forall era. BabbageTxOut era -> Datum era getDatumBabbageTxOut {-# INLINE datumTxOutF #-} instance BabbageEraTxOut DijkstraEra where dataTxOutL :: Lens' (TxOut DijkstraEra) (StrictMaybe (Data DijkstraEra)) dataTxOutL = (StrictMaybe (Data DijkstraEra) -> f (StrictMaybe (Data DijkstraEra))) -> TxOut DijkstraEra -> f (TxOut DijkstraEra) (StrictMaybe (Data DijkstraEra) -> f (StrictMaybe (Data DijkstraEra))) -> BabbageTxOut DijkstraEra -> f (BabbageTxOut DijkstraEra) forall era. EraTxOut era => Lens' (BabbageTxOut era) (StrictMaybe (Data era)) Lens' (BabbageTxOut DijkstraEra) (StrictMaybe (Data DijkstraEra)) dataBabbageTxOutL {-# INLINE dataTxOutL #-} datumTxOutL :: Lens' (TxOut DijkstraEra) (Datum DijkstraEra) datumTxOutL = (Datum DijkstraEra -> f (Datum DijkstraEra)) -> TxOut DijkstraEra -> f (TxOut DijkstraEra) (Datum DijkstraEra -> f (Datum DijkstraEra)) -> BabbageTxOut DijkstraEra -> f (BabbageTxOut DijkstraEra) forall era. EraTxOut era => Lens' (BabbageTxOut era) (Datum era) Lens' (BabbageTxOut DijkstraEra) (Datum DijkstraEra) datumBabbageTxOutL {-# INLINE datumTxOutL #-} referenceScriptTxOutL :: Lens' (TxOut DijkstraEra) (StrictMaybe (Script DijkstraEra)) referenceScriptTxOutL = (StrictMaybe (Script DijkstraEra) -> f (StrictMaybe (Script DijkstraEra))) -> TxOut DijkstraEra -> f (TxOut DijkstraEra) (StrictMaybe (Script DijkstraEra) -> f (StrictMaybe (Script DijkstraEra))) -> BabbageTxOut DijkstraEra -> f (BabbageTxOut DijkstraEra) forall era. EraTxOut era => Lens' (BabbageTxOut era) (StrictMaybe (Script era)) Lens' (BabbageTxOut DijkstraEra) (StrictMaybe (Script DijkstraEra)) referenceScriptBabbageTxOutL {-# INLINE referenceScriptTxOutL #-}