module PlutusCore.Pretty
    (
    -- * Basic types and functions
      Doc
    , Pretty (..)
    , PrettyBy (..)
    , IgnorePrettyConfig (..)
    , AttachPrettyConfig (..)
    , Render (..)
    , PrettyParens
    , display
    , displayBy
    , juxtRenderContext
    -- * Defaults
    , prettyPlc
    , displayPlc
    , prettyPlcSimple
    , displayPlcSimple
    -- * Global configuration
    , CondensedErrors (..)
    , DefaultPrettyPlcStrategy
    , PrettyConfigPlcOptions (..)
    , PrettyConfigPlcStrategy (..)
    , PrettyConfigPlc (..)
    , PrettyPlc
    , prettyConfigPlcOptions
    , prettyConfigPlcClassic
    , prettyConfigPlcClassicSimple
    , prettyConfigPlcReadable
    , prettyConfigPlcReadableSimple
    -- * Custom functions for PLC types.
    , prettyPlcClassic
    , prettyPlcClassicSimple
    , prettyPlcReadable
    , prettyPlcReadableSimple
    , prettyPlcCondensedErrorBy
    , displayPlcCondensedErrorClassic
    -- * Names
    , PrettyConfigName (..)
    , HasPrettyConfigName (..)
    , prettyConfigName
    , prettyConfigNameSimple
    -- * Classic view
    , PrettyConfigClassic (..)
    , PrettyClassicBy
    , PrettyClassic
    , consAnnIf
    , prettyClassic
    , prettyClassicSimple
    -- * Readable view
    , ShowKinds (..)
    , PrettyConfigReadable (..)
    , pcrConfigName
    , pcrRenderContext
    , pcrShowKinds
    , PrettyReadableBy
    , PrettyReadable
    , AsReadable (..)
    , Parened (..)
    , inBraces
    , topPrettyConfigReadable
    , botPrettyConfigReadable
    , binderFixity
    , arrowFixity
    , iterTyForallPrettyM
    , iterLamAbsPrettyM
    , iterTyAbsPrettyM
    , iterArrowPrettyM
    , iterAppDocM
    , iterInterAppPrettyM
    , iterAppPrettyM
    -- * Utils
    , prettyBytes
    , ConstConfig (..)
    , PrettyConst
    , PrettyUni
    , ThrowableBuiltins
    , prettyConst
    , module Export
    ) where

import PlutusCore.Pretty.Classic
import PlutusCore.Pretty.ConfigName
import PlutusCore.Pretty.Default
import PlutusCore.Pretty.Extra ()
import PlutusCore.Pretty.Plc
import PlutusCore.Pretty.PrettyConst
import PlutusCore.Pretty.Readable
import PlutusCore.Pretty.Utils

import Text.Pretty
import Text.PrettyBy
import Text.PrettyBy.Fixity as Export