x
321
{ parameter (or
(or (or (bytes %setMetadataUri) (address %setAdminCandidate))
(or (unit %acceptAdminCandidate) (address %setArchetype)))
(or
(or (pair %setValidator (nat %archid) (address %v))
(pair %setMaxBalanceAllowed (nat %archid) (option %v nat)))
(or
(pair %setRoyalties (nat %archid)
(list %v (pair (address %partAccount)
(nat %partValue))))
(pair %add (nat %id)
(pair (address %mintingValidator)
(option %imaxBalanceAllowed nat)))))) ;
storage (pair (address %admin)
(pair (option %archetype address)
(pair
(big_map %archetypeLedger nat
(pair (address %archValidator)
(pair
(option %maxBalanceAllowed nat)
(list %royalties (pair
(address %partAccount)
(nat %partValue))))))
(pair (option %adminCandidate address)
(big_map %metadata string bytes))))) ;
code { UNPAIR ;
DIP { UNPAIR 5 } ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DIG 5 ;
DUP 2 ;
SOME ;
PUSH string "" ;
UPDATE ;
DUG 5 ;
DROP ;
PAIR 5 ;
NIL operation ;
PAIR }
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP ;
SOME ;
DIP { DIG 4 ; DROP } ;
DUG 4 ;
DROP ;
PAIR 5 ;
NIL operation ;
PAIR } }
{ IF_LEFT
{ DROP ;
DUP 4 ;
IF_NONE
{ PUSH string "ADMIN_CANDIDATE_NOT_SET" ; FAILWITH }
{ DUP ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "CALLER_NOT_ADMIN_CANDIDATE" ; FAILWITH } {} ;
DUP ;
DIP { DIG 1 ; DROP } ;
DUG 1 ;
NONE address ;
DIP { DIG 4 ; DROP } ;
DUG 4 ;
DROP } ;
PAIR 5 ;
NIL operation ;
PAIR }
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP ;
SOME ;
DIP { DIG 2 ; DROP } ;
DUG 2 ;
DROP ;
PAIR 5 ;
NIL operation ;
PAIR } } }
{ IF_LEFT
{ IF_LEFT
{ UNPAIR ;
SWAP ;
DUP 4 ;
IF_NONE { PUSH string "ARCHETYPE_NOT_SET" ; FAILWITH } {} ;
SENDER ;
COMPARE ;
EQ ;
DUP 4 ;
SENDER ;
COMPARE ;
EQ ;
OR ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 5 ;
DUP 6 ;
DUP 4 ;
GET ;
IF_NONE
{ PUSH string "archetypeLedger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
UNPAIR ;
DROP ;
DUP 3 ;
PAIR ;
SOME ;
DUP 4 ;
UPDATE ;
DIP { DIG 4 ; DROP } ;
DUG 4 ;
DROP 2 ;
PAIR 5 ;
NIL operation ;
PAIR }
{ UNPAIR ;
SWAP ;
DUP 4 ;
IF_NONE { PUSH string "ARCHETYPE_NOT_SET" ; FAILWITH } {} ;
SENDER ;
COMPARE ;
EQ ;
DUP 4 ;
SENDER ;
COMPARE ;
EQ ;
OR ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 5 ;
DUP 6 ;
DUP 4 ;
GET ;
IF_NONE
{ PUSH string "archetypeLedger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
UNPAIR ;
SWAP ;
UNPAIR ;
DROP ;
DUP 4 ;
PAIR ;
SWAP ;
PAIR ;
SOME ;
DUP 4 ;
UPDATE ;
DIP { DIG 4 ; DROP } ;
DUG 4 ;
DROP 2 ;
PAIR 5 ;
NIL operation ;
PAIR } }
{ IF_LEFT
{ UNPAIR ;
SWAP ;
DUP 4 ;
IF_NONE { PUSH string "ARCHETYPE_NOT_SET" ; FAILWITH } {} ;
SENDER ;
COMPARE ;
EQ ;
DUP 4 ;
SENDER ;
COMPARE ;
EQ ;
OR ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 5 ;
DUP 6 ;
DUP 4 ;
GET ;
IF_NONE
{ PUSH string "archetypeLedger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DROP ;
DUP 4 ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
SOME ;
DUP 4 ;
UPDATE ;
DIP { DIG 4 ; DROP } ;
DUG 4 ;
DROP 2 ;
PAIR 5 ;
NIL operation ;
PAIR }
{ UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DUP 5 ;
IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
DUP 6 ;
DUP 4 ;
MEM ;
IF { PUSH string "ARCHETYPE_ALREADY_REGISTERED" ; FAILWITH } {} ;
DUP 6 ;
DUP 4 ;
MEM ;
IF
{ PUSH string "archetypeLedger" ;
PUSH string "KeyExists" ;
PAIR ;
FAILWITH }
{ DUP 6 ;
NIL (pair (address %partAccount) (nat %partValue)) ;
DUP 3 ;
PAIR ;
DUP 4 ;
PAIR ;
SOME ;
DUP 5 ;
UPDATE ;
DIP { DIG 5 ; DROP } ;
DUG 5 } ;
DROP 3 ;
PAIR 5 ;
NIL operation ;
PAIR } } } } ;
view "containsArchId" nat bool
{ UNPAIR ;
DIP { CDR ; CDR ; UNPAIR ; SWAP ; DROP } ;
UNIT ;
DUP 3 ;
DUP 3 ;
MEM ;
SWAP ;
DROP ;
DIP { DROP 2 } } ;
view "getMaxBalance" nat (option nat)
{ UNPAIR ;
DIP { CDR ; CDR ; UNPAIR ; SWAP ; DROP } ;
UNIT ;
DUP 3 ;
DUP 3 ;
GET ;
IF_NONE
{ PUSH string "archetypeLedger" ; PUSH string "AssetNotFound" ; PAIR ; FAILWITH }
{} ;
CDR ;
CAR ;
SWAP ;
DROP ;
DIP { DROP 2 } } ;
view "getValidator" nat address
{ UNPAIR ;
DIP { CDR ; CDR ; UNPAIR ; SWAP ; DROP } ;
UNIT ;
DUP 3 ;
DUP 3 ;
GET ;
IF_NONE
{ PUSH string "archetypeLedger" ; PUSH string "AssetNotFound" ; PAIR ; FAILWITH }
{} ;
CAR ;
SWAP ;
DROP ;
DIP { DROP 2 } } ;
view "getRoyalties" nat (list (pair (address %partAccount) (nat %partValue)))
{ UNPAIR ;
DIP { CDR ; CDR ; UNPAIR ; SWAP ; DROP } ;
UNIT ;
NIL (pair (address %partAccount) (nat %partValue)) ;
DUP 4 ;
DUP 4 ;
MEM ;
IF
{ DUP 4 ;
DUP 4 ;
GET ;
IF_NONE
{ PUSH string "archetypeLedger" ;
PUSH string "AssetNotFound" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
CDR }
{ DUP } ;
DIP { DIG 1 ; DROP } ;
DUG 1 ;
DROP ;
DIP { DROP 2 } } }