fake-acct-swap-bitflow-aibtc-sbtc

SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY

Source Code

;; title: fake-acct-swap-bitflow-fake-sbtc
;; version: 1.0.0
;; summary: Adapter to trade fake:sbtc on the Bitflow pool with an agent account.

;; traits

(impl-trait 'SP6382W148DH1J3BMEBGWENZ9AK8DXCN5XJPP01C.aibtc-agent-account-traits.aibtc-dao-swap-adapter)
(use-trait sip010-trait 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.sip-010-trait-ft-standard.sip-010-trait)

;; constants
(define-constant DEPLOYED_BURN_BLOCK burn-block-height)
(define-constant DEPLOYED_STACKS_BLOCK stacks-block-height)
(define-constant SELF (as-contract tx-sender))

(define-constant SBTC_TOKEN 'SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token)
(define-constant DAO_TOKEN .fake-faktory)

;; error codes
(define-constant ERR_INVALID_DAO_TOKEN (err u2300))
(define-constant ERR_SWAP_FAILED (err u2301))
(define-constant ERR_MIN_RECEIVE_REQUIRED (err u2302))

;; data vars

(define-data-var totalBuys uint u0)
(define-data-var totalSells uint u0)

;; public functions

(define-public (buy-dao-token
    (daoToken <sip010-trait>)
    (amount uint)
    (minReceive (optional uint))
  )
  (let ((daoTokenContract (contract-of daoToken)))
    (asserts! (is-eq daoTokenContract DAO_TOKEN) ERR_INVALID_DAO_TOKEN)
    (asserts! (is-some minReceive) ERR_MIN_RECEIVE_REQUIRED)
    (match (contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-core-v-1-2
      swap-x-for-y .xyk-pool-sbtc-fake-v-1-1 SBTC_TOKEN daoToken amount
      (unwrap-panic minReceive)
    )
      success (ok (var-set totalBuys (+ (var-get totalBuys) u1)))
      error
      ERR_SWAP_FAILED
    )
  )
)

(define-public (sell-dao-token
    (daoToken <sip010-trait>)
    (amount uint)
    (minReceive (optional uint))
  )
  (let ((daoTokenContract (contract-of daoToken)))
    (asserts! (is-eq daoTokenContract DAO_TOKEN) ERR_INVALID_DAO_TOKEN)
    (asserts! (is-some minReceive) ERR_MIN_RECEIVE_REQUIRED)
    (match (contract-call? 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-core-v-1-2
      swap-y-for-x .xyk-pool-sbtc-fake-v-1-1 SBTC_TOKEN daoToken amount
      (unwrap-panic minReceive)
    )
      success (ok (var-set totalSells (+ (var-get totalSells) u1)))
      error
      ERR_SWAP_FAILED
    )
  )
)

;; read-only functions

(define-read-only (get-contract-info)
  {
    self: SELF,
    deployedBurnBlock: DEPLOYED_BURN_BLOCK,
    deployedStacksBlock: DEPLOYED_STACKS_BLOCK,
    bitflowCore: 'SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-core-v-1-2,
    swapContract: .xyk-pool-sbtc-fake-v-1-1,
    daoToken: DAO_TOKEN,
  }
)

(define-read-only (get-swap-info)
  {
    totalBuys: (var-get totalBuys),
    totalSells: (var-get totalSells),
    totalSwaps: (+ (var-get totalBuys) (var-get totalSells)),
  }
)

Functions (4)

FunctionAccessArgs
buy-dao-tokenpublicdaoToken: <sip010-trait>, amount: uint, minReceive: (optional uint
sell-dao-tokenpublicdaoToken: <sip010-trait>, amount: uint, minReceive: (optional uint
get-contract-inforead-only
get-swap-inforead-only