Source Code

;; contract that calculates the estimated output for a swap via:
;; SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1

(define-read-only (get-dy (token-x principal) (token-y principal) (dx uint))
  (let (
    (pair-external (unwrap! (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 get-pair-details token-x token-y) (err "err-pair-external")))
    (balance-x (unwrap! (get balance-x pair-external) (err "err-balance-x")))
    (balance-y (unwrap! (get balance-y pair-external) (err "err-balance-y")))
    (dx-with-fees (/ (* u997 dx) u1000))
    (dy (/ (* balance-y dx-with-fees) (+ balance-x dx-with-fees)))
  )
    (ok dy)
  )
)

(define-read-only (get-dx (token-x principal) (token-y principal) (dy uint))
  (let (
    (pair-external (unwrap! (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 get-pair-details token-x token-y) (err "err-pair-external")))
    (balance-x (unwrap! (get balance-x pair-external) (err "err-balance-x")))
    (balance-y (unwrap! (get balance-y pair-external) (err "err-balance-y")))
    (dy-with-fees (/ (* u997 dy) u1000))
    (dx (/ (* balance-x dy-with-fees) (+ balance-y dy-with-fees)))
  )
    (ok dx)
  )
)

Functions (2)

FunctionAccessArgs
get-dyread-onlytoken-x: principal, token-y: principal, dx: uint
get-dxread-onlytoken-x: principal, token-y: principal, dy: uint