(define-map tokens uint {creator: principal, name: (string-ascii 50), symbol: (string-ascii 10), supply: uint, contract: principal})
(define-data-var token-count uint u0)
(define-read-only (get-token (id uint)) (map-get? tokens id))
(define-public (register-token (name (string-ascii 50)) (symbol (string-ascii 10)) (supply uint) (contract principal))
(let ((id (var-get token-count)))
(map-set tokens id {creator: tx-sender, name: name, symbol: symbol, supply: supply, contract: contract})
(var-set token-count (+ id u1))
(ok id)))