@merkl/api 0.10.155 → 0.10.157

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. package/dist/database/api/.generated/edge.js +2 -2
  2. package/dist/database/api/.generated/index.js +2 -2
  3. package/dist/database/api/.generated/package.json +1 -1
  4. package/dist/database/api/.generated/schema.prisma +1 -0
  5. package/dist/src/eden/index.d.ts +48 -0
  6. package/dist/src/index.d.ts +16 -0
  7. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +8 -0
  8. package/dist/src/modules/v4/campaign/campaign.model.d.ts +3 -1
  9. package/dist/src/modules/v4/campaign/campaign.repository.d.ts +8 -0
  10. package/dist/src/modules/v4/campaign/campaign.repository.js +1 -0
  11. package/dist/src/modules/v4/campaign/campaign.service.d.ts +16 -0
  12. package/dist/src/modules/v4/campaign/campaign.service.js +4 -2
  13. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +8 -0
  14. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +1 -1
  15. package/dist/src/modules/v4/opportunity/opportunity.model.js +1 -1
  16. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +32 -0
  17. package/dist/src/modules/v4/opportunity/opportunity.repository.js +13 -2
  18. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +8 -0
  19. package/dist/src/modules/v4/router.d.ts +16 -0
  20. package/dist/src/modules/v4/status/status.model.d.ts +3 -2
  21. package/dist/src/routes/v3/ERC20Campaigns.d.ts +16 -0
  22. package/dist/src/routes/v3/blacklist.d.ts +16 -0
  23. package/dist/src/routes/v3/campaigns.d.ts +16 -0
  24. package/dist/src/routes/v3/campaignsInfo.d.ts +16 -0
  25. package/dist/src/routes/v3/multiChainPositions.d.ts +16 -0
  26. package/dist/src/routes/v3/opportunity.d.ts +16 -0
  27. package/dist/src/routes/v3/positions.d.ts +16 -0
  28. package/dist/src/routes/v3/rewards.d.ts +16 -0
  29. package/dist/src/routes/v3/updates.d.ts +16 -0
  30. package/dist/src/routes/v3/userRewards.d.ts +16 -0
  31. package/dist/tsconfig.package.tsbuildinfo +1 -1
  32. package/package.json +1 -1
@@ -584,8 +584,8 @@ const config = {
584
584
  }
585
585
  }
586
586
  },
