@merkl/api 0.10.169 → 0.10.171

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. package/dist/database/api/.generated/edge.js +6 -3
  2. package/dist/database/api/.generated/index-browser.js +3 -0
  3. package/dist/database/api/.generated/index.d.ts +113 -0
  4. package/dist/database/api/.generated/index.js +6 -3
  5. package/dist/database/api/.generated/package.json +1 -1
  6. package/dist/database/api/.generated/schema.prisma +17 -15
  7. package/dist/database/api/.generated/wasm.js +3 -0
  8. package/dist/src/eden/index.d.ts +147 -45
  9. package/dist/src/index.d.ts +49 -15
  10. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/factoryFinder.js +2 -0
  11. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.d.ts +3 -1
  12. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.js +8 -0
  13. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/PendleYTProcessor.d.ts +29 -0
  14. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/PendleYTProcessor.js +31 -0
  15. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/TempestVaultProcessor.d.ts +3 -1
  16. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/TempestVaultProcessor.js +36 -7
  17. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/processorMapping.js +3 -0
  18. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1RefactoFinal.js +1 -1
  19. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +5 -1
  20. package/dist/src/modules/v4/campaign/campaign.model.d.ts +1 -0
  21. package/dist/src/modules/v4/campaign/campaign.model.js +1 -0
  22. package/dist/src/modules/v4/campaign/campaign.repository.d.ts +2 -0
  23. package/dist/src/modules/v4/campaign/campaign.repository.js +3 -1
  24. package/dist/src/modules/v4/campaign/campaign.service.d.ts +6 -2
  25. package/dist/src/modules/v4/campaign/campaign.service.js +2 -1
  26. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +27 -10
  27. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +2 -1
  28. package/dist/src/modules/v4/opportunity/opportunity.model.js +1 -0
  29. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +26 -4
  30. package/dist/src/modules/v4/opportunity/opportunity.repository.js +2 -0
  31. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +50 -24
  32. package/dist/src/modules/v4/opportunity/opportunity.service.js +2 -1
  33. package/dist/src/modules/v4/price/price.controller.js +1 -1
  34. package/dist/src/modules/v4/price/price.service.d.ts +1 -1
  35. package/dist/src/modules/v4/price/price.service.js +3 -3
  36. package/dist/src/modules/v4/reward/reward.repository.d.ts +4 -0
  37. package/dist/src/modules/v4/reward/reward.service.d.ts +22 -0
  38. package/dist/src/modules/v4/router.d.ts +49 -15
  39. package/dist/src/modules/v4/token/token.controller.d.ts +9 -4
  40. package/dist/src/modules/v4/token/token.model.d.ts +2 -1
  41. package/dist/src/modules/v4/token/token.model.js +1 -0
  42. package/dist/src/modules/v4/token/token.repository.d.ts +13 -1
  43. package/dist/src/modules/v4/token/token.repository.js +2 -0
  44. package/dist/src/modules/v4/token/token.service.d.ts +12 -4
  45. package/dist/src/modules/v4/token/token.service.js +11 -2
  46. package/dist/src/modules/v4/user/user.controller.d.ts +8 -0
  47. package/dist/src/routes/v3/blacklist.d.ts +49 -15
  48. package/dist/src/routes/v3/campaigns.d.ts +49 -15
  49. package/dist/src/routes/v3/campaignsInfo.d.ts +49 -15
  50. package/dist/src/routes/v3/multiChainPositions.d.ts +49 -15
  51. package/dist/src/routes/v3/opportunity.d.ts +49 -15
  52. package/dist/src/routes/v3/positions.d.ts +49 -15
  53. package/dist/src/routes/v3/rewards.d.ts +49 -15
  54. package/dist/src/routes/v3/updates.d.ts +49 -15
  55. package/dist/src/routes/v3/userRewards.d.ts +49 -15
  56. package/dist/src/utils/decodeCalls.js +4 -1
  57. package/dist/src/utils/encodeCalls.js +4 -1
  58. package/dist/src/utils/generateCardName.js +2 -0
  59. package/dist/src/utils/prices/services/erc4626Service.js +7 -1
  60. package/dist/tsconfig.package.tsbuildinfo +1 -1
  61. package/package.json +1 -1
