(define-constant O tx-sender)
(define-constant E1 (err u1010))
(define-map daily-volume uint uint)
(define-map daily-users uint uint)
(define-map daily-markets uint uint)
(define-map trending uint {mid: uint, volume: uint})
(define-public (record-volume (day uint) (amt uint))
(let ((cur (default-to u0 (map-get? daily-volume day))))
(ok (map-set daily-volume day (+ cur amt)))))
(define-public (record-daily-user (day uint))
(let ((cur (default-to u0 (map-get? daily-users day))))
(ok (map-set daily-users day (+ cur u1)))))
(define-public (record-daily-market (day uint))
(let ((cur (default-to u0 (map-get? daily-markets day))))
(ok (map-set daily-markets day (+ cur u1)))))
(define-public (set-trending (rank uint) (mid uint) (volume uint))
(begin (asserts! (is-eq tx-sender O) E1)
(ok (map-set trending rank {mid: mid, volume: volume}))))
(define-read-only (get-daily-volume (day uint))
(default-to u0 (map-get? daily-volume day)))
(define-read-only (get-daily-users (day uint))
(default-to u0 (map-get? daily-users day)))
(define-read-only (get-daily-markets (day uint))
(default-to u0 (map-get? daily-markets day)))
(define-read-only (get-trending (rank uint))
(map-get? trending rank))