Problem
Member tier classification exists only in the NestJS backend. The smart contract layer has no knowledge of tiers, making on-chain tier-based rewards unverifiable and gameable.
Proposed Solution
Create contracts/cntr/member_tier.rs defining #[derive(Debug, PartialEq, Clone)] pub enum MemberTier { Bronze, Silver, Gold, Platinum } and implementing pub fn calculate_tier(total_bookings: u32, total_spend_stroops: i128) -> MemberTier. Tier thresholds (either condition triggers upgrade): Bronze = default, Silver = 10+ bookings OR 5,000,000 stroops, Gold = 30+ OR 20,000,000 stroops, Platinum = 100+ OR 100,000,000 stroops. All implementation must live inside contracts/cntr/.
Acceptance Criteria
Problem
Member tier classification exists only in the NestJS backend. The smart contract layer has no knowledge of tiers, making on-chain tier-based rewards unverifiable and gameable.
Proposed Solution
Create
contracts/cntr/member_tier.rsdefining#[derive(Debug, PartialEq, Clone)] pub enum MemberTier { Bronze, Silver, Gold, Platinum }and implementingpub fn calculate_tier(total_bookings: u32, total_spend_stroops: i128) -> MemberTier. Tier thresholds (either condition triggers upgrade): Bronze = default, Silver = 10+ bookings OR 5,000,000 stroops, Gold = 30+ OR 20,000,000 stroops, Platinum = 100+ OR 100,000,000 stroops. All implementation must live insidecontracts/cntr/.Acceptance Criteria
contracts/cntr/member_tier.rsMemberTierenum derivesDebug,PartialEq,CloneSilver)#[cfg(test)]blockcargo test