587
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"native\", \"linux-arm64-openssl-1.1.x\", \"linux-musl-arm64-openssl-3.0.x\"]\n output = \".generated/\"\n previewFeatures = [\"fullTextSearchPostgres\", \"relationJoins\", \"tracing\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_API_URL\")\n}\n\nmodel Campaign {\n id String @id\n ComputeChain Chain @relation(\"compute\", fields: [computeChainId], references: [id])\n computeChainId Int\n DistributionChain Chain @relation(\"distribution\", fields: [distributionChainId], references: [id])\n distributionChainId Int\n campaignId String\n type CampaignType\n subType Int?\n RewardToken Token @relation(fields: [rewardTokenId], references: [id])\n rewardTokenId String\n amount String\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n startTimestamp BigInt\n endTimestamp BigInt\n params Json\n RewardBreakdown RewardBreakdown[]\n DailyRewardsBreakdown DailyRewardsBreakdown[]\n Creator User @relation(fields: [creatorAddress], references: [address])\n creatorAddress String @db.Char(42)\n CampaignStatus CampaignStatus[]\n\n @@unique([distributionChainId, campaignId])\n @@index([opportunityId], type: Hash)\n}\n\nmodel Chain {\n id Int @id\n name String\n icon String\n Explorer Explorer[]\n Campaigns Campaign[] @relation(\"compute\")\n Distribution Campaign[] @relation(\"distribution\")\n Token Token[]\n Opportunity Opportunity[]\n MerklRoot MerklRoot[]\n Blacklist Blacklist[]\n Dump Dump[]\n}\n\nmodel Explorer {\n id String @id\n type ExplorerType\n Chain Chain @relation(fields: [chainId], references: [id])\n url String\n chainId Int\n\n @@unique([type, chainId])\n}\n\nmodel Opportunity {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id]) // compute\n chainId Int // compute\n type CampaignType\n identifier String // eg. 0xUniswapPool - formerly mainParameter\n name String\n status Status\n action OpportunityAction\n Tokens Token[]\n Campaigns Campaign[]\n Protocols Protocol[]\n MainProtocol Protocol? @relation(name: \"main\", fields: [mainProtocolId], references: [id])\n mainProtocolId String?\n tvl Float @default(0)\n TvlRecords TVLRecord[]\n apr Float @default(0)\n AprRecords AprRecord[]\n dailyRewards Float @default(0)\n DailyRewardsRecords DailyRewardsRecord[]\n tags String[] @default([])\n\n @@unique([chainId, type, identifier])\n}\n\nmodel Protocol {\n id String @id\n tags ProtocolTag[]\n name String\n description String @default(\"\")\n url String\n icon String\n MainOpportunities Opportunity[] @relation(name: \"main\")\n Opportunities Opportunity[]\n RewardBreakdown RewardBreakdown[]\n}\n\nmodel Token {\n id String @id()\n name String?\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n address String @db.Char(42)\n decimals Int\n symbol String\n icon String\n verified Boolean @default(false)\n price Float?\n Opportunity Opportunity[]\n Campaigns Campaign[]\n Reward Reward[]\n DumpTo Dump[] @relation(\"to\")\n DumpFrom Dump[] @relation(\"from\")\n\n @@unique([chainId, address])\n @@index([chainId], type: Hash)\n @@index([symbol, address])\n}\n\nmodel AprRecord {\n id String @id\n timestamp BigInt\n cumulated Float\n AprBreakdown AprBreakdown[]\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel AprBreakdown {\n id Int @id @default(autoincrement())\n identifier String\n type AprType\n value Float\n AprRecord AprRecord @relation(fields: [aprRecordId], references: [id])\n aprRecordId String\n\n @@index([aprRecordId], type: Hash)\n}\n\nmodel TVLRecord {\n id String @id\n timestamp BigInt\n total Float\n TvlBreakdown TVLBreakdown[]\n\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel TVLBreakdown {\n id Int @id @default(autoincrement())\n identifier String\n type TvlType\n value Float\n\n TvlRecord TVLRecord @relation(fields: [tvlRecordId], references: [id])\n tvlRecordId String\n\n @@index([tvlRecordId], type: Hash)\n}\n\nmodel DailyRewardsRecord {\n id String @id\n timestamp BigInt\n total Float\n DailyRewardsBreakdown DailyRewardsBreakdown[]\n\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel DailyRewardsBreakdown {\n id Int @id @default(autoincrement())\n value Float\n campaignId String\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n DailyRewardsRecord DailyRewardsRecord @relation(fields: [dailyRewardsRecordId], references: [id])\n dailyRewardsRecordId String\n\n @@index([dailyRewardsRecordId], type: Hash)\n}\n\nmodel User {\n address String @id @db.Char(42)\n Rewards Reward[]\n Blacklist Blacklist[]\n CampaignsCreated Campaign[]\n tags String[]\n}\n\nmodel Reward {\n id String @id\n MerklRoot MerklRoot @relation(fields: [root], references: [root])\n root String\n User User @relation(fields: [recipient], references: [address])\n recipient String @db.Char(42)\n RewardToken Token @relation(fields: [rewardTokenId], references: [id])\n rewardTokenId String\n proofs String[]\n Breakdown RewardBreakdown[]\n\n @@unique([root, recipient, rewardTokenId])\n @@index([root], type: Hash)\n @@index([recipient, rewardTokenId])\n}\n\nmodel RewardBreakdown {\n id Int @id @default(autoincrement())\n Protocol Protocol? @relation(fields: [protocolId], references: [id])\n protocolId String?\n reason String\n amount String\n claimed String\n pending String\n auxiliaryData1 String?\n auxiliaryData2 String?\n Reward Reward @relation(fields: [rewardId], references: [id], onDelete: Cascade)\n rewardId String\n campaignId String\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n\n @@unique([rewardId, campaignId, reason])\n @@index([rewardId], type: Hash)\n @@index([campaignId], type: Hash)\n @@index([amount(sort: Desc)])\n}\n\nmodel MerklRoot {\n root String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n epoch Int\n timestamp BigInt\n Rewards Reward[]\n\n @@index([chainId, root])\n}\n\nmodel PriceSource {\n id Int @id @default(autoincrement())\n symbol String @unique() // Price Id\n method PriceSourceMethod\n args Json?\n}\n\n// priceId -> number\n\nmodel Blacklist {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n poolAddress String @db.Char(42)\n User User @relation(fields: [userAddress], references: [address])\n userAddress String @db.Char(42)\n arrestTimestamp BigInt\n arrestDetails Json\n\n @@unique([chainId, userAddress, poolAddress])\n @@index([userAddress], type: Hash)\n}\n\nmodel Dump {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n FromToken Token @relation(name: \"from\", fields: [fromTokenId], references: [id])\n fromTokenId String\n ToToken Token @relation(name: \"to\", fields: [toTokenId], references: [id])\n toTokenId String\n multisig String @db.Char(42)\n recipient String @db.Char(42)\n amountIn String @default(\"0\")\n amountOut String @default(\"0\")\n datetime DateTime\n timestamp Int\n\n @@unique([chainId, fromTokenId, toTokenId, timestamp])\n}\n\nmodel CampaignStatus {\n campaignId String @id\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n computedUntil BigInt @default(0)\n processingStarted BigInt @default(0)\n status RunStatus @default(SUCCESS)\n error String @default(\"\")\n details Json @default(\"{}\")\n}\n\n// enums\n\nenum RunStatus {\n PROCESSING\n SUCCESS\n FAILED\n SKIPPED\n}\n\nenum CampaignType {\n INVALID\n ERC20\n CLAMM\n ERC20_SNAPSHOT\n JSON_AIRDROP\n SILO\n RADIANT\n MORPHO\n DOLOMITE\n BADGER\n COMPOUND\n AJNA\n EULER\n UNISWAP_V4\n}\n\nenum ProtocolTag {\n AMM\n ALM\n DEX\n LENDING\n}\n\nenum OpportunityAction {\n POOL\n HOLD\n DROP\n LEND\n BORROW\n INVALID\n}\n\nenum Status {\n NONE\n PAST\n LIVE\n SOON\n}\n\nenum ExplorerType {\n ETHERSCAN\n BLOCKSCOUT\n}\n\nenum AprType {\n CAMPAIGN\n TOKEN\n PROTOCOL\n}\n\nenum TvlType {\n TOKEN\n PROTOCOL\n}\n\nenum PriceSourceMethod {\n COINGECKO\n CONSTANT\n EQUAL_TO\n ERC4626\n DEXSCREENER\n INDEXCOOP\n DEFILLAMA\n}\n",
588
- "inlineSchemaHash": "3aa6c07271bc09d5c825edde5800f9571a702d8e6bf30900de1634c0f880b777",
587
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"native\", \"linux-arm64-openssl-1.1.x\", \"linux-musl-arm64-openssl-3.0.x\"]\n output = \".generated/\"\n previewFeatures = [\"fullTextSearchPostgres\", \"relationJoins\", \"tracing\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_API_URL\")\n}\n\nmodel Campaign {\n id String @id\n ComputeChain Chain @relation(\"compute\", fields: [computeChainId], references: [id])\n computeChainId Int\n DistributionChain Chain @relation(\"distribution\", fields: [distributionChainId], references: [id])\n distributionChainId Int\n campaignId String\n type CampaignType\n subType Int?\n RewardToken Token @relation(fields: [rewardTokenId], references: [id])\n rewardTokenId String\n amount String\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n startTimestamp BigInt\n endTimestamp BigInt\n params Json\n RewardBreakdown RewardBreakdown[]\n DailyRewardsBreakdown DailyRewardsBreakdown[]\n Creator User @relation(fields: [creatorAddress], references: [address])\n creatorAddress String @db.Char(42)\n // Should probably be a 1 to 1 relation if we do not want to keep historic records\n CampaignStatus CampaignStatus[]\n\n @@unique([distributionChainId, campaignId])\n @@index([opportunityId], type: Hash)\n}\n\nmodel Chain {\n id Int @id\n name String\n icon String\n Explorer Explorer[]\n Campaigns Campaign[] @relation(\"compute\")\n Distribution Campaign[] @relation(\"distribution\")\n Token Token[]\n Opportunity Opportunity[]\n MerklRoot MerklRoot[]\n Blacklist Blacklist[]\n Dump Dump[]\n}\n\nmodel Explorer {\n id String @id\n type ExplorerType\n Chain Chain @relation(fields: [chainId], references: [id])\n url String\n chainId Int\n\n @@unique([type, chainId])\n}\n\nmodel Opportunity {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id]) // compute\n chainId Int // compute\n type CampaignType\n identifier String // eg. 0xUniswapPool - formerly mainParameter\n name String\n status Status\n action OpportunityAction\n Tokens Token[]\n Campaigns Campaign[]\n Protocols Protocol[]\n MainProtocol Protocol? @relation(name: \"main\", fields: [mainProtocolId], references: [id])\n mainProtocolId String?\n tvl Float @default(0)\n TvlRecords TVLRecord[]\n apr Float @default(0)\n AprRecords AprRecord[]\n dailyRewards Float @default(0)\n DailyRewardsRecords DailyRewardsRecord[]\n tags String[] @default([])\n\n @@unique([chainId, type, identifier])\n}\n\nmodel Protocol {\n id String @id\n tags ProtocolTag[]\n name String\n description String @default(\"\")\n url String\n icon String\n MainOpportunities Opportunity[] @relation(name: \"main\")\n Opportunities Opportunity[]\n RewardBreakdown RewardBreakdown[]\n}\n\nmodel Token {\n id String @id()\n name String?\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n address String @db.Char(42)\n decimals Int\n symbol String\n icon String\n verified Boolean @default(false)\n price Float?\n Opportunity Opportunity[]\n Campaigns Campaign[]\n Reward Reward[]\n DumpTo Dump[] @relation(\"to\")\n DumpFrom Dump[] @relation(\"from\")\n\n @@unique([chainId, address])\n @@index([chainId], type: Hash)\n @@index([symbol, address])\n}\n\nmodel AprRecord {\n id String @id\n timestamp BigInt\n cumulated Float\n AprBreakdown AprBreakdown[]\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel AprBreakdown {\n id Int @id @default(autoincrement())\n identifier String\n type AprType\n value Float\n AprRecord AprRecord @relation(fields: [aprRecordId], references: [id])\n aprRecordId String\n\n @@index([aprRecordId], type: Hash)\n}\n\nmodel TVLRecord {\n id String @id\n timestamp BigInt\n total Float\n TvlBreakdown TVLBreakdown[]\n\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel TVLBreakdown {\n id Int @id @default(autoincrement())\n identifier String\n type TvlType\n value Float\n\n TvlRecord TVLRecord @relation(fields: [tvlRecordId], references: [id])\n tvlRecordId String\n\n @@index([tvlRecordId], type: Hash)\n}\n\nmodel DailyRewardsRecord {\n id String @id\n timestamp BigInt\n total Float\n DailyRewardsBreakdown DailyRewardsBreakdown[]\n\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel DailyRewardsBreakdown {\n id Int @id @default(autoincrement())\n value Float\n campaignId String\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n DailyRewardsRecord DailyRewardsRecord @relation(fields: [dailyRewardsRecordId], references: [id])\n dailyRewardsRecordId String\n\n @@index([dailyRewardsRecordId], type: Hash)\n}\n\nmodel User {\n address String @id @db.Char(42)\n Rewards Reward[]\n Blacklist Blacklist[]\n CampaignsCreated Campaign[]\n tags String[]\n}\n\nmodel Reward {\n id String @id\n MerklRoot MerklRoot @relation(fields: [root], references: [root])\n root String\n User User @relation(fields: [recipient], references: [address])\n recipient String @db.Char(42)\n RewardToken Token @relation(fields: [rewardTokenId], references: [id])\n rewardTokenId String\n proofs String[]\n Breakdown RewardBreakdown[]\n\n @@unique([root, recipient, rewardTokenId])\n @@index([root], type: Hash)\n @@index([recipient, rewardTokenId])\n}\n\nmodel RewardBreakdown {\n id Int @id @default(autoincrement())\n Protocol Protocol? @relation(fields: [protocolId], references: [id])\n protocolId String?\n reason String\n amount String\n claimed String\n pending String\n auxiliaryData1 String?\n auxiliaryData2 String?\n Reward Reward @relation(fields: [rewardId], references: [id], onDelete: Cascade)\n rewardId String\n campaignId String\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n\n @@unique([rewardId, campaignId, reason])\n @@index([rewardId], type: Hash)\n @@index([campaignId], type: Hash)\n @@index([amount(sort: Desc)])\n}\n\nmodel MerklRoot {\n root String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n epoch Int\n timestamp BigInt\n Rewards Reward[]\n\n @@index([chainId, root])\n}\n\nmodel PriceSource {\n id Int @id @default(autoincrement())\n symbol String @unique() // Price Id\n method PriceSourceMethod\n args Json?\n}\n\n// priceId -> number\n\nmodel Blacklist {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n poolAddress String @db.Char(42)\n User User @relation(fields: [userAddress], references: [address])\n userAddress String @db.Char(42)\n arrestTimestamp BigInt\n arrestDetails Json\n\n @@unique([chainId, userAddress, poolAddress])\n @@index([userAddress], type: Hash)\n}\n\nmodel Dump {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n FromToken Token @relation(name: \"from\", fields: [fromTokenId], references: [id])\n fromTokenId String\n ToToken Token @relation(name: \"to\", fields: [toTokenId], references: [id])\n toTokenId String\n multisig String @db.Char(42)\n recipient String @db.Char(42)\n amountIn String @default(\"0\")\n amountOut String @default(\"0\")\n datetime DateTime\n timestamp Int\n\n @@unique([chainId, fromTokenId, toTokenId, timestamp])\n}\n\nmodel CampaignStatus {\n campaignId String @id\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n computedUntil BigInt @default(0)\n processingStarted BigInt @default(0)\n status RunStatus @default(SUCCESS)\n error String @default(\"\")\n details Json @default(\"{}\")\n}\n\n// enums\n\nenum RunStatus {\n PROCESSING\n SUCCESS\n FAILED\n SKIPPED\n}\n\nenum CampaignType {\n INVALID\n ERC20\n CLAMM\n ERC20_SNAPSHOT\n JSON_AIRDROP\n SILO\n RADIANT\n MORPHO\n DOLOMITE\n BADGER\n COMPOUND\n AJNA\n EULER\n UNISWAP_V4\n}\n\nenum ProtocolTag {\n AMM\n ALM\n DEX\n LENDING\n}\n\nenum OpportunityAction {\n POOL\n HOLD\n DROP\n LEND\n BORROW\n INVALID\n}\n\nenum Status {\n NONE\n PAST\n LIVE\n SOON\n}\n\nenum ExplorerType {\n ETHERSCAN\n BLOCKSCOUT\n}\n\nenum AprType {\n CAMPAIGN\n TOKEN\n PROTOCOL\n}\n\nenum TvlType {\n TOKEN\n PROTOCOL\n}\n\nenum PriceSourceMethod {\n COINGECKO\n CONSTANT\n EQUAL_TO\n ERC4626\n DEXSCREENER\n INDEXCOOP\n DEFILLAMA\n}\n",
588
+ "inlineSchemaHash": "677b04d3fd42c8be466a758243e5821b1c608b4aa854c3e534ac7a1aeef08cd3",
589
589
  "copyEngine": true
