{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -Wno-orphans #-} module Marconi.Orphans where import Cardano.Api (BlockHeader, BlockNo (BlockNo), ChainPoint (ChainPoint, ChainPointAtGenesis), ChainTip (ChainTip, ChainTipAtGenesis), Hash, SlotNo (SlotNo), serialiseToRawBytesHexText) import Prettyprinter (Pretty (pretty), (<+>)) instance Pretty ChainTip where pretty :: ChainTip -> Doc ann pretty ChainTip ChainTipAtGenesis = Doc ann "ChainTipAtGenesis" pretty (ChainTip SlotNo sn Hash BlockHeader ha BlockNo bn) = Doc ann "ChainTip(" Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> SlotNo -> Doc ann forall a ann. Pretty a => a -> Doc ann pretty SlotNo sn Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> Doc ann "," Doc ann -> Doc ann -> Doc ann forall ann. Doc ann -> Doc ann -> Doc ann <+> Hash BlockHeader -> Doc ann forall a ann. Pretty a => a -> Doc ann pretty Hash BlockHeader ha Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> Doc ann "," Doc ann -> Doc ann -> Doc ann forall ann. Doc ann -> Doc ann -> Doc ann <+> BlockNo -> Doc ann forall a ann. Pretty a => a -> Doc ann pretty BlockNo bn Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> Doc ann ")" instance Pretty ChainPoint where pretty :: ChainPoint -> Doc ann pretty ChainPoint ChainPointAtGenesis = Doc ann "ChainPointAtGenesis" pretty (ChainPoint SlotNo sn Hash BlockHeader ha) = Doc ann "ChainPoint(" Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> SlotNo -> Doc ann forall a ann. Pretty a => a -> Doc ann pretty SlotNo sn Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> Doc ann "," Doc ann -> Doc ann -> Doc ann forall ann. Doc ann -> Doc ann -> Doc ann <+> Hash BlockHeader -> Doc ann forall a ann. Pretty a => a -> Doc ann pretty Hash BlockHeader ha Doc ann -> Doc ann -> Doc ann forall a. Semigroup a => a -> a -> a <> Doc ann ")" instance Pretty (Hash BlockHeader) where pretty :: Hash BlockHeader -> Doc ann pretty Hash BlockHeader hash = Doc ann "BlockHash" Doc ann -> Doc ann -> Doc ann forall ann. Doc ann -> Doc ann -> Doc ann <+> Text -> Doc ann forall a ann. Pretty a => a -> Doc ann pretty (Hash BlockHeader -> Text forall a. SerialiseAsRawBytes a => a -> Text serialiseToRawBytesHexText Hash BlockHeader hash) instance Pretty SlotNo where pretty :: SlotNo -> Doc ann pretty (SlotNo Word64 n) = Doc ann "Slot" Doc ann -> Doc ann -> Doc ann forall ann. Doc ann -> Doc ann -> Doc ann <+> Word64 -> Doc ann forall a ann. Pretty a => a -> Doc ann pretty Word64 n instance Pretty BlockNo where pretty :: BlockNo -> Doc ann pretty (BlockNo Word64 bn) = Doc ann "BlockNo" Doc ann -> Doc ann -> Doc ann forall ann. Doc ann -> Doc ann -> Doc ann <+> Word64 -> Doc ann forall a ann. Pretty a => a -> Doc ann pretty Word64 bn