{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Test.Cardano.Protocol.Binary.Annotator (
  module Test.Cardano.Ledger.Conway.Binary.Annotator,
) where

import Cardano.Ledger.Binary
import Cardano.Protocol.Crypto
import Cardano.Protocol.TPraos.BHeader
import Test.Cardano.Ledger.Conway.Binary.Annotator

instance Crypto c => DecCBOR (Annotator (BHeaderRaw c)) where
  decCBOR :: forall s. Decoder s (Annotator (BHeaderRaw c))
decCBOR = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a s. DecCBOR a => Decoder s a
decCBOR

deriving via
  Mem (BHeaderRaw c)
  instance
    Crypto c => DecCBOR (Annotator (BHeader c))