module PlutusTx.Eq.Class
  ( Eq (..)
  , (/=)
  ) where

import PlutusTx.Bool
import PlutusTx.Builtins qualified as Builtins

infix 4 ==

{-| The 'Eq' class defines equality ('==').

(/=) deliberately omitted, to make this a one-method class which has a
simpler representation -}
class Eq a where
  (==) :: a -> a -> Bool

infix 4 /=
(/=) :: Eq a => a -> a -> Bool
a
x /= :: forall a. Eq a => a -> a -> Bool
/= a
y = Bool -> Bool
not (a
x a -> a -> Bool
forall a. Eq a => a -> a -> Bool
== a
y)
{-# INLINEABLE (/=) #-}

instance Eq Builtins.Integer where
  {-# INLINEABLE (==) #-}
  == :: Integer -> Integer -> Bool
(==) = Integer -> Integer -> Bool
Builtins.equalsInteger

instance Eq Builtins.BuiltinByteString where
  {-# INLINEABLE (==) #-}
  == :: BuiltinByteString -> BuiltinByteString -> Bool
(==) = BuiltinByteString -> BuiltinByteString -> Bool
Builtins.equalsByteString

instance Eq Builtins.BuiltinData where
  {-# INLINEABLE (==) #-}
  == :: BuiltinData -> BuiltinData -> Bool
(==) = BuiltinData -> BuiltinData -> Bool
Builtins.equalsData

instance Eq Builtins.BuiltinString where
  {-# INLINEABLE (==) #-}
  == :: BuiltinString -> BuiltinString -> Bool
(==) = BuiltinString -> BuiltinString -> Bool
Builtins.equalsString

instance Eq Builtins.BuiltinBLS12_381_G1_Element where
  {-# INLINEABLE (==) #-}
  == :: BuiltinBLS12_381_G1_Element -> BuiltinBLS12_381_G1_Element -> Bool
(==) = BuiltinBLS12_381_G1_Element -> BuiltinBLS12_381_G1_Element -> Bool
Builtins.bls12_381_G1_equals

instance Eq Builtins.BuiltinBLS12_381_G2_Element where
  {-# INLINEABLE (==) #-}
  == :: BuiltinBLS12_381_G2_Element -> BuiltinBLS12_381_G2_Element -> Bool
(==) = BuiltinBLS12_381_G2_Element -> BuiltinBLS12_381_G2_Element -> Bool
Builtins.bls12_381_G2_equals