@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.
- package/dist/database/api/.generated/edge.js +2 -2
- package/dist/database/api/.generated/index.js +2 -2
- package/dist/database/api/.generated/package.json +1 -1
- package/dist/database/api/.generated/schema.prisma +1 -0
- package/dist/src/eden/index.d.ts +48 -0
- package/dist/src/index.d.ts +16 -0
- package/dist/src/modules/v4/campaign/campaign.controller.d.ts +8 -0
- package/dist/src/modules/v4/campaign/campaign.model.d.ts +3 -1
- package/dist/src/modules/v4/campaign/campaign.repository.d.ts +8 -0
- package/dist/src/modules/v4/campaign/campaign.repository.js +1 -0
- package/dist/src/modules/v4/campaign/campaign.service.d.ts +16 -0
- package/dist/src/modules/v4/campaign/campaign.service.js +4 -2
- package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +8 -0
- package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +1 -1
- package/dist/src/modules/v4/opportunity/opportunity.model.js +1 -1
- package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +32 -0
- package/dist/src/modules/v4/opportunity/opportunity.repository.js +13 -2
- package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +8 -0
- package/dist/src/modules/v4/router.d.ts +16 -0
- package/dist/src/modules/v4/status/status.model.d.ts +3 -2
- package/dist/src/routes/v3/ERC20Campaigns.d.ts +16 -0
- package/dist/src/routes/v3/blacklist.d.ts +16 -0
- package/dist/src/routes/v3/campaigns.d.ts +16 -0
- package/dist/src/routes/v3/campaignsInfo.d.ts +16 -0
- package/dist/src/routes/v3/multiChainPositions.d.ts +16 -0
- package/dist/src/routes/v3/opportunity.d.ts +16 -0
- package/dist/src/routes/v3/positions.d.ts +16 -0
- package/dist/src/routes/v3/rewards.d.ts +16 -0
- package/dist/src/routes/v3/updates.d.ts +16 -0
- package/dist/src/routes/v3/userRewards.d.ts +16 -0
- package/dist/tsconfig.package.tsbuildinfo +1 -1
- 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": "
|
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": "
|
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
|
|
@@ -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])
|
package/dist/src/eden/index.d.ts
CHANGED
@@ -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;
|
package/dist/src/index.d.ts
CHANGED
@@ -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;
|
@@ -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
|
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").
|
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.
|
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: {
|
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
|
-
|
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;
|