11{-# LANGUAGE DataKinds #-}
22{-# LANGUAGE DeriveGeneric #-}
33{-# LANGUAGE DerivingStrategies #-}
4+ {-# LANGUAGE DerivingVia #-}
5+ {-# LANGUAGE FlexibleContexts #-}
46{-# LANGUAGE FlexibleInstances #-}
7+ {-# LANGUAGE GADTs #-}
58{-# LANGUAGE GeneralizedNewtypeDeriving #-}
69{-# LANGUAGE LambdaCase #-}
710{-# LANGUAGE MultiParamTypeClasses #-}
811{-# LANGUAGE PatternSynonyms #-}
12+ {-# LANGUAGE StandaloneDeriving #-}
913{-# LANGUAGE TypeFamilies #-}
1014{-# LANGUAGE TypeOperators #-}
1115{-# LANGUAGE UndecidableInstances #-}
1216{-# OPTIONS_GHC -Wno-orphans #-}
1317
1418module Cardano.Ledger.Dijkstra.Tx (
19+ DijkstraTx (.. ),
1520 Tx (.. ),
1621 validateDijkstraNativeScript ,
1722) where
1823
19- import Cardano.Ledger.Allegra.TxBody (AllegraEraTxBody (.. ))
24+ import Cardano.Ledger.Allegra.TxBody (AllegraEraTxBody (.. ), StrictMaybe )
2025import Cardano.Ledger.Alonzo.Tx (
2126 AlonzoEraTx ,
22- AlonzoTx ( .. ) ,
27+ IsValid ,
2328 alonzoTxEqRaw ,
24- auxDataAlonzoTxL ,
25- bodyAlonzoTxL ,
26- isValidAlonzoTxL ,
27- sizeAlonzoTxF ,
28- witsAlonzoTxL ,
2929 )
30- import Cardano.Ledger.Binary (Annotator , DecCBOR (.. ), EncCBOR , ToCBOR )
30+ import Cardano.Ledger.Binary (Annotator , DecCBOR (.. ), EncCBOR ( .. ) , ToCBOR ( .. ) )
3131import Cardano.Ledger.Conway.Tx (AlonzoEraTx (.. ), Tx (.. ), getConwayMinFeeTx )
3232import Cardano.Ledger.Core
3333import Cardano.Ledger.Dijkstra.Era (DijkstraEra )
@@ -41,51 +41,103 @@ import Cardano.Ledger.Dijkstra.TxBody (DijkstraEraTxBody (..))
4141import Cardano.Ledger.Dijkstra.TxWits ()
4242import Cardano.Ledger.Keys.WitVKey (witVKeyHash )
4343import Cardano.Ledger.MemoBytes (EqRaw (.. ))
44- import Control.DeepSeq (NFData )
44+ import Control.DeepSeq (NFData ( .. ) )
4545import qualified Data.Set as Set
4646import Data.Typeable (Typeable )
47+ import Data.Word (Word32 )
4748import GHC.Generics (Generic )
4849import Lens.Micro (Lens' , lens , (^.) )
49- import NoThunks.Class (NoThunks )
50+ import NoThunks.Class (InspectHeap (.. ), NoThunks )
51+
52+ data DijkstraTx l era where
53+ DijkstraTx ::
54+ { dtBody :: ! (TxBody TopTx era )
55+ , dtWits :: ! (TxWits era )
56+ , dtIsValid :: ! IsValid
57+ , dtAuxData :: ! (StrictMaybe (TxAuxData era ))
58+ } ->
59+ DijkstraTx TopTx era
60+ DijkstraSubTx ::
61+ { dstBody :: ! (TxBody SubTx era )
62+ , dstWits :: ! (TxWits era )
63+ , dstAuxData :: ! (StrictMaybe (TxAuxData era ))
64+ } ->
65+ DijkstraTx SubTx era
66+
67+ deriving instance EraTx era => Eq (DijkstraTx l era )
68+
69+ deriving instance EraTx era => Show (DijkstraTx l era )
70+
71+ instance NFData (DijkstraTx l era ) where
72+ rnf = undefined
73+
74+ deriving via
75+ InspectHeap (DijkstraTx l era)
76+ instance
77+ ( Era era
78+ , Typeable l
79+ ) =>
80+ NoThunks (DijkstraTx l era )
81+
82+ instance (EraTx era , Typeable l ) => ToCBOR (DijkstraTx l era ) where
83+ toCBOR = undefined
84+
85+ instance EncCBOR (DijkstraTx l era ) where
86+ encCBOR = undefined
87+
88+ instance (EraTx era , Typeable l ) => DecCBOR (Annotator (DijkstraTx l era )) where
89+ decCBOR = undefined
5090
5191instance HasEraTxLevel Tx DijkstraEra where
5292 toSTxLevel (MkDijkstraTx _) = undefined
5393
54- mkBasicDijkstraTx :: TxBody l DijkstraEra -> AlonzoTx l DijkstraEra
94+ mkBasicDijkstraTx :: TxBody l DijkstraEra -> DijkstraTx l DijkstraEra
5595mkBasicDijkstraTx = undefined
5696
5797instance EraTx DijkstraEra where
58- newtype Tx l DijkstraEra = MkDijkstraTx { unDijkstraTx :: AlonzoTx l DijkstraEra }
98+ newtype Tx l DijkstraEra = MkDijkstraTx { unDijkstraTx :: DijkstraTx l DijkstraEra }
5999 deriving newtype (Eq , Show , NFData , NoThunks , ToCBOR , EncCBOR )
60100 deriving (Generic )
61101
62102 mkBasicTx = MkDijkstraTx . mkBasicDijkstraTx
63103
64- bodyTxL = dijkstraTxL . bodyAlonzoTxL
104+ bodyTxL = dijkstraTxL . bodyDijkstraTxL
65105 {-# INLINE bodyTxL #-}
66106
67- witsTxL = dijkstraTxL . witsAlonzoTxL
107+ witsTxL = dijkstraTxL . witsDijkstraTxL
68108 {-# INLINE witsTxL #-}
69109
70- auxDataTxL = dijkstraTxL . auxDataAlonzoTxL
110+ auxDataTxL = dijkstraTxL . auxDataDijkstraTxL
71111 {-# INLINE auxDataTxL #-}
72112
73- sizeTxF = dijkstraTxL . sizeAlonzoTxF
113+ sizeTxF = dijkstraTxL . sizeDijkstraTxF
74114 {-# INLINE sizeTxF #-}
75115
76116 validateNativeScript = validateDijkstraNativeScript
77117 {-# INLINE validateNativeScript #-}
78118
79119 getMinFeeTx = getConwayMinFeeTx
80120
121+ bodyDijkstraTxL :: Lens' (DijkstraTx l era ) (TxBody l era )
122+ bodyDijkstraTxL = undefined
123+
124+ witsDijkstraTxL :: Lens' (DijkstraTx l era ) (TxWits era )
125+ witsDijkstraTxL = undefined
126+
127+ auxDataDijkstraTxL :: Lens' (DijkstraTx l era ) (StrictMaybe (TxAuxData era ))
128+ auxDataDijkstraTxL = undefined
129+
130+ sizeDijkstraTxF :: Lens' (DijkstraTx l era ) Word32
131+ sizeDijkstraTxF = undefined
132+
81133instance EqRaw (Tx l DijkstraEra ) where
82134 eqRaw = alonzoTxEqRaw
83135
84- dijkstraTxL :: Lens' (Tx l DijkstraEra ) (AlonzoTx l DijkstraEra )
136+ dijkstraTxL :: Lens' (Tx l DijkstraEra ) (DijkstraTx l DijkstraEra )
85137dijkstraTxL = lens unDijkstraTx (\ x y -> x {unDijkstraTx = y})
86138
87139instance AlonzoEraTx DijkstraEra where
88- isValidTxL = dijkstraTxL . isValidAlonzoTxL
140+ isValidTxL = undefined -- dijkstraTxL . isValidAlonzoTxL
89141 {-# INLINE isValidTxL #-}
90142
91143instance Typeable l => DecCBOR (Annotator (Tx l DijkstraEra )) where
0 commit comments