{-# LANGUAGE NoImplicitPrelude #-}
module Cooked.Currencies
( quickTokenName,
quickAssetClass,
quickValue,
permanentTokenName,
permanentAssetClass,
permanentValue,
quickCurrencyPolicy,
quickCurrencyPolicyV3,
quickCurrencySymbol,
permanentCurrencyPolicy,
permanentCurrencyPolicyV3,
permanentCurrencySymbol,
currencySymbolFromLanguageAndMP,
)
where
import Plutus.Script.Utils.Scripts qualified as Script
import Plutus.Script.Utils.Typed qualified as Script
import Plutus.Script.Utils.Value qualified as Script
import PlutusLedgerApi.V3 qualified as Api
import PlutusTx qualified
import PlutusTx.Builtins.Class qualified as PlutusTx
import PlutusTx.Prelude
import Prelude qualified as Haskell
currencySymbolFromLanguageAndMP :: Script.Language -> Script.MintingPolicy -> Script.CurrencySymbol
currencySymbolFromLanguageAndMP :: Language -> MintingPolicy -> CurrencySymbol
currencySymbolFromLanguageAndMP Language
lang = Versioned MintingPolicy -> CurrencySymbol
Script.scriptCurrencySymbol (Versioned MintingPolicy -> CurrencySymbol)
-> (MintingPolicy -> Versioned MintingPolicy)
-> MintingPolicy
-> CurrencySymbol
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (MintingPolicy -> Language -> Versioned MintingPolicy)
-> Language -> MintingPolicy -> Versioned MintingPolicy
forall a b c. (a -> b -> c) -> b -> a -> c
flip MintingPolicy -> Language -> Versioned MintingPolicy
forall script. script -> Language -> Versioned script
Script.Versioned Language
lang
quickTokenName :: Haskell.String -> Script.TokenName
quickTokenName :: String -> TokenName
quickTokenName = BuiltinByteString -> TokenName
Script.TokenName (BuiltinByteString -> TokenName)
-> (String -> BuiltinByteString) -> String -> TokenName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> BuiltinByteString
PlutusTx.stringToBuiltinByteString
quickAssetClass :: Haskell.String -> Script.AssetClass
quickAssetClass :: String -> AssetClass
quickAssetClass = CurrencySymbol -> TokenName -> AssetClass
Script.assetClass CurrencySymbol
quickCurrencySymbol (TokenName -> AssetClass)
-> (String -> TokenName) -> String -> AssetClass
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> TokenName
quickTokenName
quickValue :: Haskell.String -> Integer -> Api.Value
quickValue :: String -> Integer -> Value
quickValue = AssetClass -> Integer -> Value
Script.assetClassValue (AssetClass -> Integer -> Value)
-> (String -> AssetClass) -> String -> Integer -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> AssetClass
quickAssetClass
{-# INLINEABLE mkQuickCurrencyPolicy #-}
mkQuickCurrencyPolicy :: () -> Api.ScriptContext -> Bool
mkQuickCurrencyPolicy :: () -> ScriptContext -> Bool
mkQuickCurrencyPolicy ()
_ ScriptContext
_ = Bool
True
quickCurrencyPolicy :: Script.MintingPolicy
quickCurrencyPolicy :: MintingPolicy
quickCurrencyPolicy = CompiledCode (BuiltinData -> BuiltinData -> ()) -> MintingPolicy
Script.mkMintingPolicyScript $$(PlutusTx.compile [||Script.mkUntypedMintingPolicy mkQuickCurrencyPolicy||])
quickCurrencyPolicyV3 :: Script.Versioned Script.MintingPolicy
quickCurrencyPolicyV3 :: Versioned MintingPolicy
quickCurrencyPolicyV3 = MintingPolicy -> Language -> Versioned MintingPolicy
forall script. script -> Language -> Versioned script
Script.Versioned MintingPolicy
quickCurrencyPolicy Language
Script.PlutusV3
quickCurrencySymbol :: Script.CurrencySymbol
quickCurrencySymbol :: CurrencySymbol
quickCurrencySymbol = Language -> MintingPolicy -> CurrencySymbol
currencySymbolFromLanguageAndMP Language
Script.PlutusV3 MintingPolicy
quickCurrencyPolicy
permanentTokenName :: Haskell.String -> Script.TokenName
permanentTokenName :: String -> TokenName
permanentTokenName = BuiltinByteString -> TokenName
Script.TokenName (BuiltinByteString -> TokenName)
-> (String -> BuiltinByteString) -> String -> TokenName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> BuiltinByteString
PlutusTx.stringToBuiltinByteString
permanentAssetClass :: Haskell.String -> Script.AssetClass
permanentAssetClass :: String -> AssetClass
permanentAssetClass = CurrencySymbol -> TokenName -> AssetClass
Script.assetClass CurrencySymbol
permanentCurrencySymbol (TokenName -> AssetClass)
-> (String -> TokenName) -> String -> AssetClass
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> TokenName
permanentTokenName
permanentValue :: Haskell.String -> Integer -> Api.Value
permanentValue :: String -> Integer -> Value
permanentValue = AssetClass -> Integer -> Value
Script.assetClassValue (AssetClass -> Integer -> Value)
-> (String -> AssetClass) -> String -> Integer -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> AssetClass
permanentAssetClass
{-# INLINEABLE mkPermanentCurrencyPolicy #-}
mkPermanentCurrencyPolicy :: () -> Api.ScriptContext -> Bool
mkPermanentCurrencyPolicy :: () -> ScriptContext -> Bool
mkPermanentCurrencyPolicy ()
_ ScriptContext
_ = Bool
False
permanentCurrencyPolicy :: Script.MintingPolicy
permanentCurrencyPolicy :: MintingPolicy
permanentCurrencyPolicy = CompiledCode (BuiltinData -> BuiltinData -> ()) -> MintingPolicy
Script.mkMintingPolicyScript $$(PlutusTx.compile [||Script.mkUntypedMintingPolicy mkPermanentCurrencyPolicy||])
permanentCurrencyPolicyV3 :: Script.Versioned Script.MintingPolicy
permanentCurrencyPolicyV3 :: Versioned MintingPolicy
permanentCurrencyPolicyV3 = MintingPolicy -> Language -> Versioned MintingPolicy
forall script. script -> Language -> Versioned script
Script.Versioned MintingPolicy
permanentCurrencyPolicy Language
Script.PlutusV3
permanentCurrencySymbol :: Script.CurrencySymbol
permanentCurrencySymbol :: CurrencySymbol
permanentCurrencySymbol = Language -> MintingPolicy -> CurrencySymbol
currencySymbolFromLanguageAndMP Language
Script.PlutusV3 MintingPolicy
permanentCurrencyPolicy