Source Code


;; wrapper-alex-v-2-2

(use-trait ft-trait 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.trait-sip-010.sip-010-trait)

(define-read-only (get-helper
    (token-x principal) (token-y principal)
    (factor uint)
    (dx uint)
    (provider (optional principal))
  )
  (let (
    (amount-after-aggregator-fees (try! (get-aggregator-fees provider dx)))
    (call-a (try! (contract-call?
                  'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01 get-helper
                  token-x token-y
                  factor
                  amount-after-aggregator-fees)))
  )
    (ok call-a)
  )
)

(define-read-only (get-helper-a
    (token-x principal) (token-y principal)
    (token-z principal)
    (factor-x uint) (factor-y uint)
    (dx uint)
    (provider (optional principal))
  )
  (let (
    (amount-after-aggregator-fees (try! (get-aggregator-fees provider dx)))
    (call-a (try! (contract-call?
                  'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01 get-helper-a
                  token-x token-y
                  token-z
                  factor-x factor-y
                  amount-after-aggregator-fees)))
  )
    (ok call-a)
  )
)

(define-read-only (get-helper-b
    (token-x principal) (token-y principal)
    (token-z principal) (token-w principal)
    (factor-x uint) (factor-y uint) (factor-z uint)
    (dx uint)
    (provider (optional principal))
  )
  (let (
    (amount-after-aggregator-fees (try! (get-aggregator-fees provider dx)))
    (call-a (try! (contract-call?
                  'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01 get-helper-b
                  token-x token-y
                  token-z token-w
                  factor-x factor-y factor-z
                  amount-after-aggregator-fees)))
  )
    (ok call-a)
  )
)

(define-read-only (get-helper-c
    (token-x principal) (token-y principal)
    (token-z principal) (token-w principal)
    (token-v principal)
    (factor-x uint) (factor-y uint) (factor-z uint) (factor-w uint)
    (dx uint)
    (provider (optional principal))
  )
  (let (
    (amount-after-aggregator-fees (try! (get-aggregator-fees provider dx)))
    (call-a (try! (contract-call?
                  'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01 get-helper-c
                  token-x token-y
                  token-z token-w
                  token-v
                  factor-x factor-y factor-z factor-w
                  amount-after-aggregator-fees)))
  )
    (ok call-a)
  )
)

(define-public (swap-helper
    (token-x-trait <ft-trait>) (token-y-trait <ft-trait>)
    (factor uint)
    (dx uint) (min-dy (optional uint))
    (provider (optional principal))
  )
  (let (
    (amount-after-aggregator-fees (try! (transfer-aggregator-fees token-x-trait provider dx)))
    (swap-a (try! (contract-call?
                  'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01 swap-helper
                  token-x-trait token-y-trait
                  factor
                  amount-after-aggregator-fees min-dy)))
  )
    (print {
      action: "swap-helper",
      caller: tx-sender,
      data: {
        amount: dx,
        amount-after-aggregator-fees: amount-after-aggregator-fees,
        min-received: min-dy,
        received: swap-a,
        provider: provider,
        token-x-trait: token-x-trait,
        token-y-trait: token-y-trait,
        factor: factor
      }
    })
    (ok swap-a)
  )
)

(define-public (swap-helper-a
    (token-x-trait <ft-trait>) (token-y-trait <ft-trait>)
    (token-z-trait <ft-trait>)
    (factor-x uint) (factor-y uint)
    (dx uint) (min-dz (optional uint))
    (provider (optional principal))
  )
  (let (
    (amount-after-aggregator-fees (try! (transfer-aggregator-fees token-x-trait provider dx)))
    (swap-a (try! (contract-call?
                  'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01 swap-helper-a
                  token-x-trait token-y-trait
                  token-z-trait
                  factor-x factor-y
                  amount-after-aggregator-fees min-dz)))
  )
    (print {
      action: "swap-helper-a",
      caller: tx-sender,
      data: {
        amount: dx,
        amount-after-aggregator-fees: amount-after-aggregator-fees,
        min-received: min-dz,
        received: swap-a,
        provider: provider,
        token-x-trait: token-x-trait,
        token-y-trait: token-y-trait,
        token-z-trait: token-z-trait,
        factor-x: factor-x,
        factor-y: factor-y
      }
    })
    (ok swap-a)
  )
)

