Source Code

;; SatGuard Risk Tiers
(define-constant err-owner (err u310))
(define-constant err-nf (err u311))
(define-constant err-amt (err u312))
(define-data-var admin principal tx-sender)
(define-map pool-tiers {pid: uint} {tier: uint,sa: uint,by: principal})
(define-read-only (get-pool-tier (pid uint)) (map-get? pool-tiers {pid: pid}))
(define-public (set-pool-tier (pid uint) (tier uint))
  (let ((pool (unwrap! (contract-call? .insurance-pool get-pool pid) err-nf)))
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (asserts! (<= tier u4) err-amt)
    (asserts! (> tier u0) err-amt)
    (map-set pool-tiers {pid: pid} {tier: tier,sa: block-height,by: tx-sender})
    (print {e: "tier-set",pid: pid,tier: tier})
    (ok true)))
(define-read-only (get-tier-label (tier uint))
  (ok (if (is-eq tier u1) "low"
      (if (is-eq tier u2) "medium"
      (if (is-eq tier u3) "high" "critical")))))
(define-public (auto-set-tier (pid uint))
  (let ((rl (unwrap! (contract-call? .sg-risk-calculator get-risk-level pid) err-nf)))
    (map-set pool-tiers {pid: pid} {tier: rl,sa: block-height,by: tx-sender})
    (print {e: "auto-tier-set",pid: pid,tier: rl})
    (ok rl)))

Functions (4)

FunctionAccessArgs
get-pool-tierread-onlypid: uint
set-pool-tierpublicpid: uint, tier: uint
get-tier-labelread-onlytier: uint
auto-set-tierpublicpid: uint