(define-constant E1 (err u840))
(define-constant MAX-FAVS u20)
(define-map favorites {user: principal, idx: uint} uint)
(define-map fav-count principal uint)
(define-public (add-favorite (mid uint))
(let ((cnt (default-to u0 (map-get? fav-count tx-sender))))
(asserts! (< cnt MAX-FAVS) E1)
(map-set favorites {user: tx-sender, idx: cnt} mid)
(map-set fav-count tx-sender (+ cnt u1))
(ok true)))
(define-public (clear-favorites)
(ok (map-set fav-count tx-sender u0)))
(define-read-only (get-favorite (u principal) (idx uint))
(map-get? favorites {user: u, idx: idx}))
(define-read-only (get-fav-count (u principal))
(default-to u0 (map-get? fav-count u)))