Source Code

;; StackSusu Traits v4
;; Enhanced trait definitions for v6 contracts

;; Admin management trait
(define-trait admin-trait
  (
    (is-paused () (response bool uint))
    (get-admin-fee-bps () (response uint uint))
    (get-treasury () (response principal uint))
    (record-fee (uint) (response bool uint))
    (get-multi-sig-threshold () (response uint uint))
  )
)

;; Core circle trait
(define-trait core-trait
  (
    (get-circle-info (uint) (response (optional {
      creator: principal,
      name: (string-ascii 50),
      contribution: uint,
      max-members: uint,
      payout-interval: uint,
      status: uint,
      current-round: uint,
      member-count: uint
    }) uint))
    (is-member (uint principal) (response bool uint))
    (get-member-slot (uint principal) (response uint uint))
  )
)

;; Reputation trait (enhanced in v4)
(define-trait reputation-trait
  (
    (get-member-score (principal) (response uint uint))
    (record-completion (principal uint uint bool) (response bool uint))
    (record-default (principal uint) (response bool uint))
    (meets-requirement (principal uint) (response bool uint))
    (initialize-member (principal) (response bool uint))
    (record-contribution (principal uint) (response bool uint))
    (get-badge-count (principal) (response uint uint))
    (apply-decay (principal) (response uint uint))
  )
)

;; Referral trait (enhanced in v4)
(define-trait referral-trait
  (
    (register-referral (principal) (response bool uint))
    (record-activity (principal uint) (response uint uint))
    (has-referrer (principal) (response bool uint))
    (get-referral-chain (principal) (response (list 3 principal) uint))
  )
)

;; Escrow trait (new in v4)
(define-trait escrow-trait
  (
    (get-balance (uint principal) (response uint uint))
    (lock-funds (uint principal uint) (response bool uint))
    (release-funds (uint principal uint) (response bool uint))
    (get-dispute-status (uint) (response uint uint))
  )
)

;; Governance trait (new in v4)
(define-trait governance-trait
  (
    (get-proposal (uint) (response (optional {
      circle-id: uint,
      proposer: principal,
      status: uint,
      votes-for: uint,
      votes-against: uint
    }) uint))
    (get-voting-power (uint principal) (response uint uint))
    (has-voted (uint principal) (response bool uint))
  )
)

;; Emergency trait (new in v4)
(define-trait emergency-trait
  (
    (can-request-emergency (uint principal) (response bool uint))
    (get-insurance-pool-balance () (response uint uint))
  )
)

;; SIP-009 NFT trait
(define-trait sip009-nft-trait
  (
    (get-last-token-id () (response uint uint))
    (get-token-uri (uint) (response (optional (string-ascii 256)) uint))
    (get-owner (uint) (response (optional principal) uint))
    (transfer (uint principal principal) (response bool uint))
  )
)

;; SIP-010 Fungible Token trait (for future token integration)
(define-trait sip010-ft-trait
  (
    (transfer (uint principal principal (optional (buff 34))) (response bool uint))
    (get-balance (principal) (response uint uint))
    (get-total-supply () (response uint uint))
  )
)