;; SatGuard Loyalty Points
(define-constant admin tx-sender)
(define-map points principal uint)
(define-data-var total-points uint u0)
(define-read-only (get-points (user principal)) (default-to u0 (map-get? points user)))
(define-read-only (get-total) (var-get total-points))
(define-public (add-points (user principal) (amt uint))
(begin (asserts! (is-eq tx-sender admin) (err u401))
(map-set points user (+ (get-points user) amt))
(var-set total-points (+ (var-get total-points) amt)) (ok true)))
(define-public (redeem-points (amt uint))
(let ((bal (get-points tx-sender)))
(asserts! (>= bal amt) (err u402))
(map-set points tx-sender (- bal amt))
(var-set total-points (- (var-get total-points) amt)) (ok true)))