590
590
  }
591
591
  config.dirname = '/'
@@ -585,8 +585,8 @@ const config = {
585
585
  }
586
586
  }
587
587
  },
588
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"native\", \"linux-arm64-openssl-1.1.x\", \"linux-musl-arm64-openssl-3.0.x\"]\n output = \".generated/\"\n previewFeatures = [\"fullTextSearchPostgres\", \"relationJoins\", \"tracing\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_API_URL\")\n}\n\nmodel Campaign {\n id String @id\n ComputeChain Chain @relation(\"compute\", fields: [computeChainId], references: [id])\n computeChainId Int\n DistributionChain Chain @relation(\"distribution\", fields: [distributionChainId], references: [id])\n distributionChainId Int\n campaignId String\n type CampaignType\n subType Int?\n RewardToken Token @relation(fields: [rewardTokenId], references: [id])\n rewardTokenId String\n amount String\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n startTimestamp BigInt\n endTimestamp BigInt\n params Json\n RewardBreakdown RewardBreakdown[]\n DailyRewardsBreakdown DailyRewardsBreakdown[]\n Creator User @relation(fields: [creatorAddress], references: [address])\n creatorAddress String @db.Char(42)\n CampaignStatus CampaignStatus[]\n\n @@unique([distributionChainId, campaignId])\n @@index([opportunityId], type: Hash)\n}\n\nmodel Chain {\n id Int @id\n name String\n icon String\n Explorer Explorer[]\n Campaigns Campaign[] @relation(\"compute\")\n Distribution Campaign[] @relation(\"distribution\")\n Token Token[]\n Opportunity Opportunity[]\n MerklRoot MerklRoot[]\n Blacklist Blacklist[]\n Dump Dump[]\n}\n\nmodel Explorer {\n id String @id\n type ExplorerType\n Chain Chain @relation(fields: [chainId], references: [id])\n url String\n chainId Int\n\n @@unique([type, chainId])\n}\n\nmodel Opportunity {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id]) // compute\n chainId Int // compute\n type CampaignType\n identifier String // eg. 0xUniswapPool - formerly mainParameter\n name String\n status Status\n action OpportunityAction\n Tokens Token[]\n Campaigns Campaign[]\n Protocols Protocol[]\n MainProtocol Protocol? @relation(name: \"main\", fields: [mainProtocolId], references: [id])\n mainProtocolId String?\n tvl Float @default(0)\n TvlRecords TVLRecord[]\n apr Float @default(0)\n AprRecords AprRecord[]\n dailyRewards Float @default(0)\n DailyRewardsRecords DailyRewardsRecord[]\n tags String[] @default([])\n\n @@unique([chainId, type, identifier])\n}\n\nmodel Protocol {\n id String @id\n tags ProtocolTag[]\n name String\n description String @default(\"\")\n url String\n icon String\n MainOpportunities Opportunity[] @relation(name: \"main\")\n Opportunities Opportunity[]\n RewardBreakdown RewardBreakdown[]\n}\n\nmodel Token {\n id String @id()\n name String?\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n address String @db.Char(42)\n decimals Int\n symbol String\n icon String\n verified Boolean @default(false)\n price Float?\n Opportunity Opportunity[]\n Campaigns Campaign[]\n Reward Reward[]\n DumpTo Dump[] @relation(\"to\")\n DumpFrom Dump[] @relation(\"from\")\n\n @@unique([chainId, address])\n @@index([chainId], type: Hash)\n @@index([symbol, address])\n}\n\nmodel AprRecord {\n id String @id\n timestamp BigInt\n cumulated Float\n AprBreakdown AprBreakdown[]\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel AprBreakdown {\n id Int @id @default(autoincrement())\n identifier String\n type AprType\n value Float\n AprRecord AprRecord @relation(fields: [aprRecordId], references: [id])\n aprRecordId String\n\n @@index([aprRecordId], type: Hash)\n}\n\nmodel TVLRecord {\n id String @id\n timestamp BigInt\n total Float\n TvlBreakdown TVLBreakdown[]\n\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel TVLBreakdown {\n id Int @id @default(autoincrement())\n identifier String\n type TvlType\n value Float\n\n TvlRecord TVLRecord @relation(fields: [tvlRecordId], references: [id])\n tvlRecordId String\n\n @@index([tvlRecordId], type: Hash)\n}\n\nmodel DailyRewardsRecord {\n id String @id\n timestamp BigInt\n total Float\n DailyRewardsBreakdown DailyRewardsBreakdown[]\n\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel DailyRewardsBreakdown {\n id Int @id @default(autoincrement())\n value Float\n campaignId String\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n DailyRewardsRecord DailyRewardsRecord @relation(fields: [dailyRewardsRecordId], references: [id])\n dailyRewardsRecordId String\n\n @@index([dailyRewardsRecordId], type: Hash)\n}\n\nmodel User {\n address String @id @db.Char(42)\n Rewards Reward[]\n Blacklist Blacklist[]\n CampaignsCreated Campaign[]\n tags String[]\n}\n\nmodel Reward {\n id String @id\n MerklRoot MerklRoot @relation(fields: [root], references: [root])\n root String\n User User @relation(fields: [recipient], references: [address])\n recipient String @db.Char(42)\n RewardToken Token @relation(fields: [rewardTokenId], references: [id])\n rewardTokenId String\n proofs String[]\n Breakdown RewardBreakdown[]\n\n @@unique([root, recipient, rewardTokenId])\n @@index([root], type: Hash)\n @@index([recipient, rewardTokenId])\n}\n\nmodel RewardBreakdown {\n id Int @id @default(autoincrement())\n Protocol Protocol? @relation(fields: [protocolId], references: [id])\n protocolId String?\n reason String\n amount String\n claimed String\n pending String\n auxiliaryData1 String?\n auxiliaryData2 String?\n Reward Reward @relation(fields: [rewardId], references: [id], onDelete: Cascade)\n rewardId String\n campaignId String\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n\n @@unique([rewardId, campaignId, reason])\n @@index([rewardId], type: Hash)\n @@index([campaignId], type: Hash)\n @@index([amount(sort: Desc)])\n}\n\nmodel MerklRoot {\n root String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n epoch Int\n timestamp BigInt\n Rewards Reward[]\n\n @@index([chainId, root])\n}\n\nmodel PriceSource {\n id Int @id @default(autoincrement())\n symbol String @unique() // Price Id\n method PriceSourceMethod\n args Json?\n}\n\n// priceId -> number\n\nmodel Blacklist {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n poolAddress String @db.Char(42)\n User User @relation(fields: [userAddress], references: [address])\n userAddress String @db.Char(42)\n arrestTimestamp BigInt\n arrestDetails Json\n\n @@unique([chainId, userAddress, poolAddress])\n @@index([userAddress], type: Hash)\n}\n\nmodel Dump {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n FromToken Token @relation(name: \"from\", fields: [fromTokenId], references: [id])\n fromTokenId String\n ToToken Token @relation(name: \"to\", fields: [toTokenId], references: [id])\n toTokenId String\n multisig String @db.Char(42)\n recipient String @db.Char(42)\n amountIn String @default(\"0\")\n amountOut String @default(\"0\")\n datetime DateTime\n timestamp Int\n\n @@unique([chainId, fromTokenId, toTokenId, timestamp])\n}\n\nmodel CampaignStatus {\n campaignId String @id\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n computedUntil BigInt @default(0)\n processingStarted BigInt @default(0)\n status RunStatus @default(SUCCESS)\n error String @default(\"\")\n details Json @default(\"{}\")\n}\n\n// enums\n\nenum RunStatus {\n PROCESSING\n SUCCESS\n FAILED\n SKIPPED\n}\n\nenum CampaignType {\n INVALID\n ERC20\n CLAMM\n ERC20_SNAPSHOT\n JSON_AIRDROP\n SILO\n RADIANT\n MORPHO\n DOLOMITE\n BADGER\n COMPOUND\n AJNA\n EULER\n UNISWAP_V4\n}\n\nenum ProtocolTag {\n AMM\n ALM\n DEX\n LENDING\n}\n\nenum OpportunityAction {\n POOL\n HOLD\n DROP\n LEND\n BORROW\n INVALID\n}\n\nenum Status {\n NONE\n PAST\n LIVE\n SOON\n}\n\nenum ExplorerType {\n ETHERSCAN\n BLOCKSCOUT\n}\n\nenum AprType {\n CAMPAIGN\n TOKEN\n PROTOCOL\n}\n\nenum TvlType {\n TOKEN\n PROTOCOL\n}\n\nenum PriceSourceMethod {\n COINGECKO\n CONSTANT\n EQUAL_TO\n ERC4626\n DEXSCREENER\n INDEXCOOP\n DEFILLAMA\n}\n",
589
- "inlineSchemaHash": "3aa6c07271bc09d5c825edde5800f9571a702d8e6bf30900de1634c0f880b777",
588
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"native\", \"linux-arm64-openssl-1.1.x\", \"linux-musl-arm64-openssl-3.0.x\"]\n output = \".generated/\"\n previewFeatures = [\"fullTextSearchPostgres\", \"relationJoins\", \"tracing\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_API_URL\")\n}\n\nmodel Campaign {\n id String @id\n ComputeChain Chain @relation(\"compute\", fields: [computeChainId], references: [id])\n computeChainId Int\n DistributionChain Chain @relation(\"distribution\", fields: [distributionChainId], references: [id])\n distributionChainId Int\n campaignId String\n type CampaignType\n subType Int?\n RewardToken Token @relation(fields: [rewardTokenId], references: [id])\n rewardTokenId String\n amount String\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n startTimestamp BigInt\n endTimestamp BigInt\n params Json\n RewardBreakdown RewardBreakdown[]\n DailyRewardsBreakdown DailyRewardsBreakdown[]\n Creator User @relation(fields: [creatorAddress], references: [address])\n creatorAddress String @db.Char(42)\n // Should probably be a 1 to 1 relation if we do not want to keep historic records\n CampaignStatus CampaignStatus[]\n\n @@unique([distributionChainId, campaignId])\n @@index([opportunityId], type: Hash)\n}\n\nmodel Chain {\n id Int @id\n name String\n icon String\n Explorer Explorer[]\n Campaigns Campaign[] @relation(\"compute\")\n Distribution Campaign[] @relation(\"distribution\")\n Token Token[]\n Opportunity Opportunity[]\n MerklRoot MerklRoot[]\n Blacklist Blacklist[]\n Dump Dump[]\n}\n\nmodel Explorer {\n id String @id\n type ExplorerType\n Chain Chain @relation(fields: [chainId], references: [id])\n url String\n chainId Int\n\n @@unique([type, chainId])\n}\n\nmodel Opportunity {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id]) // compute\n chainId Int // compute\n type CampaignType\n identifier String // eg. 0xUniswapPool - formerly mainParameter\n name String\n status Status\n action OpportunityAction\n Tokens Token[]\n Campaigns Campaign[]\n Protocols Protocol[]\n MainProtocol Protocol? @relation(name: \"main\", fields: [mainProtocolId], references: [id])\n mainProtocolId String?\n tvl Float @default(0)\n TvlRecords TVLRecord[]\n apr Float @default(0)\n AprRecords AprRecord[]\n dailyRewards Float @default(0)\n DailyRewardsRecords DailyRewardsRecord[]\n tags String[] @default([])\n\n @@unique([chainId, type, identifier])\n}\n\nmodel Protocol {\n id String @id\n tags ProtocolTag[]\n name String\n description String @default(\"\")\n url String\n icon String\n MainOpportunities Opportunity[] @relation(name: \"main\")\n Opportunities Opportunity[]\n RewardBreakdown RewardBreakdown[]\n}\n\nmodel Token {\n id String @id()\n name String?\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n address String @db.Char(42)\n decimals Int\n symbol String\n icon String\n verified Boolean @default(false)\n price Float?\n Opportunity Opportunity[]\n Campaigns Campaign[]\n Reward Reward[]\n DumpTo Dump[] @relation(\"to\")\n DumpFrom Dump[] @relation(\"from\")\n\n @@unique([chainId, address])\n @@index([chainId], type: Hash)\n @@index([symbol, address])\n}\n\nmodel AprRecord {\n id String @id\n timestamp BigInt\n cumulated Float\n AprBreakdown AprBreakdown[]\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel AprBreakdown {\n id Int @id @default(autoincrement())\n identifier String\n type AprType\n value Float\n AprRecord AprRecord @relation(fields: [aprRecordId], references: [id])\n aprRecordId String\n\n @@index([aprRecordId], type: Hash)\n}\n\nmodel TVLRecord {\n id String @id\n timestamp BigInt\n total Float\n TvlBreakdown TVLBreakdown[]\n\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel TVLBreakdown {\n id Int @id @default(autoincrement())\n identifier String\n type TvlType\n value Float\n\n TvlRecord TVLRecord @relation(fields: [tvlRecordId], references: [id])\n tvlRecordId String\n\n @@index([tvlRecordId], type: Hash)\n}\n\nmodel DailyRewardsRecord {\n id String @id\n timestamp BigInt\n total Float\n DailyRewardsBreakdown DailyRewardsBreakdown[]\n\n Opportunity Opportunity @relation(fields: [opportunityId], references: [id])\n opportunityId String\n\n @@unique([opportunityId, timestamp])\n @@index([opportunityId, timestamp(sort: Desc)])\n}\n\nmodel DailyRewardsBreakdown {\n id Int @id @default(autoincrement())\n value Float\n campaignId String\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n DailyRewardsRecord DailyRewardsRecord @relation(fields: [dailyRewardsRecordId], references: [id])\n dailyRewardsRecordId String\n\n @@index([dailyRewardsRecordId], type: Hash)\n}\n\nmodel User {\n address String @id @db.Char(42)\n Rewards Reward[]\n Blacklist Blacklist[]\n CampaignsCreated Campaign[]\n tags String[]\n}\n\nmodel Reward {\n id String @id\n MerklRoot MerklRoot @relation(fields: [root], references: [root])\n root String\n User User @relation(fields: [recipient], references: [address])\n recipient String @db.Char(42)\n RewardToken Token @relation(fields: [rewardTokenId], references: [id])\n rewardTokenId String\n proofs String[]\n Breakdown RewardBreakdown[]\n\n @@unique([root, recipient, rewardTokenId])\n @@index([root], type: Hash)\n @@index([recipient, rewardTokenId])\n}\n\nmodel RewardBreakdown {\n id Int @id @default(autoincrement())\n Protocol Protocol? @relation(fields: [protocolId], references: [id])\n protocolId String?\n reason String\n amount String\n claimed String\n pending String\n auxiliaryData1 String?\n auxiliaryData2 String?\n Reward Reward @relation(fields: [rewardId], references: [id], onDelete: Cascade)\n rewardId String\n campaignId String\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n\n @@unique([rewardId, campaignId, reason])\n @@index([rewardId], type: Hash)\n @@index([campaignId], type: Hash)\n @@index([amount(sort: Desc)])\n}\n\nmodel MerklRoot {\n root String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n epoch Int\n timestamp BigInt\n Rewards Reward[]\n\n @@index([chainId, root])\n}\n\nmodel PriceSource {\n id Int @id @default(autoincrement())\n symbol String @unique() // Price Id\n method PriceSourceMethod\n args Json?\n}\n\n// priceId -> number\n\nmodel Blacklist {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n poolAddress String @db.Char(42)\n User User @relation(fields: [userAddress], references: [address])\n userAddress String @db.Char(42)\n arrestTimestamp BigInt\n arrestDetails Json\n\n @@unique([chainId, userAddress, poolAddress])\n @@index([userAddress], type: Hash)\n}\n\nmodel Dump {\n id String @id\n Chain Chain @relation(fields: [chainId], references: [id])\n chainId Int\n FromToken Token @relation(name: \"from\", fields: [fromTokenId], references: [id])\n fromTokenId String\n ToToken Token @relation(name: \"to\", fields: [toTokenId], references: [id])\n toTokenId String\n multisig String @db.Char(42)\n recipient String @db.Char(42)\n amountIn String @default(\"0\")\n amountOut String @default(\"0\")\n datetime DateTime\n timestamp Int\n\n @@unique([chainId, fromTokenId, toTokenId, timestamp])\n}\n\nmodel CampaignStatus {\n campaignId String @id\n Campaign Campaign @relation(fields: [campaignId], references: [id])\n computedUntil BigInt @default(0)\n processingStarted BigInt @default(0)\n status RunStatus @default(SUCCESS)\n error String @default(\"\")\n details Json @default(\"{}\")\n}\n\n// enums\n\nenum RunStatus {\n PROCESSING\n SUCCESS\n FAILED\n SKIPPED\n}\n\nenum CampaignType {\n INVALID\n ERC20\n CLAMM\n ERC20_SNAPSHOT\n JSON_AIRDROP\n SILO\n RADIANT\n MORPHO\n DOLOMITE\n BADGER\n COMPOUND\n AJNA\n EULER\n UNISWAP_V4\n}\n\nenum ProtocolTag {\n AMM\n ALM\n DEX\n LENDING\n}\n\nenum OpportunityAction {\n POOL\n HOLD\n DROP\n LEND\n BORROW\n INVALID\n}\n\nenum Status {\n NONE\n PAST\n LIVE\n SOON\n}\n\nenum ExplorerType {\n ETHERSCAN\n BLOCKSCOUT\n}\n\nenum AprType {\n CAMPAIGN\n TOKEN\n PROTOCOL\n}\n\nenum TvlType {\n TOKEN\n PROTOCOL\n}\n\nenum PriceSourceMethod {\n COINGECKO\n CONSTANT\n EQUAL_TO\n ERC4626\n DEXSCREENER\n INDEXCOOP\n DEFILLAMA\n}\n",
589
+ "inlineSchemaHash": "677b04d3fd42c8be466a758243e5821b1c608b4aa854c3e534ac7a1aeef08cd3",
590
590
  "copyEngine": true
