{"source":";; Vaults Operations\n;; User operations on vaults (create, update, close) and yield settlement\n;;\n;; v2-1: adds pending-yield claiming and stability-fee budget settlement\n\n(use-trait ft-trait 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.sip-010-trait-ft-standard.sip-010-trait)\n(use-trait vaults-pool-active-trait 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-vaults-pool-active-trait-v1-1.vaults-pool-active-trait)\n\n(define-constant ERR_NOT_AUTHORIZED (err u24001))\n(define-constant ERR_WRONG_TRAIT (err u24002))\n(define-constant ERR_INVALID_AMOUNT (err u24003))\n(define-constant ERR_SHUTDOWN (err u24004))\n\n(define-data-var shutdown-activated bool false)\n(define-data-var mint-fee uint u50)\n(define-data-var yield-settlement-enabled bool true)\n\n;; ---------------------------------------------------------\n;; Admin\n;; ---------------------------------------------------------\n\n(define-public (set-shutdown-activated (activated bool))\n  (begin\n    (asserts! (is-eq contract-caller (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-dao get-dao-owner)) ERR_NOT_AUTHORIZED)\n    (var-set shutdown-activated activated)\n    (ok true)\n  )\n)\n\n(define-public (set-mint-fee (fee uint))\n  (begin\n    (asserts! (is-eq contract-caller (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-dao get-dao-owner)) ERR_NOT_AUTHORIZED)\n    (var-set mint-fee fee)\n    (ok true)\n  )\n)\n\n;; ---------------------------------------------------------\n;; Yield & fee settlement\n;; ---------------------------------------------------------\n\n;; @desc claim pending yield accrued in the active pool for a given collateral token\n;; @param vaults-pool-active; current active pool\n;; @param token; collateral token to claim yield for\n;; @param amount; amount of accrued yield to claim\n;; @param payout; address to receive the claimed yield\n(define-public (claim-pending-yield\n  (vaults-pool-active <vaults-pool-active-trait>)\n  (token <ft-trait>)\n  (amount uint)\n  (payout principal)\n)\n  (begin\n    (asserts! (not (var-get shutdown-activated)) ERR_SHUTDOWN)\n    (asserts! (var-get yield-settlement-enabled) ERR_NOT_AUTHORIZED)\n    (asserts! (> amount u0) ERR_INVALID_AMOUNT)\n    (asserts! (is-eq (contract-of vaults-pool-active) (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-dao get-qualified-name-by-name \"vaults-pool-active\"))) ERR_WRONG_TRAIT)\n\n    (try! (contract-call? vaults-pool-active withdraw token payout amount))\n\n    (print { type: \"vaults-operations\", action: \"yield-claimed\", data: { amount: amount, payout: payout } })\n    (ok true)\n  )\n)\n\n;; @desc settle the USDA stability-fee budget for the current epoch\n;; @param amount; USDA amount to allocate for settlement\n;; @param payout; settlement address\n(define-public (settle-fee-budget (amount uint) (payout principal))\n  (begin\n    (asserts! (not (var-get shutdown-activated)) ERR_SHUTDOWN)\n    (asserts! (> amount u0) ERR_INVALID_AMOUNT)\n\n    (try! (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-dao\n      mint-token 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.usda-token amount payout))\n\n    (print { type: \"vaults-operations\", action: \"fee-budget-settled\", data: { amount: amount, payout: payout } })\n    (ok true)\n  )\n)\n\n;; ---------------------------------------------------------\n;; Getters\n;; ---------------------------------------------------------\n\n(define-read-only (get-shutdown-activated)\n  (ok (var-get shutdown-activated))\n)\n\n(define-read-only (get-mint-fee)\n  (ok (var-get mint-fee))\n)\n\n(define-read-only (get-version)\n  (ok \"arkadiko-vaults-operations-v2-1\")\n)\n","publish_height":9236915}