;; SatGuard KYC Registry
(define-constant err-owner (err u920))
(define-constant err-dup (err u921))
(define-data-var admin principal tx-sender)
(define-data-var kyc-count uint u0)
(define-map kyc-status {who: principal} {verified: bool,level: uint,va: uint,by: principal})
(define-read-only (is-verified (who principal))
(match (map-get? kyc-status {who: who})
k (get verified k)
false))
(define-read-only (get-kyc (who principal)) (map-get? kyc-status {who: who}))
(define-public (set-verified (who principal) (level uint))
(begin
(asserts! (is-eq tx-sender (var-get admin)) err-owner)
(map-set kyc-status {who: who} {verified: true,level: level,va: block-height,by: tx-sender})
(var-set kyc-count (+ (var-get kyc-count) u1))
(print {e: "kyc-verified",who: who,level: level})
(ok true)))
(define-public (revoke-kyc (who principal))
(begin
(asserts! (is-eq tx-sender (var-get admin)) err-owner)
(map-set kyc-status {who: who} {verified: false,level: u0,va: block-height,by: tx-sender})
(print {e: "kyc-revoked",who: who})
(ok true)))
(define-read-only (get-kyc-count) (var-get kyc-count))