@merkl/api 0.10.237 → 0.10.238

Sign up to get free protection for your applications and to get access to all the features.
@@ -91,8 +91,9 @@ export function getRewardTokens(campaigns) {
91
91
  const rewardTokens = {};
92
92
  campaigns.forEach(({ amount, rewardToken, campaignParameters: { symbolRewardToken: symbol }, ...c }) => {
93
93
  const timespan = Math.abs(c.endTimestamp - c.startTimestamp);
94
+ const isWithinTimespan = moment().unix() > c.startTimestamp && moment().unix() < c.endTimestamp;
94
95
  const dayspan = Math.max(Math.floor(timespan / (60 * 60 * 24)), 1);
95
- const dailyAmount = BigInt(amount) / BigInt(dayspan);
96
+ const dailyAmount = isWithinTimespan ? BigInt(amount) / BigInt(dayspan) : 0n;
96
97
  if (!rewardTokens[symbol])
97
98
  rewardTokens[symbol] = { amount: dailyAmount, address: rewardToken };
98
99
  else
@@ -194,40 +194,133 @@ declare const app: Elysia<"", false, {
194
194
  };
195
195
  headers: unknown;
196
196
  response: {
197
- 200: {
198
- aprRecord: {
197
+ 200: ({
198
+ protocol?: {
199
+ name: string;
200
+ url: string;
201
+ description: string;
202
+ id: string;
203
+ tags: string[];
204
+ icon: string;
205
+ } | null | undefined;
206
+ depositUrl?: string | undefined;
207
+ aprRecord?: {
208
+ timestamp: string | bigint;
199
209
  cumulated: number;
200
- timestamp: bigint;
201
210
  breakdowns: {
202
- type: import("../database/api/.generated").$Enums.AprType;
211
+ type: "CAMPAIGN" | "TOKEN" | "PROTOCOL";
203
212
  id: number;
204
213
  identifier: string;
205
214
  value: number;
206
215
  aprRecordId: string;
207
216
  }[];
208
- };
209
- tvlRecord: {
210
- id: string;
217
+ } | undefined;
218
+ tvlRecord?: {
211
219
  total: number;
212
- timestamp: bigint;
220
+ timestamp: string | bigint;
213
221
  breakdowns: {
214
- type: import("../database/api/.generated").$Enums.TvlType;
222
+ type: "TOKEN" | "PROTOCOL";
215
223
  id: number;
216
224
  identifier: string;
217
225
  value: number;
218
226
  tvlRecordId: string;
219
227
  }[];
220
- };
221
- rewardsRecord: {
222
- id: string;
228
+ } | undefined;
229
+ rewardsRecord?: {
223
230
  total: number;
224
- timestamp: bigint;
231
+ id: string;
232
+ timestamp: string | bigint;
225
233
  breakdowns: {
234
+ token: {
235
+ price?: number | null | undefined;
236
+ symbol: string;
237
+ name: string | null;
238
+ id: string;
239
+ icon: string;
240
+ chainId: number;
241
+ address: string;
242
+ decimals: number;
243
+ verified: boolean;
244
+ isTest: boolean;
245
+ };
226
246
  id: number;
227
247
  value: number;
228
248
  campaignId: string;
249
+ amount: string | bigint;
229
250
  dailyRewardsRecordId: string;
251
+ }[];
252
+ } | undefined;
253
+ name: string;
254
+ type: string;
255
+ tokens: {
256
+ price?: number | null | undefined;
257
+ symbol: string;
258
+ name: string | null;
259
+ id: string;
260
+ icon: string;
261
+ chainId: number;
262
+ address: string;
263
+ decimals: number;
264
+ verified: boolean;
265
+ isTest: boolean;
266
+ }[];
267
+ id: string;
268
+ status: string;
269
+ tags: string[];
270
+ identifier: string;
271
+ chain: {
272
+ name: string;
273
+ id: number;
274
+ icon: string;
275
+ };
276
+ chainId: number;
277
+ action: string;
278
+ tvl: number;
279
+ apr: number;
280
+ dailyRewards: number;
281
+ } | null)[];
282
+ } | {
283
+ 200: never;
284
+ } | {
285
+ 200: (Response | ({
286
+ protocol?: {
287
+ name: string;
288
+ url: string;
289
+ description: string;
290
+ id: string;
291
+ tags: string[];
292
+ icon: string;
293
+ } | null | undefined;
294
+ depositUrl?: string | undefined;
295
+ aprRecord?: {
296
+ timestamp: string | bigint;
297
+ cumulated: number;
298
+ breakdowns: {
299
+ type: "CAMPAIGN" | "TOKEN" | "PROTOCOL";
300
+ id: number;
301
+ identifier: string;
302
+ value: number;
303
+ aprRecordId: string;
304
+ }[];
305
+ } | undefined;
306
+ tvlRecord?: {
307
+ total: number;
308
+ timestamp: string | bigint;
309
+ breakdowns: {
310
+ type: "TOKEN" | "PROTOCOL";
311
+ id: number;
312
+ identifier: string;
313
+ value: number;
314
+ tvlRecordId: string;
315
+ }[];
316
+ } | undefined;
317
+ rewardsRecord?: {
318
+ total: number;
319
+ id: string;
320
+ timestamp: string | bigint;
321
+ breakdowns: {
230
322
  token: {
323
+ price?: number | null | undefined;
231
324
  symbol: string;
232
325
  name: string | null;
233
326
  id: string;
@@ -235,17 +328,20 @@ declare const app: Elysia<"", false, {
235
328
  chainId: number;
236
329
  address: string;
237
330
  decimals: number;
238
- displaySymbol: string;
239
331
  verified: boolean;
240
332
  isTest: boolean;
241
- price: number | null;
242
333
  };
243
- amount: bigint;
334
+ id: number;
335
+ value: number;
336
+ campaignId: string;
337
+ amount: string | bigint;
338
+ dailyRewardsRecordId: string;
244
339
  }[];
245
- };
246
- id: string;
247
- depositUrl: string | undefined;
248
- tokens: ({
340
+ } | undefined;
341
+ name: string;
342
+ type: string;
343
+ tokens: {
344
+ price?: number | null | undefined;
249
345
  symbol: string;
250
346
  name: string | null;
251
347
  id: string;
@@ -255,33 +351,280 @@ declare const app: Elysia<"", false, {
255
351
  decimals: number;
256
352
  verified: boolean;
257
353
  isTest: boolean;
258
- } & {
259
- price?: number | null | undefined;
260
- })[];
354
+ }[];
355
+ id: string;
356
+ status: string;
357
+ tags: string[];
358
+ identifier: string;
261
359
  chain: {
262
360
  name: string;
263
361
  id: number;
264
362
  icon: string;
265
363
  };
266
- protocol: {
364
+ chainId: number;
365
+ action: string;
366
+ tvl: number;
367
+ apr: number;
368
+ dailyRewards: number;
369
+ } | null)[] | {
370
+ 200: ({
371
+ protocol?: {
372
+ name: string;
373
+ url: string;
374
+ description: string;
375
+ id: string;
376
+ tags: string[];
377
+ icon: string;
378
+ } | null | undefined;
379
+ depositUrl?: string | undefined;
380
+ aprRecord?: {
381
+ timestamp: string | bigint;
382
+ cumulated: number;
383
+ breakdowns: {
384
+ type: "CAMPAIGN" | "TOKEN" | "PROTOCOL";
385
+ id: number;
386
+ identifier: string;
387
+ value: number;
388
+ aprRecordId: string;
389
+ }[];
390
+ } | undefined;
391
+ tvlRecord?: {
392
+ total: number;
393
+ timestamp: string | bigint;
394
+ breakdowns: {
395
+ type: "TOKEN" | "PROTOCOL";
396
+ id: number;
397
+ identifier: string;
398
+ value: number;
399
+ tvlRecordId: string;
400
+ }[];
401
+ } | undefined;
402
+ rewardsRecord?: {
403
+ total: number;
404
+ id: string;
405
+ timestamp: string | bigint;
406
+ breakdowns: {
407
+ token: {
408
+ price?: number | null | undefined;
409
+ symbol: string;
410
+ name: string | null;
411
+ id: string;
412
+ icon: string;
413
+ chainId: number;
414
+ address: string;
415
+ decimals: number;
416
+ verified: boolean;
417
+ isTest: boolean;
418
+ };
419
+ id: number;
420
+ value: number;
421
+ campaignId: string;
422
+ amount: string | bigint;
423
+ dailyRewardsRecordId: string;
424
+ }[];
425
+ } | undefined;
426
+ name: string;
427
+ type: string;
428
+ tokens: {
429
+ price?: number | null | undefined;
430
+ symbol: string;
431
+ name: string | null;
432
+ id: string;
433
+ icon: string;
434
+ chainId: number;
435
+ address: string;
436
+ decimals: number;
437
+ verified: boolean;
438
+ isTest: boolean;
439
+ }[];
440
+ id: string;
441
+ status: string;
442
+ tags: string[];
443
+ identifier: string;
444
+ chain: {
445
+ name: string;
446
+ id: number;
447
+ icon: string;
448
+ };
449
+ chainId: number;
450
+ action: string;
451
+ tvl: number;
452
+ apr: number;
453
+ dailyRewards: number;
454
+ } | null)[];
455
+ }) & ({
456
+ protocol?: {
267
457
  name: string;
268
458
  url: string;
269
459
  description: string;
270
460
  id: string;
271
461
  tags: string[];
272
462
  icon: string;
463
+ } | null | undefined;
464
+ depositUrl?: string | undefined;
465
+ aprRecord?: {
466
+ timestamp: string | bigint;
467
+ cumulated: number;
468
+ breakdowns: {
469
+ type: "CAMPAIGN" | "TOKEN" | "PROTOCOL";
470
+ id: number;
471
+ identifier: string;
472
+ value: number;
473
+ aprRecordId: string;
474
+ }[];
475
+ } | undefined;
476
+ tvlRecord?: {
477
+ total: number;
478
+ timestamp: string | bigint;
479
+ breakdowns: {
480
+ type: "TOKEN" | "PROTOCOL";
481
+ id: number;
482
+ identifier: string;
483
+ value: number;
484
+ tvlRecordId: string;
485
+ }[];
486
+ } | undefined;
487
+ rewardsRecord?: {
488
+ total: number;
489
+ id: string;
490
+ timestamp: string | bigint;
491
+ breakdowns: {
492
+ token: {
493
+ price?: number | null | undefined;
494
+ symbol: string;
495
+ name: string | null;
496
+ id: string;
497
+ icon: string;
498
+ chainId: number;
499
+ address: string;
500
+ decimals: number;
501
+ verified: boolean;
502
+ isTest: boolean;
503
+ };
504
+ id: number;
505
+ value: number;
506
+ campaignId: string;
507
+ amount: string | bigint;
508
+ dailyRewardsRecordId: string;
509
+ }[];
273
510
  } | undefined;
274
511
  name: string;
275
- type: import("../database/api/.generated").$Enums.CampaignType;
276
- status: import("../database/api/.generated").$Enums.Status;
512
+ type: string;
513
+ tokens: {
514
+ price?: number | null | undefined;
515
+ symbol: string;
516
+ name: string | null;
517
+ id: string;
518
+ icon: string;
519
+ chainId: number;
520
+ address: string;
521
+ decimals: number;
522
+ verified: boolean;
523
+ isTest: boolean;
524
+ }[];
525
+ id: string;
526
+ status: string;
277
527
  tags: string[];
278
528
  identifier: string;
529
+ chain: {
530
+ name: string;
531
+ id: number;
532
+ icon: string;
533
+ };
279
534
  chainId: number;
280
- action: import("../database/api/.generated").$Enums.OpportunityAction;
535
+ action: string;
281
536
  tvl: number;
282
537
  apr: number;
283
538
  dailyRewards: number;
284
- }[];
539
+ } | null)[];
540
+ } | {
541
+ 200: {
542
+ 200: ({
543
+ protocol?: {
544
+ name: string;
545
+ url: string;
546
+ description: string;
547
+ id: string;
548
+ tags: string[];
549
+ icon: string;
550
+ } | null | undefined;
551
+ depositUrl?: string | undefined;
552
+ aprRecord?: {
553
+ timestamp: string | bigint;
554
+ cumulated: number;
555
+ breakdowns: {
556
+ type: "CAMPAIGN" | "TOKEN" | "PROTOCOL";
557
+ id: number;
558
+ identifier: string;
559
+ value: number;
560
+ aprRecordId: string;
561
+ }[];
562
+ } | undefined;
563
+ tvlRecord?: {
564
+ total: number;
565
+ timestamp: string | bigint;
566
+ breakdowns: {
567
+ type: "TOKEN" | "PROTOCOL";
568
+ id: number;
569
+ identifier: string;
570
+ value: number;
571
+ tvlRecordId: string;
572
+ }[];
573
+ } | undefined;
574
+ rewardsRecord?: {
575
+ total: number;
576
+ id: string;
577
+ timestamp: string | bigint;
578
+ breakdowns: {
579
+ token: {
580
+ price?: number | null | undefined;
581
+ symbol: string;
582
+ name: string | null;
583
+ id: string;
584
+ icon: string;
585
+ chainId: number;
586
+ address: string;
587
+ decimals: number;
588
+ verified: boolean;
589
+ isTest: boolean;
590
+ };
591
+ id: number;
592
+ value: number;
593
+ campaignId: string;
594
+ amount: string | bigint;
595
+ dailyRewardsRecordId: string;
596
+ }[];
597
+ } | undefined;
598
+ name: string;
599
+ type: string;
600
+ tokens: {
601
+ price?: number | null | undefined;
602
+ symbol: string;
603
+ name: string | null;
604
+ id: string;
605
+ icon: string;
606
+ chainId: number;
607
+ address: string;
608
+ decimals: number;
609
+ verified: boolean;
610
+ isTest: boolean;
611
+ }[];
612
+ id: string;
613
+ status: string;
614
+ tags: string[];
615
+ identifier: string;
616
+ chain: {
617
+ name: string;
618
+ id: number;
619
+ icon: string;
620
+ };
621
+ chainId: number;
622
+ action: string;
623
+ tvl: number;
624
+ apr: number;
625
+ dailyRewards: number;
626
+ } | null)[];
627
+ };
285
628
  };
286
629
  };
287
630
  };
@@ -224,5 +224,5 @@ export declare abstract class CampaignService {
224
224
  * @param amount
225
225
  * @returns daily token amount
226
226
  */
227
- static getDailyAmount<T extends bigint | number>(start: T, end: T, amount: bigint): bigint;
227
+ static getDailyAmount<T extends bigint | number>(start: T, end: T, amount: bigint): bigint | 0;
228
228
  }
@@ -206,8 +206,9 @@ export class CampaignService {
206
206
  */
207
207
  static getDailyAmount(start, end, amount) {
208
208
  const timespan = Math.abs(Number(end - start));
209
+ const isWithinTimespan = moment().unix() > start && moment().unix() < end;
209
210
  const dayspan = Math.max(1, Math.floor(timespan / (60 * 60 * 24)));
210
- const dailyAmount = BigInt(amount) / BigInt(dayspan);
211
+ const dailyAmount = isWithinTimespan ? BigInt(amount) / BigInt(dayspan) : 0;
211
212
  return dailyAmount;
212
213
  }
213
214
  }
@@ -1,7 +1,7 @@
1
1
  export declare const slugToProtocolId: {
2
2
  readonly "uniswap-v2": "uniswap-v2";
3
- readonly "aave-v2": "aave";
4
3
  readonly "aave-v3": "aave";
4
+ readonly "aave-v2": "aave";
5
5
  readonly "aave-static-atokens": "aave";
6
6
  readonly "camelot-v2": "camelot";
7
7
  readonly "meta-morpho": "morpho";
@@ -1,8 +1,8 @@
1
1
  import { t } from "elysia";
2
2
  export const slugToProtocolId = {
3
3
  "uniswap-v2": "uniswap-v2",
4
- "aave-v2": "aave",
5
4
  "aave-v3": "aave",
5
+ "aave-v2": "aave",
6
6
  "aave-static-atokens": "aave",
7
7
  "camelot-v2": "camelot",
8
8
  "meta-morpho": "morpho",
@@ -28,7 +28,7 @@ export declare const apiTypes: {
28
28
  amountIn: import("@sinclair/typebox").TString;
29
29
  feeAddress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
30
30
  feePcm: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
31
- sipplage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
31
+ slippage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
32
32
  }>;
33
33
  readonly response: import("@sinclair/typebox").TObject<{
34
34
  message: import("@sinclair/typebox").TString;
@@ -40,7 +40,7 @@ export const apiTypes = {
40
40
  amountIn: t.String(),
41
41
  feeAddress: t.Optional(t.String()),
42
42
  feePcm: t.Optional(t.Number()),
43
- sipplage: t.Optional(t.Number()),
43
+ slippage: t.Optional(t.Number()),
44
44
  }),
45
45
  response: t.Object({
46
46
  message: t.String({ example: "OK" }),
@@ -56,7 +56,7 @@ export class KyberZapService {
56
56
  "position.tickUpper": upper?.toString(),
57
57
  dex: KyberZapService.getDexId(protocol),
58
58
  //TODO: add a lesser value here (2% by default)
59
- sipplage: slippage ?? 200,
59
+ slippage: slippage ?? 200,
60
60
  },
61
61
  chainId,
62
62
  });