;; ============================================================================
;; Test Token Y - SIP-010 Fungible Token
;; ============================================================================
;; A simple test token implementing SIP-010 for DEX testing
;; ============================================================================
(impl-trait .sip-010-trait-ft-standard-v2-c4.sip-010-trait)
(define-fungible-token token-y)
(define-constant CONTRACT_OWNER tx-sender)
(define-constant ERR_NOT_AUTHORIZED (err u401))
(define-constant ERR_INSUFFICIENT_BALANCE (err u402))
;; Token metadata
(define-constant TOKEN_NAME "Test Token Y")
(define-constant TOKEN_SYMBOL "TSTY")
(define-constant TOKEN_DECIMALS u6)
(define-constant TOKEN_URI none)
;; SIP-010 Implementation
(define-read-only (get-name)
(ok TOKEN_NAME)
)
(define-read-only (get-symbol)
(ok TOKEN_SYMBOL)
)
(define-read-only (get-decimals)
(ok TOKEN_DECIMALS)
)
(define-read-only (get-balance (account principal))
(ok (ft-get-balance token-y account))
)
(define-read-only (get-total-supply)
(ok (ft-get-supply token-y)
)
)
(define-read-only (get-token-uri)
(ok TOKEN_URI)
)
(define-public (transfer (amount uint) (sender principal) (recipient principal) (memo (optional (buff 34))))
(begin
(asserts! (is-eq tx-sender sender) ERR_NOT_AUTHORIZED)
(try! (ft-transfer? token-y amount sender recipient))
(match memo to-print (print to-print) 0x)
(ok true)
)
)
;; Mint function for testing
(define-public (mint (amount uint) (recipient principal))
(begin
(asserts! (is-eq tx-sender CONTRACT_OWNER) ERR_NOT_AUTHORIZED)
(ft-mint? token-y amount recipient)
)
)