(define-public (swap-helper-b
    (token-x-trait <ft-trait>) (token-y-trait <ft-trait>)
    (token-z-trait <ft-trait>) (token-w-trait <ft-trait>)
    (factor-x uint) (factor-y uint) (factor-z uint)
    (dx uint) (min-dw (optional uint))
    (provider (optional principal))
  )
  (let (
    (amount-after-aggregator-fees (try! (transfer-aggregator-fees token-x-trait provider dx)))
    (swap-a (try! (contract-call?
                  'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01 swap-helper-b
                  token-x-trait token-y-trait
                  token-z-trait token-w-trait
                  factor-x factor-y factor-z
                  amount-after-aggregator-fees min-dw)))
  )
    (print {
      action: "swap-helper-b",
      caller: tx-sender,
      data: {
        amount: dx,
        amount-after-aggregator-fees: amount-after-aggregator-fees,
        min-received: min-dw,
        received: swap-a,
        provider: provider,
        token-x-trait: token-x-trait,
        token-y-trait: token-y-trait,
        token-z-trait: token-z-trait,
        token-w-trait: token-w-trait,
        factor-x: factor-x,
        factor-y: factor-y,
        factor-z: factor-z
      }
    })
    (ok swap-a)
  )
)

(define-public (swap-helper-c
    (token-x-trait <ft-trait>) (token-y-trait <ft-trait>)
    (token-z-trait <ft-trait>) (token-w-trait <ft-trait>)
    (token-v-trait <ft-trait>)
    (factor-x uint) (factor-y uint) (factor-z uint) (factor-w uint)
    (dx uint) (min-dv (optional uint))
    (provider (optional principal))
  )
  (let (
    (amount-after-aggregator-fees (try! (transfer-aggregator-fees token-x-trait provider dx)))
    (swap-a (try! (contract-call?
                  'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01 swap-helper-c
                  token-x-trait token-y-trait
                  token-z-trait token-w-trait
                  token-v-trait
                  factor-x factor-y factor-z factor-w
                  amount-after-aggregator-fees min-dv)))
  )
    (print {
      action: "swap-helper-c",
      caller: tx-sender,
      data: {
        amount: dx,
        amount-after-aggregator-fees: amount-after-aggregator-fees,
        min-received: min-dv,
        received: swap-a,
        provider: provider,
        token-x-trait: token-x-trait,
        token-y-trait: token-y-trait,
        token-z-trait: token-z-trait,
        token-w-trait: token-w-trait,
        token-v-trait: token-v-trait,
        factor-x: factor-x,
        factor-y: factor-y,
        factor-z: factor-z,
        factor-w: factor-w
      }
    })
    (ok swap-a)
  )
)

(define-private (get-aggregator-fees (provider (optional principal)) (amount uint))
  (let (
    (call-a (try! (contract-call?
                  'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.aggregator-core-v-1-1 get-aggregator-fees
                  (as-contract tx-sender) provider amount)))
    (amount-after-fees (- amount (get amount-fees-total call-a)))
  )
    (ok amount-after-fees)
  )
)

(define-private (transfer-aggregator-fees (token <ft-trait>) (provider (optional principal)) (amount uint))
  (let (
    (call-a (try! (contract-call?
                  'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.aggregator-core-v-1-1 transfer-aggregator-fees
                  token (as-contract tx-sender) provider amount)))
    (amount-after-fees (- amount (get amount-fees-total call-a)))
  )
    (ok amount-after-fees)
  )
)

Functions (10)

FunctionAccessArgs
get-helperread-onlytoken-x: principal, token-y: principal, factor: uint, dx: uint, provider: (optional principal
get-helper-aread-onlytoken-x: principal, token-y: principal, token-z: principal, factor-x: uint, factor-y: uint, dx: uint, provider: (optional principal
get-helper-bread-onlytoken-x: principal, token-y: principal, token-z: principal, token-w: principal, factor-x: uint, factor-y: uint, factor-z: uint, dx: uint, provider: (optional principal
get-helper-cread-onlytoken-x: principal, token-y: principal, token-z: principal, token-w: principal, token-v: principal, factor-x: uint, factor-y: uint, factor-z: uint, factor-w: uint, dx: uint, provider: (optional principal
swap-helperpublictoken-x-trait: <ft-trait>, token-y-trait: <ft-trait>, factor: uint, dx: uint, min-dy: (optional uint
swap-helper-apublictoken-x-trait: <ft-trait>, token-y-trait: <ft-trait>, token-z-trait: <ft-trait>, factor-x: uint, factor-y: uint, dx: uint, min-dz: (optional uint
swap-helper-bpublictoken-x-trait: <ft-trait>, token-y-trait: <ft-trait>, token-z-trait: <ft-trait>, token-w-trait: <ft-trait>, factor-x: uint, factor-y: uint, factor-z: uint, dx: uint, min-dw: (optional uint
swap-helper-cpublictoken-x-trait: <ft-trait>, token-y-trait: <ft-trait>, token-z-trait: <ft-trait>, token-w-trait: <ft-trait>, token-v-trait: <ft-trait>, factor-x: uint, factor-y: uint, factor-z: uint, factor-w: uint, dx: uint, min-dv: (optional uint
get-aggregator-feesprivateprovider: (optional principal
transfer-aggregator-feesprivatetoken: <ft-trait>, provider: (optional principal