@@ -92,14 +92,16 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
92
92
  address: string;
93
93
  icon: string;
94
94
  decimals: number;
95
+ displaySymbol: string;
95
96
  verified: boolean;
97
+ isTest: boolean;
96
98
  price: number | null;
97
99
  };
98
100
  amount: bigint;
99
101
  }[];
100
102
  };
101
103
  id: string;
102
- tokens: {
104
+ tokens: ({
103
105
  symbol: string;
104
106
  name: string | null;
105
107
  id: string;
@@ -108,8 +110,10 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
108
110
  icon: string;
109
111
  decimals: number;
110
112
  verified: boolean;
111
- price: number | null;
112
- }[];
113
+ isTest: boolean;
114
+ } & {
115
+ price?: number | null | undefined;
116
+ })[];
113
117
  chain: {
114
118
  name: string;
115
119
  id: number;
@@ -191,14 +195,16 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
191
195
  address: string;
192
196
  icon: string;
193
197
  decimals: number;
198
+ displaySymbol: string;
194
199
  verified: boolean;
200
+ isTest: boolean;
195
201
  price: number | null;
196
202
  };
197
203
  amount: bigint;
198
204
  }[];
199
205
  };
200
206
  id: string;
201
- tokens: {
207
+ tokens: ({
202
208
  symbol: string;
203
209
  name: string | null;
204
210
  id: string;
@@ -207,8 +213,10 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
207
213
  icon: string;
208
214
  decimals: number;
209
215
  verified: boolean;
210
- price: number | null;
211
- }[];
216
+ isTest: boolean;
217
+ } & {
218
+ price?: number | null | undefined;
219
+ })[];
212
220
  chain: {
213
221
  name: string;
214
222
  id: number;
@@ -248,7 +256,9 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
248
256
  icon: string;
249
257
  decimals: number;
250
258
  verified: boolean;
251
- price: number | null;
259
+ isTest: boolean;
260
+ } & {
261
+ price?: number | null | undefined;
252
262
  };
253
263
  distributionChain: {
254
264
  name: string;
@@ -300,6 +310,7 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
300
310
  action?: string | undefined;
301
311
  mainProtocolId?: string | undefined;
302
312
  order?: undefined;
313
+ test?: boolean | undefined;
303
314
  minimumTvl?: number | undefined;
304
315
  };
305
316
  headers: unknown;
@@ -345,14 +356,16 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
345
356
  address: string;
346
357
  icon: string;
347
358
  decimals: number;
359
+ displaySymbol: string;
348
360
  verified: boolean;
361
+ isTest: boolean;
349
362
  price: number | null;
350
363
  };
351
364
  amount: bigint;
352
365
  }[];
353
366
  };
354
367
  id: string;
355
- tokens: {
368
+ tokens: ({
356
369
  symbol: string;
357
370
  name: string | null;
358
371
  id: string;
@@ -361,8 +374,10 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
361
374
  icon: string;
362
375
  decimals: number;
363
376
  verified: boolean;
364
- price: number | null;
365
- }[];
377
+ isTest: boolean;
378
+ } & {
379
+ price?: number | null | undefined;
380
+ })[];
366
381
  chain: {
367
382
  name: string;
368
383
  id: number;
@@ -409,6 +424,7 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
409
424
  action?: string | undefined;
410
425
  mainProtocolId?: string | undefined;
411
426
  order?: undefined;
427
+ test?: boolean | undefined;
412
428
  minimumTvl?: number | undefined;
413
429
  };
414
430
  headers: unknown;
@@ -439,6 +455,7 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
439
455
  action?: string | undefined;
440
456
  mainProtocolId?: string | undefined;
441
457
  order?: undefined;
458
+ test?: boolean | undefined;
442
459
  minimumTvl?: number | undefined;
443
460
  };
444
461
  headers: unknown;
@@ -53,6 +53,7 @@ export declare const GetOpportunitiesQueryDto: import("@sinclair/typebox").TObje
53
53
  INVALID: "INVALID";
54
54
  }>, import("@sinclair/typebox").TRegExp]>>;
55
55
  tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
56
+ test: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
56
57
  minimumTvl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
57
58
  tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
