@merkl/api 0.18.8 → 0.18.10

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 (100) hide show
  1. package/dist/src/backgroundJobs/index.js +1 -1
  2. package/dist/src/backgroundJobs/jobs/campaignsCacheUpdater.js +1 -1
  3. package/dist/src/eden/index.d.ts +521 -518
  4. package/dist/src/factories/opportunityMetadata/implementations/Clamm.js +1 -1
  5. package/dist/src/index.d.ts +111 -110
  6. package/dist/src/index.js +1 -1
  7. package/dist/src/jobs/etl/pendings.js +1 -1
  8. package/dist/src/jobs/etl/reward-breakdowns.js +1 -1
  9. package/dist/src/jobs/etl/rewards.js +1 -1
  10. package/dist/src/jobs/etl/update-euler-vaults.js +1 -1
  11. package/dist/src/libs/campaigns/campaignTypes/EventBasedDynamicData.js +1 -1
  12. package/dist/src/libs/campaigns/campaignTypes/RadiantDynamicData.js +1 -1
  13. package/dist/src/libs/campaigns/campaignTypes/UniswapV4DynamicData.js +1 -1
  14. package/dist/src/libs/campaigns/utils/getEulerV2Vaults.js +1 -1
  15. package/dist/src/libs/campaigns/utils/getUniswapV4Pools.js +1 -1
  16. package/dist/src/libs/getTokensList.d.ts +3 -0
  17. package/dist/src/libs/positions/erc20/index.js +1 -0
  18. package/dist/src/libs/staticCampaigns.js +1 -1
  19. package/dist/src/modules/v4/accounting/accounting.controller.d.ts +6 -6
  20. package/dist/src/modules/v4/accounting/accounting.repository.d.ts +16 -16
  21. package/dist/src/modules/v4/accounting/accounting.repository.js +1 -1
  22. package/dist/src/modules/v4/accounting/accounting.service.d.ts +2 -2
  23. package/dist/src/modules/v4/blacklist/blacklist.repository.js +1 -1
  24. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +20 -20
  25. package/dist/src/modules/v4/campaign/campaign.repository.d.ts +29 -29
  26. package/dist/src/modules/v4/campaign/campaign.repository.js +1 -1
  27. package/dist/src/modules/v4/campaign/campaign.service.d.ts +26 -26
  28. package/dist/src/modules/v4/chain/chain.repository.js +1 -1
  29. package/dist/src/modules/v4/computedValue/computedValue.repository.js +1 -1
  30. package/dist/src/modules/v4/creator/creator.repository.js +1 -1
  31. package/dist/src/modules/v4/enso/enso.service.d.ts +2 -2
  32. package/dist/src/modules/v4/explorer/explorer.repository.js +1 -1
  33. package/dist/src/modules/v4/liquidity/liquidity.controller.d.ts +1 -1
  34. package/dist/src/modules/v4/merklRoot/merklRoot.controller.d.ts +3 -3
  35. package/dist/src/modules/v4/merklRoot/merklRoot.repository.d.ts +3 -3
  36. package/dist/src/modules/v4/merklRoot/merklRoot.repository.js +1 -1
  37. package/dist/src/modules/v4/merklRoot/merklRoot.service.d.ts +3 -3
  38. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +34 -34
  39. package/dist/src/modules/v4/opportunity/opportunity.converter.js +1 -1
  40. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +1 -1
  41. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +57 -57
  42. package/dist/src/modules/v4/opportunity/opportunity.repository.js +1 -1
  43. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +35 -35
  44. package/dist/src/modules/v4/price/price.repository.js +1 -1
  45. package/dist/src/modules/v4/programPayload/programPayload.controller.d.ts +11 -11
  46. package/dist/src/modules/v4/protocol/protocol.repository.d.ts +3 -3
  47. package/dist/src/modules/v4/protocol/protocol.repository.js +1 -1
  48. package/dist/src/modules/v4/referral/referral.controller.d.ts +1 -1
  49. package/dist/src/modules/v4/reward/reward.controller.d.ts +6 -6
  50. package/dist/src/modules/v4/reward/reward.repository.d.ts +3 -3
  51. package/dist/src/modules/v4/reward/reward.repository.js +1 -1
  52. package/dist/src/modules/v4/reward/reward.service.d.ts +17 -17
  53. package/dist/src/modules/v4/router.d.ts +102 -102
  54. package/dist/src/modules/v4/status/status.controller.d.ts +2 -2
  55. package/dist/src/modules/v4/status/status.repository.d.ts +2 -2
  56. package/dist/src/modules/v4/status/status.repository.js +1 -1
  57. package/dist/src/modules/v4/status/status.service.d.ts +2 -2
  58. package/dist/src/modules/v4/token/token.controller.d.ts +12 -12
  59. package/dist/src/modules/v4/token/token.repository.d.ts +4 -9
  60. package/dist/src/modules/v4/token/token.repository.js +3 -9
  61. package/dist/src/modules/v4/token/token.service.d.ts +10 -10
  62. package/dist/src/modules/v4/token/token.service.js +3 -3
  63. package/dist/src/modules/v4/user/user.controller.d.ts +6 -6
  64. package/dist/src/modules/v4/user/user.repository.js +1 -1
  65. package/dist/src/modules/v4/user/user.service.js +1 -1
  66. package/dist/src/routes/v3/campaign/delay.js +1 -1
  67. package/dist/src/routes/v3/campaignClaims.d.ts +1 -1
  68. package/dist/src/routes/v3/campaignClaims.js +1 -1
  69. package/dist/src/routes/v3/campaigns.d.ts +3 -2
  70. package/dist/src/routes/v3/campaigns.js +21 -59
  71. package/dist/src/routes/v3/multiChainPositions.js +1 -0
  72. package/dist/src/routes/v3/opportunity.d.ts +1 -1
  73. package/dist/src/routes/v3/parse.d.ts +1 -1
  74. package/dist/src/routes/v3/positions.js +1 -0
  75. package/dist/src/routes/v3/recipients.d.ts +1 -1
  76. package/dist/src/routes/v3/rewardsReport.d.ts +1 -1
  77. package/dist/src/routes/v3/router.d.ts +9 -8
  78. package/dist/src/routes/v3/token.d.ts +1 -1
  79. package/dist/src/utils/execute.d.ts +3 -13
  80. package/dist/src/utils/execute.js +77 -1
  81. package/dist/src/utils/generic.d.ts +1 -18
  82. package/dist/src/utils/generic.js +2 -76
  83. package/dist/src/utils/hashArray.d.ts +1 -0
  84. package/dist/src/utils/hashArray.js +4 -1
  85. package/dist/src/utils/queries/allCampaigns.d.ts +0 -4
  86. package/dist/src/utils/queries/allCampaigns.js +0 -39
  87. package/dist/tsconfig.package.tsbuildinfo +1 -1
  88. package/package.json +1 -1
  89. package/dist/src/utils/addString.d.ts +0 -2
  90. package/dist/src/utils/addString.js +0 -6
  91. package/dist/src/utils/crypto.d.ts +0 -1
  92. package/dist/src/utils/crypto.js +0 -4
  93. package/dist/src/utils/queries/activeCampaigns.d.ts +0 -3
  94. package/dist/src/utils/queries/activeCampaigns.js +0 -22
  95. package/dist/src/utils/validation.d.ts +0 -5
  96. package/dist/src/utils/validation.js +0 -20
  97. /package/dist/{src/utils/prisma.d.ts → database/index.d.ts} +0 -0
  98. /package/dist/{src/utils/prisma.js → database/index.js} +0 -0
  99. /package/dist/src/utils/{camelToKebabCase.d.ts → caseChanges.d.ts} +0 -0
  100. /package/dist/src/utils/{camelToKebabCase.js → caseChanges.js} +0 -0
