@merkl/api 0.10.393 → 0.10.396

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.
Files changed (58) hide show
  1. package/dist/database/api/.generated/drizzle/schema.d.ts +2806 -0
  2. package/dist/database/api/.generated/drizzle/schema.js +849 -0
  3. package/dist/database/api/.generated/drizzle/schema.ts +906 -0
  4. package/dist/database/api/.generated/edge.js +3 -7
  5. package/dist/database/api/.generated/index-browser.js +0 -4
  6. package/dist/database/api/.generated/index.d.ts +1 -99
  7. package/dist/database/api/.generated/index.js +3 -7
  8. package/dist/database/api/.generated/package.json +1 -1
  9. package/dist/database/api/.generated/schema.prisma +16 -13
  10. package/dist/database/api/.generated/wasm.js +0 -4
  11. package/dist/database/engine/.generated/edge.js +3 -7
  12. package/dist/database/engine/.generated/index-browser.js +0 -4
  13. package/dist/database/engine/.generated/index.d.ts +2 -218
  14. package/dist/database/engine/.generated/index.js +3 -7
  15. package/dist/database/engine/.generated/package.json +1 -1
  16. package/dist/database/engine/.generated/schema.prisma +6 -10
  17. package/dist/database/engine/.generated/wasm.js +0 -4
  18. package/dist/src/eden/index.d.ts +314 -78
  19. package/dist/src/index.d.ts +120 -26
  20. package/dist/src/jobs/etl/reward-breakdowns.js +0 -2
  21. package/dist/src/modules/v4/cache/cache.service.js +2 -0
  22. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +1 -1
  23. package/dist/src/modules/v4/campaign/campaign.repository.d.ts +10 -10
  24. package/dist/src/modules/v4/campaign/campaign.repository.js +2 -2
  25. package/dist/src/modules/v4/campaign/campaign.service.d.ts +3 -2
  26. package/dist/src/modules/v4/campaign/campaign.service.js +9 -1
  27. package/dist/src/modules/v4/dynamicData/dynamicData.controller.d.ts +1 -1
  28. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +3 -3
  29. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +5 -5
  30. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +72 -72
  31. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +1 -1
  32. package/dist/src/modules/v4/reward/reward.controller.d.ts +109 -5
  33. package/dist/src/modules/v4/reward/reward.controller.js +29 -21
  34. package/dist/src/modules/v4/reward/reward.model.d.ts +5 -8
  35. package/dist/src/modules/v4/reward/reward.model.js +8 -6
  36. package/dist/src/modules/v4/reward/reward.repository.d.ts +12 -16
  37. package/dist/src/modules/v4/reward/reward.repository.js +13 -20
  38. package/dist/src/modules/v4/reward/reward.service.d.ts +10 -23
  39. package/dist/src/modules/v4/reward/reward.service.js +0 -2
  40. package/dist/src/modules/v4/reward/subservices/converter.js +0 -2
  41. package/dist/src/modules/v4/router.d.ts +120 -24
  42. package/dist/src/modules/v4/status/status.controller.d.ts +6 -6
  43. package/dist/src/modules/v4/status/status.repository.d.ts +6 -6
  44. package/dist/src/modules/v4/status/status.service.d.ts +6 -6
  45. package/dist/src/modules/v4/token/token.repository.d.ts +2 -2
  46. package/dist/src/modules/v4/token/token.service.d.ts +3 -4
  47. package/dist/src/modules/v4/token/token.service.js +2 -1
  48. package/dist/src/modules/v4/user/user.controller.d.ts +0 -8
  49. package/dist/src/modules/v4/user/user.model.d.ts +5 -2
  50. package/dist/src/modules/v4/user/user.model.js +4 -2
  51. package/dist/src/modules/v4/user/user.repository.d.ts +1 -1
  52. package/dist/src/modules/v4/user/user.service.d.ts +1 -1
  53. package/dist/src/routes/v3/rewards.d.ts +0 -2
  54. package/dist/src/routes/v3/router.d.ts +0 -2
  55. package/dist/src/utils/prisma.d.ts +16 -3
  56. package/dist/src/utils/prisma.js +2 -1
  57. package/dist/tsconfig.package.tsbuildinfo +1 -1
  58. package/package.json +4 -2
