module circle import freeflowuniverse.herolib.hero.models.core // Wallet represents a wallet associated with a circle for financial operations pub struct User { core.Base pub mut: username string // Unique username for the user @[index] pubkey string // Public key for cryptographic operations @[index] email []string @[index] // User's email addresses, needs to be considered unique and can be multiple status UserStatus // Current user status userprofile []SecretBox // User profile information stored in a secret box kyc []SecretBox // KYC information stored in a secret box } pub enum UserStatus { active inactive suspended archived } pub struct UserProfile { pub mut: user_id u32 // Reference to the user entity @[index] full_name string // Full name of the user bio string // Short biography or description profile_pic string // URL to the user's profile picture links map[string]string // Social media or other relevant links metadata map[string]string // Additional metadata associated with the user profile } pub struct KYCInfo { pub mut: user_id u32 // Reference to the user entity @[index] full_name string // Full name of the user date_of_birth u64 // Unix timestamp of user's date of birth address string // User's residential address phone_number string // User's phone number id_number string // Government-issued ID number (e.g., passport, driver's license) id_type string // Type of ID (e.g., "passport", "driver's license") id_expiry u64 // Unix timestamp of ID expiry date kyc_status KYCStatus // Current KYC status kyc_verified bool // Whether the KYC information has been verified kyc_verified_by u32 // User ID of the person who verified the KYC kyc_verified_at u64 // Unix timestamp when KYC was verified kyc_rejected_reason string // Reason for KYC rejection, if applicable kyc_signature u32 // Signature of the user for KYC verification metadata map[string]string // Additional metadata associated with the user profile } pub enum KYCStatus { pending approved rejected }