@@ -171,11 +171,11 @@ export declare const StatusController: Elysia<"/campaign-status", false, {
171
171
  200: {
172
172
  delay: number;
173
173
  computedUntil: number;
174
- startTimestamp: bigint;
175
- endTimestamp: bigint;
176
174
  computeChainId: number;
177
175
  distributionChainId: number;
178
176
  campaignId: string;
177
+ startTimestamp: bigint;
178
+ endTimestamp: bigint;
179
179
  RewardToken: {
180
180
  symbol: string;
181
181
  address: string;
@@ -77,11 +77,11 @@ export declare abstract class StatusRepository {
77
77
  processingStarted: bigint;
78
78
  }>;
79
79
  static findManyDelay(query: DelayModel): Promise<{
80
- startTimestamp: bigint;
81
- endTimestamp: bigint;
82
80
  computeChainId: number;
83
81
  distributionChainId: number;
84
82
  campaignId: string;
83
+ startTimestamp: bigint;
84
+ endTimestamp: bigint;
85
85
  RewardToken: {
86
86
  symbol: string;
87
87
  address: string;
@@ -1,4 +1,4 @@
1
- import { apiDbClient } from "@/utils/prisma";
1
+ import { apiDbClient } from "@db";
2
2
  import moment from "moment";
3
3
  import { CampaignService } from "../campaign";
4
4
  export class StatusRepository {
@@ -61,11 +61,11 @@ export declare abstract class StatusService {
61
61
  static findManyDelay(query: DelayModel): Promise<{
62
62
  delay: number;
63
63
  computedUntil: number;
64
- startTimestamp: bigint;
65
- endTimestamp: bigint;
66
64
  computeChainId: number;
67
65
  distributionChainId: number;
68
66
  campaignId: string;
67
+ startTimestamp: bigint;
68
+ endTimestamp: bigint;
69
69
  RewardToken: {
70
70
  symbol: string;
71
71
  address: string;
@@ -27,8 +27,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
27
27
  id: string;
28
28
  name: string | null;
29
29
  icon: string;
30
- chainId: number;
31
30
  address: string;
31
+ chainId: number;
32
32
  decimals: number;
33
33
  verified: boolean;
34
34
  isTest: boolean;
@@ -59,8 +59,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
59
59
  id: string;
60
60
  name: string | null;
61
61
  icon: string;
62
- chainId: number;
63
62
  address: string;
63
+ chainId: number;
64
64
  decimals: number;
65
65
  verified: boolean;
66
66
  isTest: boolean;
@@ -90,8 +90,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
90
90
  id: string;
91
91
  name: string | null;
92
92
  icon: string;
93
- chainId: number;
94
93
  address: string;
94
+ chainId: number;
95
95
  decimals: number;
96
96
  displaySymbol: string;
97
97
  verified: boolean;
@@ -109,8 +109,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
109
109
  body: unknown;
110
110
  params: {};
111
111
  query: {
112
- tokenAddress?: string | undefined;
113
112
  verified?: boolean | undefined;
113
+ tokenAddress?: string | undefined;
114
114
  additionalTokenAddresses?: string[] | undefined;
115
115
  chainId: number;
116
116
  userAddress: string;
@@ -122,8 +122,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
122
122
  id: string;
123
123
  name: string | null;
124
124
  icon: string;
125
- chainId: number;
126
125
  address: string;
126
+ chainId: number;
127
127
  decimals: number;
128
128
  verified: boolean;
129
129
  isTest: boolean;
@@ -145,8 +145,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
145
145
  symbol?: string | undefined;
146
146
  id?: string[] | undefined;
147
147
  name?: string | undefined;
148
- chainId?: number | undefined;
149
148
  address?: string | undefined;
149
+ chainId?: number | undefined;
150
150
  displaySymbol?: string | undefined;
151
151
  verified?: boolean | undefined;
152
152
  isNative?: boolean | undefined;
@@ -160,8 +160,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
160
160
  id: string;
161
161
  name: string | null;
162
162
  icon: string;
163
- chainId: number;
164
163
  address: string;
164
+ chainId: number;
165
165
  decimals: number;
166
166
  verified: boolean;
167
167
  isTest: boolean;
@@ -181,8 +181,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
181
181
  symbol?: string | undefined;
182
182
  id?: string[] | undefined;
183
183
  name?: string | undefined;
184
- chainId?: number | undefined;
185
184
  address?: string | undefined;
185
+ chainId?: number | undefined;
186
186
  displaySymbol?: string | undefined;
187
187
  verified?: boolean | undefined;
188
188
  isNative?: boolean | undefined;
@@ -201,8 +201,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
201
201
  body: {
202
202
  isTest?: boolean | undefined;
203
203
  icon: string;
204
- chainId: number;
205
204
  address: string;
205
+ chainId: number;
206
206
  verified: boolean;
207
207
  };
208
208
  params: {};
@@ -216,8 +216,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
216
216
  id: string;
217
217
  name: string | null;
218
218
  icon: string;
219
- chainId: number;
220
219
  address: string;
220
+ chainId: number;
221
221
  decimals: number;
222
222
  verified: boolean;
223
223
  isTest: boolean;
@@ -250,8 +250,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
250
250
  id: string;
251
251
  name: string | null;
252
252
  icon: string;
253
- chainId: number;
254
253
  address: string;
254
+ chainId: number;
255
255
  decimals: number;
256
256
  displaySymbol: string;
257
257
  verified: boolean;
@@ -325,8 +325,8 @@ export declare const TokenController: Elysia<"/tokens", false, {
325
325
  id: string;
326
326
  name: string | null;
327
327
  icon: string;
328
- chainId: number;
329
328
  address: string;
329
+ chainId: number;
330
330
  decimals: number;
331
331
  displaySymbol: string;
332
332
  verified: boolean;
@@ -6,13 +6,8 @@ export declare abstract class TokenRepository {
6
6
  * Fetch token metadata from onchain
7
7
  * @param chainId
8
8
  * @param address
9
- * @returns
10
9
  */
11
- static getTokenInfo(token: TokenModel): Promise<{
12
- name: string;
13
- symbol: string;
14
- decimals: number;
15
- }>;
10
+ static getTokenInfo(token: TokenModel): Promise<any>;
16
11
  /**
17
12
  * Read token from database
18
13
  * @param chainId
@@ -34,8 +29,8 @@ export declare abstract class TokenRepository {
34
29
  id: string;
35
30
  name: string | null;
36
31
  icon: string;
37
- chainId: number;
38
32
  address: string;
33
+ chainId: number;
39
34
  decimals: number;
40
35
  displaySymbol: string;
41
36
  verified: boolean;
@@ -48,8 +43,8 @@ export declare abstract class TokenRepository {
48
43
  id: string;
49
44
  name: string | null;
50
45
  icon: string;
51
- chainId: number;
52
46
  address: string;
47
+ chainId: number;
53
48
  decimals: number;
54
49
  displaySymbol: string;
55
50
  verified: boolean;
@@ -90,8 +85,8 @@ export declare abstract class TokenRepository {
90
85
  id: string;
91
86
  name: string | null;
92
87
  icon: string;
93
- chainId: number;
94
88
  address: string;
89
+ chainId: number;
95
90
  decimals: number;
96
91
  displaySymbol: string;
97
92
  verified: boolean;
@@ -1,7 +1,5 @@
1
- import { getTokenInfo } from "@/libs/tokens/tokenInfo";
2
- import { executeSimple } from "@/utils/execute";
3
- import { apiDbClient } from "@/utils/prisma";
4
- import { NETWORK_LABELS } from "@sdk";
1
+ import { apiDbClient } from "@db";
2
+ import { NETWORK_LABELS, TokenInteractionService } from "@sdk";
5
3
  import axios from "axios";
6
4
  export class TokenRepository {
7
5
  static #transformQueryToPrismaFilters(query) {
@@ -39,13 +37,9 @@ export class TokenRepository {
39
37
  * Fetch token metadata from onchain
40
38
  * @param chainId
41
39
  * @param address
42
- * @returns
43
40
  */
44
41
  static async getTokenInfo(token) {
45
- //TODO: replace with onchain module
46
- const calls = getTokenInfo(token.address);
47
- //TODO: replace with onchain module
48
- return executeSimple(token.chainId, calls);
42
+ return TokenInteractionService(token.chainId);
49
43
  }
50
44
  /**
51
45
  * Read token from database
@@ -21,8 +21,8 @@ export declare abstract class TokenService {
21
21
  id: string;
22
22
  name: string | null;
23
23
  icon: string;
24
- chainId: number;
25
24
  address: string;
25
+ chainId: number;
26
26
  decimals: number;
27
27
  verified: boolean;
28
28
  isTest: boolean;
@@ -42,8 +42,8 @@ export declare abstract class TokenService {
42
42
  id: string;
43
43
  name: string | null;
44
44
  icon: string;
45
- chainId: number;
46
45
  address: string;
46
+ chainId: number;
47
47
  decimals: number;
48
48
  verified: boolean;
49
49
  isTest: boolean;
@@ -61,8 +61,8 @@ export declare abstract class TokenService {
61
61
  id: string;
62
62
  name: string | null;
63
63
  icon: string;
64
- chainId: number;
65
64
  address: string;
65
+ chainId: number;
66
66
  decimals: number;
67
67
  verified: boolean;
68
68
  isTest: boolean;
@@ -102,8 +102,8 @@ export declare abstract class TokenService {
102
102
  id: string;
103
103
  name: string | null;
104
104
  icon: string;
105
- chainId: number;
106
105
  address: string;
106
+ chainId: number;
107
107
  decimals: number;
108
108
  verified: boolean;
109
109
  isTest: boolean;
@@ -121,8 +121,8 @@ export declare abstract class TokenService {
121
121
  id: string;
122
122
  name: string | null;
123
123
  icon: string;
124
- chainId: number;
125
124
  address: string;
125
+ chainId: number;
126
126
  decimals: number;
127
127
  verified: boolean;
128
128
  isTest: boolean;
@@ -135,8 +135,8 @@ export declare abstract class TokenService {
135
135
  id: string;
136
136
  name: string | null;
137
137
  icon: string;
138
- chainId: number;
139
138
  address: string;
139
+ chainId: number;
140
140
  decimals: number;
141
141
  verified: boolean;
142
142
  isTest: boolean;
@@ -175,8 +175,8 @@ export declare abstract class TokenService {
175
175
  id: string;
176
176
  name: string | null;
177
177
  icon: string;
178
- chainId: number;
179
178
  address: string;
179
+ chainId: number;
180
180
  decimals: number;
181
181
  displaySymbol: string;
182
182
  verified: boolean;
@@ -189,8 +189,8 @@ export declare abstract class TokenService {
189
189
  id: string;
190
190
  name: string | null;
191
191
  icon: string;
192
- chainId: number;
193
192
  address: string;
193
+ chainId: number;
194
194
  decimals: number;
195
195
  displaySymbol: string;
196
196
  verified: boolean;
@@ -203,8 +203,8 @@ export declare abstract class TokenService {
203
203
  id: string;
204
204
  name: string | null;
205
205
  icon: string;
206
- chainId: number;
207
206
  address: string;
207
+ chainId: number;
208
208
  decimals: number;
209
209
  displaySymbol: string;
210
210
  verified: boolean;
@@ -222,8 +222,8 @@ export declare abstract class TokenService {
222
222
  id: string;
223
223
  name: string | null;
224
224
  icon: string;
225
- chainId: number;
226
225
  address: string;
226
+ chainId: number;
227
227
  decimals: number;
228
228
  verified: boolean;
229
229
  isTest: boolean;
@@ -2,8 +2,8 @@ import { HttpError } from "@/errors";
2
2
  import { getTokensListWithCache } from "@/libs/getTokensList";
3
3
  import { getOnlyUserBalance } from "@/libs/tokens/balances";
4
4
  import { log } from "@/utils/logger";
5
- import { apiDbClient } from "@/utils/prisma";
6
5
  import { throwOnInvalidRequiredAddress, throwOnUnsupportedChainId } from "@/utils/throw";
6
+ import { apiDbClient } from "@db";
7
7
  import { Prisma } from "@db/api";
8
8
  import { ChainInteractionService, DistributionCreatorService, NETWORK_LABELS, bigIntToNumber, } from "@sdk";
9
9
  import { getAddress, parseUnits } from "viem";
@@ -261,13 +261,13 @@ export class TokenService {
261
261
  const icon = properties.Icon.files?.[0]?.file.url;
262
262
  const iconFile = await fetch(icon);
263
263
  const mimeType = iconFile.headers.get("content-type");
264
- const extension = mimeType.split("/")[1];
264
+ const extension = mimeType.split("/")[1].split("+")[0];
265
265
  const address = throwOnInvalidRequiredAddress(properties.Address.rich_text[0].plain_text);
266
266
  const chainId = properties["Chain ID"].number;
267
267
  throwOnUnsupportedChainId(chainId);
268
268
  const displaySymbol = properties.Symbol.rich_text[0]?.plain_text;
269
269
  const isVerified = properties.Verified.checkbox;
270
- const coingeckoApiId = properties["CoinGecko API ID"].rich_text[0].plain_text;
270
+ const coingeckoApiId = properties["CoinGecko API ID"].rich_text[0]?.plain_text;
271
271
  const byteArray = await iconFile.bytes();
272
272
  const [token] = await TokenService.findManyOrCreate([
273
273
  {
@@ -125,8 +125,8 @@ export declare const UserController: Elysia<"/users", false, {
125
125
  id: string;
126
126
  name: string | null;
127
127
  icon: string;
128
- chainId: number;
129
128
  address: string;
129
+ chainId: number;
130
130
  decimals: number;
131
131
  displaySymbol: string;
132
132
  verified: boolean;
@@ -147,8 +147,8 @@ export declare const UserController: Elysia<"/users", false, {
147
147
  id: string;
148
148
  name: string | null;
149
149
  icon: string;
150
- chainId: number;
151
150
  address: string;
151
+ chainId: number;
152
152
  decimals: number;
153
153
  displaySymbol: string;
154
154
  verified: boolean;
@@ -179,8 +179,8 @@ export declare const UserController: Elysia<"/users", false, {
179
179
  status: import("@db/api").$Enums.Status;
180
180
  tags: string[];
181
181
  identifier: string;
182
- chainId: number;
183
182
  action: import("@db/api").$Enums.OpportunityAction;
183
+ chainId: number;
184
184
  depositUrl: string | null;
185
185
  mainProtocolId: string | null;
186
186
  tvl: number;
@@ -240,8 +240,8 @@ export declare const UserController: Elysia<"/users", false, {
240
240
  id: string;
241
241
  name: string | null;
242
242
  icon: string;
243
- chainId: number;
244
243
  address: string;
244
+ chainId: number;
245
245
  decimals: number;
246
246
  displaySymbol: string;
247
247
  verified: boolean;
@@ -262,8 +262,8 @@ export declare const UserController: Elysia<"/users", false, {
262
262
  id: string;
263
263
  name: string | null;
264
264
  icon: string;
265
- chainId: number;
266
265
  address: string;
266
+ chainId: number;
267
267
  decimals: number;
268
268
  displaySymbol: string;
269
269
  verified: boolean;
@@ -294,8 +294,8 @@ export declare const UserController: Elysia<"/users", false, {
294
294
  status: import("@db/api").$Enums.Status;
295
295
  tags: string[];
296
296
  identifier: string;
297
- chainId: number;
298
297
  action: import("@db/api").$Enums.OpportunityAction;
298
+ chainId: number;
299
299
  depositUrl: string | null;
300
300
  mainProtocolId: string | null;
301
301
  tvl: number;
@@ -1,4 +1,4 @@
1
- import { apiDbClient } from "@/utils/prisma";
1
+ import { apiDbClient } from "@db";
2
2
  // ─── Users Repository ────────────────────────────────────────────────────────
3
3
  export class UserRepository {
4
4
  static async findUnique(address) {
@@ -1,5 +1,5 @@
1
1
  import { log } from "@/utils/logger";
2
- import { engineDbClient } from "@/utils/prisma";
2
+ import { engineDbClient } from "@db";
3
3
  import { OpportunityService } from "../opportunity";
4
4
  import { UserRepository } from "./user.repository";
5
5
  // ─── Users Services ──────────────────────────────────────────────────────────
@@ -1,6 +1,6 @@
1
1
  import { Redis } from "@/cache";
2
2
  import { staticCampaignWithCache } from "@/libs/staticCampaigns";
3
- import { engineDbClient } from "@/utils/prisma";
3
+ import { engineDbClient } from "@db";
4
4
  import { ChainId, isSupportedChain } from "@sdk";
5
5
  import { t } from "elysia";
6
6
  import moment from "moment";
@@ -27,8 +27,8 @@ declare const _default: (app: Elysia) => Elysia<"", false, {
27
27
  params: {};
28
28
  query: {
29
29
  byReason?: boolean | undefined;
30
- chainId: number;
31
30
  campaignId: string;
31
+ chainId: number;
32
32
  };
33
33
  headers: unknown;
34
34
  response: {
@@ -1,5 +1,5 @@
1
1
  import checkQueryChainIdValidity from "@/hooks/checkQueryChainIdValidity";
2
- import { engineDbClient } from "@/utils/prisma";
2
+ import { engineDbClient } from "@db";
3
3
  import { Prisma } from "@db/engine";
4
4
  import { t } from "elysia";
5
5
  /**
@@ -41,8 +41,9 @@ declare const _default: (app: Elysia) => Elysia<"", false, {
41
41
  };
42
42
  headers: unknown;
43
43
  response: {
44
- [x: string]: any;
45
- 200: any;
44
+ 200: {
45
+ [x: string]: Record<string, any>;
46
+ };
46
47
  };
47
48
  };
48
49
  };
@@ -1,5 +1,3 @@
1
- import { Redis } from "@/cache";
2
- import { removeTestTokens } from "@/entities/campaign";
3
1
  import { CampaignService } from "@/modules/v4/campaign";
4
2
  import { OpportunityConvertorService } from "@/modules/v4/opportunity/opportunity.converter";
5
3
  import { ANGLE_NETWORKS, Campaign as CampaignEnum, ChainId, isSupportedChain, registry, } from "@sdk";
@@ -70,66 +68,30 @@ export default (app) => app.get("/campaigns", async ({ query }) => {
70
68
  throw new UnsupportedNetwork(chainId);
71
69
  }
72
70
  }
73
- if (process.env.FF_OPPORTUNITY === "true") {
74
- const campaigns = await CampaignService.findMany({
75
- distributionChainIds: chainIds,
76
- types: types.map(type => CampaignEnum[type]),
77
- status: query.live ? "LIVE" : undefined,
78
- creatorTag: query.creatorTag,
79
- test: !hideTestTokens,
80
- withOpportunity: true,
81
- });
82
- const res = {};
83
- for (const campaign of campaigns) {
84
- if (!res[campaign.distributionChainId]) {
85
- res[campaign.distributionChainId] = {};
86
- }
87
- const opportunityIdentifier = campaign.Opportunity.identifier;
88
- const campaignType = CampaignEnum[campaign.type];
89
- if (!res[campaign.distributionChainId][`${campaignType}_${opportunityIdentifier}`]) {
90
- res[campaign.distributionChainId][`${campaignType}_${opportunityIdentifier}`] = {
91
- ...OpportunityConvertorService.convertV4CampaignToV3(campaignType, campaign, opportunityIdentifier),
92
- apr: campaign.Opportunity.apr,
93
- tvl: campaign.Opportunity.tvl,
94
- };
95
- }
71
+ const campaigns = await CampaignService.findMany({
72
+ distributionChainIds: chainIds,
73
+ types: types.map(type => CampaignEnum[type]),
74
+ status: query.live ? "LIVE" : undefined,
75
+ creatorTag: query.creatorTag,
76
+ test: !hideTestTokens,
77
+ withOpportunity: true,
78
+ });
79
+ const res = {};
80
+ for (const campaign of campaigns) {
81
+ if (!res[campaign.distributionChainId]) {
82
+ res[campaign.distributionChainId] = {};
96
83
  }
97
- return res;
98
- }
99
- const campaignCachePrefix = query.live === true ? "LiveCampaigns" : "Campaigns";
100
- const dynamicData = (await Redis.getManyWithArgs(campaignCachePrefix, chainIds)).reduce((prev, allData, index) => {
101
- if (!!allData) {
102
- prev[chainIds[index]] = Object.keys(allData).reduce((acc, curr) => {
103
- if ((types.length === 0 || types.includes(Number.parseInt(curr.split("_")[0]))) &&
104
- (!hideTestTokens || removeTestTokens(allData[curr]))) {
105
- acc[curr] = allData[curr];
106
- }
107
- return acc;
108
- }, {});
109
- }
110
- return prev;
111
- }, {});
112
- // Remove everything that doesn't contain the creator tag
113
- if (!!query.creatorTag) {
114
- for (const c of Object.keys(dynamicData)) {
115
- for (const type_mainParam of Object.keys(dynamicData[c])) {
116
- for (const campaignId of Object.keys(dynamicData[c][type_mainParam])) {
117
- if (!dynamicData[c][type_mainParam][campaignId]?.tags?.includes(query.creatorTag)) {
118
- delete dynamicData[c][type_mainParam][campaignId];
119
- }
120
- }
121
- // Delete the type_mainParam if it's empty
122
- if (Object.keys(dynamicData[c][type_mainParam]).length === 0) {
123
- delete dynamicData[c][type_mainParam];
124
- }
125
- }
126
- // Delete the c if it's empty
127
- if (Object.keys(dynamicData[c]).length === 0) {
128
- delete dynamicData[c];
129
- }
84
+ const opportunityIdentifier = campaign.Opportunity.identifier;
85
+ const campaignType = CampaignEnum[campaign.type];
86
+ if (!res[campaign.distributionChainId][`${campaignType}_${opportunityIdentifier}`]) {
87
+ res[campaign.distributionChainId][`${campaignType}_${opportunityIdentifier}`] = {
88
+ ...OpportunityConvertorService.convertV4CampaignToV3(campaignType, campaign, opportunityIdentifier),
89
+ apr: campaign.Opportunity.apr,
90
+ tvl: campaign.Opportunity.tvl,
91
+ };
130
92
  }
131
93
  }
132
- return dynamicData;
94
+ return res;
133
95
  }, {
134
96
  query,
135
97
  tags: ["Campaigns"],
@@ -1,3 +1,4 @@
1
+ // @ts-nocheck
1
2
  import { Redis } from "@/cache";
2
3
  import { ChainId, isSupportedChain } from "@sdk";
3
4
  import { t } from "elysia";
@@ -28,8 +28,8 @@ declare const _default: (app: Elysia) => Elysia<"", false, {
28
28
  query: {
29
29
  type?: number | undefined;
30
30
  tag?: string | undefined;
31
- chainId?: number | undefined;
32
31
  action?: string | undefined;
32
+ chainId?: number | undefined;
33
33
  campaigns?: boolean | undefined;
34
34
  mainParameter?: string | undefined;
35
35
  testTokens?: boolean | undefined;
@@ -23,8 +23,8 @@ declare const _default: (app: Elysia) => Elysia<"", false, {
23
23
  params: {};
24
24
  query: {
25
25
  index?: number | undefined;
26
- chainId: number;
27
26
  campaign: any;
27
+ chainId: number;
28
28
  };
29
29
  headers: unknown;
30
30
  response: {
@@ -1,3 +1,4 @@
1
+ // @ts-nocheck
1
2
  import { Redis } from "@/cache";
2
3
  import { Campaign } from "@sdk";
3
4
  import { t } from "elysia";
@@ -20,8 +20,8 @@ declare const _default: (app: Elysia) => Elysia<"", false, {
20
20
  body: unknown;
21
21
  params: {};
22
22
  query: {
23
- chainId: number;
24
23
  campaignId: string;
24
+ chainId: number;
25
25
  };
26
26
  headers: unknown;
27
27
  response: {
@@ -30,8 +30,8 @@ declare const _default: (app: Elysia) => Elysia<"", false, {
30
30
  from?: number | undefined;
31
31
  mainParameter?: string | undefined;
32
32
  to?: number | undefined;
33
- chainId: number;
34
33
  campaignId: string;
34
+ chainId: number;
35
35
  };
36
36
  headers: unknown;
37
37
  response: {