{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Test.Cardano.Ledger.Allegra.Era (
  module Test.Cardano.Ledger.Shelley.Era,
  AllegraEraTest,
) where

import Cardano.Ledger.Allegra
import Cardano.Ledger.Allegra.Core
import Cardano.Ledger.Allegra.Scripts
import Cardano.Ledger.MemoBytes (EqRaw)
import Cardano.Ledger.Plutus (emptyCostModels)
import Test.Cardano.Ledger.Allegra.Arbitrary ()
import Test.Cardano.Ledger.Allegra.Binary.Annotator ()
import Test.Cardano.Ledger.Allegra.TreeDiff ()
import Test.Cardano.Ledger.Common
import Test.Cardano.Ledger.Shelley.Era

class
  ( ShelleyEraTest era
  , AllegraEraTxBody era
  , AllegraEraTxAuxData era
  , AllegraEraScript era
  , Arbitrary (NativeScript era)
  , EqRaw (NativeScript era)
  , SafeToHash (NativeScript era)
  , ToExpr (NativeScript era)
  ) =>
  AllegraEraTest era

instance EraTest AllegraEra where
  zeroCostModels :: CostModels
zeroCostModels = CostModels
emptyCostModels

  mkTestAccountState :: HasCallStack =>
Maybe Ptr
-> CompactForm Coin
-> Maybe (KeyHash 'StakePool)
-> Maybe DRep
-> AccountState AllegraEra
mkTestAccountState = Maybe Ptr
-> CompactForm Coin
-> Maybe (KeyHash 'StakePool)
-> Maybe DRep
-> AccountState AllegraEra
forall era.
(HasCallStack, ShelleyEraAccounts era) =>
Maybe Ptr
-> CompactForm Coin
-> Maybe (KeyHash 'StakePool)
-> Maybe DRep
-> AccountState era
mkShelleyTestAccountState

  accountsFromAccountsMap :: Map (Credential 'Staking) (AccountState AllegraEra)
-> Accounts AllegraEra
accountsFromAccountsMap = Map (Credential 'Staking) (AccountState AllegraEra)
-> Accounts AllegraEra
forall era.
(Accounts era ~ ShelleyAccounts era,
 AccountState era ~ ShelleyAccountState era,
 ShelleyEraAccounts era) =>
Map (Credential 'Staking) (AccountState era) -> Accounts era
shelleyAccountsFromAccountsMap

instance ShelleyEraTest AllegraEra

instance AllegraEraTest AllegraEra