@merkl/api 0.10.155 → 0.10.156
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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.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;
|
@@ -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;
|
@@ -288,6 +288,14 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
|
|
288
288
|
id: number;
|
289
289
|
icon: string;
|
290
290
|
} | undefined;
|
291
|
+
campaignStatus: {
|
292
|
+
error: string;
|
293
|
+
details: import("database/api/.generated/runtime/library").JsonValue;
|
294
|
+
status: import("../../../database/api/.generated").$Enums.RunStatus;
|
295
|
+
campaignId: string;
|
296
|
+
computedUntil: bigint;
|
297
|
+
processingStarted: bigint;
|
298
|
+
};
|
291
299
|
type: import("../../../database/api/.generated").$Enums.CampaignType;
|
292
300
|
id: string;
|
293
301
|
subType: number | null;
|
@@ -565,6 +573,14 @@ declare const _default: (app: App) => import("elysia").default<"", false, {
|
|
565
573
|
id: number;
|
566
574
|
icon: string;
|
567
575
|
} | undefined;
|
576
|
+
campaignStatus: {
|
577
|
+
error: string;
|
578
|
+
details: import("database/api/.generated/runtime/library").JsonValue;
|
579
|
+
status: import("../../../database/api/.generated").$Enums.RunStatus;
|
580
|
+
campaignId: string;
|
581
|
+
computedUntil: bigint;
|
582
|
+
processingStarted: bigint;
|
583
|
+
};
|
568
584
|
type: import("../../../database/api/.generated").$Enums.CampaignType;
|
569
585
|
id: string;
|
570
586
|
subType: number | null;
|