x
352
{ parameter (or
(or (address %propose_administrator)
(or (address %remove_administrator) (unit %set_administrator)))
(or
(or
(list %set_aggregation_path (pair (address %oracle)
(pair (option %symbol string)
(pair
(option %validity_in_seconds int)
(pair
(nat %price_precision_factor)
(bool %reverse))))))
(nat %set_dst_token_precision_factor))
(or (nat %set_price_precision_factor)
(nat %set_src_token_precision_factor)))) ;
storage (pair
(pair (big_map %administrators address nat)
(pair
(list %aggregation_path (pair (address %oracle)
(pair (option %symbol string)
(pair
(option %validity_in_seconds int)
(pair
(nat %price_precision_factor)
(bool %reverse))))))
(nat %dst_token_precision_factor)))
(pair (pair (big_map %metadata string bytes) (nat %price_precision_factor))
(pair (pair %slippage_ratio (nat %numerator) (nat %denominator))
(nat %src_token_precision_factor)))) ;
code { LAMBDA
(pair unit
(pair
(pair (big_map address nat)
(pair
(list (pair address
(pair (option string)
(pair (option int) (pair nat bool)))))
nat))
(pair (pair (big_map string bytes) nat) (pair (pair nat nat) nat))))
(pair unit
(pair
(pair (big_map address nat)
(pair
(list (pair address
(pair (option string)
(pair (option int) (pair nat bool)))))
nat))
(pair (pair (big_map string bytes) nat) (pair (pair nat nat) nat))))
{ CDR ;
PUSH nat 1 ;
DUP 2 ;
CAR ;
CAR ;
SENDER ;
GET ;
IF_NONE { PUSH int 21 ; FAILWITH } {} ;
COMPARE ;
EQ ;
IF {} { PUSH int 401 ; FAILWITH } ;
UNIT ;
PAIR } ;
SWAP ;
UNPAIR ;
IF_LEFT
{ IF_LEFT
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DIG 2 ;
UNIT ;
SWAP ;
DIG 3 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
UNPAIR ;
UNPAIR ;
PUSH (option nat) (Some 0) ;
DIG 4 ;
UPDATE ;
PAIR ;
PAIR }
{ IF_LEFT
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DIG 2 ;
UNIT ;
SWAP ;
DIG 3 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
UNPAIR ;
UNPAIR ;
NONE nat ;
DIG 4 ;
UPDATE ;
PAIR ;
PAIR }
{ DROP ;
SWAP ;
DROP ;
AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
PUSH nat 0 ;
DUP 2 ;
CAR ;
CAR ;
SENDER ;
GET ;
IF_NONE { PUSH int 46 ; FAILWITH } {} ;
COMPARE ;
EQ ;
IF {} { PUSH int 405 ; FAILWITH } ;
UNPAIR ;
UNPAIR ;
PUSH (option nat) (Some 1) ;
SENDER ;
UPDATE ;
PAIR ;
PAIR } } }
{ IF_LEFT
{ IF_LEFT
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DIG 2 ;
UNIT ;
SWAP ;
DIG 3 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
UNPAIR ;
UNPAIR ;
SWAP ;
CDR ;
DIG 3 ;
PAIR ;
SWAP ;
PAIR ;
PAIR }
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DIG 2 ;
UNIT ;
SWAP ;
DIG 3 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
UNPAIR ;
UNPAIR ;
SWAP ;
CAR ;
DIG 3 ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR } }
{ IF_LEFT
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DIG 2 ;
UNIT ;
SWAP ;
DIG 3 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
UNPAIR ;
SWAP ;
UNPAIR ;
CAR ;
DIG 3 ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR }
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DIG 2 ;
UNIT ;
SWAP ;
DIG 3 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
SWAP ;
UPDATE 6 } } } ;
NIL operation ;
PAIR } ;
view "get_min_out" nat nat
{ UNPAIR ;
SELF_ADDRESS ;
UNIT ;
VIEW "get_price" nat ;
IF_NONE { PUSH string "InvalidView: get_price" ; FAILWITH } {} ;
DUP 3 ;
GET 5 ;
CDR ;
DUP 4 ;
GET 3 ;
CDR ;
DUP 5 ;
GET 6 ;
MUL ;
MUL ;
DUP 4 ;
GET 5 ;
CAR ;
DIG 2 ;
DIG 4 ;
CAR ;
GET 4 ;
DIG 4 ;
MUL ;
MUL ;
MUL ;
EDIV ;
IF_NONE { PUSH int 317 ; FAILWITH } { CAR } } ;
view "get_price" unit nat
{ UNPAIR ;
DUP 2 ;
GET 3 ;
CDR ;
DUP 3 ;
CAR ;
GET 3 ;
ITER { DUP ;
GET 3 ;
IF_NONE
{ DUP ;
CAR ;
UNIT ;
VIEW "get_price" nat ;
IF_NONE { PUSH string "Invalid view: get_price" ; FAILWITH } {} ;
DUP 2 ;
GET 7 ;
DUP 6 ;
GET 3 ;
CDR ;
DIG 2 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 296 ; FAILWITH } { CAR } }
{ DROP ;
DUP ;
GET 5 ;
IF_NONE
{ DUP ;
CAR ;
DUP 2 ;
GET 3 ;
IF_NONE { PUSH int 263 ; FAILWITH } {} ;
VIEW "get_price" nat ;
IF_NONE
{ PUSH string "Invalid view: get_price" ; FAILWITH }
{} ;
DUP 2 ;
GET 7 ;
DUP 6 ;
GET 3 ;
CDR ;
DIG 2 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 287 ; FAILWITH } { CAR } }
{ DROP ;
DUP ;
CAR ;
DUP 2 ;
GET 3 ;
IF_NONE { PUSH int 263 ; FAILWITH } {} ;
VIEW "get_price_with_timestamp"
(pair (nat %price) (timestamp %last_update_timestamp)) ;
IF_NONE
{ PUSH string "Invalid view: get_price_with_timestamp" ;
FAILWITH }
{} ;
DUP 2 ;
GET 5 ;
IF_NONE { PUSH int 270 ; FAILWITH } {} ;
DUP 2 ;
CDR ;
ADD ;
NOW ;
COMPARE ;
LE ;
IF {} { PUSH string "PriceTooOld" ; FAILWITH } ;
DUP 2 ;
GET 7 ;
DUP 6 ;
GET 3 ;
CDR ;
DIG 2 ;
CAR ;
MUL ;
EDIV ;
IF_NONE { PUSH int 277 ; FAILWITH } { CAR } } } ;
PUSH bool True ;
DIG 2 ;
GET 8 ;
COMPARE ;
EQ ;
IF
{ DUP 4 ;
GET 3 ;
CDR ;
DIG 2 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 302 ; FAILWITH } { CAR } }
{ DUP 4 ;
GET 3 ;
CDR ;
SWAP ;
DIG 2 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 304 ; FAILWITH } { CAR } } } ;
SWAP ;
DROP ;
SWAP ;
DROP } }