@levrbet/shared 0.4.4 → 0.4.6

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.6",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {
@@ -341,6 +341,13 @@ enum ReferralStatus {
341
341
  Completed
342
342
  }
343
343
 
344
+ enum GreylistStatus {
345
+ None // Not flagged — included in Merkle
346
+ Flagged // Active greylist — excluded from Merkle
347
+ Cleared // Admin-cleared — re-included in future epochs
348
+ Confirmed // Admin-confirmed fraud — permanently excluded
349
+ }
350
+
344
351
  model Referral {
345
352
  objectId String @id @default(auto()) @map("_id") @db.ObjectId
346
353
  referrerId String @db.ObjectId
@@ -348,6 +355,7 @@ model Referral {
348
355
  referralCode String
349
356
  referralSource String? // e.g. campaign or link source
350
357
  status ReferralStatus @default(Active)
358
+ greylistStatus GreylistStatus @default(Flagged) // Denormalized flag for fast filtering in fee computation
351
359
 
352
360
  // Relations
353
361
  referrer User @relation("ReferrerRelations", fields: [referrerId], references: [objectId])
@@ -506,3 +514,23 @@ model TransactionHistory {
506
514
  @@index([timestamp])
507
515
  @@index([walletAddress])
508
516
  }
517
+
518
+ model GreylistEntry {
519
+ objectId String @id @default(auto()) @map("_id") @db.ObjectId
520
+ walletAddress String // The greylisted wallet (referrer OR referee)
521
+ status GreylistStatus @default(Flagged)
522
+ reason String // Why flagged (e.g. "velocity anomaly", "wallet clustering", "manual flag")
523
+ source String // What triggered it: "admin", "system:velocity", "system:clustering"
524
+ flaggedBy String? // Admin userId who flagged (null if system-flagged)
525
+ reviewedBy String? // Admin userId who reviewed (cleared/confirmed)
526
+ reviewedAt DateTime? // When reviewed
527
+ reviewNotes String? // Admin notes on review decision
528
+ metadata Json? // Arbitrary data: IP patterns, cluster info, etc.
529
+
530
+ createdAt DateTime @default(now())
531
+ updatedAt DateTime @updatedAt
532
+
533
+ @@index([walletAddress])
534
+ @@index([status])
535
+ @@index([walletAddress, status])
536
+ }