@levrbet/shared 0.4.4 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@levrbet/shared",
3
- "version": "0.4.4",
3
+ "version": "0.4.5",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {
@@ -341,6 +341,12 @@ enum ReferralStatus {
341
341
  Completed
342
342
  }
343
343
 
344
+ enum GreylistStatus {
345
+ Flagged // Active greylist — excluded from Merkle
346
+ Cleared // Admin-cleared — re-included in future epochs
347
+ Confirmed // Admin-confirmed fraud — permanently excluded
348
+ }
349
+
344
350
  model Referral {
345
351
  objectId String @id @default(auto()) @map("_id") @db.ObjectId
346
352
  referrerId String @db.ObjectId
@@ -348,6 +354,7 @@ model Referral {
348
354
  referralCode String
349
355
  referralSource String? // e.g. campaign or link source
350
356
  status ReferralStatus @default(Active)
357
+ greylistStatus GreylistStatus @default(Flagged) // Denormalized flag for fast filtering in fee computation
351
358
 
352
359
  // Relations
353
360
  referrer User @relation("ReferrerRelations", fields: [referrerId], references: [objectId])
@@ -506,3 +513,23 @@ model TransactionHistory {
506
513
  @@index([timestamp])
507
514
  @@index([walletAddress])
508
515
  }
516
+
517
+ model GreylistEntry {
518
+ objectId String @id @default(auto()) @map("_id") @db.ObjectId
519
+ walletAddress String // The greylisted wallet (referrer OR referee)
520
+ status GreylistStatus @default(Flagged)
521
+ reason String // Why flagged (e.g. "velocity anomaly", "wallet clustering", "manual flag")
522
+ source String // What triggered it: "admin", "system:velocity", "system:clustering"
523
+ flaggedBy String? // Admin userId who flagged (null if system-flagged)
524
+ reviewedBy String? // Admin userId who reviewed (cleared/confirmed)
525
+ reviewedAt DateTime? // When reviewed
526
+ reviewNotes String? // Admin notes on review decision
527
+ metadata Json? // Arbitrary data: IP patterns, cluster info, etc.
528
+
529
+ createdAt DateTime @default(now())
530
+ updatedAt DateTime @updatedAt
531
+
532
+ @@index([walletAddress])
533
+ @@index([status])
534
+ @@index([walletAddress, status])
535
+ }