;; agate-marker
(define-map tokens principal bool)
(define-data-var list-size uint u0)
(define-data-var max-size uint u424)
(define-data-var admin principal tx-sender)
(define-public (add (who principal))
(if (is-eq tx-sender (var-get admin))
(if (< (var-get list-size) (var-get max-size))
(begin
(map-set tokens who true)
(var-set list-size (+ (var-get list-size) u1))
(ok true))
(err u2))
(err u1)))
(define-public (remove (who principal))
(if (is-eq tx-sender (var-get admin))
(begin
(map-set tokens who false)
(var-set list-size (- (var-get list-size) u1))
(ok true))
(err u1)))
(define-read-only (is-whitelisted (who principal))
(ok (default-to false (map-get? tokens who))))
(define-read-only (get-size)
(ok (var-get list-size)))