Source Code

;; deadman-vault-extensions
;; Optional metadata for vaults (name, category).
;; Vault owners call this contract directly to attach metadata.
;; Reads deadman-vault-core-v2 to verify ownership.

(define-constant ERR-VAULT-NOT-FOUND (err u1000))
(define-constant ERR-NOT-VAULT-OWNER (err u1001))

(define-map vault-metadata uint {
  name: (string-ascii 64),
  category: uint
})

;; Set metadata for a vault (owner only)
(define-public (set-vault-metadata (vault-id uint) (name (string-ascii 64)) (category uint))
  (let ((vault (unwrap! (contract-call? .deadman-vault-core-v2 get-vault vault-id) ERR-VAULT-NOT-FOUND)))
    (asserts! (is-eq tx-sender (get owner vault)) ERR-NOT-VAULT-OWNER)
    (print { event: "metadata-set", vault-id: vault-id, name: name, category: category })
    (ok (map-set vault-metadata vault-id { name: name, category: category }))))

;; Get full metadata for a vault
(define-read-only (get-vault-metadata (vault-id uint))
  (map-get? vault-metadata vault-id))

;; Get vault name only
(define-read-only (get-vault-name (vault-id uint))
  (get name (map-get? vault-metadata vault-id)))

;; Get vault category only
(define-read-only (get-vault-category (vault-id uint))
  (get category (map-get? vault-metadata vault-id)))

Functions (4)

FunctionAccessArgs
set-vault-metadatapublicvault-id: uint, name: (string-ascii 64
get-vault-metadataread-onlyvault-id: uint
get-vault-nameread-onlyvault-id: uint
get-vault-categoryread-onlyvault-id: uint