@merkl/api 0.10.394 → 0.10.397

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