;; constants
(define-constant ERR-NOT-AUTHORIZED u401)
(define-constant ERR-ALL-MINTED u101)
(define-constant ERR-COOLDOWN u102)
(define-constant CONTRACT-OWNER tx-sender)
;;;;;;;;;;;;;;
(define-public (swap-x-for-y (amountIn uint) (action1 (string-ascii 256)) (action2 (string-ascii 256)))
(let (
(b1 (unwrap-panic (perform-action action1 amountIn)))
(b2 (unwrap-panic (perform-action action2 b1)))
)
(begin
(asserts! (> b2 amountIn) (err ERR-COOLDOWN))
(asserts! (is-eq CONTRACT-OWNER tx-sender) (err ERR-ALL-MINTED))
)
(ok (list amountIn b1 b2))
)
)
(define-public (swap-y-for-x (amountIn uint) (action1 (string-ascii 256)) (action2 (string-ascii 256)) (action3 (string-ascii 256)))
(let (
(b1 (unwrap-panic (perform-action action1 amountIn)))
(b2 (unwrap-panic (perform-action action2 b1)))
(b3 (unwrap-panic (perform-action action3 b2)))
)
(begin
(asserts! (> b3 amountIn) (err ERR-COOLDOWN))
(asserts! (is-eq CONTRACT-OWNER tx-sender) (err ERR-ALL-MINTED))
)
(ok (list amountIn b1 b2 b3))
)
)
(define-public (add-to-position (amountIn uint) (action1 (string-ascii 256)) (action2 (string-ascii 256)) (action3 (string-ascii 256)) (action4 (string-ascii 256)))
(let (
(b1 (unwrap-panic (perform-action action1 amountIn)))
(b2 (unwrap-panic (perform-action action2 b1)))
(b3 (unwrap-panic (perform-action action3 b2)))
(b4 (unwrap-panic (perform-action action4 b3)))
)
(begin
(asserts! (> b4 amountIn) (err ERR-COOLDOWN))
(asserts! (is-eq CONTRACT-OWNER tx-sender) (err ERR-ALL-MINTED))
)
(ok (list amountIn b1 b2 b3 b4))
)
)
(define-public (perform-action (action (string-ascii 256)) (amountIn uint))
(if (is-eq action "arkadiko-stx-usda")
(swap-stx-usda amountIn)
(if (is-eq action "arkadiko-usda-stx")
(swap-usda-stx amountIn)
(if (is-eq action "arkadiko-stx-btc")
(swap-stx-btc amountIn)
(if (is-eq action "arkadiko-btc-stx")
(swap-btc-stx amountIn)
(if (is-eq action "arkadiko-stx-diko")
(swap-stx-diko amountIn)
(if (is-eq action "arkadiko-diko-stx")
(swap-diko-stx amountIn)
(if (is-eq action "arkadiko-diko-usda")
(swap-diko-usda amountIn)
(if (is-eq action "arkadiko-usda-diko")
(swap-usda-diko amountIn)
(if (is-eq action "arkadiko-btc-usda")
(swap-btc-usda amountIn)
(if (is-eq action "arkadiko-usda-btc")
(swap-usda-btc amountIn)
(if (is-eq action "alex-stx-btc")
(alex-swap-stx-btc amountIn)
(if (is-eq action "alex-btc-stx")
(alex-swap-btc-stx amountIn)
(ok u0)
)
)
)
)
)
)
)
)
)
)
)
)
)
(define-public (swap-stx-usda (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 swap-x-for-y 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wrapped-stx-token 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token dx u0))))
(ok (unwrap-panic (element-at r u1))))
)
(define-public (swap-usda-stx (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 swap-y-for-x 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wrapped-stx-token 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token dx u0))))
(ok (unwrap-panic (element-at r u0))))
)
(define-public (swap-stx-btc (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 swap-x-for-y 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wrapped-stx-token 'SP3DX3H4FEYZJZ586MFBS25ZW3HZDMEW92260R2PR.Wrapped-Bitcoin dx u0))))
(ok (unwrap-panic (element-at r u1))))
)
(define-public (swap-btc-stx (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 swap-y-for-x 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wrapped-stx-token 'SP3DX3H4FEYZJZ586MFBS25ZW3HZDMEW92260R2PR.Wrapped-Bitcoin dx u0))))
(ok (unwrap-panic (element-at r u0))))
)
(define-public (swap-stx-diko (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 swap-x-for-y 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wrapped-stx-token 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token dx u0))))
(ok (unwrap-panic (element-at r u1))))
)
(define-public (swap-diko-stx (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 swap-y-for-x 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.wrapped-stx-token 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token dx u0))))
(ok (unwrap-panic (element-at r u0))))
)
(define-public (swap-diko-usda (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 swap-x-for-y 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token dx u0))))
(ok (unwrap-panic (element-at r u1))))
)
(define-public (swap-usda-diko (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 swap-y-for-x 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-token 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token dx u0))))
(ok (unwrap-panic (element-at r u0))))
)
(define-public (swap-btc-usda (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 swap-x-for-y 'SP3DX3H4FEYZJZ586MFBS25ZW3HZDMEW92260R2PR.Wrapped-Bitcoin 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token dx u0))))
(ok (unwrap-panic (element-at r u1))))
)
(define-public (swap-usda-btc (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-swap-v2-1 swap-y-for-x 'SP3DX3H4FEYZJZ586MFBS25ZW3HZDMEW92260R2PR.Wrapped-Bitcoin 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token dx u0))))
(ok (unwrap-panic (element-at r u0))))
)
(define-public (alex-swap-stx-btc (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.fixed-weight-pool-v1-01 swap-x-for-y 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wstx 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wbtc u50000000 u50000000 (* dx u100) (some u0)))))
(ok (get dy r)))
)
(define-public (alex-swap-btc-stx (dx uint))
(let ((r (unwrap-panic (contract-call? 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.fixed-weight-pool-v1-01 swap-y-for-x 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wstx 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wbtc u50000000 u50000000 dx (some u0)))))
(ok (/ (get dx r) u100)))
)