;; 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)))