{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Babbage.TxWits (
  module BabbageTxWitsReExport,
) where

import Cardano.Ledger.Alonzo.TxWits (
  AlonzoEraTxWits (..),
  AlonzoTxWits (..),
  addrAlonzoTxWitsL,
  bootAddrAlonzoTxWitsL,
  datsAlonzoTxWitsL,
  rdmrsAlonzoTxWitsL,
  scriptAlonzoTxWitsL,
 )
import Cardano.Ledger.Alonzo.TxWits as BabbageTxWitsReExport (
  AlonzoEraTxWits (..),
  AlonzoTxWits (..),
 )
import Cardano.Ledger.Babbage.Era (BabbageEra)
import Cardano.Ledger.Babbage.TxBody ()
import Cardano.Ledger.Core

instance EraTxWits BabbageEra where
  type TxWits BabbageEra = AlonzoTxWits BabbageEra

  mkBasicTxWits :: TxWits BabbageEra
mkBasicTxWits = TxWits BabbageEra
AlonzoTxWits BabbageEra
forall a. Monoid a => a
mempty

  addrTxWitsL :: Lens' (TxWits BabbageEra) (Set (WitVKey 'Witness))
addrTxWitsL = (Set (WitVKey 'Witness) -> f (Set (WitVKey 'Witness)))
-> TxWits BabbageEra -> f (TxWits BabbageEra)
(Set (WitVKey 'Witness) -> f (Set (WitVKey 'Witness)))
-> AlonzoTxWits BabbageEra -> f (AlonzoTxWits BabbageEra)
forall era.
AlonzoEraScript era =>
Lens' (AlonzoTxWits era) (Set (WitVKey 'Witness))
Lens' (AlonzoTxWits BabbageEra) (Set (WitVKey 'Witness))
addrAlonzoTxWitsL
  {-# INLINE addrTxWitsL #-}

  bootAddrTxWitsL :: Lens' (TxWits BabbageEra) (Set BootstrapWitness)
bootAddrTxWitsL = (Set BootstrapWitness -> f (Set BootstrapWitness))
-> TxWits BabbageEra -> f (TxWits BabbageEra)
(Set BootstrapWitness -> f (Set BootstrapWitness))
-> AlonzoTxWits BabbageEra -> f (AlonzoTxWits BabbageEra)
forall era.
AlonzoEraScript era =>
Lens' (AlonzoTxWits era) (Set BootstrapWitness)
Lens' (AlonzoTxWits BabbageEra) (Set BootstrapWitness)
bootAddrAlonzoTxWitsL
  {-# INLINE bootAddrTxWitsL #-}

  scriptTxWitsL :: Lens' (TxWits BabbageEra) (Map ScriptHash (Script BabbageEra))
scriptTxWitsL = (Map ScriptHash (Script BabbageEra)
 -> f (Map ScriptHash (Script BabbageEra)))
-> TxWits BabbageEra -> f (TxWits BabbageEra)
(Map ScriptHash (Script BabbageEra)
 -> f (Map ScriptHash (Script BabbageEra)))
-> AlonzoTxWits BabbageEra -> f (AlonzoTxWits BabbageEra)
forall era.
AlonzoEraScript era =>
Lens' (AlonzoTxWits era) (Map ScriptHash (Script era))
Lens'
  (AlonzoTxWits BabbageEra) (Map ScriptHash (Script BabbageEra))
scriptAlonzoTxWitsL
  {-# INLINE scriptTxWitsL #-}

instance AlonzoEraTxWits BabbageEra where
  datsTxWitsL :: Lens' (TxWits BabbageEra) (TxDats BabbageEra)
datsTxWitsL = (TxDats BabbageEra -> f (TxDats BabbageEra))
-> TxWits BabbageEra -> f (TxWits BabbageEra)
(TxDats BabbageEra -> f (TxDats BabbageEra))
-> AlonzoTxWits BabbageEra -> f (AlonzoTxWits BabbageEra)
forall era.
AlonzoEraScript era =>
Lens' (AlonzoTxWits era) (TxDats era)
Lens' (AlonzoTxWits BabbageEra) (TxDats BabbageEra)
datsAlonzoTxWitsL
  {-# INLINE datsTxWitsL #-}

  rdmrsTxWitsL :: Lens' (TxWits BabbageEra) (Redeemers BabbageEra)
rdmrsTxWitsL = (Redeemers BabbageEra -> f (Redeemers BabbageEra))
-> TxWits BabbageEra -> f (TxWits BabbageEra)
(Redeemers BabbageEra -> f (Redeemers BabbageEra))
-> AlonzoTxWits BabbageEra -> f (AlonzoTxWits BabbageEra)
forall era.
AlonzoEraScript era =>
Lens' (AlonzoTxWits era) (Redeemers era)
Lens' (AlonzoTxWits BabbageEra) (Redeemers BabbageEra)
rdmrsAlonzoTxWitsL
  {-# INLINE rdmrsTxWitsL #-}