@levrbet/shared 0.2.43 → 0.2.44

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.
@@ -483,6 +483,10 @@ const config = {
483
483
  {
484
484
  "fromEnvVar": null,
485
485
  "value": "linux-musl-openssl-3.0.x"
486
+ },
487
+ {
488
+ "fromEnvVar": null,
489
+ "value": "darwin-arm64"
486
490
  }
487
491
  ],
488
492
  "previewFeatures": [],
@@ -509,8 +513,8 @@ const config = {
509
513
  }
510
514
  }
511
515
  },
512
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"linux-musl-openssl-3.0.x\"]\n output = \"generated\"\n}\n\ndatasource db {\n provider = \"mongodb\"\n url = env(\"MONGO_URI\")\n}\n\nenum GamePhase {\n PreGame\n LiveGame\n PostGame\n Cancelled\n}\n\nenum MarketTypes {\n FullTimeWinner\n OverUnder\n}\n\nenum MarketStatus {\n Open\n Closed\n Settled\n Refunded\n}\n\nenum ScoringType {\n Points\n Goals\n}\n\nenum FixtureStatus {\n Scheduled\n Cancelled\n}\n\nenum SportGroup {\n Football\n Basketball\n Baseball\n Soccer\n}\n\nenum LevrService {\n Auth\n Orderbook\n OracleCore\n OraclePeriphery\n OracleProcessor\n Leaderboard\n Lab\n}\n\nmodel Provider {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n providerUrl String @unique\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Tournament {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTournamentId String @unique\n chainId Int\n name String\n description String\n bannerUrl String\n startDate DateTime\n endDate DateTime\n\n games LevrGame[]\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, name])\n @@unique([chainId, description])\n @@unique([chainId, bannerUrl])\n @@index([name])\n}\n\nmodel Sport {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrSportId String @unique\n name String @unique\n periodType String\n scoringType ScoringType\n standardDurationMs Int\n standardPeriods Int\n periodDuration Int?\n hasDrawMarket Boolean\n sportGroup SportGroup\n\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel League {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n abbreviation String\n country String\n levrLeagueId String @unique\n opticOddsLeagueId String @unique\n lsportsLeagueId String @unique\n logoKey String\n logoUrl String\n\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n sportObjectId String @db.ObjectId\n sport Sport @relation(fields: [sportObjectId], references: [objectId])\n levrSportId String\n\n games LevrGame[]\n fixtures Fixture[]\n teams TeamData[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel TeamData {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTeamName String\n levrTeamOfficialAbbreviation String\n lsportsTeamName String\n opticOddsTeamName String\n lsportsTeamId String @unique\n opticOddsTeamId String @unique\n levrTeamId String @unique\n opticOddsTeamLogoUrl String @unique\n levrTeamLogoUrlAsHome String @unique\n levrTeamLogoUrlAsAway String @unique\n leagueObjectId String @db.ObjectId\n levrLeagueId String\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n @@unique([levrTeamId, levrTeamName, leagueObjectId])\n}\n\nmodel Fixture {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrFixtureId String @unique\n opticOddsFixtureId String? @unique\n lsportsFixtureId String? @unique\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n fixtureDate DateTime\n lastUpdated DateTime\n homeTeam Json\n awayTeam Json\n fixtureStatus FixtureStatus\n registeredChainIds Int[] // list of chain IDs where this fixture is registered\n\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n LevrGame LevrGame[]\n\n @@index([fixtureDate])\n @@index([leagueObjectId])\n @@index([eventName])\n}\n\nmodel Scores {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n scoresByPeriodHome Json\n scoresByPeriodAway Json\n totalScoresHome Float\n totalScoresAway Float\n chainId Int\n\n gameObjectId String @unique @db.ObjectId\n LevrGame LevrGame @relation(fields: [gameObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel LevrGame {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n gameId Int @unique\n txHash String @unique\n chainId Int\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n gameClock String\n paused Boolean @default(false)\n fixtureDate DateTime\n wentLiveAt DateTime?\n homeTeam Json // as defined in sample-data/lever/levr-game.json\n awayTeam Json // as defined in sample-data/lever/levr-game.json\n currentPeriod Int @default(0)\n actualDuration Float @default(0) // in milliseconds\n gamePhase GamePhase @default(PreGame)\n levrFixtureId String\n opticOddsFixtureId String?\n lsportsFixtureId String?\n gameProgressBps Int @default(0)\n sportGroup SportGroup\n\n fixtureObjectId String @db.ObjectId\n fixture Fixture @relation(fields: [fixtureObjectId], references: [objectId])\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n scores Scores?\n\n markets Market[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, levrFixtureId])\n @@unique([chainId, gameId])\n @@index([opticOddsFixtureId])\n @@index([lsportsFixtureId])\n @@index([eventName])\n @@index([fixtureDate])\n}\n\nmodel Odds {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n txHash String\n odds Json // define for the specific market type\n prices Json\n timestamp DateTime\n marketType MarketTypes\n details Json? // the unique details for the odds\n gamePhase GamePhase\n gamePeriod Int\n gameClock Int\n chainId Int\n marketPhase MarketStatus\n\n levrGameObjectId String @db.ObjectId\n marketObjectId String @db.ObjectId\n gameMarketId String\n market Market @relation(fields: [marketObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Market {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n chainId Int\n gameId Int\n levrMarketId String\n levrMarketContract String\n gameMarketId String @unique\n txHash String\n maturedAt DateTime?\n leveraged Boolean @default(false)\n isMatured Boolean @default(false)\n normalizationFactor Float\n marketDetails Json\n marketRiskAllocation Json\n providers Json\n activeProvider Json\n marketType MarketTypes\n status MarketStatus\n\n levrGameObjectId String @db.ObjectId // new unique identifier\n levrGame LevrGame @relation(fields: [levrGameObjectId], references: [objectId])\n\n odds Odds[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum UserOddsPreference {\n American\n Decimal\n European\n}\n\nmodel User {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n walletAddress String @unique\n userName String @unique\n email String @unique\n timeZone String\n preferredTimeZone String?\n userOddsPreference UserOddsPreference\n profileImageUrl String?\n profileImageKey String?\n language String @default(\"en\")\n showRiskWarnings Boolean @default(true)\n showPreTransactionReminders Boolean @default(true)\n twoFactorEnabled Boolean @default(false)\n autoDetectTimeZone Boolean @default(true)\n referralCode String @unique\n\n // Inverse relations (these fix your P1012 errors)\n referralsMade Referral[] @relation(\"ReferrerRelations\") // users they referred\n referredBy Referral[] @relation(\"ReferredRelations\") // who referred them\n referralRewards ReferralReward[] @relation(\"UserRewards\") // their reward entries\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum ReferralStatus {\n Pending\n Active\n Suspended\n Completed\n}\n\nmodel Referral {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n referrerId String @db.ObjectId\n referredId String @db.ObjectId\n referralCode String\n referralSource String? // e.g. campaign or link source\n status ReferralStatus @default(Active)\n\n // Relations\n referrer User @relation(\"ReferrerRelations\", fields: [referrerId], references: [objectId])\n referred User @relation(\"ReferredRelations\", fields: [referredId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([referrerId])\n @@index([referredId])\n}\n\nmodel ReferralEpoch {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n periodId String @unique\n periodStart DateTime\n periodEnd DateTime\n timezone String @default(\"America/Mexico_City\")\n status EpochStatus @default(Active)\n\n // On-chain reward info (one root per epoch)\n totalFeesUsd Float?\n rewardPoolUsd Float?\n merkleRoot String?\n merkleTxHash String?\n rootPublishedAt DateTime?\n notes String?\n\n ReferralRewards ReferralReward[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum EpochStatus {\n Active\n Processing\n Completed\n Failed\n}\n\nenum ReferralTier {\n T1\n T2\n T3\n}\n\nmodel ReferralReward {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n userId String @db.ObjectId\n epochId String @db.ObjectId\n periodId String // denormalized for readability (e.g. \"2025W45\")\n\n // --- Aggregates ---\n referredBetVolumeUsd Float @default(0.0)\n referredFeeUsd Float @default(0.0)\n tier ReferralTier @default(T1)\n tierPercentage Float @default(0.025)\n\n // --- Payouts ---\n payoutBeforeScaleUsd Float @default(0.0)\n payoutScaledUsd Float @default(0.0)\n payoutTokenUnits String? // token base units (string for precision)\n scaleFactor Float?\n\n // --- Claim sync info ---\n isClaimedOnChain Boolean @default(false)\n claimedTxHash String?\n lastSyncedFromChainAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // --- Relations ---\n user User @relation(\"UserRewards\", fields: [userId], references: [objectId])\n epoch ReferralEpoch @relation(fields: [epochId], references: [objectId])\n\n @@unique([userId, periodId])\n @@index([epochId])\n @@index([userId])\n}\n\nenum ApiKeyScope {\n Read\n Write\n}\n\nmodel ApiKey {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n apiKeyId String @unique\n userId String\n ethAddress String?\n name String\n ciphertext String\n kmsKeyId String\n service LevrService? // Optional: restrict key to a specific service\n scopes ApiKeyScope[]\n isActive Boolean @default(true)\n expiresAt DateTime?\n lastUsedAt DateTime?\n usageCount Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId, isActive])\n @@index([service, isActive])\n}\n\nmodel AuditLog {\n objectId String @id @default(cuid()) @map(\"_id\")\n action String // e.g., \"api_key.created\", \"application.created\", \"token.validated\"\n resourceId String? // ID of the resource being acted upon\n metadata Json @default(\"{}\")\n ipAddress String?\n userAgent String?\n timestamp DateTime @default(now())\n // Relations\n userId String\n\n @@index([action])\n @@index([timestamp])\n @@index([userId])\n}\n",
513
- "inlineSchemaHash": "c57fe0e5f6731561055a22dceb5348e113a75582f273765fd63384fcfa4a5faf",
516
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"linux-musl-openssl-3.0.x\", \"darwin-arm64\"]\n output = \"generated\"\n}\n\ndatasource db {\n provider = \"mongodb\"\n url = env(\"MONGO_URI\")\n}\n\nenum GamePhase {\n PreGame\n LiveGame\n PostGame\n Cancelled\n}\n\nenum MarketTypes {\n FullTimeWinner\n OverUnder\n}\n\nenum MarketStatus {\n Open\n Closed\n Settled\n Refunded\n}\n\nenum ScoringType {\n Points\n Goals\n}\n\nenum FixtureStatus {\n Scheduled\n Cancelled\n}\n\nenum SportGroup {\n Football\n Basketball\n Baseball\n Soccer\n}\n\nenum LevrService {\n Auth\n Orderbook\n OracleCore\n OraclePeriphery\n OracleProcessor\n Leaderboard\n Lab\n}\n\nmodel Provider {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n providerUrl String @unique\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Tournament {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTournamentId String @unique\n chainId Int\n name String\n description String\n bannerUrl String\n startDate DateTime\n endDate DateTime\n\n games LevrGame[]\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, name])\n @@unique([chainId, description])\n @@unique([chainId, bannerUrl])\n @@index([name])\n}\n\nmodel Sport {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrSportId String @unique\n name String @unique\n periodType String\n scoringType ScoringType\n standardDurationMs Int\n standardPeriods Int\n periodDuration Int?\n hasDrawMarket Boolean\n sportGroup SportGroup\n\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel League {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n abbreviation String\n country String\n levrLeagueId String @unique\n opticOddsLeagueId String @unique\n lsportsLeagueId String @unique\n logoKey String\n logoUrl String\n\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n sportObjectId String @db.ObjectId\n sport Sport @relation(fields: [sportObjectId], references: [objectId])\n levrSportId String\n\n games LevrGame[]\n fixtures Fixture[]\n teams TeamData[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel TeamData {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTeamName String\n levrTeamOfficialAbbreviation String\n lsportsTeamName String\n opticOddsTeamName String\n lsportsTeamId String @unique\n opticOddsTeamId String @unique\n levrTeamId String @unique\n opticOddsTeamLogoUrl String @unique\n levrTeamLogoUrlAsHome String @unique\n levrTeamLogoUrlAsAway String @unique\n leagueObjectId String @db.ObjectId\n levrLeagueId String\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n @@unique([levrTeamId, levrTeamName, leagueObjectId])\n}\n\nmodel Fixture {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrFixtureId String @unique\n opticOddsFixtureId String? @unique\n lsportsFixtureId String? @unique\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n fixtureDate DateTime\n lastUpdated DateTime\n homeTeam Json\n awayTeam Json\n fixtureStatus FixtureStatus\n registeredChainIds Int[] // list of chain IDs where this fixture is registered\n\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n LevrGame LevrGame[]\n\n @@index([fixtureDate])\n @@index([leagueObjectId])\n @@index([eventName])\n}\n\nmodel Scores {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n scoresByPeriodHome Json\n scoresByPeriodAway Json\n totalScoresHome Float\n totalScoresAway Float\n chainId Int\n\n gameObjectId String @unique @db.ObjectId\n LevrGame LevrGame @relation(fields: [gameObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel LevrGame {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n gameId Int @unique\n txHash String @unique\n chainId Int\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n gameClock String\n paused Boolean @default(false)\n fixtureDate DateTime\n wentLiveAt DateTime?\n homeTeam Json // as defined in sample-data/lever/levr-game.json\n awayTeam Json // as defined in sample-data/lever/levr-game.json\n currentPeriod Int @default(0)\n actualDuration Float @default(0) // in milliseconds\n gamePhase GamePhase @default(PreGame)\n levrFixtureId String\n opticOddsFixtureId String?\n lsportsFixtureId String?\n gameProgressBps Int @default(0)\n sportGroup SportGroup\n\n fixtureObjectId String @db.ObjectId\n fixture Fixture @relation(fields: [fixtureObjectId], references: [objectId])\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n scores Scores?\n\n markets Market[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, levrFixtureId])\n @@unique([chainId, gameId])\n @@index([opticOddsFixtureId])\n @@index([lsportsFixtureId])\n @@index([eventName])\n @@index([fixtureDate])\n}\n\nmodel Odds {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n txHash String\n odds Json // define for the specific market type\n prices Json\n timestamp DateTime\n marketType MarketTypes\n details Json? // the unique details for the odds\n gamePhase GamePhase\n gamePeriod Int\n gameClock Int\n chainId Int\n marketPhase MarketStatus\n\n levrGameObjectId String @db.ObjectId\n marketObjectId String @db.ObjectId\n gameMarketId String\n market Market @relation(fields: [marketObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Market {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n chainId Int\n gameId Int\n levrMarketId String\n levrMarketContract String\n gameMarketId String @unique\n txHash String\n maturedAt DateTime?\n leveraged Boolean @default(false)\n isMatured Boolean @default(false)\n normalizationFactor Float\n marketDetails Json\n marketRiskAllocation Json\n providers Json\n activeProvider Json\n marketType MarketTypes\n status MarketStatus\n\n levrGameObjectId String @db.ObjectId // new unique identifier\n levrGame LevrGame @relation(fields: [levrGameObjectId], references: [objectId])\n\n odds Odds[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum UserOddsPreference {\n American\n Decimal\n European\n}\n\nmodel User {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n walletAddress String @unique\n userName String @unique\n email String @unique\n timeZone String\n preferredTimeZone String?\n userOddsPreference UserOddsPreference\n profileImageUrl String?\n profileImageKey String?\n language String @default(\"en\")\n showRiskWarnings Boolean @default(true)\n showPreTransactionReminders Boolean @default(true)\n twoFactorEnabled Boolean @default(false)\n autoDetectTimeZone Boolean @default(true)\n referralCode String @unique\n\n // Inverse relations (these fix your P1012 errors)\n referralsMade Referral[] @relation(\"ReferrerRelations\") // users they referred\n referredBy Referral[] @relation(\"ReferredRelations\") // who referred them\n referralRewards ReferralReward[] @relation(\"UserRewards\") // their reward entries\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum ReferralStatus {\n Pending\n Active\n Suspended\n Completed\n}\n\nmodel Referral {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n referrerId String @db.ObjectId\n referredId String @db.ObjectId\n referralCode String\n referralSource String? // e.g. campaign or link source\n status ReferralStatus @default(Active)\n\n // Relations\n referrer User @relation(\"ReferrerRelations\", fields: [referrerId], references: [objectId])\n referred User @relation(\"ReferredRelations\", fields: [referredId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([referrerId])\n @@index([referredId])\n}\n\nmodel ReferralEpoch {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n periodId String @unique\n periodStart DateTime\n periodEnd DateTime\n timezone String @default(\"America/Mexico_City\")\n status EpochStatus @default(Active)\n\n // On-chain reward info (one root per epoch)\n totalFeesUsd Float?\n rewardPoolUsd Float?\n merkleRoot String?\n merkleTxHash String?\n rootPublishedAt DateTime?\n notes String?\n\n ReferralRewards ReferralReward[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum EpochStatus {\n Active\n Processing\n Completed\n Failed\n}\n\nenum ReferralTier {\n T1\n T2\n T3\n}\n\nmodel ReferralReward {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n userId String @db.ObjectId\n epochId String @db.ObjectId\n periodId String // denormalized for readability (e.g. \"2025W45\")\n\n // --- Aggregates ---\n referredBetVolumeUsd Float @default(0.0)\n referredFeeUsd Float @default(0.0)\n tier ReferralTier @default(T1)\n tierPercentage Float @default(0.025)\n\n // --- Payouts ---\n payoutBeforeScaleUsd Float @default(0.0)\n payoutScaledUsd Float @default(0.0)\n payoutTokenUnits String? // token base units (string for precision)\n scaleFactor Float?\n\n // --- Claim sync info ---\n isClaimedOnChain Boolean @default(false)\n claimedTxHash String?\n lastSyncedFromChainAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // --- Relations ---\n user User @relation(\"UserRewards\", fields: [userId], references: [objectId])\n epoch ReferralEpoch @relation(fields: [epochId], references: [objectId])\n\n @@unique([userId, periodId])\n @@index([epochId])\n @@index([userId])\n}\n\nenum ApiKeyScope {\n Read\n Write\n}\n\nmodel ApiKey {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n apiKeyId String @unique\n userId String\n ethAddress String?\n name String\n ciphertext String\n kmsKeyId String\n service LevrService? // Optional: restrict key to a specific service\n scopes ApiKeyScope[]\n isActive Boolean @default(true)\n expiresAt DateTime?\n lastUsedAt DateTime?\n usageCount Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId, isActive])\n @@index([service, isActive])\n}\n\nmodel AuditLog {\n objectId String @id @default(cuid()) @map(\"_id\")\n action String // e.g., \"api_key.created\", \"application.created\", \"token.validated\"\n resourceId String? // ID of the resource being acted upon\n metadata Json @default(\"{}\")\n ipAddress String?\n userAgent String?\n timestamp DateTime @default(now())\n // Relations\n userId String\n\n @@index([action])\n @@index([timestamp])\n @@index([userId])\n}\n",
517
+ "inlineSchemaHash": "6bbef37d2a9d63b31f6c182fb2277692918ee25c4ba35812a2b91a0f252d5fd3",
514
518
  "copyEngine": true
