x
90
{ parameter (or
(or (or %adminAction (address %updateAdmin) (address %updateSwapContract))
(unit %confirmAdmin))
(or (pair %unwrap nat address) (address %wrap))) ;
storage (pair (big_map %metadata string bytes) (address %swapContract)
(address %admin)
(option %pendingAdmin address)) ;
code { NIL operation ;
LAMBDA
address
unit
{ PUSH bool False ;
SWAP ;
SENDER ;
COMPARE ;
EQ ;
COMPARE ;
EQ ;
IF { PUSH string "INVALID_ACCESS" ; FAILWITH } { UNIT } } ;
DIG 2 ;
UNPAIR ;
IF_LEFT
{ IF_LEFT
{ DUP 2 ; GET 5 ; DIG 3 ; SWAP ; EXEC ; DROP ; IF_LEFT { SOME ; UPDATE 6 } { UPDATE 3 } }
{ DROP ;
DUP ;
GET 6 ;
IF_NONE { PUSH string "INVALID_PENDING_ADMIN" ; FAILWITH } {} ;
DUP ;
DIG 3 ;
SWAP ;
EXEC ;
DROP ;
UPDATE 5 ;
NONE address ;
UPDATE 6 } }
{ DIG 2 ;
DIG 3 ;
DROP 2 ;
IF_LEFT
{ DUP ;
CAR ;
PUSH nat 1 ;
DUP 2 ;
COMPARE ;
LT ;
IF { PUSH string "INVALID_UNWRAP_AMOUNT" ; FAILWITH } {} ;
NIL operation ;
DUP 4 ;
GET 3 ;
CONTRACT %unwrap (pair (pair address nat) address) ;
IF_NONE { PUSH string "CANNOT_INVOKE_WTZ_UNWRAP" ; FAILWITH } {} ;
PUSH mutez 0 ;
DIG 4 ;
CDR ;
DIG 4 ;
SENDER ;
PAIR ;
PAIR ;
TRANSFER_TOKENS }
{ PUSH mutez 1 ;
AMOUNT ;
COMPARE ;
LT ;
IF { PUSH string "INVALID_WRAP_AMOUNT" ; FAILWITH } {} ;
NIL operation ;
DUP 3 ;
GET 3 ;
CONTRACT %wrap address ;
IF_NONE { PUSH string "CANNOT_INVOKE_WTZ_WRAP" ; FAILWITH } {} ;
AMOUNT ;
DIG 3 ;
TRANSFER_TOKENS } ;
CONS ;
SWAP } ;
SWAP ;
PAIR } ;
view "getSwapContract" unit address { CDR ; GET 3 } ;
view "getSwapRatio" unit nat
{ CDR ;
GET 3 ;
UNIT ;
VIEW "getSwapRatio" nat ;
IF_NONE { PUSH string "INVALID_SWAP_CONTRACT" ; FAILWITH } {} } ;
view "getFee" unit nat
{ CDR ;
GET 3 ;
UNIT ;
VIEW "getFee" nat ;
IF_NONE { PUSH string "INVALID_SWAP_CONTRACT" ; FAILWITH } {} } }