liqwid-plutarch-extra-3.21.1: A collection of Plutarch extras from Liqwid Labs
Safe HaskellSafe-Inferred
LanguageHaskell2010

Plutarch.Extra.AssetClass

Description

Provides Data and Scott encoded asset class types and utility functions.

Synopsis

AssetClass - Hask

data AssetClass Source #

A version of AssetClass, with a tag for currency.

Since: 3.10.0

Constructors

AssetClass 

Fields

Instances

Instances details
FromJSON AssetClass Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

FromJSONKey AssetClass Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

ToJSON AssetClass Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

ToJSONKey AssetClass Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

Generic AssetClass Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

Associated Types

type Rep AssetClass :: Type -> Type Source #

Show AssetClass Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

Generic AssetClass Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

Associated Types

type Code AssetClass :: [[Type]] Source #

Eq AssetClass Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

Ord AssetClass Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

PConstantDecl AssetClass Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

FromData AssetClass Source #

Since: 3.10.0

Instance details

Defined in Plutarch.Extra.AssetClass

ToData AssetClass Source #

Since: 3.10.0

Instance details

Defined in Plutarch.Extra.AssetClass

UnsafeFromData AssetClass Source #

Since: 3.14.2

Instance details

Defined in Plutarch.Extra.AssetClass

PlyArg AssetClass Source #

Since: 3.10.4

Instance details

Defined in Plutarch.Extra.AssetClass

(k ~ A_Lens, a ~ TokenName, b ~ TokenName) => LabelOptic "name" k AssetClass AssetClass a b Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

(k ~ A_Lens, a ~ CurrencySymbol, b ~ CurrencySymbol) => LabelOptic "symbol" k AssetClass AssetClass a b Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

(k2 ~ A_Lens, a ~ TokenName, b ~ TokenName, tag ~ tag') => LabelOptic "name" k2 (Tagged tag AssetClass) (Tagged tag' AssetClass) a b Source #

Since: 3.10.2

Instance details

Defined in Plutarch.Extra.AssetClass

(k2 ~ A_Lens, a ~ CurrencySymbol, b ~ CurrencySymbol, tag ~ tag') => LabelOptic "symbol" k2 (Tagged tag AssetClass) (Tagged tag' AssetClass) a b Source #

Since: 3.10.2

Instance details

Defined in Plutarch.Extra.AssetClass

type Rep AssetClass Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