591
591
  }
592
592
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "prisma-client-3acc656527e81e787b21b82c86521adf2c7da64cb6edd622ea50e3ab94e2fdb4",
2
+ "name": "prisma-client-06c75f2e09fdf91bac4e83ac2b5edc582e2e9dfa8b8f6cb4126769f5bacebd4b",
3
3
  "main": "index.js",
4
4
  "types": "index.d.ts",
5
5
  "browser": "index-browser.js",
@@ -31,6 +31,7 @@ model Campaign {
31
31
  DailyRewardsBreakdown DailyRewardsBreakdown[]
32
32
  Creator User @relation(fields: [creatorAddress], references: [address])
33
33
  creatorAddress String @db.Char(42)
34
+ // Should probably be a 1 to 1 relation if we do not want to keep historic records
34
35
  CampaignStatus CampaignStatus[]
35
36
 
36
37
  @@unique([distributionChainId, campaignId])
@@ -215,6 +215,14 @@ declare const eden: {
215
215
  id: number;
216
216
  icon: string;
217
217
  } | undefined;
218
+ campaignStatus: {
219
+ error: string;
220
+ details: import("database/api/.generated/runtime/library").JsonValue;
221
+ status: import("../../database/api/.generated").$Enums.RunStatus;
222
+ campaignId: string;
223
+ computedUntil: bigint;
224
+ processingStarted: bigint;
225
+ };
218
226
  type: import("../../database/api/.generated").$Enums.CampaignType;
219
227
  id: string;
220
228
  subType: number | null;
@@ -487,6 +495,14 @@ declare const eden: {
487
495
  id: number;
488
496
  icon: string;
489
497
  } | undefined;
498
+ campaignStatus: {
499
+ error: string;
500
+ details: import("database/api/.generated/runtime/library").JsonValue;
501
+ status: import("../../database/api/.generated").$Enums.RunStatus;
502
+ campaignId: string;
503
+ computedUntil: bigint;
504
+ processingStarted: bigint;
505
+ };
490
506
  type: import("../../database/api/.generated").$Enums.CampaignType;
491
507
  id: string;
492
508
  subType: number | null;
@@ -2044,6 +2060,14 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
2044
2060
  id: number;
2045
2061
  icon: string;
2046
2062
  } | undefined;
