;; MembershipIssuerTrait
;; Defines the interface for creating and managing memberships
;; Implementers can issue, renew, and cancel memberships
(define-trait membership-issuer-trait
(
;; Issue a new membership to a principal
;; Returns membership ID on success
(issue-membership (principal uint uint) (response uint uint))
;; Renew an existing membership
;; Extends the expiration time
(renew-membership (principal uint) (response bool uint))
;; Cancel a membership before expiration
;; Maintains record of cancellation
(cancel-membership (principal uint) (response bool uint))
;; Update membership tier
;; Allows tier upgrades/downgrades
(update-membership-tier (principal uint uint) (response bool uint))
;; Transfer membership to another principal
;; Maintains ownership chain
(transfer-membership (principal principal uint) (response bool uint))
;; Get total memberships issued by this issuer
(get-total-memberships () (response uint uint))
;; Check if a principal holds a valid membership
(is-member (principal) (response bool uint))
;; Get membership expiration timestamp
(get-membership-expiration (principal) (response uint uint))
)
)