stacks-3ridge-seoul-meetup-2023-nft-mint

SP3FDQ01MQTCT2E4820M28NHMW6CKMMFVBC8KSRR8

Source Code

;; Storage
(define-map presale-count principal uint)
(define-map treasure-count principal uint)

;; Define Constants
(define-constant CONTRACT-OWNER tx-sender)

;; Define error codes
(define-constant ERR-NOT-AUTHORIZED (err u201))
(define-constant ERR-SALE-NOT-ACTIVE (err u202))
(define-constant ERR-NO-TREASURE-AMOUNT-REMAINING (err u203))
(define-constant ERR-NO-PRE-SALE-REMAINING (err u204))

;; Define Variables
(define-data-var pre-sale-active bool false)
(define-data-var public-sale-active bool false)

;; Get activation of sale
(define-read-only (get-pre-sale-active)
  (ok (var-get pre-sale-active)))

(define-read-only (get-public-sale-active)
  (ok (var-get public-sale-active)))

;; Get balance of treasure
(define-read-only (get-treasure-balance (account principal))
  (default-to u0
    (map-get? treasure-count account)))

;; Get balance of pre sale
(define-read-only (get-presale-balance (account principal))
  (default-to u0
    (map-get? presale-count account)))

;; Mint: a new NFT
(define-public (mint)
  (if (var-get pre-sale-active)
    (pre-mint tx-sender)
    (public-mint tx-sender)))

(define-public (mint-two)
  (begin
    (try! (mint))
    (try! (mint))
    (ok true)))

(define-public (mint-three)
  (begin
    (try! (mint))
    (try! (mint))
    (try! (mint))
    (ok true)))

(define-public (mint-four)
  (begin
    (try! (mint))
    (try! (mint))
    (try! (mint))
    (try! (mint))
    (ok true)))

(define-public (mint-five)
  (begin
    (try! (mint))
    (try! (mint))
    (try! (mint))
    (try! (mint))
    (try! (mint))
    (ok true)))

(define-private (treasure-mint (new-owner principal))
  (begin
    (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner))
    (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner))
    (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner))
    (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner))
    (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner))
    (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner))
    (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner))
    (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner))
    (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner))
    (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner)) (try! (pre-treasure-mint new-owner))
    (ok true)))

;; Mint: reward NFT
(define-private (reward-mint (new-owner principal))
  (begin
    (try! (pre-treasure-mint new-owner))
    (ok true)))

;; Mint: treasure NFT
(define-private (pre-treasure-mint (new-owner principal))
  (let ((treasure-balance (get-treasure-balance new-owner)))
      (asserts! (> treasure-balance u0) ERR-NO-TREASURE-AMOUNT-REMAINING)
      (map-set treasure-count
                new-owner
                (- treasure-balance u1))
      (contract-call? .stacks-3ridge-seoul-meetup-2023-nft treasure-mint new-owner)))

;; Mint: pre sale NFT
(define-private (pre-mint (new-owner principal))
  (let ((presale-balance (get-presale-balance new-owner)))
    (asserts! (> presale-balance u0) ERR-NO-PRE-SALE-REMAINING)
    (map-set presale-count
              new-owner
              (- presale-balance u1))
  (contract-call? .stacks-3ridge-seoul-meetup-2023-nft mint new-owner)))

;; Mint: public sale NFT
(define-private (public-mint (new-owner principal))
  (begin
    (asserts! (var-get public-sale-active) ERR-SALE-NOT-ACTIVE)
    (contract-call? .stacks-3ridge-seoul-meetup-2023-nft mint new-owner)))

;; Flip flag for pre sale
(define-public (flip-pre-sale)
  (begin
    (asserts! (is-eq tx-sender CONTRACT-OWNER) ERR-NOT-AUTHORIZED)
    ;; Disable the Public sale
    (var-set public-sale-active false)
    (var-set pre-sale-active (not (var-get pre-sale-active)))
    (ok (var-get pre-sale-active))))

;; Flip flag for public sale
(define-public (flip-public-sale)
  (begin
    (asserts! (is-eq tx-sender CONTRACT-OWNER) ERR-NOT-AUTHORIZED)
    ;; Disable the public sale
    (var-set pre-sale-active false)
    (var-set public-sale-active (not (var-get public-sale-active)))
    (ok (var-get public-sale-active))))

;; Initialize address for minting
(as-contract (contract-call? .stacks-3ridge-seoul-meetup-2023-nft set-mint-address))