2063
+ campaignStatus: {
2064
+ error: string;
2065
+ details: import("database/api/.generated/runtime/library").JsonValue;
2066
+ status: import("../../database/api/.generated").$Enums.RunStatus;
2067
+ campaignId: string;
2068
+ computedUntil: bigint;
2069
+ processingStarted: bigint;
2070
+ };
2047
2071
  type: import("../../database/api/.generated").$Enums.CampaignType;
2048
2072
  id: string;
2049
2073
  subType: number | null;
@@ -2321,6 +2345,14 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
2321
2345
  id: number;
2322
2346
  icon: string;
2323
2347
  } | undefined;
2348
+ campaignStatus: {
2349
+ error: string;
2350
+ details: import("database/api/.generated/runtime/library").JsonValue;
2351
+ status: import("../../database/api/.generated").$Enums.RunStatus;
2352
+ campaignId: string;
2353
+ computedUntil: bigint;
2354
+ processingStarted: bigint;
2355
+ };
2324
2356
  type: import("../../database/api/.generated").$Enums.CampaignType;
2325
2357
  id: string;
2326
2358
  subType: number | null;
@@ -4174,6 +4206,14 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
4174
4206
  id: number;
4175
4207
  icon: string;
4176
4208
  } | undefined;
4209
+ campaignStatus: {
4210
+ error: string;
4211
+ details: import("database/api/.generated/runtime/library").JsonValue;
4212
+ status: import("../../database/api/.generated").$Enums.RunStatus;
4213
+ campaignId: string;
4214
+ computedUntil: bigint;
4215
+ processingStarted: bigint;
4216
+ };
4177
4217
  type: import("../../database/api/.generated").$Enums.CampaignType;
