;; agate-record-27
(define-data-var weight-balance uint u0)
(define-data-var fee-rate uint u4)
(define-data-var owner principal tx-sender)
(define-map deposits principal uint)
(define-public (deposit (amount uint))
(begin
(map-set deposits tx-sender
(+ (default-to u0 (map-get? deposits tx-sender)) amount))
(var-set weight-balance (+ (var-get weight-balance) amount))
(ok amount)))
(define-public (withdraw (amount uint))
(let ((balance (default-to u0 (map-get? deposits tx-sender))))
(if (>= balance amount)
(begin
(map-set deposits tx-sender (- balance amount))
(var-set weight-balance (- (var-get weight-balance) amount))
(ok amount))
(err u1))))
(define-read-only (get-balance (who principal))
(ok (default-to u0 (map-get? deposits who))))
(define-read-only (get-total-balance)
(ok (var-get weight-balance)))
(define-read-only (get-fee-rate)
(ok (var-get fee-rate)))