{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DerivingVia #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -fno-omit-interface-pragmas #-} {-# OPTIONS_GHC -fno-specialise #-} module PlutusLedgerApi.V4.Value ( module Value , AssetClass (..) , assetClass , assetClassValue , assetClassValueOf ) where import Control.DeepSeq (NFData) import Data.Data (Data) import GHC.Generics (Generic) import PlutusLedgerApi.V1.Value as Value hiding ( AssetClass (..) , assetClass , assetClassValue , assetClassValueOf ) import PlutusLedgerApi.V4.Internal (ListEncoded (..)) import PlutusTx qualified import PlutusTx.Blueprint.Class (HasBlueprintSchema (..)) import PlutusTx.Blueprint.Definition (HasBlueprintDefinition (..), UnrollAll) import PlutusTx.Prelude qualified as PlutusTx import Prettyprinter.Extras (Pretty, PrettyShow (..)) newtype AssetClass = AssetClass {AssetClass -> (CurrencySymbol, TokenName) unAssetClass :: (CurrencySymbol, TokenName)} deriving stock ((forall x. AssetClass -> Rep AssetClass x) -> (forall x. Rep AssetClass x -> AssetClass) -> Generic AssetClass forall x. Rep AssetClass x -> AssetClass forall x. AssetClass -> Rep AssetClass x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cfrom :: forall x. AssetClass -> Rep AssetClass x from :: forall x. AssetClass -> Rep AssetClass x $cto :: forall x. Rep AssetClass x -> AssetClass to :: forall x. Rep AssetClass x -> AssetClass Generic, Typeable AssetClass Typeable AssetClass => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AssetClass -> c AssetClass) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AssetClass) -> (AssetClass -> Constr) -> (AssetClass -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AssetClass)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AssetClass)) -> ((forall b. Data b => b -> b) -> AssetClass -> AssetClass) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AssetClass -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AssetClass -> r) -> (forall u. (forall d. Data d => d -> u) -> AssetClass -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> AssetClass -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> AssetClass -> m AssetClass) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> AssetClass -> m AssetClass) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> AssetClass -> m AssetClass) -> Data AssetClass AssetClass -> Constr AssetClass -> DataType (forall b. Data b => b -> b) -> AssetClass -> AssetClass forall a. Typeable a => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a) -> (a -> Constr) -> (a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c a)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a)) -> ((forall b. Data b => b -> b) -> a -> a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall u. (forall d. Data d => d -> u) -> a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> Data a forall u. Int -> (forall d. Data d => d -> u) -> AssetClass -> u forall u. (forall d. Data d => d -> u) -> AssetClass -> [u] forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AssetClass -> r forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AssetClass -> r forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> AssetClass -> m AssetClass forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> AssetClass -> m AssetClass forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AssetClass forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AssetClass -> c AssetClass forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AssetClass) forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AssetClass) $cgfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AssetClass -> c AssetClass gfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AssetClass -> c AssetClass $cgunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AssetClass gunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AssetClass $ctoConstr :: AssetClass -> Constr toConstr :: AssetClass -> Constr $cdataTypeOf :: AssetClass -> DataType dataTypeOf :: AssetClass -> DataType $cdataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AssetClass) dataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AssetClass) $cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AssetClass) dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AssetClass) $cgmapT :: (forall b. Data b => b -> b) -> AssetClass -> AssetClass gmapT :: (forall b. Data b => b -> b) -> AssetClass -> AssetClass $cgmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AssetClass -> r gmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AssetClass -> r $cgmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AssetClass -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AssetClass -> r $cgmapQ :: forall u. (forall d. Data d => d -> u) -> AssetClass -> [u] gmapQ :: forall u. (forall d. Data d => d -> u) -> AssetClass -> [u] $cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AssetClass -> u gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AssetClass -> u $cgmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> AssetClass -> m AssetClass gmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> AssetClass -> m AssetClass $cgmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> AssetClass -> m AssetClass gmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> AssetClass -> m AssetClass $cgmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> AssetClass -> m AssetClass gmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> AssetClass -> m AssetClass Data) deriving newtype (AssetClass -> AssetClass -> Bool (AssetClass -> AssetClass -> Bool) -> (AssetClass -> AssetClass -> Bool) -> Eq AssetClass forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: AssetClass -> AssetClass -> Bool == :: AssetClass -> AssetClass -> Bool $c/= :: AssetClass -> AssetClass -> Bool /= :: AssetClass -> AssetClass -> Bool Eq, Eq AssetClass Eq AssetClass => (AssetClass -> AssetClass -> Ordering) -> (AssetClass -> AssetClass -> Bool) -> (AssetClass -> AssetClass -> Bool) -> (AssetClass -> AssetClass -> Bool) -> (AssetClass -> AssetClass -> Bool) -> (AssetClass -> AssetClass -> AssetClass) -> (AssetClass -> AssetClass -> AssetClass) -> Ord AssetClass AssetClass -> AssetClass -> Bool AssetClass -> AssetClass -> Ordering AssetClass -> AssetClass -> AssetClass forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: AssetClass -> AssetClass -> Ordering compare :: AssetClass -> AssetClass -> Ordering $c< :: AssetClass -> AssetClass -> Bool < :: AssetClass -> AssetClass -> Bool $c<= :: AssetClass -> AssetClass -> Bool <= :: AssetClass -> AssetClass -> Bool $c> :: AssetClass -> AssetClass -> Bool > :: AssetClass -> AssetClass -> Bool $c>= :: AssetClass -> AssetClass -> Bool >= :: AssetClass -> AssetClass -> Bool $cmax :: AssetClass -> AssetClass -> AssetClass max :: AssetClass -> AssetClass -> AssetClass $cmin :: AssetClass -> AssetClass -> AssetClass min :: AssetClass -> AssetClass -> AssetClass Ord, Int -> AssetClass -> ShowS [AssetClass] -> ShowS AssetClass -> String (Int -> AssetClass -> ShowS) -> (AssetClass -> String) -> ([AssetClass] -> ShowS) -> Show AssetClass forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> AssetClass -> ShowS showsPrec :: Int -> AssetClass -> ShowS $cshow :: AssetClass -> String show :: AssetClass -> String $cshowList :: [AssetClass] -> ShowS showList :: [AssetClass] -> ShowS Show, AssetClass -> () (AssetClass -> ()) -> NFData AssetClass forall a. (a -> ()) -> NFData a $crnf :: AssetClass -> () rnf :: AssetClass -> () NFData, AssetClass -> AssetClass -> Bool (AssetClass -> AssetClass -> Bool) -> Eq AssetClass forall a. (a -> a -> Bool) -> Eq a $c== :: AssetClass -> AssetClass -> Bool == :: AssetClass -> AssetClass -> Bool PlutusTx.Eq, Eq AssetClass Eq AssetClass => (AssetClass -> AssetClass -> Ordering) -> (AssetClass -> AssetClass -> Bool) -> (AssetClass -> AssetClass -> Bool) -> (AssetClass -> AssetClass -> Bool) -> (AssetClass -> AssetClass -> Bool) -> (AssetClass -> AssetClass -> AssetClass) -> (AssetClass -> AssetClass -> AssetClass) -> Ord AssetClass AssetClass -> AssetClass -> Bool AssetClass -> AssetClass -> Ordering AssetClass -> AssetClass -> AssetClass forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: AssetClass -> AssetClass -> Ordering compare :: AssetClass -> AssetClass -> Ordering $c< :: AssetClass -> AssetClass -> Bool < :: AssetClass -> AssetClass -> Bool $c<= :: AssetClass -> AssetClass -> Bool <= :: AssetClass -> AssetClass -> Bool $c> :: AssetClass -> AssetClass -> Bool > :: AssetClass -> AssetClass -> Bool $c>= :: AssetClass -> AssetClass -> Bool >= :: AssetClass -> AssetClass -> Bool $cmax :: AssetClass -> AssetClass -> AssetClass max :: AssetClass -> AssetClass -> AssetClass $cmin :: AssetClass -> AssetClass -> AssetClass min :: AssetClass -> AssetClass -> AssetClass PlutusTx.Ord) deriving ((forall ann. AssetClass -> Doc ann) -> (forall ann. [AssetClass] -> Doc ann) -> Pretty AssetClass forall ann. [AssetClass] -> Doc ann forall ann. AssetClass -> Doc ann forall a. (forall ann. a -> Doc ann) -> (forall ann. [a] -> Doc ann) -> Pretty a $cpretty :: forall ann. AssetClass -> Doc ann pretty :: forall ann. AssetClass -> Doc ann $cprettyList :: forall ann. [AssetClass] -> Doc ann prettyList :: forall ann. [AssetClass] -> Doc ann Pretty) via PrettyShow (CurrencySymbol, TokenName) deriving (AssetClass -> BuiltinData (AssetClass -> BuiltinData) -> ToData AssetClass forall a. (a -> BuiltinData) -> ToData a $ctoBuiltinData :: AssetClass -> BuiltinData toBuiltinData :: AssetClass -> BuiltinData PlutusTx.ToData, BuiltinData -> Maybe AssetClass (BuiltinData -> Maybe AssetClass) -> FromData AssetClass forall a. (BuiltinData -> Maybe a) -> FromData a $cfromBuiltinData :: BuiltinData -> Maybe AssetClass fromBuiltinData :: BuiltinData -> Maybe AssetClass PlutusTx.FromData, BuiltinData -> AssetClass (BuiltinData -> AssetClass) -> UnsafeFromData AssetClass forall a. (BuiltinData -> a) -> UnsafeFromData a $cunsafeFromBuiltinData :: BuiltinData -> AssetClass unsafeFromBuiltinData :: BuiltinData -> AssetClass PlutusTx.UnsafeFromData) via ListEncoded (CurrencySymbol, TokenName) instance HasBlueprintDefinition AssetClass where type Unroll AssetClass = AssetClass ': UnrollAll '[CurrencySymbol, TokenName] instance HasBlueprintSchema (CurrencySymbol, TokenName) referencedTypes => HasBlueprintSchema AssetClass referencedTypes where schema :: Schema referencedTypes schema = forall t (referencedTypes :: [*]). HasBlueprintSchema t referencedTypes => Schema referencedTypes schema @(ListEncoded (CurrencySymbol, TokenName)) @referencedTypes PlutusTx.makeLift ''AssetClass {-# INLINEABLE assetClass #-} assetClass :: CurrencySymbol -> TokenName -> AssetClass assetClass :: CurrencySymbol -> TokenName -> AssetClass assetClass CurrencySymbol currency TokenName token = (CurrencySymbol, TokenName) -> AssetClass AssetClass (CurrencySymbol currency, TokenName token) {-# INLINEABLE assetClassValue #-} assetClassValue :: AssetClass -> Integer -> Value assetClassValue :: AssetClass -> Integer -> Value assetClassValue (AssetClass (CurrencySymbol currency, TokenName token)) = CurrencySymbol -> TokenName -> Integer -> Value singleton CurrencySymbol currency TokenName token {-# INLINEABLE assetClassValueOf #-} assetClassValueOf :: Value -> AssetClass -> Integer assetClassValueOf :: Value -> AssetClass -> Integer assetClassValueOf Value value (AssetClass (CurrencySymbol currency, TokenName token)) = Value -> CurrencySymbol -> TokenName -> Integer valueOf Value value CurrencySymbol currency TokenName token