(define-constant O tx-sender)
(define-constant E1 (err u720))
(define-constant E2 (err u721))
(define-constant E3 (err u722))
(define-data-var global-min uint u100000)
(define-data-var global-max uint u100000000000)
(define-map market-min uint uint)
(define-map market-max uint uint)
(define-public (set-global-limits (mn uint) (mx uint))
(begin (asserts! (is-eq tx-sender O) E1)
(asserts! (< mn mx) E2)
(var-set global-min mn)
(var-set global-max mx)
(ok true)))
(define-public (set-market-limits (mid uint) (mn uint) (mx uint))
(begin (asserts! (is-eq tx-sender O) E1)
(asserts! (< mn mx) E2)
(map-set market-min mid mn)
(map-set market-max mid mx)
(ok true)))
(define-read-only (check-amount (mid uint) (amt uint))
(let ((mn (default-to (var-get global-min) (map-get? market-min mid)))
(mx (default-to (var-get global-max) (map-get? market-max mid))))
(and (>= amt mn) (<= amt mx))))
(define-read-only (get-limits (mid uint))
{min: (default-to (var-get global-min) (map-get? market-min mid)),
max: (default-to (var-get global-max) (map-get? market-max mid))})
(define-read-only (get-global-limits)
{min: (var-get global-min), max: (var-get global-max)})