Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Machinery for the variadic originate
function.
Synopsis
- class ModifyOriginationData od where
- setBalance :: Mutez -> od large -> od large
- setLarge :: od 'NotLarge -> od 'IsLarge
- data Large = Large
- class (forall ct bal large a. OFConstraint ct large (m a) => OriginateFunc ct bal large (m a)) => MonadOriginate m
- type OFConstraint ct large r = (ContractClass ct, Originator (ContractOriginateData ct large) r)
- type family CheckDupLarge mod :: Constraint where ...
- type family CheckDupBalance mod :: Constraint where ...
- data HasBalance
- class ContractClass contract => OriginateFunc contract (bal :: HasBalance) isLarge r where
- originate'r :: HasCallStack => ContractOriginateData contract isLarge -> r
- class ContractClass contract where
- type ContractStorage contract
- type ContractOriginateData contract :: LargeOrigination -> Type
- initialData :: ContractAlias -> ContractStorage contract -> contract -> ContractOriginateData contract 'NotLarge
- class Originator od res where
- originateFn :: HasCallStack => od -> res
- originate :: forall contract r. (HasCallStack, OriginateFunc contract 'NoBalance 'NotLarge r) => ContractAlias -> ContractStorage contract -> contract -> r
Documentation
class ModifyOriginationData od where Source #
Type class implementing modifications to origination data.
setBalance :: Mutez -> od large -> od large Source #
Instances
ModifyOriginationData UntypedOriginateData Source # | |
Defined in Test.Cleveland.Internal.Actions.Originate setBalance :: forall (large :: LargeOrigination). Mutez -> UntypedOriginateData large -> UntypedOriginateData large Source # setLarge :: UntypedOriginateData 'NotLarge -> UntypedOriginateData 'IsLarge Source # | |
ModifyOriginationData (OriginateData cp st vd) Source # | |
Defined in Test.Cleveland.Internal.Actions.Originate setBalance :: forall (large :: LargeOrigination). Mutez -> OriginateData cp st vd large -> OriginateData cp st vd large Source # setLarge :: OriginateData cp st vd 'NotLarge -> OriginateData cp st vd 'IsLarge Source # | |
ModifyOriginationData (TypedOriginateData cp st vd) Source # | |
Defined in Test.Cleveland.Internal.Actions.Originate setBalance :: forall (large :: LargeOrigination). Mutez -> TypedOriginateData cp st vd large -> TypedOriginateData cp st vd large Source # setLarge :: TypedOriginateData cp st vd 'NotLarge -> TypedOriginateData cp st vd 'IsLarge Source # |
Mark a contract that doesn't fit into the origination size limit. This will execute multiple origination steps.
Such origination cannot be batched (it simply may not fit).
Instances
(ModifyOriginationData (ContractOriginateData ct), OriginateFunc ct bal 'IsLarge r, CheckDupLarge isLarge, isLarge ~ 'NotLarge) => OriginateFunc ct bal isLarge (Large -> r) Source # | |
Defined in Test.Cleveland.Internal.Actions.Originate originate'r :: ContractOriginateData ct isLarge -> Large -> r Source # |
class (forall ct bal large a. OFConstraint ct large (m a) => OriginateFunc ct bal large (m a)) => MonadOriginate m Source #
A convenient synonym class to require the terminating instance for a given monad without leaking too much implementation detail.
Instances
(forall ct (bal :: HasBalance) (large :: LargeOrigination) (a :: k). OFConstraint ct large (m a) => OriginateFunc ct bal large (m a)) => MonadOriginate (m :: k -> Type) Source # | |
Defined in Test.Cleveland.Internal.Actions.Originate |
type OFConstraint ct large r = (ContractClass ct, Originator (ContractOriginateData ct large) r) Source #
Convenience synonym.
type family CheckDupLarge mod :: Constraint where ... Source #
Type family raising a type error on IsLarge
argument. Used to improve
error reporting for OriginateFunc
instances with equality constraints.
CheckDupLarge 'IsLarge = TypeError ('Text "Large is specified more than once.") | |
CheckDupLarge 'NotLarge = () |
type family CheckDupBalance mod :: Constraint where ... Source #
Type family raising a type error on HasBalance
argument. Used to improve
error reporting for OriginateFunc
instances with equality constraints.
CheckDupBalance 'HasBalance = TypeError ('Text "Balance is specified more than once.") | |
CheckDupBalance 'NoBalance = () |
class ContractClass contract => OriginateFunc contract (bal :: HasBalance) isLarge r where Source #
The class implementing a guarded "printf trick" for the originate
function.
If you see GHC asking for this constraint, you most likely need to add
MonadOriginate
constraint on the return monad instead.
Nothing
originate'r :: HasCallStack => ContractOriginateData contract isLarge -> r Source #
default originate'r :: (HasCallStack, Originator (ContractOriginateData contract isLarge) r) => ContractOriginateData contract isLarge -> r Source #
Instances
class ContractClass contract where Source #
Type class that abstracts different contract types for the purpose of origination.
type ContractStorage contract Source #
type ContractOriginateData contract :: LargeOrigination -> Type Source #
initialData :: ContractAlias -> ContractStorage contract -> contract -> ContractOriginateData contract 'NotLarge Source #
Instances
class Originator od res where Source #
Class implementing actual origination.
originateFn :: HasCallStack => od -> res Source #
Low-level polymorphic origination function.
It takes UntypedOriginateData
, TypedOriginateData
or OriginateData
,
and returns correspondingly an Address
, or a ContractHandle
, in a
suitable monad.
Instances
originate :: forall contract r. (HasCallStack, OriginateFunc contract 'NoBalance 'NotLarge r) => ContractAlias -> ContractStorage contract -> contract -> r Source #
Originate a new contract with given data.
Can accept untypted or Lorentz contracts as-is. With typed Michelson contracts,
you need to wrap the contract in TypedContract
specifying its Haskell-land
parameter, storage types and view descriptors, e.g.
originate "typed contract" defaultStorage $ TypedContract @Param @Storage @() michelsonContract
Storage type can be auto-deduced in most cases, so you can skip it with @_
.
After the mandatory arguments, you can add Large
or a Mutez
value, e.g.
by using tz
quasi-quoter:
originate "contract" initialStorage contract Large originate "contract" initialStorage contract [tz|123micro|] originate "contract" initialStorage contract [tz|123micro|] Large
The order is arbitrary, but each can be specified at most once.