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

module Cardano.Ledger.Dijkstra.State.CertState () where

import Cardano.Ledger.Conway.State (
  ConwayCertState,
  ConwayEraCertState (..),
  EraCertState (..),
  conwayCertDStateL,
  conwayCertPStateL,
  conwayCertVStateL,
  conwayCertsTotalDepositsTxBody,
  conwayCertsTotalRefundsTxBody,
  conwayObligationCertState,
 )
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)

instance EraCertState DijkstraEra where
  type CertState DijkstraEra = ConwayCertState DijkstraEra

  certDStateL :: Lens' (CertState DijkstraEra) (DState DijkstraEra)
certDStateL = (DState DijkstraEra -> f (DState DijkstraEra))
-> CertState DijkstraEra -> f (CertState DijkstraEra)
(DState DijkstraEra -> f (DState DijkstraEra))
-> ConwayCertState DijkstraEra -> f (ConwayCertState DijkstraEra)
forall era (f :: * -> *).
Functor f =>
(DState era -> f (DState era))
-> ConwayCertState era -> f (ConwayCertState era)
conwayCertDStateL
  {-# INLINE certDStateL #-}

  certPStateL :: Lens' (CertState DijkstraEra) (PState DijkstraEra)
certPStateL = (PState DijkstraEra -> f (PState DijkstraEra))
-> CertState DijkstraEra -> f (CertState DijkstraEra)
(PState DijkstraEra -> f (PState DijkstraEra))
-> ConwayCertState DijkstraEra -> f (ConwayCertState DijkstraEra)
forall era (f :: * -> *).
Functor f =>
(PState era -> f (PState era))
-> ConwayCertState era -> f (ConwayCertState era)
conwayCertPStateL
  {-# INLINE certPStateL #-}

  obligationCertState :: CertState DijkstraEra -> Obligations
obligationCertState = CertState DijkstraEra -> Obligations
forall era. ConwayEraCertState era => CertState era -> Obligations
conwayObligationCertState

  certsTotalDepositsTxBody :: EraTxBody DijkstraEra =>
PParams DijkstraEra
-> CertState DijkstraEra -> TxBody DijkstraEra -> Coin
certsTotalDepositsTxBody = PParams DijkstraEra
-> CertState DijkstraEra -> TxBody DijkstraEra -> Coin
PParams DijkstraEra
-> ConwayCertState DijkstraEra -> TxBody DijkstraEra -> Coin
forall era.
EraTxBody era =>
PParams era -> ConwayCertState era -> TxBody era -> Coin
conwayCertsTotalDepositsTxBody

  certsTotalRefundsTxBody :: EraTxBody DijkstraEra =>
PParams DijkstraEra
-> CertState DijkstraEra -> TxBody DijkstraEra -> Coin
certsTotalRefundsTxBody = PParams DijkstraEra
-> CertState DijkstraEra -> TxBody DijkstraEra -> Coin
PParams DijkstraEra
-> ConwayCertState DijkstraEra -> TxBody DijkstraEra -> Coin
forall era.
EraTxBody era =>
PParams era -> ConwayCertState era -> TxBody era -> Coin
conwayCertsTotalRefundsTxBody

instance ConwayEraCertState DijkstraEra where
  certVStateL :: Lens' (CertState DijkstraEra) (VState DijkstraEra)
certVStateL = (VState DijkstraEra -> f (VState DijkstraEra))
-> CertState DijkstraEra -> f (CertState DijkstraEra)
(VState DijkstraEra -> f (VState DijkstraEra))
-> ConwayCertState DijkstraEra -> f (ConwayCertState DijkstraEra)
forall era (f :: * -> *).
Functor f =>
(VState era -> f (VState era))
-> ConwayCertState era -> f (ConwayCertState era)
conwayCertVStateL
  {-# INLINE certVStateL #-}