Source Code

(define-trait hyperlink-nft-trait
  ((mint (principal uint (optional (buff 256))) (response bool uint))
   (set-hyperlink (uint (buff 256)) (response bool uint))
   (get-hyperlink (uint) (response (optional (buff 256)) uint))
   (owner-of (uint) (response (optional principal) uint))))

(define-constant token-name u"HyperlinkNFT")
(define-constant token-symbol u"HLNFT")
(define-constant token-decimals u0)
(define-data-var total-supply-var uint u0)
(define-map owners uint principal)
(define-map hyperlinks uint (buff 256))


(define-private (is-restricted) true)
(define-read-only (get-restrict-assets) (is-restricted))


(define-private (get-owner (token-id uint))
  (map-get? owners token-id))

(define-private (do-mint (recipient principal) (token-id uint) (hyperlink (optional (buff 256))))
  (begin
    (map-set owners token-id recipient)
    (match hyperlink
      h (map-set hyperlinks token-id h)
      true)
    (var-set total-supply-var (+ (var-get total-supply-var) u1))
    true))

(define-public (mint (recipient principal) (token-id uint) (hyperlink (optional (buff 256))))
  (if (is-none (get-owner token-id))
      (begin
        (do-mint recipient token-id hyperlink)
        (ok true))
      (err u101)))

(define-public (set-hyperlink (token-id uint) (hyperlink (buff 256)))
  (if (is-some (map-get? owners token-id))
      (begin
        (map-set hyperlinks token-id hyperlink)
        (ok true))
      (err u102)))


(define-private (get-hyperlink-priv (token-id uint))
  (map-get? hyperlinks token-id))

(define-read-only (get-hyperlink (token-id uint))
  (ok (get-hyperlink-priv token-id)))

(define-read-only (owner-of (token-id uint))
  (ok (get-owner token-id)))



Functions (9)

FunctionAccessArgs
owner-ofread-onlytoken-id: uint
is-restrictedprivate
get-restrict-assetsread-only
get-ownerprivatetoken-id: uint
do-mintprivaterecipient: principal, token-id: uint, hyperlink: (optional (buff 256
mintpublicrecipient: principal, token-id: uint, hyperlink: (optional (buff 256
set-hyperlinkpublictoken-id: uint, hyperlink: (buff 256
get-hyperlink-privprivatetoken-id: uint
get-hyperlinkread-onlytoken-id: uint