@@ -0,0 +1,906 @@
1
+ import { relations } from 'drizzle-orm'
2
+ import { bigint, boolean, doublePrecision, foreignKey, integer, jsonb, pgEnum, pgTable, serial, text, timestamp, uniqueIndex } from 'drizzle-orm/pg-core'
3
+
4
+ export const RunStatus = pgEnum('RunStatus', ['PROCESSING', 'SUCCESS', 'FAILED', 'SKIPPED'])
5
+
6
+ export const CampaignType = pgEnum('CampaignType', ['INVALID', 'ERC20', 'CLAMM', 'ERC20_SNAPSHOT', 'JSON_AIRDROP', 'SILO', 'RADIANT', 'MORPHO', 'DOLOMITE', 'BADGER', 'COMPOUND', 'AJNA', 'EULER', 'UNISWAP_V4', 'ION', 'EIGENLAYER', 'ERC20TRANSFERS', 'ERC20LOGPROCESSOR', 'ERC20REBASELOGPROCESSOR', 'VEST', 'ERC20_FIX_APR', 'HYPERDRIVELOGPROCESSOR', 'HYPERDRIVELOGFIXPROCESSOR'])
7
+
8
+ export const OpportunityAction = pgEnum('OpportunityAction', ['POOL', 'HOLD', 'DROP', 'LEND', 'BORROW', 'LONG', 'SHORT', 'INVALID'])
9
+
10
+ export const Status = pgEnum('Status', ['NONE', 'PAST', 'LIVE', 'SOON'])
11
+
12
+ export const ExplorerType = pgEnum('ExplorerType', ['ETHERSCAN', 'BLOCKSCOUT'])
13
+
14
+ export const AprType = pgEnum('AprType', ['CAMPAIGN', 'TOKEN', 'PROTOCOL'])
15
+
16
+ export const TvlType = pgEnum('TvlType', ['TOKEN', 'PROTOCOL'])
17
+
18
+ export const PriceSourceMethod = pgEnum('PriceSourceMethod', ['COINGECKO', 'CONSTANT', 'EQUAL_TO', 'ERC4626', 'DEXSCREENER', 'INDEXCOOP', 'DEFILLAMA'])
19
+
20
+ export const Campaign = pgTable('Campaign', {
21
+ id: text('id').notNull().primaryKey(),
22
+ computeChainId: integer('computeChainId').notNull(),
23
+ distributionChainId: integer('distributionChainId').notNull(),
24
+ campaignId: text('campaignId').notNull(),
25
+ type: CampaignType('type').notNull(),
26
+ subType: integer('subType'),
27
+ rewardTokenId: text('rewardTokenId').notNull(),
28
+ amount: text('amount').notNull(),
29
+ opportunityId: text('opportunityId').notNull(),
30
+ startTimestamp: bigint('startTimestamp', { mode: 'bigint' }).notNull(),
31
+ endTimestamp: bigint('endTimestamp', { mode: 'bigint' }).notNull(),
32
+ params: jsonb('params').notNull(),
33
+ creatorAddress: text('creatorAddress').notNull()
34
+ }, (Campaign) => ({
35
+ 'Campaign_ComputeChain_fkey': foreignKey({
36
+ name: 'Campaign_ComputeChain_fkey',
37
+ columns: [Campaign.computeChainId],
38
+ foreignColumns: [Chain.id]
39
+ })
40
+ .onDelete('cascade')
41
+ .onUpdate('cascade'),
42
+ 'Campaign_DistributionChain_fkey': foreignKey({
43
+ name: 'Campaign_DistributionChain_fkey',
44
+ columns: [Campaign.distributionChainId],
45
+ foreignColumns: [Chain.id]
46
+ })
47
+ .onDelete('cascade')
48
+ .onUpdate('cascade'),
49
+ 'Campaign_RewardToken_fkey': foreignKey({
50
+ name: 'Campaign_RewardToken_fkey',
51
+ columns: [Campaign.rewardTokenId],
52
+ foreignColumns: [Token.id]
53
+ })
54
+ .onDelete('cascade')
55
+ .onUpdate('cascade'),
56
+ 'Campaign_Opportunity_fkey': foreignKey({
57
+ name: 'Campaign_Opportunity_fkey',
58
+ columns: [Campaign.opportunityId],
59
+ foreignColumns: [Opportunity.id]
60
+ })
61
+ .onDelete('cascade')
62
+ .onUpdate('cascade'),
63
+ 'Campaign_Creator_fkey': foreignKey({
64
+ name: 'Campaign_Creator_fkey',
65
+ columns: [Campaign.creatorAddress],
66
+ foreignColumns: [User.address]
67
+ })
68
+ .onDelete('cascade')
69
+ .onUpdate('cascade'),
70
+ 'Campaign_distributionChainId_campaignId_unique_idx': uniqueIndex('Campaign_distributionChainId_campaignId_key')
71
+ .on(Campaign.distributionChainId, Campaign.campaignId)
72
+ }));
73
+
74
+ export const CampaignStatus = pgTable('CampaignStatus', {
75
+ campaignId: text('campaignId').notNull().primaryKey(),
76
+ computedUntil: bigint('computedUntil', { mode: 'bigint' }).notNull().default("0"),
77
+ processingStarted: bigint('processingStarted', { mode: 'bigint' }).notNull().default("0"),
78
+ status: RunStatus('status').notNull().default("SUCCESS"),
79
+ error: text('error').notNull(),
80
+ details: jsonb('details').notNull().default("{}")
81
+ }, (CampaignStatus) => ({
82
+ 'CampaignStatus_Campaign_fkey': foreignKey({
83
+ name: 'CampaignStatus_Campaign_fkey',
84
+ columns: [CampaignStatus.campaignId],
85
+ foreignColumns: [Campaign.id]
86
+ })
87
+ .onDelete('cascade')
88
+ .onUpdate('cascade')
89
+ }));
90
+
91
+ export const CampaignComputedValue = pgTable('CampaignComputedValue', {
92
+ campaignId: text('campaignId').notNull().primaryKey(),
93
+ averageBoost: doublePrecision('averageBoost'),
94
+ totalDistributedInUSD: doublePrecision('totalDistributedInUSD'),
95
+ forfeitingBoost: doublePrecision('forfeitingBoost')
96
+ }, (CampaignComputedValue) => ({
97
+ 'CampaignComputedValue_Campaign_fkey': foreignKey({
98
+ name: 'CampaignComputedValue_Campaign_fkey',
99
+ columns: [CampaignComputedValue.campaignId],
100
+ foreignColumns: [Campaign.id]
101
+ })
102
+ .onDelete('cascade')
103
+ .onUpdate('cascade')
104
+ }));
105
+
106
+ export const UserComputedValue = pgTable('UserComputedValue', {
107
+ id: serial('id').notNull().primaryKey(),
108
+ campaignId: text('campaignId').notNull(),
109
+ address: text('address').notNull(),
110
+ reason: text('reason').notNull(),
111
+ boost: doublePrecision('boost')
112
+ }, (UserComputedValue) => ({
113
+ 'UserComputedValue_Campaign_fkey': foreignKey({
114
+ name: 'UserComputedValue_Campaign_fkey',
115
+ columns: [UserComputedValue.campaignId],
116
+ foreignColumns: [Campaign.id]
117
+ })
118
+ .onDelete('cascade')
119
+ .onUpdate('cascade'),
120
+ 'UserComputedValue_User_fkey': foreignKey({
121
+ name: 'UserComputedValue_User_fkey',
122
+ columns: [UserComputedValue.address],
123
+ foreignColumns: [User.address]
124
+ })
125
+ .onDelete('cascade')
126
+ .onUpdate('cascade'),
127
+ 'UserComputedValue_campaignId_address_reason_unique_idx': uniqueIndex('UserComputedValue_campaignId_address_reason_key')
128
+ .on(UserComputedValue.campaignId, UserComputedValue.address, UserComputedValue.reason)
129
+ }));
130
+
131
+ export const Chain = pgTable('Chain', {
132
+ id: integer('id').notNull().primaryKey(),
133
+ name: text('name').notNull(),
134
+ icon: text('icon').notNull()
135
+ });
136
+
137
+ export const Explorer = pgTable('Explorer', {
138
+ id: text('id').notNull().primaryKey(),
139
+ type: ExplorerType('type').notNull(),
140
+ url: text('url').notNull(),
141
+ chainId: integer('chainId').notNull()
142
+ }, (Explorer) => ({
143
+ 'Explorer_Chain_fkey': foreignKey({
144
+ name: 'Explorer_Chain_fkey',
145
+ columns: [Explorer.chainId],
146
+ foreignColumns: [Chain.id]
147
+ })
148
+ .onDelete('cascade')
149
+ .onUpdate('cascade'),
150
+ 'Explorer_type_chainId_unique_idx': uniqueIndex('Explorer_type_chainId_key')
151
+ .on(Explorer.type, Explorer.chainId)
152
+ }));
153
+
154
+ export const Opportunity = pgTable('Opportunity', {
155
+ id: text('id').notNull().primaryKey(),
156
+ chainId: integer('chainId').notNull(),
157
+ type: CampaignType('type').notNull(),
158
+ identifier: text('identifier').notNull(),
159
+ name: text('name').notNull(),
160
+ depositUrl: text('depositUrl'),
161
+ status: Status('status').notNull(),
162
+ action: OpportunityAction('action').notNull(),
163
+ mainProtocolId: text('mainProtocolId'),
164
+ tvl: doublePrecision('tvl').notNull(),
165
+ apr: doublePrecision('apr').notNull(),
166
+ dailyRewards: doublePrecision('dailyRewards').notNull(),
167
+ tags: text('tags').array().notNull().default([])
168
+ }, (Opportunity) => ({
169
+ 'Opportunity_Chain_fkey': foreignKey({
170
+ name: 'Opportunity_Chain_fkey',
171
+ columns: [Opportunity.chainId],
172
+ foreignColumns: [Chain.id]
173
+ })
174
+ .onDelete('cascade')
175
+ .onUpdate('cascade'),
176
+ 'Opportunity_MainProtocol_fkey': foreignKey({
177
+ name: 'Opportunity_MainProtocol_fkey',
178
+ columns: [Opportunity.mainProtocolId],
179
+ foreignColumns: [Protocol.id]
180
+ })
181
+ .onDelete('cascade')
182
+ .onUpdate('cascade'),
183
+ 'Opportunity_chainId_type_identifier_unique_idx': uniqueIndex('Opportunity_chainId_type_identifier_key')
184
+ .on(Opportunity.chainId, Opportunity.type, Opportunity.identifier)
185
+ }));
186
+
187
+ export const Protocol = pgTable('Protocol', {
188
+ id: text('id').notNull().primaryKey(),
189
+ tags: text('tags').array().notNull().default([]),
190
+ name: text('name').notNull(),
191
+ description: text('description').notNull(),
192
+ url: text('url').notNull(),
193
+ icon: text('icon').notNull()
194
+ });
195
+
196
+ export const Token = pgTable('Token', {
197
+ id: text('id').notNull().primaryKey(),
198
+ name: text('name'),
199
+ chainId: integer('chainId').notNull(),
200
+ address: text('address').notNull(),
201
+ decimals: integer('decimals').notNull(),
202
+ symbol: text('symbol').notNull(),
203
+ displaySymbol: text('displaySymbol').notNull(),
204
+ icon: text('icon').notNull(),
205
+ verified: boolean('verified').notNull(),
206
+ isTest: boolean('isTest').notNull(),
207
+ price: doublePrecision('price')
208
+ }, (Token) => ({
209
+ 'Token_Chain_fkey': foreignKey({
210
+ name: 'Token_Chain_fkey',
211
+ columns: [Token.chainId],
212
+ foreignColumns: [Chain.id]
213
+ })
214
+ .onDelete('cascade')
215
+ .onUpdate('cascade'),
216
+ 'Token_chainId_address_unique_idx': uniqueIndex('Token_chainId_address_key')
217
+ .on(Token.chainId, Token.address)
218
+ }));
219
+
220
+ export const AprRecord = pgTable('AprRecord', {
221
+ id: text('id').notNull().primaryKey(),
222
+ timestamp: bigint('timestamp', { mode: 'bigint' }).notNull(),
223
+ cumulated: doublePrecision('cumulated').notNull(),
224
+ opportunityId: text('opportunityId').notNull()
225
+ }, (AprRecord) => ({
226
+ 'AprRecord_Opportunity_fkey': foreignKey({
227
+ name: 'AprRecord_Opportunity_fkey',
228
+ columns: [AprRecord.opportunityId],
229
+ foreignColumns: [Opportunity.id]
230
+ })
231
+ .onDelete('cascade')
232
+ .onUpdate('cascade'),
233
+ 'AprRecord_opportunityId_timestamp_unique_idx': uniqueIndex('AprRecord_opportunityId_timestamp_key')
234
+ .on(AprRecord.opportunityId, AprRecord.timestamp)
235
+ }));
236
+
237
+ export const AprBreakdown = pgTable('AprBreakdown', {
238
+ id: serial('id').notNull().primaryKey(),
239
+ identifier: text('identifier').notNull(),
240
+ type: AprType('type').notNull(),
241
+ value: doublePrecision('value').notNull(),
242
+ aprRecordId: text('aprRecordId').notNull()
243
+ }, (AprBreakdown) => ({
244
+ 'AprBreakdown_AprRecord_fkey': foreignKey({
245
+ name: 'AprBreakdown_AprRecord_fkey',
246
+ columns: [AprBreakdown.aprRecordId],
247
+ foreignColumns: [AprRecord.id]
248
+ })
249
+ .onDelete('cascade')
250
+ .onUpdate('cascade')
251
+ }));
252
+
253
+ export const TVLRecord = pgTable('TVLRecord', {
254
+ id: text('id').notNull().primaryKey(),
255
+ timestamp: bigint('timestamp', { mode: 'bigint' }).notNull(),
256
+ total: doublePrecision('total').notNull(),
257
+ opportunityId: text('opportunityId').notNull()
258
+ }, (TVLRecord) => ({
259
+ 'TVLRecord_Opportunity_fkey': foreignKey({
260
+ name: 'TVLRecord_Opportunity_fkey',
261
+ columns: [TVLRecord.opportunityId],
262
+ foreignColumns: [Opportunity.id]
263
+ })
264
+ .onDelete('cascade')
265
+ .onUpdate('cascade'),
266
+ 'TVLRecord_opportunityId_timestamp_unique_idx': uniqueIndex('TVLRecord_opportunityId_timestamp_key')
267
+ .on(TVLRecord.opportunityId, TVLRecord.timestamp)
268
+ }));
269
+
270
+ export const TVLBreakdown = pgTable('TVLBreakdown', {
271
+ id: serial('id').notNull().primaryKey(),
272
+ identifier: text('identifier').notNull(),
273
+ type: TvlType('type').notNull(),
274
+ value: doublePrecision('value').notNull(),
275
+ tvlRecordId: text('tvlRecordId').notNull()
276
+ }, (TVLBreakdown) => ({
277
+ 'TVLBreakdown_TvlRecord_fkey': foreignKey({
278
+ name: 'TVLBreakdown_TvlRecord_fkey',
279
+ columns: [TVLBreakdown.tvlRecordId],
280
+ foreignColumns: [TVLRecord.id]
281
+ })
282
+ .onDelete('cascade')
283
+ .onUpdate('cascade')
284
+ }));
285
+
286
+ export const DailyRewardsRecord = pgTable('DailyRewardsRecord', {
287
+ id: text('id').notNull().primaryKey(),
288
+ timestamp: bigint('timestamp', { mode: 'bigint' }).notNull(),
289
+ total: doublePrecision('total').notNull(),
290
+ opportunityId: text('opportunityId').notNull()
291
+ }, (DailyRewardsRecord) => ({
292
+ 'DailyRewardsRecord_Opportunity_fkey': foreignKey({
293
+ name: 'DailyRewardsRecord_Opportunity_fkey',
294
+ columns: [DailyRewardsRecord.opportunityId],
295
+ foreignColumns: [Opportunity.id]
296
+ })
297
+ .onDelete('cascade')
298
+ .onUpdate('cascade'),
299
+ 'DailyRewardsRecord_opportunityId_timestamp_unique_idx': uniqueIndex('DailyRewardsRecord_opportunityId_timestamp_key')
300
+ .on(DailyRewardsRecord.opportunityId, DailyRewardsRecord.timestamp)
301
+ }));
302
+
303
+ export const DailyRewardsBreakdown = pgTable('DailyRewardsBreakdown', {
304
+ id: serial('id').notNull().primaryKey(),
305
+ value: doublePrecision('value').notNull(),
306
+ campaignId: text('campaignId').notNull(),
307
+ dailyRewardsRecordId: text('dailyRewardsRecordId').notNull()
308
+ }, (DailyRewardsBreakdown) => ({
309
+ 'DailyRewardsBreakdown_Campaign_fkey': foreignKey({
310
+ name: 'DailyRewardsBreakdown_Campaign_fkey',
311
+ columns: [DailyRewardsBreakdown.campaignId],
312
+ foreignColumns: [Campaign.id]
313
+ })
314
+ .onDelete('cascade')
315
+ .onUpdate('cascade'),
316
+ 'DailyRewardsBreakdown_DailyRewardsRecord_fkey': foreignKey({
317
+ name: 'DailyRewardsBreakdown_DailyRewardsRecord_fkey',
318
+ columns: [DailyRewardsBreakdown.dailyRewardsRecordId],
319
+ foreignColumns: [DailyRewardsRecord.id]
320
+ })
321
+ .onDelete('cascade')
322
+ .onUpdate('cascade')
323
+ }));
324
+
325
+ export const User = pgTable('User', {
326
+ address: text('address').notNull().primaryKey(),
327
+ tags: text('tags').array().notNull(),
328
+ creatorId: text('creatorId')
329
+ }, (User) => ({
330
+ 'User_Creator_fkey': foreignKey({
331
+ name: 'User_Creator_fkey',
332
+ columns: [User.creatorId],
333
+ foreignColumns: [Creator.id]
334
+ })
335
+ .onDelete('cascade')
336
+ .onUpdate('cascade')
337
+ }));
338
+
339
+ export const Creator = pgTable('Creator', {
340
+ id: text('id').notNull().primaryKey(),
341
+ icon: text('icon'),
342
+ name: text('name').notNull()
343
+ });
344
+
345
+ export const Reward = pgTable('Reward', {
346
+ id: text('id').notNull().primaryKey(),
347
+ root: text('root').notNull(),
348
+ recipient: text('recipient').notNull(),
349
+ rewardTokenId: text('rewardTokenId').notNull(),
350
+ amount: text('amount').notNull().default("0"),
351
+ claimed: text('claimed').notNull().default("0"),
352
+ pending: text('pending').notNull().default("0"),
353
+ proofs: text('proofs').array().notNull()
354
+ }, (Reward) => ({
355
+ 'Reward_MerklRoot_fkey': foreignKey({
356
+ name: 'Reward_MerklRoot_fkey',
357
+ columns: [Reward.root],
358
+ foreignColumns: [MerklRoot.root]
359
+ })
360
+ .onDelete('cascade')
361
+ .onUpdate('cascade'),
362
+ 'Reward_User_fkey': foreignKey({
363
+ name: 'Reward_User_fkey',
364
+ columns: [Reward.recipient],
365
+ foreignColumns: [User.address]
366
+ })
367
+ .onDelete('cascade')
368
+ .onUpdate('cascade'),
369
+ 'Reward_RewardToken_fkey': foreignKey({
370
+ name: 'Reward_RewardToken_fkey',
371
+ columns: [Reward.rewardTokenId],
372
+ foreignColumns: [Token.id]
373
+ })
374
+ .onDelete('cascade')
375
+ .onUpdate('cascade'),
376
+ 'Reward_root_recipient_rewardTokenId_unique_idx': uniqueIndex('Reward_root_recipient_rewardTokenId_key')
377
+ .on(Reward.root, Reward.recipient, Reward.rewardTokenId)
378
+ }));
379
+
380
+ export const RewardBreakdown = pgTable('RewardBreakdown', {
381
+ id: serial('id').notNull().primaryKey(),
382
+ protocolId: text('protocolId'),
383
+ reason: text('reason').notNull(),
384
+ amount: text('amount').notNull(),
385
+ claimed: text('claimed').notNull(),
386
+ pending: text('pending').notNull(),
387
+ rewardId: text('rewardId').notNull(),
388
+ campaignId: text('campaignId').notNull()
389
+ }, (RewardBreakdown) => ({
390
+ 'RewardBreakdown_Protocol_fkey': foreignKey({
391
+ name: 'RewardBreakdown_Protocol_fkey',
392
+ columns: [RewardBreakdown.protocolId],
393
+ foreignColumns: [Protocol.id]
394
+ })
395
+ .onDelete('cascade')
396
+ .onUpdate('cascade'),
397
+ 'RewardBreakdown_Reward_fkey': foreignKey({
398
+ name: 'RewardBreakdown_Reward_fkey',
399
+ columns: [RewardBreakdown.rewardId],
400
+ foreignColumns: [Reward.id]
401
+ })
402
+ .onDelete('cascade')
403
+ .onUpdate('cascade'),
404
+ 'RewardBreakdown_Campaign_fkey': foreignKey({
405
+ name: 'RewardBreakdown_Campaign_fkey',
406
+ columns: [RewardBreakdown.campaignId],
407
+ foreignColumns: [Campaign.id]
408
+ })
409
+ .onDelete('cascade')
410
+ .onUpdate('cascade'),
411
+ 'RewardBreakdown_rewardId_campaignId_reason_unique_idx': uniqueIndex('RewardBreakdown_rewardId_campaignId_reason_key')
412
+ .on(RewardBreakdown.rewardId, RewardBreakdown.campaignId, RewardBreakdown.reason)
413
+ }));
414
+
415
+ export const MerklRoot = pgTable('MerklRoot', {
416
+ root: text('root').notNull().primaryKey(),
417
+ chainId: integer('chainId').notNull(),
418
+ epoch: integer('epoch').notNull(),
419
+ timestamp: bigint('timestamp', { mode: 'bigint' }).notNull()
420
+ }, (MerklRoot) => ({
421
+ 'MerklRoot_Chain_fkey': foreignKey({
422
+ name: 'MerklRoot_Chain_fkey',
423
+ columns: [MerklRoot.chainId],
424
+ foreignColumns: [Chain.id]
425
+ })
426
+ .onDelete('cascade')
427
+ .onUpdate('cascade')
428
+ }));
429
+
430
+ export const PriceSource = pgTable('PriceSource', {
431
+ id: serial('id').notNull().primaryKey(),
432
+ symbol: text('symbol').notNull().unique(),
433
+ method: PriceSourceMethod('method').notNull(),
434
+ args: jsonb('args')
435
+ });
436
+
437
+ export const Blacklist = pgTable('Blacklist', {
438
+ id: text('id').notNull().primaryKey(),
439
+ chainId: integer('chainId').notNull(),
440
+ poolAddress: text('poolAddress').notNull(),
441
+ userAddress: text('userAddress').notNull(),
442
+ arrestTimestamp: bigint('arrestTimestamp', { mode: 'bigint' }).notNull(),
443
+ arrestDetails: jsonb('arrestDetails').notNull()
444
+ }, (Blacklist) => ({
445
+ 'Blacklist_Chain_fkey': foreignKey({
446
+ name: 'Blacklist_Chain_fkey',
447
+ columns: [Blacklist.chainId],
448
+ foreignColumns: [Chain.id]
449
+ })
450
+ .onDelete('cascade')
451
+ .onUpdate('cascade'),
452
+ 'Blacklist_User_fkey': foreignKey({
453
+ name: 'Blacklist_User_fkey',
454
+ columns: [Blacklist.userAddress],
455
+ foreignColumns: [User.address]
456
+ })
457
+ .onDelete('cascade')
458
+ .onUpdate('cascade'),
459
+ 'Blacklist_chainId_userAddress_poolAddress_unique_idx': uniqueIndex('Blacklist_chainId_userAddress_poolAddress_key')
460
+ .on(Blacklist.chainId, Blacklist.userAddress, Blacklist.poolAddress)
461
+ }));
462
+
463
+ export const Dump = pgTable('Dump', {
464
+ id: text('id').notNull().primaryKey(),
465
+ chainId: integer('chainId').notNull(),
466
+ fromTokenId: text('fromTokenId').notNull(),
467
+ toTokenId: text('toTokenId').notNull(),
468
+ multisig: text('multisig').notNull(),
469
+ recipient: text('recipient').notNull(),
470
+ amountIn: text('amountIn').notNull().default("0"),
471
+ amountOut: text('amountOut').notNull().default("0"),
472
+ datetime: timestamp('datetime', { precision: 3 }).notNull(),
473
+ timestamp: integer('timestamp').notNull()
474
+ }, (Dump) => ({
475
+ 'Dump_Chain_fkey': foreignKey({
476
+ name: 'Dump_Chain_fkey',
477
+ columns: [Dump.chainId],
478
+ foreignColumns: [Chain.id]
479
+ })
480
+ .onDelete('cascade')
481
+ .onUpdate('cascade'),
482
+ 'Dump_FromToken_fkey': foreignKey({
483
+ name: 'Dump_FromToken_fkey',
484
+ columns: [Dump.fromTokenId],
485
+ foreignColumns: [Token.id]
486
+ })
487
+ .onDelete('cascade')
488
+ .onUpdate('cascade'),
489
+ 'Dump_ToToken_fkey': foreignKey({
490
+ name: 'Dump_ToToken_fkey',
491
+ columns: [Dump.toTokenId],
492
+ foreignColumns: [Token.id]
493
+ })
494
+ .onDelete('cascade')
495
+ .onUpdate('cascade'),
496
+ 'Dump_chainId_fromTokenId_toTokenId_timestamp_unique_idx': uniqueIndex('Dump_chainId_fromTokenId_toTokenId_timestamp_key')
497
+ .on(Dump.chainId, Dump.fromTokenId, Dump.toTokenId, Dump.timestamp)
498
+ }));
499
+
500
+ export const OpportunityToToken = pgTable('_OpportunityToToken', {
501
+ TokenId: text('A').notNull(),
502
+ OpportunityId: text('B').notNull()
503
+ }, (OpportunityToToken) => ({
504
+ '_OpportunityToToken_Token_fkey': foreignKey({
505
+ name: '_OpportunityToToken_Token_fkey',
506
+ columns: [OpportunityToToken.TokenId],
507
+ foreignColumns: [Token.id]
508
+ })
509
+ .onDelete('cascade')
510
+ .onUpdate('cascade'),
511
+ '_OpportunityToToken_Opportunity_fkey': foreignKey({
512
+ name: '_OpportunityToToken_Opportunity_fkey',
513
+ columns: [OpportunityToToken.OpportunityId],
514
+ foreignColumns: [Opportunity.id]
515
+ })
516
+ .onDelete('cascade')
517
+ .onUpdate('cascade')
518
+ }));
519
+
520
+ export const OpportunityToProtocol = pgTable('_OpportunityToProtocol', {
521
+ ProtocolId: text('A').notNull(),
522
+ OpportunityId: text('B').notNull()
523
+ }, (OpportunityToProtocol) => ({
524
+ '_OpportunityToProtocol_Protocol_fkey': foreignKey({
525
+ name: '_OpportunityToProtocol_Protocol_fkey',
526
+ columns: [OpportunityToProtocol.ProtocolId],
527
+ foreignColumns: [Protocol.id]
528
+ })
529
+ .onDelete('cascade')
530
+ .onUpdate('cascade'),
531
+ '_OpportunityToProtocol_Opportunity_fkey': foreignKey({
532
+ name: '_OpportunityToProtocol_Opportunity_fkey',
533
+ columns: [OpportunityToProtocol.OpportunityId],
534
+ foreignColumns: [Opportunity.id]
535
+ })
536
+ .onDelete('cascade')
537
+ .onUpdate('cascade')
538
+ }));
539
+
540
+ export const CampaignRelations = relations(Campaign, ({ one, many }) => ({
541
+ ComputeChain: one(Chain, {
542
+ relationName: 'compute',
543
+ fields: [Campaign.computeChainId],
544
+ references: [Chain.id]
545
+ }),
546
+ DistributionChain: one(Chain, {
547
+ relationName: 'distribution',
548
+ fields: [Campaign.distributionChainId],
549
+ references: [Chain.id]
550
+ }),
551
+ RewardToken: one(Token, {
552
+ relationName: 'CampaignToToken',
553
+ fields: [Campaign.rewardTokenId],
554
+ references: [Token.id]
555
+ }),
556
+ Opportunity: one(Opportunity, {
557
+ relationName: 'CampaignToOpportunity',
558
+ fields: [Campaign.opportunityId],
559
+ references: [Opportunity.id]
560
+ }),
561
+ RewardBreakdown: many(RewardBreakdown, {
562
+ relationName: 'CampaignToRewardBreakdown'
563
+ }),
564
+ DailyRewardsBreakdown: many(DailyRewardsBreakdown, {
565
+ relationName: 'CampaignToDailyRewardsBreakdown'
566
+ }),
567
+ Creator: one(User, {
568
+ relationName: 'CampaignToUser',
569
+ fields: [Campaign.creatorAddress],
570
+ references: [User.address]
571
+ }),
572
+ CampaignStatus: many(CampaignStatus, {
573
+ relationName: 'CampaignToCampaignStatus'
574
+ }),
575
+ CampaignEngineValues: many(CampaignComputedValue, {
576
+ relationName: 'CampaignToCampaignComputedValue'
577
+ }),
578
+ UserComputedValue: many(UserComputedValue, {
579
+ relationName: 'CampaignToUserComputedValue'
580
+ })
581
+ }));
582
+
583
+ export const CampaignStatusRelations = relations(CampaignStatus, ({ one }) => ({
584
+ Campaign: one(Campaign, {
585
+ relationName: 'CampaignToCampaignStatus',
586
+ fields: [CampaignStatus.campaignId],
587
+ references: [Campaign.id]
588
+ })
589
+ }));
590
+
591
+ export const CampaignComputedValueRelations = relations(CampaignComputedValue, ({ one }) => ({
592
+ Campaign: one(Campaign, {
593
+ relationName: 'CampaignToCampaignComputedValue',
594
+ fields: [CampaignComputedValue.campaignId],
595
+ references: [Campaign.id]
596
+ })
597
+ }));
598
+
599
+ export const UserComputedValueRelations = relations(UserComputedValue, ({ one }) => ({
600
+ Campaign: one(Campaign, {
601
+ relationName: 'CampaignToUserComputedValue',
602
+ fields: [UserComputedValue.campaignId],
603
+ references: [Campaign.id]
604
+ }),
605
+ User: one(User, {
606
+ relationName: 'UserToUserComputedValue',
607
+ fields: [UserComputedValue.address],
608
+ references: [User.address]
609
+ })
610
+ }));
611
+
612
+ export const ChainRelations = relations(Chain, ({ many }) => ({
613
+ Explorer: many(Explorer, {
614
+ relationName: 'ChainToExplorer'
615
+ }),
616
+ Campaigns: many(Campaign, {
617
+ relationName: 'compute'
618
+ }),
619
+ Distribution: many(Campaign, {
620
+ relationName: 'distribution'
621
+ }),
622
+ Token: many(Token, {
623
+ relationName: 'ChainToToken'
624
+ }),
625
+ Opportunity: many(Opportunity, {
626
+ relationName: 'ChainToOpportunity'
627
+ }),
628
+ MerklRoot: many(MerklRoot, {
629
+ relationName: 'ChainToMerklRoot'
630
+ }),
631
+ Blacklist: many(Blacklist, {
632
+ relationName: 'BlacklistToChain'
633
+ }),
634
+ Dump: many(Dump, {
635
+ relationName: 'ChainToDump'
636
+ })
637
+ }));
638
+
639
+ export const ExplorerRelations = relations(Explorer, ({ one }) => ({
640
+ Chain: one(Chain, {
641
+ relationName: 'ChainToExplorer',
642
+ fields: [Explorer.chainId],
643
+ references: [Chain.id]
644
+ })
645
+ }));
646
+
647
+ export const OpportunityRelations = relations(Opportunity, ({ one, many }) => ({
648
+ Chain: one(Chain, {
649
+ relationName: 'ChainToOpportunity',
650
+ fields: [Opportunity.chainId],
651
+ references: [Chain.id]
652
+ }),
653
+ Tokens: many(OpportunityToToken, {
654
+ relationName: 'OpportunityToOpportunityToToken'
655
+ }),
656
+ Campaigns: many(Campaign, {
657
+ relationName: 'CampaignToOpportunity'
658
+ }),
659
+ Protocols: many(OpportunityToProtocol, {
660
+ relationName: 'OpportunityToOpportunityToProtocol'
661
+ }),
662
+ MainProtocol: one(Protocol, {
663
+ relationName: 'main',
664
+ fields: [Opportunity.mainProtocolId],
665
+ references: [Protocol.id]
666
+ }),
667
+ TvlRecords: many(TVLRecord, {
668
+ relationName: 'OpportunityToTVLRecord'
669
+ }),
670
+ AprRecords: many(AprRecord, {
671
+ relationName: 'AprRecordToOpportunity'
672
+ }),
673
+ DailyRewardsRecords: many(DailyRewardsRecord, {
674
+ relationName: 'DailyRewardsRecordToOpportunity'
675
+ })
676
+ }));
677
+
678
+ export const ProtocolRelations = relations(Protocol, ({ many }) => ({
679
+ MainOpportunities: many(Opportunity, {
680
+ relationName: 'main'
681
+ }),
682
+ Opportunities: many(OpportunityToProtocol, {
683
+ relationName: 'ProtocolToOpportunityToProtocol'
684
+ }),
685
+ RewardBreakdown: many(RewardBreakdown, {
686
+ relationName: 'ProtocolToRewardBreakdown'
687
+ })
688
+ }));
689
+
690
+ export const TokenRelations = relations(Token, ({ one, many }) => ({
691
+ Chain: one(Chain, {
692
+ relationName: 'ChainToToken',
693
+ fields: [Token.chainId],
694
+ references: [Chain.id]
695
+ }),
696
+ Opportunity: many(OpportunityToToken, {
697
+ relationName: 'TokenToOpportunityToToken'
698
+ }),
699
+ Campaigns: many(Campaign, {
700
+ relationName: 'CampaignToToken'
701
+ }),
702
+ Reward: many(Reward, {
703
+ relationName: 'RewardToToken'
704
+ }),
705
+ DumpTo: many(Dump, {
706
+ relationName: 'to'
707
+ }),
708
+ DumpFrom: many(Dump, {
709
+ relationName: 'from'
710
+ })
711
+ }));
712
+
713
+ export const AprRecordRelations = relations(AprRecord, ({ many, one }) => ({
714
+ AprBreakdown: many(AprBreakdown, {
715
+ relationName: 'AprBreakdownToAprRecord'
716
+ }),
717
+ Opportunity: one(Opportunity, {
718
+ relationName: 'AprRecordToOpportunity',
719
+ fields: [AprRecord.opportunityId],
720
+ references: [Opportunity.id]
721
+ })
722
+ }));
723
+
724
+ export const AprBreakdownRelations = relations(AprBreakdown, ({ one }) => ({
725
+ AprRecord: one(AprRecord, {
726
+ relationName: 'AprBreakdownToAprRecord',
727
+ fields: [AprBreakdown.aprRecordId],
728
+ references: [AprRecord.id]
729
+ })
730
+ }));
731
+
732
+ export const TVLRecordRelations = relations(TVLRecord, ({ many, one }) => ({
733
+ TvlBreakdown: many(TVLBreakdown, {
734
+ relationName: 'TVLBreakdownToTVLRecord'
735
+ }),
736
+ Opportunity: one(Opportunity, {
737
+ relationName: 'OpportunityToTVLRecord',
738
+ fields: [TVLRecord.opportunityId],
739
+ references: [Opportunity.id]
740
+ })
741
+ }));
742
+
743
+ export const TVLBreakdownRelations = relations(TVLBreakdown, ({ one }) => ({
744
+ TvlRecord: one(TVLRecord, {
745
+ relationName: 'TVLBreakdownToTVLRecord',
746
+ fields: [TVLBreakdown.tvlRecordId],
747
+ references: [TVLRecord.id]
748
+ })
749
+ }));
750
+
751
+ export const DailyRewardsRecordRelations = relations(DailyRewardsRecord, ({ many, one }) => ({
752
+ DailyRewardsBreakdown: many(DailyRewardsBreakdown, {
753
+ relationName: 'DailyRewardsBreakdownToDailyRewardsRecord'
754
+ }),
755
+ Opportunity: one(Opportunity, {
756
+ relationName: 'DailyRewardsRecordToOpportunity',
757
+ fields: [DailyRewardsRecord.opportunityId],
758
+ references: [Opportunity.id]
759
+ })
760
+ }));
761
+
762
+ export const DailyRewardsBreakdownRelations = relations(DailyRewardsBreakdown, ({ one }) => ({
763
+ Campaign: one(Campaign, {
764
+ relationName: 'CampaignToDailyRewardsBreakdown',
765
+ fields: [DailyRewardsBreakdown.campaignId],
766
+ references: [Campaign.id]
767
+ }),
768
+ DailyRewardsRecord: one(DailyRewardsRecord, {
769
+ relationName: 'DailyRewardsBreakdownToDailyRewardsRecord',
770
+ fields: [DailyRewardsBreakdown.dailyRewardsRecordId],
771
+ references: [DailyRewardsRecord.id]
772
+ })
773
+ }));
774
+
775
+ export const UserRelations = relations(User, ({ many, one }) => ({
776
+ Rewards: many(Reward, {
777
+ relationName: 'RewardToUser'
778
+ }),
779
+ Blacklist: many(Blacklist, {
780
+ relationName: 'BlacklistToUser'
781
+ }),
782
+ CampaignsCreated: many(Campaign, {
783
+ relationName: 'CampaignToUser'
784
+ }),
785
+ UserComputedValue: many(UserComputedValue, {
786
+ relationName: 'UserToUserComputedValue'
787
+ }),
788
+ Creator: one(Creator, {
789
+ relationName: 'CreatorToUser',
790
+ fields: [User.creatorId],
791
+ references: [Creator.id]
792
+ })
793
+ }));
794
+
795
+ export const CreatorRelations = relations(Creator, ({ many }) => ({
796
+ Users: many(User, {
797
+ relationName: 'CreatorToUser'
798
+ })
799
+ }));
800
+
801
+ export const RewardRelations = relations(Reward, ({ one, many }) => ({
802
+ MerklRoot: one(MerklRoot, {
803
+ relationName: 'MerklRootToReward',
804
+ fields: [Reward.root],
805
+ references: [MerklRoot.root]
806
+ }),
807
+ User: one(User, {
808
+ relationName: 'RewardToUser',
809
+ fields: [Reward.recipient],
810
+ references: [User.address]
811
+ }),
812
+ RewardToken: one(Token, {
813
+ relationName: 'RewardToToken',
814
+ fields: [Reward.rewardTokenId],
815
+ references: [Token.id]
816
+ }),
817
+ Breakdown: many(RewardBreakdown, {
818
+ relationName: 'RewardToRewardBreakdown'
819
+ })
820
+ }));
821
+
822
+ export const RewardBreakdownRelations = relations(RewardBreakdown, ({ one }) => ({
823
+ Protocol: one(Protocol, {
824
+ relationName: 'ProtocolToRewardBreakdown',
825
+ fields: [RewardBreakdown.protocolId],
826
+ references: [Protocol.id]
827
+ }),
828
+ Reward: one(Reward, {
829
+ relationName: 'RewardToRewardBreakdown',
830
+ fields: [RewardBreakdown.rewardId],
831
+ references: [Reward.id]
832
+ }),
833
+ Campaign: one(Campaign, {
834
+ relationName: 'CampaignToRewardBreakdown',
835
+ fields: [RewardBreakdown.campaignId],
836
+ references: [Campaign.id]
837
+ })
838
+ }));
839
+
840
+ export const MerklRootRelations = relations(MerklRoot, ({ one, many }) => ({
841
+ Chain: one(Chain, {
842
+ relationName: 'ChainToMerklRoot',
843
+ fields: [MerklRoot.chainId],
844
+ references: [Chain.id]
845
+ }),
846
+ Rewards: many(Reward, {
847
+ relationName: 'MerklRootToReward'
848
+ })
849
+ }));
850
+
851
+ export const BlacklistRelations = relations(Blacklist, ({ one }) => ({
852
+ Chain: one(Chain, {
853
+ relationName: 'BlacklistToChain',
854
+ fields: [Blacklist.chainId],
855
+ references: [Chain.id]
856
+ }),
857
+ User: one(User, {
858
+ relationName: 'BlacklistToUser',
859
+ fields: [Blacklist.userAddress],
860
+ references: [User.address]
861
+ })
862
+ }));
863
+
864
+ export const DumpRelations = relations(Dump, ({ one }) => ({
865
+ Chain: one(Chain, {
866
+ relationName: 'ChainToDump',
867
+ fields: [Dump.chainId],
868
+ references: [Chain.id]
869
+ }),
870
+ FromToken: one(Token, {
871
+ relationName: 'from',
872
+ fields: [Dump.fromTokenId],
873
+ references: [Token.id]
874
+ }),
875
+ ToToken: one(Token, {
876
+ relationName: 'to',
877
+ fields: [Dump.toTokenId],
878
+ references: [Token.id]
879
+ })
880
+ }));
881
+
882
+ export const OpportunityToTokenRelations = relations(OpportunityToToken, ({ one }) => ({
883
+ Token: one(Token, {
884
+ relationName: 'TokenToOpportunityToToken',
885
+ fields: [OpportunityToToken.TokenId],
886
+ references: [Token.id]
887
+ }),
888
+ Opportunity: one(Opportunity, {
889
+ relationName: 'OpportunityToOpportunityToToken',
890
+ fields: [OpportunityToToken.OpportunityId],
891
+ references: [Opportunity.id]
892
+ })
893
+ }));
894
+
895
+ export const OpportunityToProtocolRelations = relations(OpportunityToProtocol, ({ one }) => ({
896
+ Protocol: one(Protocol, {
897
+ relationName: 'ProtocolToOpportunityToProtocol',
898
+ fields: [OpportunityToProtocol.ProtocolId],
899
+ references: [Protocol.id]
900
+ }),
901
+ Opportunity: one(Opportunity, {
902
+ relationName: 'OpportunityToOpportunityToProtocol',
903
+ fields: [OpportunityToProtocol.OpportunityId],
904
+ references: [Opportunity.id]
905
+ })
906
+ }));