515
519
  }
516
520
  config.dirname = '/'
@@ -484,6 +484,10 @@ const config = {
484
484
  {
485
485
  "fromEnvVar": null,
486
486
  "value": "linux-musl-openssl-3.0.x"
487
+ },
488
+ {
489
+ "fromEnvVar": null,
490
+ "value": "darwin-arm64"
487
491
  }
488
492
  ],
489
493
  "previewFeatures": [],
@@ -510,8 +514,8 @@ const config = {
510
514
  }
511
515
  }
512
516
  },
513
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"linux-musl-openssl-3.0.x\"]\n output = \"generated\"\n}\n\ndatasource db {\n provider = \"mongodb\"\n url = env(\"MONGO_URI\")\n}\n\nenum GamePhase {\n PreGame\n LiveGame\n PostGame\n Cancelled\n}\n\nenum MarketTypes {\n FullTimeWinner\n OverUnder\n}\n\nenum MarketStatus {\n Open\n Closed\n Settled\n Refunded\n}\n\nenum ScoringType {\n Points\n Goals\n}\n\nenum FixtureStatus {\n Scheduled\n Cancelled\n}\n\nenum SportGroup {\n Football\n Basketball\n Baseball\n Soccer\n}\n\nenum LevrService {\n Auth\n Orderbook\n OracleCore\n OraclePeriphery\n OracleProcessor\n Leaderboard\n Lab\n}\n\nmodel Provider {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n providerUrl String @unique\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Tournament {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTournamentId String @unique\n chainId Int\n name String\n description String\n bannerUrl String\n startDate DateTime\n endDate DateTime\n\n games LevrGame[]\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, name])\n @@unique([chainId, description])\n @@unique([chainId, bannerUrl])\n @@index([name])\n}\n\nmodel Sport {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrSportId String @unique\n name String @unique\n periodType String\n scoringType ScoringType\n standardDurationMs Int\n standardPeriods Int\n periodDuration Int?\n hasDrawMarket Boolean\n sportGroup SportGroup\n\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel League {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n abbreviation String\n country String\n levrLeagueId String @unique\n opticOddsLeagueId String @unique\n lsportsLeagueId String @unique\n logoKey String\n logoUrl String\n\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n sportObjectId String @db.ObjectId\n sport Sport @relation(fields: [sportObjectId], references: [objectId])\n levrSportId String\n\n games LevrGame[]\n fixtures Fixture[]\n teams TeamData[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel TeamData {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTeamName String\n levrTeamOfficialAbbreviation String\n lsportsTeamName String\n opticOddsTeamName String\n lsportsTeamId String @unique\n opticOddsTeamId String @unique\n levrTeamId String @unique\n opticOddsTeamLogoUrl String @unique\n levrTeamLogoUrlAsHome String @unique\n levrTeamLogoUrlAsAway String @unique\n leagueObjectId String @db.ObjectId\n levrLeagueId String\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n @@unique([levrTeamId, levrTeamName, leagueObjectId])\n}\n\nmodel Fixture {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrFixtureId String @unique\n opticOddsFixtureId String? @unique\n lsportsFixtureId String? @unique\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n fixtureDate DateTime\n lastUpdated DateTime\n homeTeam Json\n awayTeam Json\n fixtureStatus FixtureStatus\n registeredChainIds Int[] // list of chain IDs where this fixture is registered\n\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n LevrGame LevrGame[]\n\n @@index([fixtureDate])\n @@index([leagueObjectId])\n @@index([eventName])\n}\n\nmodel Scores {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n scoresByPeriodHome Json\n scoresByPeriodAway Json\n totalScoresHome Float\n totalScoresAway Float\n chainId Int\n\n gameObjectId String @unique @db.ObjectId\n LevrGame LevrGame @relation(fields: [gameObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel LevrGame {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n gameId Int @unique\n txHash String @unique\n chainId Int\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n gameClock String\n paused Boolean @default(false)\n fixtureDate DateTime\n wentLiveAt DateTime?\n homeTeam Json // as defined in sample-data/lever/levr-game.json\n awayTeam Json // as defined in sample-data/lever/levr-game.json\n currentPeriod Int @default(0)\n actualDuration Float @default(0) // in milliseconds\n gamePhase GamePhase @default(PreGame)\n levrFixtureId String\n opticOddsFixtureId String?\n lsportsFixtureId String?\n gameProgressBps Int @default(0)\n sportGroup SportGroup\n\n fixtureObjectId String @db.ObjectId\n fixture Fixture @relation(fields: [fixtureObjectId], references: [objectId])\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n scores Scores?\n\n markets Market[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, levrFixtureId])\n @@unique([chainId, gameId])\n @@index([opticOddsFixtureId])\n @@index([lsportsFixtureId])\n @@index([eventName])\n @@index([fixtureDate])\n}\n\nmodel Odds {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n txHash String\n odds Json // define for the specific market type\n prices Json\n timestamp DateTime\n marketType MarketTypes\n details Json? // the unique details for the odds\n gamePhase GamePhase\n gamePeriod Int\n gameClock Int\n chainId Int\n marketPhase MarketStatus\n\n levrGameObjectId String @db.ObjectId\n marketObjectId String @db.ObjectId\n gameMarketId String\n market Market @relation(fields: [marketObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Market {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n chainId Int\n gameId Int\n levrMarketId String\n levrMarketContract String\n gameMarketId String @unique\n txHash String\n maturedAt DateTime?\n leveraged Boolean @default(false)\n isMatured Boolean @default(false)\n normalizationFactor Float\n marketDetails Json\n marketRiskAllocation Json\n providers Json\n activeProvider Json\n marketType MarketTypes\n status MarketStatus\n\n levrGameObjectId String @db.ObjectId // new unique identifier\n levrGame LevrGame @relation(fields: [levrGameObjectId], references: [objectId])\n\n odds Odds[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum UserOddsPreference {\n American\n Decimal\n European\n}\n\nmodel User {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n walletAddress String @unique\n userName String @unique\n email String @unique\n timeZone String\n preferredTimeZone String?\n userOddsPreference UserOddsPreference\n profileImageUrl String?\n profileImageKey String?\n language String @default(\"en\")\n showRiskWarnings Boolean @default(true)\n showPreTransactionReminders Boolean @default(true)\n twoFactorEnabled Boolean @default(false)\n autoDetectTimeZone Boolean @default(true)\n referralCode String @unique\n\n // Inverse relations (these fix your P1012 errors)\n referralsMade Referral[] @relation(\"ReferrerRelations\") // users they referred\n referredBy Referral[] @relation(\"ReferredRelations\") // who referred them\n referralRewards ReferralReward[] @relation(\"UserRewards\") // their reward entries\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum ReferralStatus {\n Pending\n Active\n Suspended\n Completed\n}\n\nmodel Referral {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n referrerId String @db.ObjectId\n referredId String @db.ObjectId\n referralCode String\n referralSource String? // e.g. campaign or link source\n status ReferralStatus @default(Active)\n\n // Relations\n referrer User @relation(\"ReferrerRelations\", fields: [referrerId], references: [objectId])\n referred User @relation(\"ReferredRelations\", fields: [referredId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([referrerId])\n @@index([referredId])\n}\n\nmodel ReferralEpoch {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n periodId String @unique\n periodStart DateTime\n periodEnd DateTime\n timezone String @default(\"America/Mexico_City\")\n status EpochStatus @default(Active)\n\n // On-chain reward info (one root per epoch)\n totalFeesUsd Float?\n rewardPoolUsd Float?\n merkleRoot String?\n merkleTxHash String?\n rootPublishedAt DateTime?\n notes String?\n\n ReferralRewards ReferralReward[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum EpochStatus {\n Active\n Processing\n Completed\n Failed\n}\n\nenum ReferralTier {\n T1\n T2\n T3\n}\n\nmodel ReferralReward {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n userId String @db.ObjectId\n epochId String @db.ObjectId\n periodId String // denormalized for readability (e.g. \"2025W45\")\n\n // --- Aggregates ---\n referredBetVolumeUsd Float @default(0.0)\n referredFeeUsd Float @default(0.0)\n tier ReferralTier @default(T1)\n tierPercentage Float @default(0.025)\n\n // --- Payouts ---\n payoutBeforeScaleUsd Float @default(0.0)\n payoutScaledUsd Float @default(0.0)\n payoutTokenUnits String? // token base units (string for precision)\n scaleFactor Float?\n\n // --- Claim sync info ---\n isClaimedOnChain Boolean @default(false)\n claimedTxHash String?\n lastSyncedFromChainAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // --- Relations ---\n user User @relation(\"UserRewards\", fields: [userId], references: [objectId])\n epoch ReferralEpoch @relation(fields: [epochId], references: [objectId])\n\n @@unique([userId, periodId])\n @@index([epochId])\n @@index([userId])\n}\n\nenum ApiKeyScope {\n Read\n Write\n}\n\nmodel ApiKey {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n apiKeyId String @unique\n userId String\n ethAddress String?\n name String\n ciphertext String\n kmsKeyId String\n service LevrService? // Optional: restrict key to a specific service\n scopes ApiKeyScope[]\n isActive Boolean @default(true)\n expiresAt DateTime?\n lastUsedAt DateTime?\n usageCount Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId, isActive])\n @@index([service, isActive])\n}\n\nmodel AuditLog {\n objectId String @id @default(cuid()) @map(\"_id\")\n action String // e.g., \"api_key.created\", \"application.created\", \"token.validated\"\n resourceId String? // ID of the resource being acted upon\n metadata Json @default(\"{}\")\n ipAddress String?\n userAgent String?\n timestamp DateTime @default(now())\n // Relations\n userId String\n\n @@index([action])\n @@index([timestamp])\n @@index([userId])\n}\n",
514
- "inlineSchemaHash": "c57fe0e5f6731561055a22dceb5348e113a75582f273765fd63384fcfa4a5faf",
517
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"linux-musl-openssl-3.0.x\", \"darwin-arm64\"]\n output = \"generated\"\n}\n\ndatasource db {\n provider = \"mongodb\"\n url = env(\"MONGO_URI\")\n}\n\nenum GamePhase {\n PreGame\n LiveGame\n PostGame\n Cancelled\n}\n\nenum MarketTypes {\n FullTimeWinner\n OverUnder\n}\n\nenum MarketStatus {\n Open\n Closed\n Settled\n Refunded\n}\n\nenum ScoringType {\n Points\n Goals\n}\n\nenum FixtureStatus {\n Scheduled\n Cancelled\n}\n\nenum SportGroup {\n Football\n Basketball\n Baseball\n Soccer\n}\n\nenum LevrService {\n Auth\n Orderbook\n OracleCore\n OraclePeriphery\n OracleProcessor\n Leaderboard\n Lab\n}\n\nmodel Provider {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n providerUrl String @unique\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Tournament {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTournamentId String @unique\n chainId Int\n name String\n description String\n bannerUrl String\n startDate DateTime\n endDate DateTime\n\n games LevrGame[]\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, name])\n @@unique([chainId, description])\n @@unique([chainId, bannerUrl])\n @@index([name])\n}\n\nmodel Sport {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrSportId String @unique\n name String @unique\n periodType String\n scoringType ScoringType\n standardDurationMs Int\n standardPeriods Int\n periodDuration Int?\n hasDrawMarket Boolean\n sportGroup SportGroup\n\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel League {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n abbreviation String\n country String\n levrLeagueId String @unique\n opticOddsLeagueId String @unique\n lsportsLeagueId String @unique\n logoKey String\n logoUrl String\n\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n sportObjectId String @db.ObjectId\n sport Sport @relation(fields: [sportObjectId], references: [objectId])\n levrSportId String\n\n games LevrGame[]\n fixtures Fixture[]\n teams TeamData[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel TeamData {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTeamName String\n levrTeamOfficialAbbreviation String\n lsportsTeamName String\n opticOddsTeamName String\n lsportsTeamId String @unique\n opticOddsTeamId String @unique\n levrTeamId String @unique\n opticOddsTeamLogoUrl String @unique\n levrTeamLogoUrlAsHome String @unique\n levrTeamLogoUrlAsAway String @unique\n leagueObjectId String @db.ObjectId\n levrLeagueId String\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n @@unique([levrTeamId, levrTeamName, leagueObjectId])\n}\n\nmodel Fixture {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrFixtureId String @unique\n opticOddsFixtureId String? @unique\n lsportsFixtureId String? @unique\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n fixtureDate DateTime\n lastUpdated DateTime\n homeTeam Json\n awayTeam Json\n fixtureStatus FixtureStatus\n registeredChainIds Int[] // list of chain IDs where this fixture is registered\n\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n LevrGame LevrGame[]\n\n @@index([fixtureDate])\n @@index([leagueObjectId])\n @@index([eventName])\n}\n\nmodel Scores {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n scoresByPeriodHome Json\n scoresByPeriodAway Json\n totalScoresHome Float\n totalScoresAway Float\n chainId Int\n\n gameObjectId String @unique @db.ObjectId\n LevrGame LevrGame @relation(fields: [gameObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel LevrGame {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n gameId Int @unique\n txHash String @unique\n chainId Int\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n gameClock String\n paused Boolean @default(false)\n fixtureDate DateTime\n wentLiveAt DateTime?\n homeTeam Json // as defined in sample-data/lever/levr-game.json\n awayTeam Json // as defined in sample-data/lever/levr-game.json\n currentPeriod Int @default(0)\n actualDuration Float @default(0) // in milliseconds\n gamePhase GamePhase @default(PreGame)\n levrFixtureId String\n opticOddsFixtureId String?\n lsportsFixtureId String?\n gameProgressBps Int @default(0)\n sportGroup SportGroup\n\n fixtureObjectId String @db.ObjectId\n fixture Fixture @relation(fields: [fixtureObjectId], references: [objectId])\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n scores Scores?\n\n markets Market[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, levrFixtureId])\n @@unique([chainId, gameId])\n @@index([opticOddsFixtureId])\n @@index([lsportsFixtureId])\n @@index([eventName])\n @@index([fixtureDate])\n}\n\nmodel Odds {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n txHash String\n odds Json // define for the specific market type\n prices Json\n timestamp DateTime\n marketType MarketTypes\n details Json? // the unique details for the odds\n gamePhase GamePhase\n gamePeriod Int\n gameClock Int\n chainId Int\n marketPhase MarketStatus\n\n levrGameObjectId String @db.ObjectId\n marketObjectId String @db.ObjectId\n gameMarketId String\n market Market @relation(fields: [marketObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Market {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n chainId Int\n gameId Int\n levrMarketId String\n levrMarketContract String\n gameMarketId String @unique\n txHash String\n maturedAt DateTime?\n leveraged Boolean @default(false)\n isMatured Boolean @default(false)\n normalizationFactor Float\n marketDetails Json\n marketRiskAllocation Json\n providers Json\n activeProvider Json\n marketType MarketTypes\n status MarketStatus\n\n levrGameObjectId String @db.ObjectId // new unique identifier\n levrGame LevrGame @relation(fields: [levrGameObjectId], references: [objectId])\n\n odds Odds[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum UserOddsPreference {\n American\n Decimal\n European\n}\n\nmodel User {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n walletAddress String @unique\n userName String @unique\n email String @unique\n timeZone String\n preferredTimeZone String?\n userOddsPreference UserOddsPreference\n profileImageUrl String?\n profileImageKey String?\n language String @default(\"en\")\n showRiskWarnings Boolean @default(true)\n showPreTransactionReminders Boolean @default(true)\n twoFactorEnabled Boolean @default(false)\n autoDetectTimeZone Boolean @default(true)\n referralCode String @unique\n\n // Inverse relations (these fix your P1012 errors)\n referralsMade Referral[] @relation(\"ReferrerRelations\") // users they referred\n referredBy Referral[] @relation(\"ReferredRelations\") // who referred them\n referralRewards ReferralReward[] @relation(\"UserRewards\") // their reward entries\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum ReferralStatus {\n Pending\n Active\n Suspended\n Completed\n}\n\nmodel Referral {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n referrerId String @db.ObjectId\n referredId String @db.ObjectId\n referralCode String\n referralSource String? // e.g. campaign or link source\n status ReferralStatus @default(Active)\n\n // Relations\n referrer User @relation(\"ReferrerRelations\", fields: [referrerId], references: [objectId])\n referred User @relation(\"ReferredRelations\", fields: [referredId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([referrerId])\n @@index([referredId])\n}\n\nmodel ReferralEpoch {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n periodId String @unique\n periodStart DateTime\n periodEnd DateTime\n timezone String @default(\"America/Mexico_City\")\n status EpochStatus @default(Active)\n\n // On-chain reward info (one root per epoch)\n totalFeesUsd Float?\n rewardPoolUsd Float?\n merkleRoot String?\n merkleTxHash String?\n rootPublishedAt DateTime?\n notes String?\n\n ReferralRewards ReferralReward[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum EpochStatus {\n Active\n Processing\n Completed\n Failed\n}\n\nenum ReferralTier {\n T1\n T2\n T3\n}\n\nmodel ReferralReward {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n userId String @db.ObjectId\n epochId String @db.ObjectId\n periodId String // denormalized for readability (e.g. \"2025W45\")\n\n // --- Aggregates ---\n referredBetVolumeUsd Float @default(0.0)\n referredFeeUsd Float @default(0.0)\n tier ReferralTier @default(T1)\n tierPercentage Float @default(0.025)\n\n // --- Payouts ---\n payoutBeforeScaleUsd Float @default(0.0)\n payoutScaledUsd Float @default(0.0)\n payoutTokenUnits String? // token base units (string for precision)\n scaleFactor Float?\n\n // --- Claim sync info ---\n isClaimedOnChain Boolean @default(false)\n claimedTxHash String?\n lastSyncedFromChainAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // --- Relations ---\n user User @relation(\"UserRewards\", fields: [userId], references: [objectId])\n epoch ReferralEpoch @relation(fields: [epochId], references: [objectId])\n\n @@unique([userId, periodId])\n @@index([epochId])\n @@index([userId])\n}\n\nenum ApiKeyScope {\n Read\n Write\n}\n\nmodel ApiKey {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n apiKeyId String @unique\n userId String\n ethAddress String?\n name String\n ciphertext String\n kmsKeyId String\n service LevrService? // Optional: restrict key to a specific service\n scopes ApiKeyScope[]\n isActive Boolean @default(true)\n expiresAt DateTime?\n lastUsedAt DateTime?\n usageCount Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId, isActive])\n @@index([service, isActive])\n}\n\nmodel AuditLog {\n objectId String @id @default(cuid()) @map(\"_id\")\n action String // e.g., \"api_key.created\", \"application.created\", \"token.validated\"\n resourceId String? // ID of the resource being acted upon\n metadata Json @default(\"{}\")\n ipAddress String?\n userAgent String?\n timestamp DateTime @default(now())\n // Relations\n userId String\n\n @@index([action])\n @@index([timestamp])\n @@index([userId])\n}\n",
518
+ "inlineSchemaHash": "6bbef37d2a9d63b31f6c182fb2277692918ee25c4ba35812a2b91a0f252d5fd3",
515
519
  "copyEngine": true