;; Treasure Mint Addresses
(map-set treasure-count CONTRACT-OWNER u50)
(map-set treasure-count 'SP1997REHPBDBRRWRHCTF693SHS0TDEA6V84TKYZV u1)
(map-set treasure-count 'SP3B12KNF2WWXPMTY5GK3S9D8HG2W6ZG9H84NB6T4 u1)
(map-set treasure-count 'SP1ZJHN74VH26SPHHJB4YP6NSEYVKFZD1W0ZK5K9H u1)
(map-set treasure-count 'SP20KFMW5NAQATXXG8MMB8ESGB33XYAEK1TBTR8J8 u1)
(map-set treasure-count 'SP31A0B5K60KHWM3S3JD0B47TG3R43PT1KRV7V53B u1)
(map-set treasure-count 'SP2FYNJVHG0CJDMYCCVK4AB0WBD561TW0YP7M4PVA u1)
(map-set treasure-count 'SPA5RK3DBP26GHD5Z462JRME33GQWXWAVX359FAJ u1)
(map-set treasure-count 'SP2TSP9H8877HZX69B9JQ2EM2JP97XJNZEKJTE2ZT u1)
(map-set treasure-count 'SP3D4C9J5GX7WN3Z4X1SXE3A88MJYKM41YS7GHEDY u1)
(map-set treasure-count 'SPJ9J39D9FDFXM3FC31Z5QGC31FAEMRJ13WPXJMY u1)
(map-set treasure-count 'SP1VEQYSMWF1J3XV35XVCFXY8YW2E92QMPG2VT5WR u1)
(map-set treasure-count 'SP2YXPVMEVPGT5ZP071CCA2ZZC68EYQ72J5ES0R19 u1)
(map-set treasure-count 'SP1CD4CH173PM3STX545S40GFNGTVQAJ85BTQEMEN u1)
(map-set treasure-count 'SP1BH6PQFJ69BNKM6A2MQ10V7J6PFT7JXHNDYF0WQ u1)
(map-set treasure-count 'SP1NGMS9Z48PRXFAG2MKBSP0PWERF07C0KV9SPJ66 u1)

;; Treasure Mint
;; (treasure-mint tx-sender)

;; 3ridge Reward Mint
(reward-mint 'SP1997REHPBDBRRWRHCTF693SHS0TDEA6V84TKYZV)
(reward-mint 'SP3B12KNF2WWXPMTY5GK3S9D8HG2W6ZG9H84NB6T4)
(reward-mint 'SP1ZJHN74VH26SPHHJB4YP6NSEYVKFZD1W0ZK5K9H)
(reward-mint 'SP20KFMW5NAQATXXG8MMB8ESGB33XYAEK1TBTR8J8)
(reward-mint 'SP31A0B5K60KHWM3S3JD0B47TG3R43PT1KRV7V53B)
(reward-mint 'SP2FYNJVHG0CJDMYCCVK4AB0WBD561TW0YP7M4PVA)
(reward-mint 'SPA5RK3DBP26GHD5Z462JRME33GQWXWAVX359FAJ)
(reward-mint 'SP2TSP9H8877HZX69B9JQ2EM2JP97XJNZEKJTE2ZT)
(reward-mint 'SP3D4C9J5GX7WN3Z4X1SXE3A88MJYKM41YS7GHEDY)
(reward-mint 'SPJ9J39D9FDFXM3FC31Z5QGC31FAEMRJ13WPXJMY)
(reward-mint 'SP1VEQYSMWF1J3XV35XVCFXY8YW2E92QMPG2VT5WR)
(reward-mint 'SP2YXPVMEVPGT5ZP071CCA2ZZC68EYQ72J5ES0R19)
(reward-mint 'SP1CD4CH173PM3STX545S40GFNGTVQAJ85BTQEMEN)
(reward-mint 'SP1BH6PQFJ69BNKM6A2MQ10V7J6PFT7JXHNDYF0WQ)
(reward-mint 'SP1NGMS9Z48PRXFAG2MKBSP0PWERF07C0KV9SPJ66)

Functions (16)

FunctionAccessArgs
get-pre-sale-activeread-only
get-public-sale-activeread-only
get-treasure-balanceread-onlyaccount: principal
get-presale-balanceread-onlyaccount: principal
mintpublic
mint-twopublic
mint-threepublic
mint-fourpublic
mint-fivepublic
treasure-mintprivatenew-owner: principal
reward-mintprivatenew-owner: principal
pre-treasure-mintprivatenew-owner: principal
pre-mintprivatenew-owner: principal
public-mintprivatenew-owner: principal
flip-pre-salepublic
flip-public-salepublic