;; SatGuard TVL Tracker
(define-constant err-owner (err u1030))
(define-data-var admin principal tx-sender)
(define-data-var current-tvl uint u0)
(define-data-var h-nonce uint u0)
(define-map tvl-history {idx: uint} {tvl: uint,pools: uint,bh: uint})
(define-read-only (get-tvl) (var-get current-tvl))
(define-read-only (get-tvl-entry (idx uint)) (map-get? tvl-history {idx: idx}))
(define-read-only (get-history-count) (var-get h-nonce))
(define-public (update-tvl (tvl uint) (pools uint))
(let ((nid (+ (var-get h-nonce) u1)))
(asserts! (is-eq tx-sender (var-get admin)) err-owner)
(var-set current-tvl tvl)
(map-set tvl-history {idx: nid} {tvl: tvl,pools: pools,bh: block-height})
(var-set h-nonce nid)
(print {e: "tvl-updated",tvl: tvl,pools: pools})
(ok nid)))
(define-public (add-to-tvl (amt uint))
(begin
(asserts! (is-eq tx-sender (var-get admin)) err-owner)
(var-set current-tvl (+ (var-get current-tvl) amt))
(print {e: "tvl-increased",amt: amt,new-tvl: (var-get current-tvl)})
(ok true)))
(define-public (sub-from-tvl (amt uint))
(begin
(asserts! (is-eq tx-sender (var-get admin)) err-owner)
(var-set current-tvl (if (>= (var-get current-tvl) amt) (- (var-get current-tvl) amt) u0))
(print {e: "tvl-decreased",amt: amt,new-tvl: (var-get current-tvl)})
(ok true)))