58
59
  status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TEnum<{
@@ -111,7 +112,7 @@ export declare const CreateOpportunityDto: import("@sinclair/typebox").TObject<{
111
112
  export declare const OpportunityAggregateFieldDto: import("@sinclair/typebox").TObject<{
112
113
  field: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"dailyRewards">[]>;
113
114
  }>;
114
- export type GetOpportunitiesQueryEntity = typeof GetOpportunitiesQueryDto.static;
115
+ export type GetOpportunitiesQueryModel = typeof GetOpportunitiesQueryDto.static;
115
116
  export type CreateOpportunityModel = typeof CreateOpportunityDto.static & {
116
117
  id: string;
117
118
  };
@@ -15,6 +15,7 @@ export const GetOpportunitiesQueryDto = t.Object({
15
15
  //TODO: find a systemic way of handling query param arrays
16
16
  action: t.Optional(t.Union([t.Enum(OpportunityAction), t.RegExp(/^(POOL|HOLD|DROP|LEND|BORROW)+(,(POOL|HOLD|DROP|LEND|BORROW)+)*$/)])),
17
17
  tags: t.Optional(t.String()),
18
+ test: t.Optional(t.Boolean()),
18
19
  minimumTvl: t.Optional(t.Number()),
19
20
  tokens: t.Optional(t.String({ title: "Symbol" })),
20
21
  status: t.Optional(t.Union([t.Enum(Status), t.RegExp(/^(LIVE|PAST|SOON)+(,(LIVE|PAST|SOON)+)*$/)])),
@@ -3,7 +3,7 @@ import type { MerklChainId } from "@sdk";
3
3
  import { type AprRecord } from "../apr";
4
4
  import { type DailyRewardsRecord } from "../reward";
5
5
  import { type TvlRecord } from "../tvl";
6
- import type { CreateOpportunityModel, GetOpportunitiesQueryEntity } from "./opportunity.model";
6
+ import type { CreateOpportunityModel, GetOpportunitiesQueryModel } from "./opportunity.model";
7
7
  export declare abstract class OpportunityRepository {
8
8
  #private;
9
9
  static create(newOpp: CreateOpportunityModel): Promise<void>;
@@ -21,7 +21,9 @@ export declare abstract class OpportunityRepository {
21
21
  address: string;
22
22
  icon: string;
23
23
  decimals: number;
24
+ displaySymbol: string;
24
25
  verified: boolean;
26
+ isTest: boolean;
25
27
  price: number | null;
26
28
  }[];
27
29
  Protocols: {
@@ -82,7 +84,9 @@ export declare abstract class OpportunityRepository {
82
84
  address: string;
83
85
  icon: string;
84
86
  decimals: number;
87
+ displaySymbol: string;
85
88
  verified: boolean;
89
+ isTest: boolean;
86
90
  price: number | null;
87
91
  };
88
92
  CampaignStatus: {
@@ -145,7 +149,9 @@ export declare abstract class OpportunityRepository {
145
149
  address: string;
146
150
  icon: string;
147
151
  decimals: number;
152
+ displaySymbol: string;
148
153
  verified: boolean;
154
+ isTest: boolean;
149
155
  price: number | null;
150
156
  };
151
157
  CampaignStatus: {
@@ -179,7 +185,9 @@ export declare abstract class OpportunityRepository {
179
185
  address: string;
180
186
  icon: string;
181
187
  decimals: number;
188
+ displaySymbol: string;
182
189
  verified: boolean;
190
+ isTest: boolean;
183
191
  price: number | null;
184
192
  }[];
185
193
  Protocols: {
@@ -240,7 +248,9 @@ export declare abstract class OpportunityRepository {
240
248
  address: string;
241
249
  icon: string;
242
250
  decimals: number;
251
+ displaySymbol: string;
243
252
  verified: boolean;
253
+ isTest: boolean;
244
254
  price: number | null;
245
255
  };
246
256
  CampaignStatus: {
@@ -288,7 +298,9 @@ export declare abstract class OpportunityRepository {
288
298
  address: string;
289
299
  icon: string;
290
300
  decimals: number;
301
+ displaySymbol: string;
291
302
  verified: boolean;
303
+ isTest: boolean;
292
304
  price: number | null;
293
305
  };
294
306
  } & {
@@ -320,7 +332,7 @@ export declare abstract class OpportunityRepository {
320
332
  apr: number;
321
333
  dailyRewards: number;
322
334
  })[]>;
323
- static findMany(query: GetOpportunitiesQueryEntity): Promise<({
335
+ static findMany(query: GetOpportunitiesQueryModel): Promise<({
324
336
  Chain: {
325
337
  name: string;
326
338
  id: number;
@@ -334,7 +346,9 @@ export declare abstract class OpportunityRepository {
334
346
  address: string;
335
347
  icon: string;
336
348
  decimals: number;
349
+ displaySymbol: string;
337
350
  verified: boolean;
351
+ isTest: boolean;
338
352
  price: number | null;
339
353
  }[];
340
354
  Protocols: {
@@ -395,7 +409,9 @@ export declare abstract class OpportunityRepository {
395
409
  address: string;
396
410
  icon: string;
397
411
  decimals: number;
412
+ displaySymbol: string;
398
413
  verified: boolean;
414
+ isTest: boolean;
399
415
  price: number | null;
400
416
  };
401
417
  CampaignStatus: {
@@ -458,7 +474,9 @@ export declare abstract class OpportunityRepository {
458
474
  address: string;
459
475
  icon: string;
460
476
  decimals: number;
477
+ displaySymbol: string;
461
478
  verified: boolean;
479
+ isTest: boolean;
462
480
  price: number | null;
463
481
  };
464
482
  CampaignStatus: {
@@ -492,7 +510,9 @@ export declare abstract class OpportunityRepository {
492
510
  address: string;
493
511
  icon: string;
494
512
  decimals: number;
513
+ displaySymbol: string;
495
514
  verified: boolean;
515
+ isTest: boolean;
496
516
  price: number | null;
497
517
  }[];
498
518
  Protocols: {
@@ -553,7 +573,9 @@ export declare abstract class OpportunityRepository {
553
573
  address: string;
554
574
  icon: string;
555
575
  decimals: number;
576
+ displaySymbol: string;
556
577
  verified: boolean;
578
+ isTest: boolean;
557
579
  price: number | null;
558
580
  };
559
581
  CampaignStatus: {
@@ -591,7 +613,7 @@ export declare abstract class OpportunityRepository {
591
613
  apr: number;
592
614
  dailyRewards: number;
593
615
  })[]>;
594
- static countMany(query: GetOpportunitiesQueryEntity): Promise<number>;
616
+ static countMany(query: GetOpportunitiesQueryModel): Promise<number>;
595
617
  static getAllIdsForDynamicOpp(): Promise<{
596
618
  id: string;
597
619
  }[]>;
@@ -679,7 +701,7 @@ export declare abstract class OpportunityRepository {
679
701
  apr: number;
680
702
  dailyRewards: number;
681
703
  }>;
682
- static aggregateSum(field: keyof Prisma.OpportunitySumAggregateInputType, query: GetOpportunitiesQueryEntity): Promise<{
704
+ static aggregateSum(field: keyof Prisma.OpportunitySumAggregateInputType, query: GetOpportunitiesQueryModel): Promise<{
683
705
  sum: never;
684
706
  }>;
685
707
  }
@@ -129,6 +129,7 @@ export class OpportunityRepository {
129
129
  const protocols = query.mainProtocolId?.split(",");
130
130
  const sort = (query.sort === "rewards" ? "dailyRewards" : query.sort) ?? "dailyRewards";
131
131
  const order = query.order ?? "desc";
132
+ const test = query.test ?? false;
132
133
  const noFilters = Object.values(filters).every(v => v === undefined);
133
134
  const tokensFilters = tokens?.map(symbol => ({
134
135
  Tokens: { some: { symbol: { equals: symbol, mode: "insensitive" } } },
@@ -154,6 +155,7 @@ export class OpportunityRepository {
154
155
  status: !status ? undefined : { in: status },
155
156
  },
156
157
  { mainProtocolId: !protocols ? undefined : { in: protocols } },
158
+ { Campaigns: test ? undefined : { some: { RewardToken: { isTest: false } } } },
157
159
  ],
158
160
  },
159
161
  };
@@ -1,7 +1,7 @@
1
1
  import { type CreateCampaignModel } from "../campaign";
2
2
  import { Prisma } from "../../../../database/api/.generated";
3
3
  import { type ChainId, type MerklChainId } from "@sdk";
4
- import type { CreateOpportunityModel, GetOpportunitiesQueryEntity, LightOpportunityFromDB, OpportunityMetadata, OpportunityUnique } from "./opportunity.model";
4
+ import type { CreateOpportunityModel, GetOpportunitiesQueryModel, LightOpportunityFromDB, OpportunityMetadata, OpportunityUnique } from "./opportunity.model";
5
5
  import { OpportunityRepository } from "./opportunity.repository";
6
6
  export declare abstract class OpportunityService {
7
7
  static hashId(opportunity: OpportunityUnique): string;
@@ -60,14 +60,16 @@ export declare abstract class OpportunityService {
60
60
  address: string;
61
61
  icon: string;
62
62
  decimals: number;
63
+ displaySymbol: string;
63
64
  verified: boolean;
65
+ isTest: boolean;
64
66
  price: number | null;
65
67
  };
66
68
  amount: bigint;
67
69
  }[];
68
70
  };
69
71
  id: string;
70
- tokens: {
72
+ tokens: ({
71
73
  symbol: string;
72
74
  name: string | null;
73
75
  id: string;
@@ -76,8 +78,10 @@ export declare abstract class OpportunityService {
76
78
  icon: string;
77
79
  decimals: number;
78
80
  verified: boolean;
79
- price: number | null;
80
- }[];
81
+ isTest: boolean;
82
+ } & {
83
+ price?: number | null | undefined;
84
+ })[];
81
85
  chain: {
82
86
  name: string;
83
87
  id: number;
@@ -118,7 +122,9 @@ export declare abstract class OpportunityService {
118
122
  icon: string;
119
123
  decimals: number;
120
124
  verified: boolean;
121
- price: number | null;
125
+ isTest: boolean;
126
+ } & {
127
+ price?: number | null | undefined;
122
128
  };
123
129
  distributionChain: {
124
130
  name: string;
@@ -188,14 +194,16 @@ export declare abstract class OpportunityService {
188
194
  address: string;
189
195
  icon: string;
190
196
  decimals: number;
197
+ displaySymbol: string;
191
198
  verified: boolean;
199
+ isTest: boolean;
192
200
  price: number | null;
193
201
  };
194
202
  amount: bigint;
195
203
  }[];
196
204
  };
197
205
  id: string;
198
- tokens: {
206
+ tokens: ({
199
207
  symbol: string;
200
208
  name: string | null;
201
209
  id: string;
@@ -204,8 +212,10 @@ export declare abstract class OpportunityService {
204
212
  icon: string;
205
213
  decimals: number;
206
214
  verified: boolean;
207
- price: number | null;
208
- }[];
215
+ isTest: boolean;
216
+ } & {
217
+ price?: number | null | undefined;
218
+ })[];
209
219
  chain: {
210
220
  name: string;
211
221
  id: number;
@@ -235,7 +245,7 @@ export declare abstract class OpportunityService {
235
245
  * @param query
236
246
  * @returns A list of opportunities
237
247
  */
238
- static getMany(query: GetOpportunitiesQueryEntity): Promise<({
248
+ static getMany(query: GetOpportunitiesQueryModel): Promise<({
239
249
  aprRecord: {
240
250
  cumulated: number;
241
251
  timestamp: bigint;
@@ -276,14 +286,16 @@ export declare abstract class OpportunityService {
276
286
  address: string;
277
287
  icon: string;
278
288
  decimals: number;
289
+ displaySymbol: string;
279
290
  verified: boolean;
291
+ isTest: boolean;
280
292
  price: number | null;
281
293
  };
282
294
  amount: bigint;
283
295
  }[];
284
296
  };
285
297
  id: string;
286
- tokens: {
298
+ tokens: ({
287
299
  symbol: string;
288
300
  name: string | null;
289
301
  id: string;
@@ -292,8 +304,10 @@ export declare abstract class OpportunityService {
292
304
  icon: string;
293
305
  decimals: number;
294
306
  verified: boolean;
295
- price: number | null;
296
- }[];
307
+ isTest: boolean;
308
+ } & {
309
+ price?: number | null | undefined;
310
+ })[];
297
311
  chain: {
298
312
  name: string;
299
313
  id: number;
@@ -359,14 +373,16 @@ export declare abstract class OpportunityService {
359
373
  address: string;
360
374
  icon: string;
361
375
  decimals: number;
376
+ displaySymbol: string;
362
377
  verified: boolean;
378
+ isTest: boolean;
363
379
  price: number | null;
364
380
  };
365
381
  amount: bigint;
366
382
  }[];
367
383
  };
368
384
  id: string;
369
- tokens: {
385
+ tokens: ({
370
386
  symbol: string;
371
387
  name: string | null;
372
388
  id: string;
@@ -375,8 +391,10 @@ export declare abstract class OpportunityService {
375
391
  icon: string;
376
392
  decimals: number;
377
393
  verified: boolean;
378
- price: number | null;
379
- }[];
394
+ isTest: boolean;
395
+ } & {
396
+ price?: number | null | undefined;
397
+ })[];
380
398
  chain: {
381
399
  name: string;
382
400
  id: number;
@@ -417,7 +435,9 @@ export declare abstract class OpportunityService {
417
435
  icon: string;
418
436
  decimals: number;
419
437
  verified: boolean;
420
- price: number | null;
438
+ isTest: boolean;
439
+ } & {
440
+ price?: number | null | undefined;
421
441
  };
422
442
  distributionChain: {
423
443
  name: string;
@@ -455,7 +475,7 @@ export declare abstract class OpportunityService {
455
475
  * @param query
456
476
  * @returns the number of opportunities
457
477
  */
458
- static countMany(query: GetOpportunitiesQueryEntity): Promise<number>;
478
+ static countMany(query: GetOpportunitiesQueryModel): Promise<number>;
459
479
  static formatResponse(opportunity: Awaited<ReturnType<typeof OpportunityRepository.findUniqueOrThrow>>): {
460
480
  aprRecord: {
461
481
  cumulated: number;
@@ -497,14 +517,16 @@ export declare abstract class OpportunityService {
497
517
  address: string;
498
518
  icon: string;
499
519
  decimals: number;
520
+ displaySymbol: string;
500
521
  verified: boolean;
522
+ isTest: boolean;
501
523
  price: number | null;
502
524
  };
503
525
  amount: bigint;
504
526
  }[];
505
527
  };
506
528
  id: string;
507
- tokens: {
529
+ tokens: ({
508
530
  symbol: string;
509
531
  name: string | null;
510
532
  id: string;
@@ -513,8 +535,10 @@ export declare abstract class OpportunityService {
513
535
  icon: string;
514
536
  decimals: number;
515
537
  verified: boolean;
516
- price: number | null;
517
- }[];
538
+ isTest: boolean;
539
+ } & {
540
+ price?: number | null | undefined;
541
+ })[];
518
542
  chain: {
519
543
  name: string;
520
544
  id: number;
@@ -541,7 +565,7 @@ export declare abstract class OpportunityService {
541
565
  } | null;
542
566
  static formatResponseBase(opportunity: LightOpportunityFromDB): {
543
567
  id: string;
544
- tokens: {
568
+ tokens: ({
545
569
  symbol: string;
546
570
  name: string | null;
547
571
  id: string;
@@ -550,8 +574,10 @@ export declare abstract class OpportunityService {
550
574
  icon: string;
551
575
  decimals: number;
552
576
  verified: boolean;
553
- price: number | null;
554
- }[];
577
+ isTest: boolean;
578
+ } & {
579
+ price?: number | null | undefined;
580
+ })[];
555
581
  chain: {
556
582
  name: string;
557
583
  id: number;
@@ -576,7 +602,7 @@ export declare abstract class OpportunityService {
576
602
  apr: number;
577
603
  dailyRewards: number;
578
604
  };
579
- static aggregate(query: GetOpportunitiesQueryEntity, field: keyof Prisma.OpportunitySumAggregateInputType): Promise<{
605
+ static aggregate(query: GetOpportunitiesQueryModel, field: keyof Prisma.OpportunitySumAggregateInputType): Promise<{
580
606
  sum: never;
581
607
  }>;
582
608
  }
@@ -6,6 +6,7 @@ import { record } from "@elysiajs/opentelemetry";
6
6
  import { Campaign } from "@sdk";
7
7
  import { CacheService } from "../cache";
8
8
  import { TTLPresets } from "../cache/cache.model";
9
+ import { TokenService } from "../token";
9
10
  import { OpportunityRepository } from "./opportunity.repository";
10
11
  import { getAjnaMetadata } from "./subservices/getAjnaMetadata.service";
11
12
  import { getBadgerMetadata } from "./subservices/getBadgerMetadata.service";
@@ -212,7 +213,7 @@ export class OpportunityService {
212
213
  return {
213
214
  ...opp,
214
215
  id,
215
- tokens: Tokens,
216
+ tokens: Tokens.map(t => TokenService.format(t)),
216
217
  chain: Chain,
217
218
  protocol: MainProtocol ?? undefined,
218
219
  };
@@ -9,7 +9,7 @@ export const PriceController = new Elysia({ prefix: "/prices", detail: { tags: [
9
9
  .get("/", async () => await PriceService.findMany())
10
10
  .get("/array", async () => await PriceService.findManyArray())
11
11
  // ─── Get Price By Token Symbol ───────────────────────────────────────
12
- .get("/symbol/:symbol", async ({ params }) => await PriceService.fetchPriceSourceBySymbol(params.symbol), {
12
+ .get("/symbol/:symbol", async ({ params }) => await PriceService.fetchPriceBySymbol(params.symbol), {
13
13
  params: PriceSourceIdentifier,
14
14
  })
15
15
  // ─── Price Sources Group ─────────────────────────────────────────────
@@ -8,7 +8,7 @@ export declare class PriceService {
8
8
  token: string;
9
9
  }[]>;
10
10
  /** Fetches a single price */
11
- static fetchPriceSourceBySymbol(symbol: string): Promise<number>;
11
+ static fetchPriceBySymbol(symbol: string): Promise<number>;
12
12
  static getPriceSourceBySymbol(symbol: string): Promise<{
13
13
  symbol: string;
14
14
  method: import("../../../../database/api/.generated").$Enums.PriceSourceMethod;
@@ -11,7 +11,7 @@ export class PriceService {
11
11
  return (await Pricer.load()).getArray();
12
12
  }
13
13
  /** Fetches a single price */
14
- static async fetchPriceSourceBySymbol(symbol) {
14
+ static async fetchPriceBySymbol(symbol) {
15
15
  const priceSource = await PriceRepository.findBySymbolOrThrow(symbol);
16
16
  if (!priceSource) {
17
17
  throw new Error(`Price source with symbol ${symbol} not found`);
@@ -20,7 +20,7 @@ export class PriceService {
20
20
  return priceSource.args.value;
21
21
  }
22
22
  if (priceSource.method === PriceSourceMethod.EQUAL_TO) {
23
- return PriceService.fetchPriceSourceBySymbol(priceSource.args.token);
23
+ return PriceService.fetchPriceBySymbol(priceSource.args.token);
24
24
  }
25
25
  return (await PriceFetcherFactory.instance.get(priceSource.method).getPrice([priceSource]))?.[0]?.rate;
26
26
  }
@@ -33,7 +33,7 @@ export class PriceService {
33
33
  }
34
34
  static async createPriceSource(priceSource) {
35
35
  const created = await PriceRepository.create(priceSource);
36
- return await PriceService.fetchPriceSourceBySymbol(created.symbol);
36
+ return await PriceService.fetchPriceBySymbol(created.symbol);
37
37
  }
38
38
  static async updatePriceSource(symbol, newPriceSource) {
39
39
  return await PriceRepository.updateBySymbol(symbol, newPriceSource);
@@ -12,7 +12,9 @@ export declare abstract class RewardRepository {
12
12
  address: string;
13
13
  icon: string;
14
14
  decimals: number;
15
+ displaySymbol: string;
15
16
  verified: boolean;
17
+ isTest: boolean;
16
18
  price: number | null;
17
19
  };
18
20
  Breakdown: ({
@@ -32,7 +34,9 @@ export declare abstract class RewardRepository {
32
34
  address: string;
33
35
  icon: string;
34
36
  decimals: number;
37
+ displaySymbol: string;
35
38
  verified: boolean;
39
+ isTest: boolean;
36
40
  price: number | null;
37
41
  }[];
38
42
  Protocols: {