type Rep AssetClass = D1 ('MetaData "AssetClass" "Plutarch.Extra.AssetClass" "liqwid-plutarch-extra-3.21.1-KPadsMN5oqEA2Ctxwq6qig" 'False) (C1 ('MetaCons "AssetClass" 'PrefixI 'True) (S1 ('MetaSel ('Just "symbol") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CurrencySymbol) :*: S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TokenName)))
type Code AssetClass Source #

Since: 3.10.0

Instance details

Defined in Plutarch.Extra.AssetClass

type PConstantRepr AssetClass Source #

Since: 3.10.0

Instance details

Defined in Plutarch.Extra.AssetClass

type PConstanted AssetClass Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type ToDataConstraint AssetClass Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type UPLCRep AssetClass Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

assetClassValue :: forall {k :: Type} (unit :: k). Tagged unit AssetClass -> Tagged unit Integer -> Value Source #

Version of assetClassValue for tagged AssetClass and Tagged.

Since: 3.10.4

AssetClass - Plutarch

data PAssetClass (s :: S) Source #

A Scott-encoded Plutarch equivalent to AssetClass.

Since: 3.10.0

Constructors

PAssetClass 

Fields

Instances

Instances details
PEq PAssetClass Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

Methods

(#==) :: forall (s :: S). Term s PAssetClass -> Term s PAssetClass -> Term s PBool Source #

DerivePlutusType PAssetClass Source #

Since: 3.10.0

Instance details

Defined in Plutarch.Extra.AssetClass

Associated Types

type DPTStrat PAssetClass Source #

PlutusType PAssetClass Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

Methods

pcon' :: forall (s :: S). PAssetClass s -> Term s (PInner PAssetClass) Source #

pmatch' :: forall (s :: S) (b :: PType). Term s (PInner PAssetClass) -> (PAssetClass s -> Term s b) -> Term s b Source #

(k ~ A_Lens, a ~ Term s (PAsData PTokenName), b ~ Term s (PAsData PTokenName)) => LabelOptic "pname" k (PAssetClass s) (PAssetClass s) a b Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

(k ~ A_Lens, a ~ Term s (PAsData PCurrencySymbol), b ~ Term s (PAsData PCurrencySymbol)) => LabelOptic "psymbol" k (PAssetClass s) (PAssetClass s) a b Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

Generic (PAssetClass s) Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

Associated Types

type Rep (PAssetClass s) :: Type -> Type Source #

type DPTStrat PAssetClass Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type PContravariant' PAssetClass Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type PCovariant' PAssetClass Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type PInner PAssetClass Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

type PVariant' PAssetClass Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type Rep (PAssetClass s) Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

type Rep (PAssetClass s) = D1 ('MetaData "PAssetClass" "Plutarch.Extra.AssetClass" "liqwid-plutarch-extra-3.21.1-KPadsMN5oqEA2Ctxwq6qig" 'False) (C1 ('MetaCons "PAssetClass" 'PrefixI 'True) (S1 ('MetaSel ('Just "psymbol") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term s (PAsData PCurrencySymbol))) :*: S1 ('MetaSel ('Just "pname") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term s (PAsData PTokenName)))))

passetClass :: forall (s :: S). Term s (PCurrencySymbol :--> (PTokenName :--> PAssetClass)) Source #

Since: 3.10.0

passetClassT :: forall {k :: Type} (unit :: k) (s :: S). Term s (PCurrencySymbol :--> (PTokenName :--> PTagged unit PAssetClass)) Source #

Since: 3.10.4

adaSymbolData :: forall (s :: S). Term s (PAsData PCurrencySymbol) Source #

The PCurrencySymbol for Ada, corresponding to an empty string.

Since: 3.9.0

isAdaClass :: forall (a :: Type) (k :: Type). (Is k A_Getter, LabelOptic' "symbol" k a CurrencySymbol, LabelOptic' "name" k a TokenName) => a -> Bool Source #

Check whether an AssetClass corresponds to Ada.

Since: 3.9.0

adaClass :: Tagged "Ada" AssetClass Source #

The AssetClass for Ada, corresponding to an empty currency symbol and token name.

Since: 3.9.0

padaClass :: forall (s :: S). Term s (PTagged "Ada" PAssetClass) Source #

Plutarch equivalent for adaClass.

Since: 3.9.0

emptyTokenNameData :: forall (s :: S). Term s (PAsData PTokenName) Source #

The empty PTokenName

Since: 3.9.0

psymbolAssetClass :: forall (s :: S). Term s (PCurrencySymbol :--> PAssetClass) Source #

Construct a PAssetClass with empty pname. @since 3.9.0

psymbolAssetClassT :: forall {k :: Type} (unit :: k) (s :: S). Term s (PCurrencySymbol :--> PTagged unit PAssetClass) Source #

Tagged version of psymbolAssetClass @since 3.10.4

pconstantClass :: forall (a :: Type) (k :: Type) (s :: S). (Is k A_Getter, LabelOptic' "symbol" k a CurrencySymbol, LabelOptic' "name" k a TokenName) => a -> Term s PAssetClass Source #

Since: 3.10.0

pconstantClassT :: forall {k :: Type} (unit :: k) (s :: S). Tagged unit AssetClass -> Term s (PTagged unit PAssetClass) Source #

Since: 3.10.4

AssetClassData - Plutarch

newtype PAssetClassData (s :: S) Source #

A Data-encoded version of AssetClass, without the currency tag.

Since: 3.10.0

Constructors

PAssetClassData (Term s (PDataRecord '["symbol" := PCurrencySymbol, "name" := PTokenName])) 

Instances

Instances details
PEq PAssetClassData Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

Methods

(#==) :: forall (s :: S). Term s PAssetClassData -> Term s PAssetClassData -> Term s PBool Source #

PIsData PAssetClassData Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

Methods

pfromDataImpl :: forall (s :: S). Term s (PAsData PAssetClassData) -> Term s PAssetClassData Source #

pdataImpl :: forall (s :: S). Term s PAssetClassData -> Term s PData Source #

PDataFields PAssetClassData Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

Associated Types

type PFields PAssetClassData :: [PLabeledType] Source #

DerivePlutusType PAssetClassData Source #

Since: 3.10.0

Instance details

Defined in Plutarch.Extra.AssetClass

Associated Types

type DPTStrat PAssetClassData Source #

PlutusType PAssetClassData Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

Methods

pcon' :: forall (s :: S). PAssetClassData s -> Term s (PInner PAssetClassData) Source #

pmatch' :: forall (s :: S) (b :: PType). Term s (PInner PAssetClassData) -> (PAssetClassData s -> Term s b) -> Term s b Source #

PUnsafeLiftDecl PAssetClassData Source #

Since: 3.10.0

Instance details

Defined in Plutarch.Extra.AssetClass

Associated Types

type PLifted PAssetClassData = (r :: Type) Source #

PShow PAssetClassData Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

Methods

pshow' :: forall (s :: S). Bool -> Term s PAssetClassData -> Term s PString Source #

PTryFrom PData (PAsData PAssetClassData) Source #

Since: 3.21.3

Instance details

Defined in Plutarch.Extra.AssetClass

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PAssetClassData), Reduce (PTryFromExcess PData (PAsData PAssetClassData) s)) -> Term s r) -> Term s r Source #

Generic (PAssetClassData s) Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

Associated Types

type Rep (PAssetClassData s) :: Type -> Type Source #

type PFields PAssetClassData Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

type DPTStrat PAssetClassData Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type PContravariant' PAssetClassData Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type PCovariant' PAssetClassData Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type PInner PAssetClassData Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

type PVariant' PAssetClassData Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type PLifted PAssetClassData Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type PlyArgOf PAssetClassData Source #

Since: 3.10.4

Instance details

Defined in Plutarch.Extra.AssetClass

type PTryFromExcess PData (PAsData PAssetClassData) Source # 
Instance details

Defined in Plutarch.Extra.AssetClass

type Rep (PAssetClassData s) Source #

Since: 3.9.0

Instance details

Defined in Plutarch.Extra.AssetClass

type Rep (PAssetClassData s) = D1 ('MetaData "PAssetClassData" "Plutarch.Extra.AssetClass" "liqwid-plutarch-extra-3.21.1-KPadsMN5oqEA2Ctxwq6qig" 'True) (C1 ('MetaCons "PAssetClassData" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term s (PDataRecord '["symbol" := PCurrencySymbol, "name" := PTokenName])))))

passetClassDataT :: forall {k :: Type} (unit :: k) (s :: S). Term s (PCurrencySymbol :--> (PTokenName :--> PTagged unit PAssetClassData)) Source #

Since: 3.10.4

Scott - Data conversions

ptoScottEncoding :: forall (s :: S). Term s (PAssetClassData :--> PAssetClass) Source #

Convert from PAssetClassData to PAssetClass.

Since: 3.10.4

pfromScottEncoding :: forall (s :: S). Term s (PAssetClass :--> PAssetClassData) Source #

Convert from PAssetClass to PAssetClassData.

Since: 3.10.4

pviaScottEncoding :: forall (a :: PType). ClosedTerm (PAssetClass :--> a) -> ClosedTerm (PAssetClassData :--> a) Source #

Wrap a function using the Scott-encoded PAssetClass to one using the Data-encoded version.

Since: 3.10.4

Modifiers for QuickCheck

newtype GenAssetClass (p :: AdaClassPresence) Source #

A helper newtype for QuickCheck use with AssetClasses. Has a type-level tag to indicate whether it could potentially contain the ADA AssetClass. We provide instances of Arbitrary, CoArbitrary and Function around this newtype, intended to act on the AssetClass inside it.

The easiest way to use this newtype is by pattern matching:

forAll arbitrary $ \((GenAssetClass ac) :: GenAssetClass WithAdaClass) -> ...

You can also 're-wrap' for shrinking:

shrink (GenAssetClass ac :: GenAssetClass WithAdaClass)

Note

Due to limitations in QuickCheck itself, GenCurrencySymbol with the WithAdaSymbol tag over-represents the ADA symbol. We inherit this behaviour on all instances of GenAssetClass with th WithAdaClass tag.

Since: 3.11.1

Instances

Instances details
Arbitrary (GenAssetClass 'WithAdaClass) Source #

This instance shrinks only in the TokenName, as CurrencySymbols do not shrink.

Note

If this would generate the ADA AssetClass, its TokenName will be empty.

Since: 3.11.1

Instance details

Defined in Plutarch.Extra.AssetClass

Arbitrary (GenAssetClass 'WithoutAdaClass) Source #

This instance shrinks only in the TokenName, as CurrencySymbols do not shrink.

Since: 3.11.1

Instance details

Defined in Plutarch.Extra.AssetClass

CoArbitrary (GenAssetClass 'WithAdaClass) Source #

Since: 3.11.1

Instance details

Defined in Plutarch.Extra.AssetClass

CoArbitrary (GenAssetClass 'WithoutAdaClass) Source #

Since: 3.11.1

Instance details

Defined in Plutarch.Extra.AssetClass

Function (GenAssetClass 'WithAdaClass) Source #

Since: 3.11.1

Instance details

Defined in Plutarch.Extra.AssetClass

Function (GenAssetClass 'WithoutAdaClass) Source #

Since: 3.11.1

Instance details

Defined in Plutarch.Extra.AssetClass

Show (GenAssetClass p) Source #

Since: 3.10.5

Instance details

Defined in Plutarch.Extra.AssetClass

Eq (GenAssetClass p) Source #

Since: 3.10.5

Instance details

Defined in Plutarch.Extra.AssetClass