4178
4218
  id: string;
4179
4219
  subType: number | null;
@@ -4446,6 +4486,14 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
4446
4486
  id: number;
4447
4487
  icon: string;
4448
4488
  } | undefined;
4489
+ campaignStatus: {
4490
+ error: string;
4491
+ details: import("database/api/.generated/runtime/library").JsonValue;
4492
+ status: import("../../database/api/.generated").$Enums.RunStatus;
4493
+ campaignId: string;
4494
+ computedUntil: bigint;
4495
+ processingStarted: bigint;
4496
+ };
4449
4497
  type: import("../../database/api/.generated").$Enums.CampaignType;
4450
4498
  id: string;
4451
4499
  subType: number | null;
@@ -282,6 +282,14 @@ declare const app: Elysia<"", false, {
282
282
  id: number;
283
283
  icon: string;
284
284
  } | undefined;
285
+ campaignStatus: {
286
+ error: string;
287
+ details: import("database/api/.generated/runtime/library").JsonValue;
288
+ status: import("../database/api/.generated").$Enums.RunStatus;
289
+ campaignId: string;
290
+ computedUntil: bigint;
291
+ processingStarted: bigint;
292
+ };
285
293
  type: import("../database/api/.generated").$Enums.CampaignType;
286
294
  id: string;
287
295
  subType: number | null;
@@ -559,6 +567,14 @@ declare const app: Elysia<"", false, {
559
567
  id: number;
560
568
  icon: string;
561
569
  } | undefined;
570
+ campaignStatus: {
571
+ error: string;
572
+ details: import("database/api/.generated/runtime/library").JsonValue;
573
+ status: import("../database/api/.generated").$Enums.RunStatus;
574
+ campaignId: string;
575
+ computedUntil: bigint;
576
+ processingStarted: bigint;
577
+ };
562
578
  type: import("../database/api/.generated").$Enums.CampaignType;
563
579
  id: string;
564
580
  subType: number | null;
@@ -98,6 +98,14 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
98
98
  id: number;
