(define-trait swap-helper-trait 
  (
    (swap-helper-stx-susdt (uint (optional uint)) (response uint uint))
    (swap-helper-susdt-stx (uint (optional uint)) (response uint uint))
    (swap-helper-stx-alex (uint (optional uint)) (response uint uint))
    (swap-helper-alex-stx (uint (optional uint)) (response uint uint))
    (swap-helper-stx-xbtc (uint (optional uint)) (response uint uint))
    (swap-helper-xbtc-stx (uint (optional uint)) (response uint uint))
    (swap-helper-stx-xusd (uint (optional uint)) (response uint uint))
    (swap-helper-xusd-stx (uint (optional uint)) (response uint uint))        
  )
)
(define-public (call-impl-stx-susdt (f <swap-helper-trait>) (dx uint) (min-dy (optional uint)))
  (contract-call? f swap-helper-stx-susdt dx min-dy)
)
(define-public (call-impl-susdt-stx (f <swap-helper-trait>) (dx uint) (min-dy (optional uint)))
  (contract-call? f swap-helper-susdt-stx dx min-dy)
)
(define-public (call-impl-stx-alex (f <swap-helper-trait>) (dx uint) (min-dy (optional uint)))
  (contract-call? f swap-helper-stx-alex dx min-dy)
)
(define-public (call-impl-alex-stx (f <swap-helper-trait>) (dx uint) (min-dy (optional uint)))
  (contract-call? f swap-helper-alex-stx dx min-dy)
)
(define-public (call-impl-stx-xbtc (f <swap-helper-trait>) (dx uint) (min-dy (optional uint)))
  (contract-call? f swap-helper-stx-xbtc dx min-dy)
)
(define-public (call-impl-xbtc-stx (f <swap-helper-trait>) (dx uint) (min-dy (optional uint)))
  (contract-call? f swap-helper-xbtc-stx dx min-dy)
)
(define-public (call-impl-stx-xusd (f <swap-helper-trait>) (dx uint) (min-dy (optional uint)))
  (contract-call? f swap-helper-stx-xusd dx min-dy)
)
(define-public (call-impl-xusd-stx (f <swap-helper-trait>) (dx uint) (min-dy (optional uint)))
  (contract-call? f swap-helper-xusd-stx dx min-dy)
)