516
520
  }
517
521
 
@@ -552,6 +556,10 @@ Object.assign(exports, Prisma)
552
556
  // file annotations for bundling tools to include these files
553
557
  path.join(__dirname, "libquery_engine-linux-musl-openssl-3.0.x.so.node");
554
558
  path.join(process.cwd(), "src/core/prisma/generated/libquery_engine-linux-musl-openssl-3.0.x.so.node")
559
+
560
+ // file annotations for bundling tools to include these files
561
+ path.join(__dirname, "libquery_engine-darwin-arm64.dylib.node");
562
+ path.join(process.cwd(), "src/core/prisma/generated/libquery_engine-darwin-arm64.dylib.node")
555
563
  // file annotations for bundling tools to include these files
556
564
  path.join(__dirname, "schema.prisma");
557
565
  path.join(process.cwd(), "src/core/prisma/generated/schema.prisma")
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "prisma-client-27aa4deec5400f2df83f3a1f4928141e6b2da1fab400cb31e5d1404c58c01af1",
2
+ "name": "prisma-client-83079eb224471cf53f2bdab7e46aee081e1c82f4e3fb3e15c83db8800f3184d3",
3
3
  "main": "index.js",
4
4
  "types": "index.d.ts",
5
5
  "browser": "default.js",
@@ -1,6 +1,6 @@
1
1
  generator client {
2
2
  provider = "prisma-client-js"
3
- binaryTargets = ["linux-musl-openssl-3.0.x"]
3
+ binaryTargets = ["linux-musl-openssl-3.0.x", "darwin-arm64"]
4
4
  output = "generated"
5
5
  }