99
99
  icon: string;
100
100
  } | undefined;
101
+ campaignStatus: {
102
+ error: string;
103
+ details: import("database/api/.generated/runtime/library").JsonValue;
104
+ status: import("../../../../database/api/.generated").$Enums.RunStatus;
105
+ campaignId: string;
106
+ computedUntil: bigint;
107
+ processingStarted: bigint;
108
+ };
101
109
  type: import("../../../../database/api/.generated").$Enums.CampaignType;
102
110
  id: string;
103
111
  subType: number | null;
@@ -3,6 +3,7 @@ import type { Token } from "../token";
3
3
  import { CampaignType } from "../../../../database/api/.generated";
4
4
  import { type CampaignParameters } from "@sdk";
5
5
  import type { Chain } from "../chain";
6
+ import type { Status } from "../status";
6
7
  /**
7
8
  * Campaign
8
9
  * @description Target description of rewards campaigns
@@ -10,9 +11,10 @@ import type { Chain } from "../chain";
10
11
  */
11
12
  export type Campaign<C extends CampaignType = CampaignType> = Resource<"Campaign", "opportunityId" | "rewardTokenId", {
12
13
  chain: Chain["model"];
13
- distributionChain?: Chain["model"];
14
14
  rewardToken: Token["model"];
15
15
  params: CampaignParameters<ConvertedCampaignType<C>>["campaignParameters"];
16
+ distributionChain?: Chain["model"];
17
+ campaignStatus?: Status["model"];
16
18
  }>;
