@levrbet/shared 0.1.189 → 0.1.191

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.
@@ -6,6 +6,7 @@ export declare const allUrls: {
6
6
  oraclePeriphery: string;
7
7
  oracleProcessors: string;
8
8
  relayer: string;
9
+ referrals: string;
9
10
  indexers: {
10
11
  10143: {
11
12
  type: LevrIndexer;
@@ -19,6 +20,7 @@ export declare const allUrls: {
19
20
  oraclePeriphery: string;
20
21
  oracleProcessors: string;
21
22
  relayer: string;
23
+ referrals: string;
22
24
  indexers: {
23
25
  10143: {
24
26
  type: LevrIndexer;
@@ -32,6 +34,7 @@ export declare const allUrls: {
32
34
  oraclePeriphery: string;
33
35
  oracleProcessors: string;
34
36
  relayer: string;
37
+ referrals: string;
35
38
  indexers: {
36
39
  10143: {
37
40
  type: LevrIndexer;
@@ -45,6 +48,7 @@ export declare const allUrls: {
45
48
  oraclePeriphery: string;
46
49
  oracleProcessors: string;
47
50
  relayer: string;
51
+ referrals: string;
48
52
  indexers: {
49
53
  10143: {
50
54
  type: LevrIndexer;
@@ -11,6 +11,7 @@ exports.allUrls = {
11
11
  oraclePeriphery: "https://oracle-periphery.dev.levr.bet",
12
12
  oracleProcessors: "https://oracle-processors.dev.levr.bet",
13
13
  relayer: "https://relayer.dev.levr.bet",
14
+ referrals: "https://referrals.dev.levr.bet",
14
15
  indexers: {
15
16
  [types_1.LevrChain.MONAD_TESTNET]: [
16
17
  { type: indexers_types_1.LevrIndexer.ENVIO, url: "https://indexer.dev.hyperindex.xyz/c1eefd0/v1/graphql" },
@@ -24,6 +25,7 @@ exports.allUrls = {
24
25
  oraclePeriphery: "https://oracle-periphery.dev.levr.bet",
25
26
  oracleProcessors: "https://oracle-processors.dev.levr.bet",
26
27
  relayer: "http://levr-v1-openzeppeline-1018367603.ap-south-1.elb.amazonaws.com",
28
+ referrals: "https://referrals.dev.levr.bet",
27
29
  indexers: {
28
30
  [types_1.LevrChain.MONAD_TESTNET]: [
29
31
  { type: indexers_types_1.LevrIndexer.ENVIO, url: "https://indexer.dev.hyperindex.xyz/c1eefd0/v1/graphql" },
@@ -37,6 +39,7 @@ exports.allUrls = {
37
39
  oraclePeriphery: "https://oracle-periphery.staging.levr.bet",
38
40
  oracleProcessors: "https://oracle-processors.staging.levr.bet",
39
41
  relayer: "https://relayer.staging.levr.bet",
42
+ referrals: "https://referrals.staging.levr.bet",
40
43
  indexers: {
41
44
  [types_1.LevrChain.MONAD_TESTNET]: [
42
45
  { type: indexers_types_1.LevrIndexer.ENVIO, url: "https://indexer.staging.levr.app" },
@@ -50,6 +53,7 @@ exports.allUrls = {
50
53
  oraclePeriphery: "https://oracle-periphery.levr.app",
51
54
  oracleProcessors: "https://oracle-processors.levr.app",
52
55
  relayer: "https://relayer.dev.levr.app",
56
+ referrals: "https://referrals.levr.app",
53
57
  indexers: {
54
58
  [types_1.LevrChain.MONAD_TESTNET]: [
55
59
  { type: indexers_types_1.LevrIndexer.ENVIO, url: "https://indexer.levr.app" },
@@ -1 +1 @@
1
- {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../../src/core/config/urls.ts"],"names":[],"mappings":";;;AAAA,oCAA6C;AAC7C,4DAAqD;AAErD,sBAAsB;AAET,QAAA,OAAO,GAAG;IACnB,CAAC,eAAO,CAAC,KAAK,CAAC,EAAE;QACb,IAAI,EAAE,+BAA+B;QACrC,UAAU,EAAE,kCAAkC;QAC9C,eAAe,EAAE,uCAAuC;QACxD,gBAAgB,EAAE,wCAAwC;QAC1D,OAAO,EAAE,8BAA8B;QACvC,QAAQ,EAAE;YACN,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;gBACvB,EAAE,IAAI,EAAE,4BAAW,CAAC,KAAK,EAAE,GAAG,EAAE,uDAAuD,EAAE;gBACzF,EAAE,IAAI,EAAE,4BAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,gEAAgE,EAAE;aACxG;SACJ;KACJ;IACD,CAAC,eAAO,CAAC,GAAG,CAAC,EAAE;QACX,IAAI,EAAE,+BAA+B;QACrC,UAAU,EAAE,kCAAkC;QAC9C,eAAe,EAAE,uCAAuC;QACxD,gBAAgB,EAAE,wCAAwC;QAC1D,OAAO,EAAE,sEAAsE;QAC/E,QAAQ,EAAE;YACN,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;gBACvB,EAAE,IAAI,EAAE,4BAAW,CAAC,KAAK,EAAE,GAAG,EAAE,uDAAuD,EAAE;gBACzF,EAAE,IAAI,EAAE,4BAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,gEAAgE,EAAE;aACxG;SACJ;KACJ;IACD,CAAC,eAAO,CAAC,OAAO,CAAC,EAAE;QACf,IAAI,EAAE,oCAAoC;QAC1C,UAAU,EAAE,sCAAsC;QAClD,eAAe,EAAE,2CAA2C;QAC5D,gBAAgB,EAAE,4CAA4C;QAC9D,OAAO,EAAE,kCAAkC;QAC3C,QAAQ,EAAE;YACN,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;gBACvB,EAAE,IAAI,EAAE,4BAAW,CAAC,KAAK,EAAE,GAAG,EAAE,kCAAkC,EAAE;gBACpE,EAAE,IAAI,EAAE,4BAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,kCAAkC,EAAE;aAC1E;SACJ;KACJ;IACD,CAAC,eAAO,CAAC,IAAI,CAAC,EAAE;QACZ,IAAI,EAAE,2BAA2B;QACjC,UAAU,EAAE,8BAA8B;QAC1C,eAAe,EAAE,mCAAmC;QACpD,gBAAgB,EAAE,oCAAoC;QACtD,OAAO,EAAE,8BAA8B;QACvC,QAAQ,EAAE;YACN,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;gBACvB,EAAE,IAAI,EAAE,4BAAW,CAAC,KAAK,EAAE,GAAG,EAAE,0BAA0B,EAAE;gBAC5D,EAAE,IAAI,EAAE,4BAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,0BAA0B,EAAE;aAClE;SACJ;KACJ;CACJ,CAAA"}
1
+ {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../../src/core/config/urls.ts"],"names":[],"mappings":";;;AAAA,oCAA6C;AAC7C,4DAAqD;AAErD,sBAAsB;AAET,QAAA,OAAO,GAAG;IACnB,CAAC,eAAO,CAAC,KAAK,CAAC,EAAE;QACb,IAAI,EAAE,+BAA+B;QACrC,UAAU,EAAE,kCAAkC;QAC9C,eAAe,EAAE,uCAAuC;QACxD,gBAAgB,EAAE,wCAAwC;QAC1D,OAAO,EAAE,8BAA8B;QACvC,SAAS,EAAE,gCAAgC;QAC3C,QAAQ,EAAE;YACN,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;gBACvB,EAAE,IAAI,EAAE,4BAAW,CAAC,KAAK,EAAE,GAAG,EAAE,uDAAuD,EAAE;gBACzF,EAAE,IAAI,EAAE,4BAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,gEAAgE,EAAE;aACxG;SACJ;KACJ;IACD,CAAC,eAAO,CAAC,GAAG,CAAC,EAAE;QACX,IAAI,EAAE,+BAA+B;QACrC,UAAU,EAAE,kCAAkC;QAC9C,eAAe,EAAE,uCAAuC;QACxD,gBAAgB,EAAE,wCAAwC;QAC1D,OAAO,EAAE,sEAAsE;QAC/E,SAAS,EAAE,gCAAgC;QAC3C,QAAQ,EAAE;YACN,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;gBACvB,EAAE,IAAI,EAAE,4BAAW,CAAC,KAAK,EAAE,GAAG,EAAE,uDAAuD,EAAE;gBACzF,EAAE,IAAI,EAAE,4BAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,gEAAgE,EAAE;aACxG;SACJ;KACJ;IACD,CAAC,eAAO,CAAC,OAAO,CAAC,EAAE;QACf,IAAI,EAAE,oCAAoC;QAC1C,UAAU,EAAE,sCAAsC;QAClD,eAAe,EAAE,2CAA2C;QAC5D,gBAAgB,EAAE,4CAA4C;QAC9D,OAAO,EAAE,kCAAkC;QAC3C,SAAS,EAAE,oCAAoC;QAC/C,QAAQ,EAAE;YACN,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;gBACvB,EAAE,IAAI,EAAE,4BAAW,CAAC,KAAK,EAAE,GAAG,EAAE,kCAAkC,EAAE;gBACpE,EAAE,IAAI,EAAE,4BAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,kCAAkC,EAAE;aAC1E;SACJ;KACJ;IACD,CAAC,eAAO,CAAC,IAAI,CAAC,EAAE;QACZ,IAAI,EAAE,2BAA2B;QACjC,UAAU,EAAE,8BAA8B;QAC1C,eAAe,EAAE,mCAAmC;QACpD,gBAAgB,EAAE,oCAAoC;QACtD,OAAO,EAAE,8BAA8B;QACvC,SAAS,EAAE,4BAA4B;QACvC,QAAQ,EAAE;YACN,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;gBACvB,EAAE,IAAI,EAAE,4BAAW,CAAC,KAAK,EAAE,GAAG,EAAE,0BAA0B,EAAE;gBAC5D,EAAE,IAAI,EAAE,4BAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,0BAA0B,EAAE;aAClE;SACJ;KACJ;CACJ,CAAA"}
@@ -4,6 +4,7 @@ export declare const urls: {
4
4
  oraclePeriphery: string;
5
5
  oracleProcessors: string;
6
6
  relayer: string;
7
+ referrals: string;
7
8
  indexers: {
8
9
  10143: {
9
10
  type: import("../../core").LevrIndexer;
@@ -16,6 +17,7 @@ export declare const urls: {
16
17
  oraclePeriphery: string;
17
18
  oracleProcessors: string;
18
19
  relayer: string;
20
+ referrals: string;
19
21
  indexers: {
20
22
  10143: {
21
23
  type: import("../../core").LevrIndexer;
@@ -28,6 +30,7 @@ export declare const urls: {
28
30
  oraclePeriphery: string;
29
31
  oracleProcessors: string;
30
32
  relayer: string;
33
+ referrals: string;
31
34
  indexers: {
32
35
  10143: {
33
36
  type: import("../../core").LevrIndexer;
@@ -40,6 +43,7 @@ export declare const urls: {
40
43
  oraclePeriphery: string;
41
44
  oracleProcessors: string;
42
45
  relayer: string;
46
+ referrals: string;
43
47
  indexers: {
44
48
  10143: {
45
49
  type: import("../../core").LevrIndexer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@levrbet/shared",
3
- "version": "0.1.189",
3
+ "version": "0.1.191",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {
@@ -147,7 +147,7 @@ model TeamData {
147
147
  levrTeamLogoUrlAsHome String @unique
148
148
  levrTeamLogoUrlAsAway String @unique
149
149
  leagueObjectId String @db.ObjectId
150
- levrleagueId String
150
+ levrLeagueId String
151
151
  league League @relation(fields: [leagueObjectId], references: [objectId])
152
152
 
153
153
  @@unique([levrTeamId, levrTeamName, leagueObjectId])
@@ -312,11 +312,113 @@ model User {
312
312
  autoDetectTimeZone Boolean @default(true)
313
313
  autoApproveTxs Boolean @default(false)
314
314
  requireWithdrawalConfirmation Boolean @default(true)
315
+ referralCode String @unique
316
+
317
+ // Inverse relations (these fix your P1012 errors)
318
+ referralsMade Referral[] @relation("ReferrerRelations") // users they referred
319
+ referredBy Referral[] @relation("ReferredRelations") // who referred them
320
+ referralRewards ReferralReward[] @relation("UserRewards") // their reward entries
321
+
322
+ createdAt DateTime @default(now())
323
+ updatedAt DateTime @updatedAt
324
+ }
325
+
326
+ enum ReferralStatus {
327
+ Pending
328
+ Active
329
+ Suspended
330
+ Completed
331
+ }
332
+
333
+ model Referral {
334
+ objectId String @id @default(auto()) @map("_id") @db.ObjectId
335
+ referrerId String @db.ObjectId
336
+ referredId String @db.ObjectId
337
+ referralCode String
338
+ referralSource String? // e.g. campaign or link source
339
+ status ReferralStatus @default(Active)
340
+
341
+ // Relations
342
+ referrer User @relation("ReferrerRelations", fields: [referrerId], references: [objectId])
343
+ referred User @relation("ReferredRelations", fields: [referredId], references: [objectId])
344
+
345
+ createdAt DateTime @default(now())
346
+ updatedAt DateTime @updatedAt
347
+
348
+ @@index([referrerId])
349
+ @@index([referredId])
350
+ }
351
+
352
+ model ReferralEpoch {
353
+ objectId String @id @default(auto()) @map("_id") @db.ObjectId
354
+ periodId String @unique
355
+ periodStart DateTime
356
+ periodEnd DateTime
357
+ timezone String @default("America/Mexico_City")
358
+ status EpochStatus @default(Active)
359
+
360
+ // On-chain reward info (one root per epoch)
361
+ totalFeesUsd Float?
362
+ rewardPoolUsd Float?
363
+ merkleRoot String?
364
+ merkleTxHash String?
365
+ rootPublishedAt DateTime?
366
+ notes String?
367
+
368
+ ReferralRewards ReferralReward[]
315
369
 
316
370
  createdAt DateTime @default(now())
317
371
  updatedAt DateTime @updatedAt
318
372
  }
319
373
 
374
+ enum EpochStatus {
375
+ Active
376
+ Processing
377
+ Completed
378
+ Failed
379
+ }
380
+
381
+ enum ReferralTier {
382
+ T1
383
+ T2
384
+ T3
385
+ }
386
+
387
+ model ReferralReward {
388
+ objectId String @id @default(auto()) @map("_id") @db.ObjectId
389
+ userId String @db.ObjectId
390
+ epochId String @db.ObjectId
391
+ periodId String // denormalized for readability (e.g. "2025W45")
392
+
393
+ // --- Aggregates ---
394
+ referredBetVolumeUsd Float @default(0.0)
395
+ referredFeeUsd Float @default(0.0)
396
+ tier ReferralTier @default(T1)
397
+ tierPercentage Float @default(0.025)
398
+
399
+ // --- Payouts ---
400
+ payoutBeforeScaleUsd Float @default(0.0)
401
+ payoutScaledUsd Float @default(0.0)
402
+ payoutTokenUnits String? // token base units (string for precision)
403
+ scaleFactor Float?
404
+
405
+ // --- Claim sync info ---
406
+ isClaimedOnChain Boolean @default(false)
407
+ claimedTxHash String?
408
+ lastSyncedFromChainAt DateTime?
409
+
410
+ createdAt DateTime @default(now())
411
+ updatedAt DateTime @updatedAt
412
+
413
+ // --- Relations ---
414
+ user User @relation("UserRewards", fields: [userId], references: [objectId])
415
+ epoch ReferralEpoch @relation(fields: [epochId], references: [objectId])
416
+
417
+ @@unique([userId, periodId])
418
+ @@index([epochId])
419
+ @@index([userId])
420
+ }
421
+
320
422
  enum ApiKeyScope {
321
423
  Read
322
424
  Write