@merkl/api 0.17.7 → 0.17.9

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.
@@ -54,15 +54,50 @@ export class CampaignRepository {
54
54
  * A campaign is considered past if the current timestamp is greater than the campaign's end timestamp.
55
55
  *
56
56
  * @returns A promise that resolves to an array of past campaigns.
57
+ *
58
+ * @dev Excludes test campaigns
57
59
  */
58
- static async getPastCampaigns(chainId) {
60
+ static async getPastCampaigns(query) {
59
61
  const now = moment().unix();
62
+ const where = {
63
+ ...query,
64
+ endTimestamp: {
65
+ lt: now,
66
+ },
67
+ RewardToken: {
68
+ isTest: false,
69
+ },
70
+ };
60
71
  return await apiDbClient.campaign.findMany({
61
- where: {
62
- computeChainId: chainId,
63
- endTimestamp: {
64
- lt: now,
65
- },
72
+ where,
73
+ include: {
74
+ Opportunity: true,
75
+ },
76
+ });
77
+ }
78
+ /**
79
+ * Retrieves all past campaigns from the database.
80
+ * A campaign is considered past if the current timestamp is greater than the campaign's end timestamp.
81
+ *
82
+ * @returns A promise that resolves to an array of past campaigns.
83
+ *
84
+ * @dev Excludes test campaigns
85
+ */
86
+ static async getFutureCampaigns(query) {
87
+ const now = moment().unix();
88
+ const where = {
89
+ ...query,
90
+ startTimestamp: {
91
+ gt: now,
92
+ },
93
+ RewardToken: {
94
+ isTest: false,
95
+ },
96
+ };
97
+ return await apiDbClient.campaign.findMany({
98
+ where,
99
+ include: {
100
+ Opportunity: true,
66
101
  },
67
102
  });
68
103
  }
@@ -71,6 +106,8 @@ export class CampaignRepository {
71
106
  * A campaign is considered live if the current timestamp is between the campaign's start and end timestamps.
72
107
  *
73
108
  * @returns A promise that resolves to an array of live campaigns.
109
+ *
110
+ * @dev Excludes test campaigns
74
111
  */
75
112
  static async getLiveCampaigns(query) {
76
113
  const now = moment().unix();
@@ -78,6 +115,9 @@ export class CampaignRepository {
78
115
  ...query,
79
116
  endTimestamp: { gte: now },
80
117
  startTimestamp: { lte: now },
118
+ RewardToken: {
119
+ isTest: false,
120
+ },
81
121
  };
82
122
  return await apiDbClient.campaign.findMany({
83
123
  where,
@@ -4,7 +4,26 @@ import { CampaignRepository } from "./campaign.repository";
4
4
  export declare abstract class CampaignService {
5
5
  static hashId(campaign: CampaignUnique): string;
6
6
  static splitIdOrThrow(chainAndCampaignId: `${number}-${string}` | string): CampaignUnique;
7
- static getPastCampaigns(chainId?: number): Promise<{
7
+ static getPastCampaigns(query?: {
8
+ computeChainId?: number;
9
+ type?: string;
10
+ }): Promise<({
11
+ Opportunity: {
12
+ name: string;
13
+ type: string;
14
+ id: string;
15
+ status: import("../../../../database/api/.generated").$Enums.Status;
16
+ tags: string[];
17
+ identifier: string;
18
+ chainId: number;
19
+ action: import("../../../../database/api/.generated").$Enums.OpportunityAction;
20
+ depositUrl: string | null;
21
+ mainProtocolId: string | null;
22
+ tvl: number;
23
+ apr: number;
24
+ dailyRewards: number;
25
+ };
26
+ } & {
8
27
  type: string;
9
28
  id: string;
10
29
  params: import("database/api/.generated/runtime/library").JsonValue;
@@ -18,7 +37,41 @@ export declare abstract class CampaignService {
18
37
  amount: string;
19
38
  opportunityId: string;
20
39
  creatorAddress: string;
21
- }[]>;
40
+ })[]>;
41
+ static getFutureCampaigns(query?: {
42
+ computeChainId?: number;
43
+ type?: string;
44
+ }): Promise<({
45
+ Opportunity: {
46
+ name: string;
47
+ type: string;
48
+ id: string;
49
+ status: import("../../../../database/api/.generated").$Enums.Status;
50
+ tags: string[];
51
+ identifier: string;
52
+ chainId: number;
53
+ action: import("../../../../database/api/.generated").$Enums.OpportunityAction;
54
+ depositUrl: string | null;
55
+ mainProtocolId: string | null;
56
+ tvl: number;
57
+ apr: number;
58
+ dailyRewards: number;
59
+ };
60
+ } & {
61
+ type: string;
62
+ id: string;
63
+ params: import("database/api/.generated/runtime/library").JsonValue;
64
+ subType: number | null;
65
+ startTimestamp: bigint;
66
+ endTimestamp: bigint;
67
+ computeChainId: number;
68
+ distributionChainId: number;
69
+ campaignId: string;
70
+ rewardTokenId: string;
71
+ amount: string;
72
+ opportunityId: string;
73
+ creatorAddress: string;
74
+ })[]>;
22
75
  static getLiveCampaigns(query?: {
23
76
  computeChainId?: number;
24
77
  type?: string;
@@ -107,6 +160,8 @@ export declare abstract class CampaignService {
107
160
  id: number;
108
161
  icon: string;
109
162
  };
163
+ endTimestamp: number;
164
+ startTimestamp: number;
110
165
  rewardToken: {
111
166
  symbol: string;
112
167
  name: string | null;
@@ -126,15 +181,15 @@ export declare abstract class CampaignService {
126
181
  icon: string;
127
182
  } | undefined;
128
183
  campaignStatus: {
184
+ computedUntil: number;
185
+ processingStarted: number;
129
186
  error: string;
130
187
  details: import("database/api/.generated/runtime/library").JsonValue;
131
188
  status: import("../../../../database/api/.generated").$Enums.RunStatus;
132
189
  campaignId: string;
133
- computedUntil: bigint;
134
- processingStarted: bigint;
135
190
  };
136
191
  creatorAddress: string;
137
- Creator: {
192
+ creator: {
138
193
  tags: string[];
139
194
  address: string;
140
195
  creatorId: string | null;
@@ -142,8 +197,6 @@ export declare abstract class CampaignService {
142
197
  type: string;
143
198
  id: string;
144
199
  subType: number | null;
145
- startTimestamp: bigint;
146
- endTimestamp: bigint;
147
200
  computeChainId: number;
148
201
  distributionChainId: number;
149
202
  campaignId: string;
@@ -291,6 +344,8 @@ export declare abstract class CampaignService {
291
344
  id: number;
292
345
  icon: string;
293
346
  };
347
+ endTimestamp: number;
348
+ startTimestamp: number;
294
349
  rewardToken: {
295
350
  symbol: string;
296
351
  name: string | null;
@@ -310,15 +365,15 @@ export declare abstract class CampaignService {
310
365
  icon: string;
311
366
  } | undefined;
312
367
  campaignStatus: {
368
+ computedUntil: number;
369
+ processingStarted: number;
313
370
  error: string;
314
371
  details: import("database/api/.generated/runtime/library").JsonValue;
315
372
  status: import("../../../../database/api/.generated").$Enums.RunStatus;
316
373
  campaignId: string;
317
- computedUntil: bigint;
318
- processingStarted: bigint;
319
374
  };
320
375
  creatorAddress: string;
321
- Creator: {
376
+ creator: {
322
377
  tags: string[];
323
378
  address: string;
324
379
  creatorId: string | null;
@@ -326,8 +381,6 @@ export declare abstract class CampaignService {
326
381
  type: string;
327
382
  id: string;
328
383
  subType: number | null;
329
- startTimestamp: bigint;
330
- endTimestamp: bigint;
331
384
  computeChainId: number;
332
385
  distributionChainId: number;
333
386
  campaignId: string;
@@ -335,7 +388,7 @@ export declare abstract class CampaignService {
335
388
  amount: string;
336
389
  opportunityId: string;
337
390
  };
338
- static formatAsCampaignParameters<C extends CampaignEnum>(campaign: CampaignWithParams["model"]): CampaignParameters<C>;
391
+ static formatAsCampaignParameters<C extends CampaignEnum>(campaign: CampaignWithParams): CampaignParameters<C>;
339
392
  /**
340
393
  * Fetches the campaign dynamic data for a v3 campaign onchain
341
394
  * @param chainId
@@ -21,8 +21,11 @@ export class CampaignService {
21
21
  const [chainId, campaignId] = chainAndCampaignId.split("-");
22
22
  return { distributionChain: +chainId, campaignId };
23
23
  }
24
- static async getPastCampaigns(chainId) {
25
- return await CampaignRepository.getPastCampaigns(chainId);
24
+ static async getPastCampaigns(query) {
25
+ return await CampaignRepository.getPastCampaigns(query);
26
+ }
27
+ static async getFutureCampaigns(query) {
28
+ return await CampaignRepository.getFutureCampaigns(query);
26
29
  }
27
30
  static async getLiveCampaigns(query) {
28
31
  return await CampaignRepository.getLiveCampaigns(query);
@@ -253,16 +256,19 @@ export class CampaignService {
253
256
  * TODO: remove CampaignService function in favor of prisma client extensions
254
257
  */
255
258
  static format(campaign) {
256
- const { DistributionChain, ComputeChain, RewardToken, params, CampaignStatus, ...c } = campaign;
259
+ const { DistributionChain, ComputeChain, Creator, RewardToken, params, CampaignStatus, ...c } = campaign;
257
260
  return {
258
261
  ...c,
259
262
  params: params,
260
263
  chain: ComputeChain,
264
+ endTimestamp: Number(c.endTimestamp),
265
+ startTimestamp: Number(c.startTimestamp),
261
266
  rewardToken: TokenService.format(RewardToken),
262
267
  distributionChain: DistributionChain === null ? undefined : DistributionChain,
263
268
  // Todo: need to be change to single 1 to 1 with campaign
264
- campaignStatus: CampaignStatus?.[0],
265
- creatorAddress: c.Creator.address,
269
+ campaignStatus: StatusService.format(CampaignStatus?.[0]),
270
+ creatorAddress: Creator.address,
271
+ creator: Creator,
266
272
  };
267
273
  }
268
274
  static formatAsCampaignParameters(campaign) {
@@ -183,6 +183,8 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
183
183
  id: number;
184
184
  icon: string;
185
185
  };
186
+ endTimestamp: number;
187
+ startTimestamp: number;
186
188
  rewardToken: {
187
189
  symbol: string;
188
190
  name: string | null;
@@ -202,15 +204,15 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
202
204
  icon: string;
203
205
  } | undefined;
204
206
  campaignStatus: {
207
+ computedUntil: number;
208
+ processingStarted: number;
205
209
  error: string;
206
210
  details: import("database/api/.generated/runtime/library").JsonValue;
207
211
  status: import("../../../../database/api/.generated").$Enums.RunStatus;
208
212
  campaignId: string;
209
- computedUntil: bigint;
210
- processingStarted: bigint;
211
213
  };
212
214
  creatorAddress: string;
213
- Creator: {
215
+ creator: {
214
216
  tags: string[];
215
217
  address: string;
216
218
  creatorId: string | null;
@@ -218,8 +220,6 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
218
220
  type: string;
219
221
  id: string;
220
222
  subType: number | null;
221
- startTimestamp: bigint;
222
- endTimestamp: bigint;
223
223
  computeChainId: number;
224
224
  distributionChainId: number;
225
225
  campaignId: string;
@@ -523,13 +523,18 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
523
523
  apr: number;
524
524
  dailyRewards: number;
525
525
  campaigns: {
526
+ creator?: {
527
+ tags?: string[] | undefined;
528
+ creatorId?: string | null | undefined;
529
+ address: string;
530
+ } | undefined;
526
531
  campaignStatus?: {
527
532
  error?: string | undefined;
528
533
  details?: any;
529
534
  status: string;
530
535
  campaignId: string;
531
- computedUntil: string | bigint;
532
- processingStarted: string | bigint;
536
+ computedUntil: string | number;
537
+ processingStarted: string | number;
533
538
  } | undefined;
534
539
  distributionChain?: {
535
540
  name: string;
@@ -545,8 +550,8 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
545
550
  id: number;
546
551
  icon: string;
547
552
  };
548
- startTimestamp: string | bigint;
549
- endTimestamp: string | bigint;
553
+ startTimestamp: string | number;
554
+ endTimestamp: string | number;
550
555
  computeChainId: number;
551
556
  distributionChainId: number;
552
557
  campaignId: string;
@@ -680,13 +685,18 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
680
685
  apr: number;
681
686
  dailyRewards: number;
682
687
  campaigns: {
688
+ creator?: {
689
+ tags?: string[] | undefined;
690
+ creatorId?: string | null | undefined;
691
+ address: string;
692
+ } | undefined;
683
693
  campaignStatus?: {
684
694
  error?: string | undefined;
685
695
  details?: any;
686
696
  status: string;
687
697
  campaignId: string;
688
- computedUntil: string | bigint;
689
- processingStarted: string | bigint;
698
+ computedUntil: string | number;
699
+ processingStarted: string | number;
690
700
  } | undefined;
691
701
  distributionChain?: {
692
702
  name: string;
@@ -702,8 +712,8 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
702
712
  id: number;
703
713
  icon: string;
704
714
  };
705
- startTimestamp: string | bigint;
706
- endTimestamp: string | bigint;
715
+ startTimestamp: string | number;
716
+ endTimestamp: string | number;
707
717
  computeChainId: number;
708
718
  distributionChainId: number;
709
719
  campaignId: string;
@@ -233,9 +233,14 @@ export declare const OpportunityWithCampaignsResourceDto: import("@sinclair/type
233
233
  rewardTokenId: import("@sinclair/typebox").TString;
234
234
  amount: import("@sinclair/typebox").TString;
235
235
  opportunityId: import("@sinclair/typebox").TString;
236
- startTimestamp: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBigInt, import("@sinclair/typebox").TString]>;
237
- endTimestamp: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBigInt, import("@sinclair/typebox").TString]>;
236
+ startTimestamp: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>;
237
+ endTimestamp: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>;
238
238
  creatorAddress: import("@sinclair/typebox").TString;
239
+ creator: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
240
+ address: import("@sinclair/typebox").TString;
241
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
242
+ creatorId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
243
+ }>>;
239
244
  params: import("@sinclair/typebox").TAny;
240
245
  chain: import("@sinclair/typebox").TObject<{
241
246
  id: import("@sinclair/typebox").TNumber;
@@ -261,8 +266,8 @@ export declare const OpportunityWithCampaignsResourceDto: import("@sinclair/type
261
266
  }>>;
262
267
  campaignStatus: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
263
268
  campaignId: import("@sinclair/typebox").TString;
264
- computedUntil: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBigInt, import("@sinclair/typebox").TString]>;
265
- processingStarted: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBigInt, import("@sinclair/typebox").TString]>;
269
+ computedUntil: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>;
270
+ processingStarted: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>;
266
271
  status: import("@sinclair/typebox").TString;
267
272
  error: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
268
273
  details: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
@@ -222,13 +222,18 @@ export declare abstract class OpportunityService {
222
222
  apr: number;
223
223
  dailyRewards: number;
224
224
  campaigns: {
225
+ creator?: {
226
+ tags?: string[] | undefined;
227
+ creatorId?: string | null | undefined;
228
+ address: string;
229
+ } | undefined;
225
230
  campaignStatus?: {
226
231
  error?: string | undefined;
227
232
  details?: any;
228
233
  status: string;
229
234
  campaignId: string;
230
- computedUntil: string | bigint;
231
- processingStarted: string | bigint;
235
+ computedUntil: string | number;
236
+ processingStarted: string | number;
232
237
  } | undefined;
233
238
  distributionChain?: {
234
239
  name: string;
@@ -244,8 +249,8 @@ export declare abstract class OpportunityService {
244
249
  id: number;
245
250
  icon: string;
246
251
  };
247
- startTimestamp: string | bigint;
248
- endTimestamp: string | bigint;
252
+ startTimestamp: string | number;
253
+ endTimestamp: string | number;
249
254
  computeChainId: number;
250
255
  distributionChainId: number;
251
256
  campaignId: string;
@@ -352,13 +357,18 @@ export declare abstract class OpportunityService {
352
357
  apr: number;
353
358
  dailyRewards: number;
354
359
  campaigns: {
360
+ creator?: {
361
+ tags?: string[] | undefined;
362
+ creatorId?: string | null | undefined;
363
+ address: string;
364
+ } | undefined;
355
365
  campaignStatus?: {
356
366
  error?: string | undefined;
357
367
  details?: any;
358
368
  status: string;
359
369
  campaignId: string;
360
- computedUntil: string | bigint;
361
- processingStarted: string | bigint;
370
+ computedUntil: string | number;
371
+ processingStarted: string | number;
362
372
  } | undefined;
363
373
  distributionChain?: {
364
374
  name: string;
@@ -374,8 +384,8 @@ export declare abstract class OpportunityService {
374
384
  id: number;
375
385
  icon: string;
376
386
  };
377
- startTimestamp: string | bigint;
378
- endTimestamp: string | bigint;
387
+ startTimestamp: string | number;
388
+ endTimestamp: string | number;
379
389
  computeChainId: number;
380
390
  distributionChainId: number;
381
391
  campaignId: string;
@@ -460,6 +470,8 @@ export declare abstract class OpportunityService {
460
470
  id: number;
461
471
  icon: string;
462
472
  };
473
+ endTimestamp: number;
474
+ startTimestamp: number;
463
475
  rewardToken: {
464
476
  symbol: string;
465
477
  name: string | null;
@@ -479,15 +491,15 @@ export declare abstract class OpportunityService {
479
491
  icon: string;
480
492
  } | undefined;
481
493
  campaignStatus: {
494
+ computedUntil: number;
495
+ processingStarted: number;
482
496
  error: string;
483
497
  details: Prisma.JsonValue;
484
498
  status: import("../../../../database/api/.generated").$Enums.RunStatus;
485
499
  campaignId: string;
486
- computedUntil: bigint;
487
- processingStarted: bigint;
488
500
  };
489
501
  creatorAddress: string;
490
- Creator: {
502
+ creator: {
491
503
  tags: string[];
492
504
  address: string;
493
505
  creatorId: string | null;
@@ -495,8 +507,6 @@ export declare abstract class OpportunityService {
495
507
  type: string;
496
508
  id: string;
497
509
  subType: number | null;
498
- startTimestamp: bigint;
499
- endTimestamp: bigint;
500
510
  computeChainId: number;
501
511
  distributionChainId: number;
502
512
  campaignId: string;
@@ -606,6 +616,8 @@ export declare abstract class OpportunityService {
606
616
  id: number;
607
617
  icon: string;
608
618
  };
619
+ endTimestamp: number;
620
+ startTimestamp: number;
609
621
  rewardToken: {
610
622
  symbol: string;
611
623
  name: string | null;
@@ -625,15 +637,15 @@ export declare abstract class OpportunityService {
625
637
  icon: string;
626
638
  } | undefined;
627
639
  campaignStatus: {
640
+ computedUntil: number;
641
+ processingStarted: number;
628
642
  error: string;
629
643
  details: Prisma.JsonValue;
630
644
  status: import("../../../../database/api/.generated").$Enums.RunStatus;
631
645
  campaignId: string;
632
- computedUntil: bigint;
633
- processingStarted: bigint;
634
646
  };
635
647
  creatorAddress: string;
636
- Creator: {
648
+ creator: {
637
649
  tags: string[];
638
650
  address: string;
639
651
  creatorId: string | null;
@@ -641,8 +653,6 @@ export declare abstract class OpportunityService {
641
653
  type: string;
642
654
  id: string;
643
655
  subType: number | null;
644
- startTimestamp: bigint;
645
- endTimestamp: bigint;
646
656
  computeChainId: number;
647
657
  distributionChainId: number;
648
658
  campaignId: string;
@@ -748,6 +758,8 @@ export declare abstract class OpportunityService {
748
758
  id: number;
749
759
  icon: string;
750
760
  };
761
+ endTimestamp: number;
762
+ startTimestamp: number;
751
763
  rewardToken: {
752
764
  symbol: string;
753
765
  name: string | null;
@@ -767,15 +779,15 @@ export declare abstract class OpportunityService {
767
779
  icon: string;
768
780
  } | undefined;
769
781
  campaignStatus: {
782
+ computedUntil: number;
783
+ processingStarted: number;
770
784
  error: string;
771
785
  details: Prisma.JsonValue;
772
786
  status: import("../../../../database/api/.generated").$Enums.RunStatus;
773
787
  campaignId: string;
774
- computedUntil: bigint;
775
- processingStarted: bigint;
776
788
  };
777
789
  creatorAddress: string;
778
- Creator: {
790
+ creator: {
779
791
  tags: string[];
780
792
  address: string;
781
793
  creatorId: string | null;
@@ -783,8 +795,6 @@ export declare abstract class OpportunityService {
783
795
  type: string;
784
796
  id: string;
785
797
  subType: number | null;
786
- startTimestamp: bigint;
787
- endTimestamp: bigint;
788
798
  computeChainId: number;
789
799
  distributionChainId: number;
790
800
  campaignId: string;