6
6
 
@@ -483,6 +483,10 @@ const config = {
483
483
  {
484
484
  "fromEnvVar": null,
485
485
  "value": "linux-musl-openssl-3.0.x"
486
+ },
487
+ {
488
+ "fromEnvVar": null,
489
+ "value": "darwin-arm64"
486
490
  }
487
491
  ],
488
492
  "previewFeatures": [],
@@ -509,8 +513,8 @@ const config = {
509
513
  }
510
514
  }
511
515
  },
512
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"linux-musl-openssl-3.0.x\"]\n output = \"generated\"\n}\n\ndatasource db {\n provider = \"mongodb\"\n url = env(\"MONGO_URI\")\n}\n\nenum GamePhase {\n PreGame\n LiveGame\n PostGame\n Cancelled\n}\n\nenum MarketTypes {\n FullTimeWinner\n OverUnder\n}\n\nenum MarketStatus {\n Open\n Closed\n Settled\n Refunded\n}\n\nenum ScoringType {\n Points\n Goals\n}\n\nenum FixtureStatus {\n Scheduled\n Cancelled\n}\n\nenum SportGroup {\n Football\n Basketball\n Baseball\n Soccer\n}\n\nenum LevrService {\n Auth\n Orderbook\n OracleCore\n OraclePeriphery\n OracleProcessor\n Leaderboard\n Lab\n}\n\nmodel Provider {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n providerUrl String @unique\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Tournament {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTournamentId String @unique\n chainId Int\n name String\n description String\n bannerUrl String\n startDate DateTime\n endDate DateTime\n\n games LevrGame[]\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, name])\n @@unique([chainId, description])\n @@unique([chainId, bannerUrl])\n @@index([name])\n}\n\nmodel Sport {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrSportId String @unique\n name String @unique\n periodType String\n scoringType ScoringType\n standardDurationMs Int\n standardPeriods Int\n periodDuration Int?\n hasDrawMarket Boolean\n sportGroup SportGroup\n\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel League {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n abbreviation String\n country String\n levrLeagueId String @unique\n opticOddsLeagueId String @unique\n lsportsLeagueId String @unique\n logoKey String\n logoUrl String\n\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n sportObjectId String @db.ObjectId\n sport Sport @relation(fields: [sportObjectId], references: [objectId])\n levrSportId String\n\n games LevrGame[]\n fixtures Fixture[]\n teams TeamData[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel TeamData {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTeamName String\n levrTeamOfficialAbbreviation String\n lsportsTeamName String\n opticOddsTeamName String\n lsportsTeamId String @unique\n opticOddsTeamId String @unique\n levrTeamId String @unique\n opticOddsTeamLogoUrl String @unique\n levrTeamLogoUrlAsHome String @unique\n levrTeamLogoUrlAsAway String @unique\n leagueObjectId String @db.ObjectId\n levrLeagueId String\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n @@unique([levrTeamId, levrTeamName, leagueObjectId])\n}\n\nmodel Fixture {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrFixtureId String @unique\n opticOddsFixtureId String? @unique\n lsportsFixtureId String? @unique\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n fixtureDate DateTime\n lastUpdated DateTime\n homeTeam Json\n awayTeam Json\n fixtureStatus FixtureStatus\n registeredChainIds Int[] // list of chain IDs where this fixture is registered\n\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n LevrGame LevrGame[]\n\n @@index([fixtureDate])\n @@index([leagueObjectId])\n @@index([eventName])\n}\n\nmodel Scores {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n scoresByPeriodHome Json\n scoresByPeriodAway Json\n totalScoresHome Float\n totalScoresAway Float\n chainId Int\n\n gameObjectId String @unique @db.ObjectId\n LevrGame LevrGame @relation(fields: [gameObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel LevrGame {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n gameId Int @unique\n txHash String @unique\n chainId Int\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n gameClock String\n paused Boolean @default(false)\n fixtureDate DateTime\n wentLiveAt DateTime?\n homeTeam Json // as defined in sample-data/lever/levr-game.json\n awayTeam Json // as defined in sample-data/lever/levr-game.json\n currentPeriod Int @default(0)\n actualDuration Float @default(0) // in milliseconds\n gamePhase GamePhase @default(PreGame)\n levrFixtureId String\n opticOddsFixtureId String?\n lsportsFixtureId String?\n gameProgressBps Int @default(0)\n sportGroup SportGroup\n\n fixtureObjectId String @db.ObjectId\n fixture Fixture @relation(fields: [fixtureObjectId], references: [objectId])\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n scores Scores?\n\n markets Market[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, levrFixtureId])\n @@unique([chainId, gameId])\n @@index([opticOddsFixtureId])\n @@index([lsportsFixtureId])\n @@index([eventName])\n @@index([fixtureDate])\n}\n\nmodel Odds {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n txHash String\n odds Json // define for the specific market type\n prices Json\n timestamp DateTime\n marketType MarketTypes\n details Json? // the unique details for the odds\n gamePhase GamePhase\n gamePeriod Int\n gameClock Int\n chainId Int\n marketPhase MarketStatus\n\n levrGameObjectId String @db.ObjectId\n marketObjectId String @db.ObjectId\n gameMarketId String\n market Market @relation(fields: [marketObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Market {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n chainId Int\n gameId Int\n levrMarketId String\n levrMarketContract String\n gameMarketId String @unique\n txHash String\n maturedAt DateTime?\n leveraged Boolean @default(false)\n isMatured Boolean @default(false)\n normalizationFactor Float\n marketDetails Json\n marketRiskAllocation Json\n providers Json\n activeProvider Json\n marketType MarketTypes\n status MarketStatus\n\n levrGameObjectId String @db.ObjectId // new unique identifier\n levrGame LevrGame @relation(fields: [levrGameObjectId], references: [objectId])\n\n odds Odds[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum UserOddsPreference {\n American\n Decimal\n European\n}\n\nmodel User {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n walletAddress String @unique\n userName String @unique\n email String @unique\n timeZone String\n preferredTimeZone String?\n userOddsPreference UserOddsPreference\n profileImageUrl String?\n profileImageKey String?\n language String @default(\"en\")\n showRiskWarnings Boolean @default(true)\n showPreTransactionReminders Boolean @default(true)\n twoFactorEnabled Boolean @default(false)\n autoDetectTimeZone Boolean @default(true)\n referralCode String @unique\n\n // Inverse relations (these fix your P1012 errors)\n referralsMade Referral[] @relation(\"ReferrerRelations\") // users they referred\n referredBy Referral[] @relation(\"ReferredRelations\") // who referred them\n referralRewards ReferralReward[] @relation(\"UserRewards\") // their reward entries\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum ReferralStatus {\n Pending\n Active\n Suspended\n Completed\n}\n\nmodel Referral {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n referrerId String @db.ObjectId\n referredId String @db.ObjectId\n referralCode String\n referralSource String? // e.g. campaign or link source\n status ReferralStatus @default(Active)\n\n // Relations\n referrer User @relation(\"ReferrerRelations\", fields: [referrerId], references: [objectId])\n referred User @relation(\"ReferredRelations\", fields: [referredId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([referrerId])\n @@index([referredId])\n}\n\nmodel ReferralEpoch {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n periodId String @unique\n periodStart DateTime\n periodEnd DateTime\n timezone String @default(\"America/Mexico_City\")\n status EpochStatus @default(Active)\n\n // On-chain reward info (one root per epoch)\n totalFeesUsd Float?\n rewardPoolUsd Float?\n merkleRoot String?\n merkleTxHash String?\n rootPublishedAt DateTime?\n notes String?\n\n ReferralRewards ReferralReward[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum EpochStatus {\n Active\n Processing\n Completed\n Failed\n}\n\nenum ReferralTier {\n T1\n T2\n T3\n}\n\nmodel ReferralReward {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n userId String @db.ObjectId\n epochId String @db.ObjectId\n periodId String // denormalized for readability (e.g. \"2025W45\")\n\n // --- Aggregates ---\n referredBetVolumeUsd Float @default(0.0)\n referredFeeUsd Float @default(0.0)\n tier ReferralTier @default(T1)\n tierPercentage Float @default(0.025)\n\n // --- Payouts ---\n payoutBeforeScaleUsd Float @default(0.0)\n payoutScaledUsd Float @default(0.0)\n payoutTokenUnits String? // token base units (string for precision)\n scaleFactor Float?\n\n // --- Claim sync info ---\n isClaimedOnChain Boolean @default(false)\n claimedTxHash String?\n lastSyncedFromChainAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // --- Relations ---\n user User @relation(\"UserRewards\", fields: [userId], references: [objectId])\n epoch ReferralEpoch @relation(fields: [epochId], references: [objectId])\n\n @@unique([userId, periodId])\n @@index([epochId])\n @@index([userId])\n}\n\nenum ApiKeyScope {\n Read\n Write\n}\n\nmodel ApiKey {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n apiKeyId String @unique\n userId String\n ethAddress String?\n name String\n ciphertext String\n kmsKeyId String\n service LevrService? // Optional: restrict key to a specific service\n scopes ApiKeyScope[]\n isActive Boolean @default(true)\n expiresAt DateTime?\n lastUsedAt DateTime?\n usageCount Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId, isActive])\n @@index([service, isActive])\n}\n\nmodel AuditLog {\n objectId String @id @default(cuid()) @map(\"_id\")\n action String // e.g., \"api_key.created\", \"application.created\", \"token.validated\"\n resourceId String? // ID of the resource being acted upon\n metadata Json @default(\"{}\")\n ipAddress String?\n userAgent String?\n timestamp DateTime @default(now())\n // Relations\n userId String\n\n @@index([action])\n @@index([timestamp])\n @@index([userId])\n}\n",
513
- "inlineSchemaHash": "c57fe0e5f6731561055a22dceb5348e113a75582f273765fd63384fcfa4a5faf",
516
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"linux-musl-openssl-3.0.x\", \"darwin-arm64\"]\n output = \"generated\"\n}\n\ndatasource db {\n provider = \"mongodb\"\n url = env(\"MONGO_URI\")\n}\n\nenum GamePhase {\n PreGame\n LiveGame\n PostGame\n Cancelled\n}\n\nenum MarketTypes {\n FullTimeWinner\n OverUnder\n}\n\nenum MarketStatus {\n Open\n Closed\n Settled\n Refunded\n}\n\nenum ScoringType {\n Points\n Goals\n}\n\nenum FixtureStatus {\n Scheduled\n Cancelled\n}\n\nenum SportGroup {\n Football\n Basketball\n Baseball\n Soccer\n}\n\nenum LevrService {\n Auth\n Orderbook\n OracleCore\n OraclePeriphery\n OracleProcessor\n Leaderboard\n Lab\n}\n\nmodel Provider {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n providerUrl String @unique\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Tournament {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTournamentId String @unique\n chainId Int\n name String\n description String\n bannerUrl String\n startDate DateTime\n endDate DateTime\n\n games LevrGame[]\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, name])\n @@unique([chainId, description])\n @@unique([chainId, bannerUrl])\n @@index([name])\n}\n\nmodel Sport {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrSportId String @unique\n name String @unique\n periodType String\n scoringType ScoringType\n standardDurationMs Int\n standardPeriods Int\n periodDuration Int?\n hasDrawMarket Boolean\n sportGroup SportGroup\n\n leagues League[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel League {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n name String @unique\n abbreviation String\n country String\n levrLeagueId String @unique\n opticOddsLeagueId String @unique\n lsportsLeagueId String @unique\n logoKey String\n logoUrl String\n\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n sportObjectId String @db.ObjectId\n sport Sport @relation(fields: [sportObjectId], references: [objectId])\n levrSportId String\n\n games LevrGame[]\n fixtures Fixture[]\n teams TeamData[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel TeamData {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrTeamName String\n levrTeamOfficialAbbreviation String\n lsportsTeamName String\n opticOddsTeamName String\n lsportsTeamId String @unique\n opticOddsTeamId String @unique\n levrTeamId String @unique\n opticOddsTeamLogoUrl String @unique\n levrTeamLogoUrlAsHome String @unique\n levrTeamLogoUrlAsAway String @unique\n leagueObjectId String @db.ObjectId\n levrLeagueId String\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n @@unique([levrTeamId, levrTeamName, leagueObjectId])\n}\n\nmodel Fixture {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n levrFixtureId String @unique\n opticOddsFixtureId String? @unique\n lsportsFixtureId String? @unique\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n fixtureDate DateTime\n lastUpdated DateTime\n homeTeam Json\n awayTeam Json\n fixtureStatus FixtureStatus\n registeredChainIds Int[] // list of chain IDs where this fixture is registered\n\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n LevrGame LevrGame[]\n\n @@index([fixtureDate])\n @@index([leagueObjectId])\n @@index([eventName])\n}\n\nmodel Scores {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n scoresByPeriodHome Json\n scoresByPeriodAway Json\n totalScoresHome Float\n totalScoresAway Float\n chainId Int\n\n gameObjectId String @unique @db.ObjectId\n LevrGame LevrGame @relation(fields: [gameObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel LevrGame {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n gameId Int @unique\n txHash String @unique\n chainId Int\n seasonType String\n venue String\n eventName String\n location String\n venueLocation String\n gameClock String\n paused Boolean @default(false)\n fixtureDate DateTime\n wentLiveAt DateTime?\n homeTeam Json // as defined in sample-data/lever/levr-game.json\n awayTeam Json // as defined in sample-data/lever/levr-game.json\n currentPeriod Int @default(0)\n actualDuration Float @default(0) // in milliseconds\n gamePhase GamePhase @default(PreGame)\n levrFixtureId String\n opticOddsFixtureId String?\n lsportsFixtureId String?\n gameProgressBps Int @default(0)\n sportGroup SportGroup\n\n fixtureObjectId String @db.ObjectId\n fixture Fixture @relation(fields: [fixtureObjectId], references: [objectId])\n tournamentObjectId String @db.ObjectId\n tournament Tournament @relation(fields: [tournamentObjectId], references: [objectId])\n leagueObjectId String @db.ObjectId\n league League @relation(fields: [leagueObjectId], references: [objectId])\n scores Scores?\n\n markets Market[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([chainId, levrFixtureId])\n @@unique([chainId, gameId])\n @@index([opticOddsFixtureId])\n @@index([lsportsFixtureId])\n @@index([eventName])\n @@index([fixtureDate])\n}\n\nmodel Odds {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n txHash String\n odds Json // define for the specific market type\n prices Json\n timestamp DateTime\n marketType MarketTypes\n details Json? // the unique details for the odds\n gamePhase GamePhase\n gamePeriod Int\n gameClock Int\n chainId Int\n marketPhase MarketStatus\n\n levrGameObjectId String @db.ObjectId\n marketObjectId String @db.ObjectId\n gameMarketId String\n market Market @relation(fields: [marketObjectId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Market {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n chainId Int\n gameId Int\n levrMarketId String\n levrMarketContract String\n gameMarketId String @unique\n txHash String\n maturedAt DateTime?\n leveraged Boolean @default(false)\n isMatured Boolean @default(false)\n normalizationFactor Float\n marketDetails Json\n marketRiskAllocation Json\n providers Json\n activeProvider Json\n marketType MarketTypes\n status MarketStatus\n\n levrGameObjectId String @db.ObjectId // new unique identifier\n levrGame LevrGame @relation(fields: [levrGameObjectId], references: [objectId])\n\n odds Odds[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum UserOddsPreference {\n American\n Decimal\n European\n}\n\nmodel User {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n walletAddress String @unique\n userName String @unique\n email String @unique\n timeZone String\n preferredTimeZone String?\n userOddsPreference UserOddsPreference\n profileImageUrl String?\n profileImageKey String?\n language String @default(\"en\")\n showRiskWarnings Boolean @default(true)\n showPreTransactionReminders Boolean @default(true)\n twoFactorEnabled Boolean @default(false)\n autoDetectTimeZone Boolean @default(true)\n referralCode String @unique\n\n // Inverse relations (these fix your P1012 errors)\n referralsMade Referral[] @relation(\"ReferrerRelations\") // users they referred\n referredBy Referral[] @relation(\"ReferredRelations\") // who referred them\n referralRewards ReferralReward[] @relation(\"UserRewards\") // their reward entries\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum ReferralStatus {\n Pending\n Active\n Suspended\n Completed\n}\n\nmodel Referral {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n referrerId String @db.ObjectId\n referredId String @db.ObjectId\n referralCode String\n referralSource String? // e.g. campaign or link source\n status ReferralStatus @default(Active)\n\n // Relations\n referrer User @relation(\"ReferrerRelations\", fields: [referrerId], references: [objectId])\n referred User @relation(\"ReferredRelations\", fields: [referredId], references: [objectId])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([referrerId])\n @@index([referredId])\n}\n\nmodel ReferralEpoch {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n periodId String @unique\n periodStart DateTime\n periodEnd DateTime\n timezone String @default(\"America/Mexico_City\")\n status EpochStatus @default(Active)\n\n // On-chain reward info (one root per epoch)\n totalFeesUsd Float?\n rewardPoolUsd Float?\n merkleRoot String?\n merkleTxHash String?\n rootPublishedAt DateTime?\n notes String?\n\n ReferralRewards ReferralReward[]\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nenum EpochStatus {\n Active\n Processing\n Completed\n Failed\n}\n\nenum ReferralTier {\n T1\n T2\n T3\n}\n\nmodel ReferralReward {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n userId String @db.ObjectId\n epochId String @db.ObjectId\n periodId String // denormalized for readability (e.g. \"2025W45\")\n\n // --- Aggregates ---\n referredBetVolumeUsd Float @default(0.0)\n referredFeeUsd Float @default(0.0)\n tier ReferralTier @default(T1)\n tierPercentage Float @default(0.025)\n\n // --- Payouts ---\n payoutBeforeScaleUsd Float @default(0.0)\n payoutScaledUsd Float @default(0.0)\n payoutTokenUnits String? // token base units (string for precision)\n scaleFactor Float?\n\n // --- Claim sync info ---\n isClaimedOnChain Boolean @default(false)\n claimedTxHash String?\n lastSyncedFromChainAt DateTime?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // --- Relations ---\n user User @relation(\"UserRewards\", fields: [userId], references: [objectId])\n epoch ReferralEpoch @relation(fields: [epochId], references: [objectId])\n\n @@unique([userId, periodId])\n @@index([epochId])\n @@index([userId])\n}\n\nenum ApiKeyScope {\n Read\n Write\n}\n\nmodel ApiKey {\n objectId String @id @default(auto()) @map(\"_id\") @db.ObjectId\n apiKeyId String @unique\n userId String\n ethAddress String?\n name String\n ciphertext String\n kmsKeyId String\n service LevrService? // Optional: restrict key to a specific service\n scopes ApiKeyScope[]\n isActive Boolean @default(true)\n expiresAt DateTime?\n lastUsedAt DateTime?\n usageCount Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId, isActive])\n @@index([service, isActive])\n}\n\nmodel AuditLog {\n objectId String @id @default(cuid()) @map(\"_id\")\n action String // e.g., \"api_key.created\", \"application.created\", \"token.validated\"\n resourceId String? // ID of the resource being acted upon\n metadata Json @default(\"{}\")\n ipAddress String?\n userAgent String?\n timestamp DateTime @default(now())\n // Relations\n userId String\n\n @@index([action])\n @@index([timestamp])\n @@index([userId])\n}\n",
517
+ "inlineSchemaHash": "6bbef37d2a9d63b31f6c182fb2277692918ee25c4ba35812a2b91a0f252d5fd3",
514
518
  "copyEngine": true
515
519
  }
516
520
  config.dirname = '/'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@levrbet/shared",
3
- "version": "0.2.43",
3
+ "version": "0.2.44",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {