module Plutarch.Builtin.Opaque where

import Plutarch.Internal.Term

-- | An Arbitrary Term with an unknown type
newtype POpaque s = POpaque (Term s POpaque)

-- | Erase the type of a Term
popaque :: Term s a -> Term s POpaque
popaque :: forall (s :: S) (a :: PType). Term s a -> Term s POpaque
popaque = Term s a -> Term s POpaque
forall (b :: PType) (a :: PType) (s :: S). Term s a -> Term s b
punsafeCoerce