17
19
  export declare const campaignTypeToEnumMap: {
18
20
  readonly INVALID: any;
@@ -105,6 +105,14 @@ export declare abstract class CampaignRepository {
105
105
  verified: boolean;
106
106
  price: number | null;
107
107
  };
108
+ CampaignStatus: {
109
+ error: string;
110
+ details: Prisma.JsonValue;
111
+ status: import("../../../../database/api/.generated").$Enums.RunStatus;
112
+ campaignId: string;
113
+ computedUntil: bigint;
114
+ processingStarted: bigint;
115
+ }[];
108
116
  } & {
109
117
  type: import("../../../../database/api/.generated").$Enums.CampaignType;
110
118
  id: string;
@@ -313,6 +313,7 @@ export class CampaignRepository {
313
313
  DistributionChain: true,
314
314
  ComputeChain: true,
315
315
  RewardToken: true,
316
+ CampaignStatus: true,
316
317
  },
317
318
  orderBy: {
318
319
  endTimestamp: "desc",
@@ -51,6 +51,14 @@ export declare abstract class CampaignService {
51
51
  id: number;
52
52
  icon: string;
53
53
  } | undefined;
54
+ campaignStatus: {
55
+ error: string;
56
+ details: import("database/api/.generated/runtime/library").JsonValue;
57
+ status: import("../../../../database/api/.generated").$Enums.RunStatus;
58
+ campaignId: string;
59
+ computedUntil: bigint;
60
+ processingStarted: bigint;
61
+ };
54
62
  type: import("../../../../database/api/.generated").$Enums.CampaignType;
55
63
  id: string;
56
64
  subType: number | null;
@@ -175,6 +183,14 @@ export declare abstract class CampaignService {
175
183
  id: number;
176
184
  icon: string;
177
185
  } | undefined;
186
+ campaignStatus: {
187
+ error: string;
188
+ details: import("database/api/.generated/runtime/library").JsonValue;
189
+ status: import("../../../../database/api/.generated").$Enums.RunStatus;
190
+ campaignId: string;
191
+ computedUntil: bigint;
192
+ processingStarted: bigint;
193
+ };
178
194
  type: import("../../../../database/api/.generated").$Enums.CampaignType;
179
195
  id: string;
180
196
  subType: number | null;
@@ -78,7 +78,7 @@ export class CampaignService {
78
78
  return await CampaignRepository.findUniqueOrThrow(campaign);
79
79
  }
80
80
  static async findCampaignsToProcess(distributionChainId) {
81
- return (await CampaignRepository.findCampaignsToProcess(distributionChainId)).filter(campaign => campaign.endTimestamp > campaign.CampaignStatus[0].computedUntil);
81
+ return (await CampaignRepository.findCampaignsToProcess(distributionChainId)).filter(campaign => campaign.endTimestamp > campaign?.CampaignStatus?.[0]?.computedUntil);
82
82
  }
83
83
  static async pickCampaignToProcess(chainId) {
84
84
  const campaigns = await CampaignService.findCampaignsToProcess(chainId);
@@ -166,13 +166,15 @@ export class CampaignService {
166
166
  static format(campaign) {
167
167
  if (campaign === null)
168
168
  return null;
169
- const { DistributionChain, ComputeChain, RewardToken, params, ...c } = campaign;
169
+ const { DistributionChain, ComputeChain, RewardToken, params, CampaignStatus, ...c } = campaign;
170
170
  return {
171
171
  ...c,
172
172
  params: params,
173
173
  chain: ComputeChain,
174
174
  rewardToken: RewardToken,
175
175
  distributionChain: DistributionChain === null ? undefined : DistributionChain,
176
+ // Todo: need to be change to single 1 to 1 with campaign
177
+ campaignStatus: CampaignStatus?.[0],
176
178
  };
177
179
  }
178
180
  /**
@@ -255,6 +255,14 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
255
255
  id: number;
256
256
  icon: string;
257
257
  } | undefined;
258
+ campaignStatus: {
259
+ error: string;
260
+ details: import("database/api/.generated/runtime/library").JsonValue;
261
+ status: import("../../../../database/api/.generated").$Enums.RunStatus;
262
+ campaignId: string;
263
+ computedUntil: bigint;
264
+ processingStarted: bigint;
265
+ };
258
266
  type: import("../../../../database/api/.generated").$Enums.CampaignType;
259
267
  id: string;
260
268
  subType: number | null;
@@ -63,7 +63,7 @@ export declare const GetOpportunitiesQueryDto: import("@sinclair/typebox").TObje
63
63
  }>, import("@sinclair/typebox").TRegExp]>>;
64
64
  sort: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"tvl" | "apr" | "rewards">[]>>;
65
65
  order: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"asc" | "desc">[]>>;
66
- mainProtocolId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRegExp>;
66
+ mainProtocolId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
67
67
  page: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
68
68
  items: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
69
69
  }>;
@@ -20,7 +20,7 @@ export const GetOpportunitiesQueryDto = t.Object({
20
20
  status: t.Optional(t.Union([t.Enum(Status), t.RegExp(/^(LIVE|PAST|SOON)+(,(LIVE|PAST|SOON)+)*$/)])),
21
21
  sort: t.Optional(t.Union(["apr", "tvl", "rewards"].map(v => t.Literal(v)))),
22
22
  order: t.Optional(t.Union(["desc", "asc"].map(v => t.Literal(v)))),
23
- mainProtocolId: t.Optional(t.RegExp(/^\d+(,\d+)*$/)),
23
+ mainProtocolId: t.Optional(t.String()),
24
24
  page: t.Optional(t.Numeric()), // 0-indexed
25
25
  items: t.Optional(t.Numeric()), // items per page
26
26
  });
@@ -84,6 +84,14 @@ export declare abstract class OpportunityRepository {
84
84
  verified: boolean;
85
85
  price: number | null;
86
86
  };
87
+ CampaignStatus: {
88
+ error: string;
89
+ details: Prisma.JsonValue;
90
+ status: import("../../../../database/api/.generated").$Enums.RunStatus;
91
+ campaignId: string;
92
+ computedUntil: bigint;
93
+ processingStarted: bigint;
94
+ }[];
87
95
  };
88
96
  } & {
89
97
  id: number;
@@ -139,6 +147,14 @@ export declare abstract class OpportunityRepository {
139
147
  verified: boolean;
140
148
  price: number | null;
141
149
  };
150
+ CampaignStatus: {
151
+ error: string;
152
+ details: Prisma.JsonValue;
153
+ status: import("../../../../database/api/.generated").$Enums.RunStatus;
154
+ campaignId: string;
155
+ computedUntil: bigint;
156
+ processingStarted: bigint;
157
+ }[];
142
158
  } & {
143
159
  type: import("../../../../database/api/.generated").$Enums.CampaignType;
144
160
  id: string;
@@ -226,6 +242,14 @@ export declare abstract class OpportunityRepository {
226
242
  verified: boolean;
227
243
  price: number | null;
228
244
  };
245
+ CampaignStatus: {
246
+ error: string;
247
+ details: Prisma.JsonValue;
248
+ status: import("../../../../database/api/.generated").$Enums.RunStatus;
249
+ campaignId: string;
250
+ computedUntil: bigint;
251
+ processingStarted: bigint;
252
+ }[];
229
253
  };
230
254
  } & {
231
255
  id: number;
@@ -373,6 +397,14 @@ export declare abstract class OpportunityRepository {
373
397
  verified: boolean;
374
398
  price: number | null;
375
399
  };
400
+ CampaignStatus: {
401
+ error: string;
402
+ details: Prisma.JsonValue;
403
+ status: import("../../../../database/api/.generated").$Enums.RunStatus;
404
+ campaignId: string;
405
+ computedUntil: bigint;
406
+ processingStarted: bigint;
407
+ }[];
376
408
  };
377
409
  } & {
378
410
  id: number;
@@ -22,7 +22,15 @@ export class OpportunityRepository {
22
22
  include: {
23
23
  DailyRewardsBreakdown: {
24
24
  include: {
25
- Campaign: { select: { startTimestamp: true, endTimestamp: true, amount: true, RewardToken: true } },
25
+ Campaign: {
26
+ select: {
27
+ startTimestamp: true,
28
+ endTimestamp: true,
29
+ amount: true,
30
+ RewardToken: true,
31
+ CampaignStatus: true,
32
+ },
33
+ },
26
34
  },
27
35
  },
28
36
  },
@@ -71,7 +79,7 @@ export class OpportunityRepository {
71
79
  });
72
80
  }
73
81
  static async findUniqueOrThrowWithCampaigns(id) {
74
- return await apiDbClient.opportunity.findUniqueOrThrow({
82
+ const b = await apiDbClient.opportunity.findUniqueOrThrow({
75
83
  include: {
76
84
  ...OpportunityRepository.#getRecordInclusion(),
77
85
  Chain: true,
@@ -80,6 +88,7 @@ export class OpportunityRepository {
80
88
  RewardToken: true,
81
89
  ComputeChain: true,
82
90
  DistributionChain: true,
91
+ CampaignStatus: true, // [][0]
83
92
  },
84
93
  orderBy: {
85
94
  endTimestamp: "desc",
@@ -91,6 +100,8 @@ export class OpportunityRepository {
91
100
  },
92
101
  where: { id },
93
102
  });
103
+ console.debug(b);
104
+ return b;
94
105
  }
95
106
  static async findManyWithCampaigns(filters) {
96
107
  return await apiDbClient.opportunity.findMany({
@@ -125,6 +125,14 @@ export declare abstract class OpportunityService {
125
125
  id: number;
126
126
  icon: string;
127
127
  } | undefined;
128
+ campaignStatus: {
129
+ error: string;
130
+ details: Prisma.JsonValue;
131
+ status: import("../../../../database/api/.generated").$Enums.RunStatus;
132
+ campaignId: string;
133
+ computedUntil: bigint;
134
+ processingStarted: bigint;
135
+ };
128
136
  type: import("../../../../database/api/.generated").$Enums.CampaignType;
129
137
  id: string;
130
138
  subType: number | null;
@@ -264,6 +264,14 @@ export declare const v4: Elysia<"/v4", false, {
264
264
  id: number;
265
265
  icon: string;
266
266
  } | undefined;
267
+ campaignStatus: {
268
+ error: string;
269
+ details: import("database/api/.generated/runtime/library").JsonValue;
270
+ status: import("../../../database/api/.generated").$Enums.RunStatus;
271
+ campaignId: string;
272
+ computedUntil: bigint;
273
+ processingStarted: bigint;
274
+ };
267
275
  type: import("../../../database/api/.generated").$Enums.CampaignType;
268
276
  id: string;
269
277
  subType: number | null;
@@ -541,6 +549,14 @@ export declare const v4: Elysia<"/v4", false, {
541
549
  id: number;
542
550
  icon: string;
543
551
  } | undefined;
552
+ campaignStatus: {
553
+ error: string;
554
+ details: import("database/api/.generated/runtime/library").JsonValue;
555
+ status: import("../../../database/api/.generated").$Enums.RunStatus;
556
+ campaignId: string;
557
+ computedUntil: bigint;
558
+ processingStarted: bigint;
559
+ };
544
560
  type: import("../../../database/api/.generated").$Enums.CampaignType;
545
561
  id: string;
546
562
  subType: number | null;
@@ -1,8 +1,9 @@
1
1
  import type { Campaign } from "../campaign";
2
2
  import type { Resource } from "../prisma";
3
- export type Status = Resource<"CampaignStatus", "campaignId", {
3
+ export type Status = Resource<"CampaignStatus", "campaignId">;
4
+ export type StatusWithCampaign = Status & {
4
5
  campaign: Campaign["model"];
5
- }>;
6
+ };
6
7
  export declare const UpdateCampaignStatusDto: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
7
8
  value: import("@sinclair/typebox").TLiteral<"SUCCESS">;
8
9
  computedUntil: import("@sinclair/typebox").TNumber;
@@ -290,6 +290,14 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
290
290
  id: number;
291
291
  icon: string;
292
292
  } | undefined;
293
+ campaignStatus: {
294
+ error: string;
295
+ details: import("database/api/.generated/runtime/library").JsonValue;
296
+ status: import("../../../database/api/.generated").$Enums.RunStatus;
297
+ campaignId: string;
298
+ computedUntil: bigint;
299
+ processingStarted: bigint;
300
+ };
293
301
  type: import("../../../database/api/.generated").$Enums.CampaignType;
294
302
  id: string;
295
303
  subType: number | null;
@@ -567,6 +575,14 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
567
575
  id: number;
568
576
  icon: string;
569
577
  } | undefined;
578
+ campaignStatus: {
579
+ error: string;
580
+ details: import("database/api/.generated/runtime/library").JsonValue;
581
+ status: import("../../../database/api/.generated").$Enums.RunStatus;
582
+ campaignId: string;
583
+ computedUntil: bigint;
584
+ processingStarted: bigint;
585
+ };
570
586
  type: import("../../../database/api/.generated").$Enums.CampaignType;
571
587
  id: string;
572
588
  subType: number | null;