@merkl/api 0.13.8 → 0.13.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.
@@ -1448,7 +1448,7 @@ declare const eden: {
1448
1448
  fetch?: RequestInit | undefined;
1449
1449
  }) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
1450
1450
  200: {
1451
- [x: string]: {
1451
+ [x: number]: {
1452
1452
  rewardCount: number;
1453
1453
  breakdownCount: number;
1454
1454
  };
@@ -2265,6 +2265,7 @@ declare const eden: {
2265
2265
  live: string;
2266
2266
  tree: string;
2267
2267
  lastTree: string;
2268
+ endOfDisputePeriod: number;
2268
2269
  };
2269
2270
  };
2270
2271
  }>>;
@@ -2696,6 +2697,23 @@ declare const eden: {
2696
2697
  }[];
2697
2698
  }>>;
2698
2699
  };
2700
+ status: {
2701
+ get: (options?: {
2702
+ headers?: Record<string, unknown> | undefined;
2703
+ query?: Record<string, unknown> | undefined;
2704
+ fetch?: RequestInit | undefined;
2705
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
2706
+ 200: {
2707
+ [x: number]: {
2708
+ live: string;
2709
+ tree: string;
2710
+ lastTree: string;
2711
+ endOfDisputePeriod: number;
2712
+ delayed: Awaited<ReturnType<typeof import("../modules/v4/status").StatusService.findManyDelay>>;
2713
+ };
2714
+ };
2715
+ }>>;
2716
+ };
2699
2717
  };
2700
2718
  };
2701
2719
  liquidity: {
@@ -4472,7 +4490,7 @@ declare const eden: {
4472
4490
  fetch?: RequestInit | undefined;
4473
4491
  }) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
4474
4492
  200: {
4475
- [x: string]: {
4493
+ [x: number]: {
4476
4494
  rewardCount: number;
4477
4495
  breakdownCount: number;
4478
4496
  };
@@ -5289,6 +5307,7 @@ declare const eden: {
5289
5307
  live: string;
5290
5308
  tree: string;
5291
5309
  lastTree: string;
5310
+ endOfDisputePeriod: number;
5292
5311
  };
5293
5312
  };
5294
5313
  }>>;
@@ -5720,6 +5739,23 @@ declare const eden: {
5720
5739
  }[];
5721
5740
  }>>;
5722
5741
  };
5742
+ status: {
5743
+ get: (options?: {
5744
+ headers?: Record<string, unknown> | undefined;
5745
+ query?: Record<string, unknown> | undefined;
5746
+ fetch?: RequestInit | undefined;
5747
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
5748
+ 200: {
5749
+ [x: number]: {
5750
+ live: string;
5751
+ tree: string;
5752
+ lastTree: string;
5753
+ endOfDisputePeriod: number;
5754
+ delayed: Awaited<ReturnType<typeof import("../modules/v4/status").StatusService.findManyDelay>>;
5755
+ };
5756
+ };
5757
+ }>>;
5758
+ };
5723
5759
  };
5724
5760
  };
5725
5761
  liquidity: {
@@ -8707,7 +8743,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
8707
8743
  };
8708
8744
  response: {
8709
8745
  200: {
8710
- [x: string]: {
8746
+ [x: number]: {
8711
8747
  rewardCount: number;
8712
8748
  breakdownCount: number;
8713
8749
  };
@@ -9516,6 +9552,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
9516
9552
  live: string;
9517
9553
  tree: string;
9518
9554
  lastTree: string;
9555
+ endOfDisputePeriod: number;
9519
9556
  };
9520
9557
  };
9521
9558
  };
@@ -10061,6 +10098,28 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
10061
10098
  };
10062
10099
  };
10063
10100
  };
10101
+ } & {
10102
+ delay: {
10103
+ status: {
10104
+ get: {
10105
+ body: unknown;
10106
+ params: {};
10107
+ query: unknown;
10108
+ headers: unknown;
10109
+ response: {
10110
+ 200: {
10111
+ [x: number]: {
10112
+ live: string;
10113
+ tree: string;
10114
+ lastTree: string;
10115
+ endOfDisputePeriod: number;
10116
+ delayed: Awaited<ReturnType<typeof import("../modules/v4/status").StatusService.findManyDelay>>;
10117
+ };
10118
+ };
10119
+ };
10120
+ };
10121
+ };
10122
+ };
10064
10123
  };
10065
10124
  };
10066
10125
  } & {
@@ -12829,7 +12888,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
12829
12888
  fetch?: RequestInit | undefined;
12830
12889
  }) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
12831
12890
  200: {
12832
- [x: string]: {
12891
+ [x: number]: {
12833
12892
  rewardCount: number;
12834
12893
  breakdownCount: number;
12835
12894
  };
@@ -13646,6 +13705,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
13646
13705
  live: string;
13647
13706
  tree: string;
13648
13707
  lastTree: string;
13708
+ endOfDisputePeriod: number;
13649
13709
  };
13650
13710
  };
13651
13711
  }>>;
@@ -14077,6 +14137,23 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
14077
14137
  }[];
14078
14138
  }>>;
14079
14139
  };
14140
+ status: {
14141
+ get: (options?: {
14142
+ headers?: Record<string, unknown> | undefined;
14143
+ query?: Record<string, unknown> | undefined;
14144
+ fetch?: RequestInit | undefined;
14145
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
14146
+ 200: {
14147
+ [x: number]: {
14148
+ live: string;
14149
+ tree: string;
14150
+ lastTree: string;
14151
+ endOfDisputePeriod: number;
14152
+ delayed: Awaited<ReturnType<typeof import("../modules/v4/status").StatusService.findManyDelay>>;
14153
+ };
14154
+ };
14155
+ }>>;
14156
+ };
14080
14157
  };
14081
14158
  };
14082
14159
  liquidity: {
@@ -15853,7 +15930,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
15853
15930
  fetch?: RequestInit | undefined;
15854
15931
  }) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
15855
15932
  200: {
15856
- [x: string]: {
15933
+ [x: number]: {
15857
15934
  rewardCount: number;
15858
15935
  breakdownCount: number;
15859
15936
  };
@@ -16670,6 +16747,7 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
16670
16747
  live: string;
16671
16748
  tree: string;
16672
16749
  lastTree: string;
16750
+ endOfDisputePeriod: number;
16673
16751
  };
16674
16752
  };
16675
16753
  }>>;
@@ -17101,6 +17179,23 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
17101
17179
  }[];
17102
17180
  }>>;
17103
17181
  };
17182
+ status: {
17183
+ get: (options?: {
17184
+ headers?: Record<string, unknown> | undefined;
17185
+ query?: Record<string, unknown> | undefined;
17186
+ fetch?: RequestInit | undefined;
17187
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
17188
+ 200: {
17189
+ [x: number]: {
17190
+ live: string;
17191
+ tree: string;
17192
+ lastTree: string;
17193
+ endOfDisputePeriod: number;
17194
+ delayed: Awaited<ReturnType<typeof import("../modules/v4/status").StatusService.findManyDelay>>;
17195
+ };
17196
+ };
17197
+ }>>;
17198
+ };
17104
17199
  };
17105
17200
  };
17106
17201
  liquidity: {
@@ -1970,7 +1970,7 @@ declare const app: Elysia<"", false, {
1970
1970
  };
1971
1971
  response: {
1972
1972
  200: {
1973
- [x: string]: {
1973
+ [x: number]: {
1974
1974
  rewardCount: number;
1975
1975
  breakdownCount: number;
1976
1976
  };
@@ -2779,6 +2779,7 @@ declare const app: Elysia<"", false, {
2779
2779
  live: string;
2780
2780
  tree: string;
2781
2781
  lastTree: string;
2782
+ endOfDisputePeriod: number;
2782
2783
  };
2783
2784
  };
2784
2785
  };
@@ -3324,6 +3325,28 @@ declare const app: Elysia<"", false, {
3324
3325
  };
3325
3326
  };
3326
3327
  };
3328
+ } & {
3329
+ delay: {
3330
+ status: {
3331
+ get: {
3332
+ body: unknown;
3333
+ params: {};
3334
+ query: unknown;
3335
+ headers: unknown;
3336
+ response: {
3337
+ 200: {
3338
+ [x: number]: {
3339
+ live: string;
3340
+ tree: string;
3341
+ lastTree: string;
3342
+ endOfDisputePeriod: number;
3343
+ delayed: Awaited<ReturnType<typeof import("./modules/v4/status").StatusService.findManyDelay>>;
3344
+ };
3345
+ };
3346
+ };
3347
+ };
3348
+ };
3349
+ };
3327
3350
  };
3328
3351
  };
3329
3352
  } & {
@@ -6,6 +6,7 @@ import { OpportunityService } from "../opportunity";
6
6
  import { InvalidParameter } from "../../../utils/error";
7
7
  import { executeSimple } from "../../../utils/execute";
8
8
  import { log } from "../../../utils/logger";
9
+ import { apiDbClient } from "../../../utils/prisma";
9
10
  import { NETWORK_LABELS, } from "@sdk";
10
11
  import { utils } from "ethers";
11
12
  import moment from "moment";
@@ -151,6 +152,17 @@ export class CampaignService {
151
152
  return await CampaignRepository.findUniqueOrThrow(id);
152
153
  }
153
154
  static async findCampaignsToProcess(distributionChainId) {
155
+ await apiDbClient.campaignStatus.updateMany({
156
+ data: {
157
+ status: "SUCCESS",
158
+ },
159
+ where: {
160
+ Campaign: {
161
+ distributionChainId: 1,
162
+ },
163
+ status: "PROCESSING",
164
+ },
165
+ });
154
166
  return (await CampaignRepository.findCampaignsToProcess(distributionChainId)).filter(campaign => campaign.endTimestamp > campaign?.CampaignStatus?.[0]?.computedUntil);
155
167
  }
156
168
  static async findNextCampaignToProcess(chainId) {
@@ -48,6 +48,7 @@ export declare const MerklRootController: Elysia<"/roots", false, {
48
48
  live: string;
49
49
  tree: string;
50
50
  lastTree: string;
51
+ endOfDisputePeriod: number;
51
52
  };
52
53
  };
53
54
  };
@@ -17,6 +17,7 @@ export declare class MerklRootRepository {
17
17
  live: any;
18
18
  tree: any;
19
19
  lastTree: any;
20
+ endOfDisputePeriod: any;
20
21
  }>;
21
22
  static create(x: CreateRootModel): Promise<{
22
23
  timestamp: bigint;
@@ -24,9 +24,8 @@ export class MerklRootRepository {
24
24
  return [res[0], res[1]];
25
25
  }
26
26
  static async fetch(chainId) {
27
- const live = await DistributorService(chainId).fetchLiveMerklRoot();
28
- const [tree, lastTree] = await DistributorService(chainId).fetchTreeAndLastTreeMerklRoots();
29
- return { live, tree, lastTree };
27
+ const { live, tree, lastTree, endOfDisputePeriod } = await DistributorService(chainId).fetchUpdateData();
28
+ return { live, tree, lastTree, endOfDisputePeriod };
30
29
  }
31
30
  static async create(x) {
32
31
  return await apiDbClient.merklRoot.create({
@@ -1,4 +1,3 @@
1
- import type { CacheKeys } from "../../../cache/keys";
2
1
  import type { ChainId } from "@sdk";
3
2
  import type { CreateRootModel, RootByTimestampModel } from "./merklRoot.model";
4
3
  export declare class MerklRootService {
@@ -19,7 +18,12 @@ export declare class MerklRootService {
19
18
  * @param chainId to fetch roots for
20
19
  * @returns object with live and last tree roots
21
20
  */
22
- static fetch(chainId: ChainId): Promise<CacheKeys["CurrentRoot"]["returns"]>;
21
+ static fetch(chainId: ChainId): Promise<{
22
+ live: any;
23
+ tree: any;
24
+ lastTree: any;
25
+ endOfDisputePeriod: any;
26
+ }>;
23
27
  /**
24
28
  * Fetch all roots for the provided chains
25
29
  * @param chainIds to fetch roots for
@@ -29,6 +33,7 @@ export declare class MerklRootService {
29
33
  live: string;
30
34
  tree: string;
31
35
  lastTree: string;
36
+ endOfDisputePeriod: number;
32
37
  }>>;
33
38
  static create(x: CreateRootModel): Promise<{
34
39
  timestamp: bigint;
@@ -325,7 +325,7 @@ export declare const RewardController: Elysia<"/rewards", false, {
325
325
  };
326
326
  response: {
327
327
  200: {
328
- [x: string]: {
328
+ [x: number]: {
329
329
  rewardCount: number;
330
330
  breakdownCount: number;
331
331
  };
@@ -537,7 +537,7 @@ export declare abstract class RewardService {
537
537
  }[]>;
538
538
  static registerClaims(claims: RegisterClaimsModel): Promise<void>;
539
539
  static countOnChain(chainId: number): Promise<{
540
- [x: string]: {
540
+ [x: number]: {
541
541
  rewardCount: number;
542
542
  breakdownCount: number;
543
543
  };
@@ -1840,7 +1840,7 @@ export declare const v4: Elysia<"/v4", false, {
1840
1840
  };
1841
1841
  response: {
1842
1842
  200: {
1843
- [x: string]: {
1843
+ [x: number]: {
1844
1844
  rewardCount: number;
1845
1845
  breakdownCount: number;
1846
1846
  };
@@ -2649,6 +2649,7 @@ export declare const v4: Elysia<"/v4", false, {
2649
2649
  live: string;
2650
2650
  tree: string;
2651
2651
  lastTree: string;
2652
+ endOfDisputePeriod: number;
2652
2653
  };
2653
2654
  };
2654
2655
  };
@@ -3194,6 +3195,28 @@ export declare const v4: Elysia<"/v4", false, {
3194
3195
  };
3195
3196
  };
3196
3197
  };
3198
+ } & {
3199
+ delay: {
3200
+ status: {
3201
+ get: {
3202
+ body: unknown;
3203
+ params: {};
3204
+ query: unknown;
3205
+ headers: unknown;
3206
+ response: {
3207
+ 200: {
3208
+ [x: number]: {
3209
+ live: string;
3210
+ tree: string;
3211
+ lastTree: string;
3212
+ endOfDisputePeriod: number;
3213
+ delayed: Awaited<ReturnType<typeof import("./status").StatusService.findManyDelay>>;
3214
+ };
3215
+ };
3216
+ };
3217
+ };
3218
+ };
3219
+ };
3197
3220
  };
3198
3221
  };
3199
3222
  } & {
@@ -1,4 +1,5 @@
1
1
  import Elysia from "elysia";
2
+ import { StatusService } from "./status.service";
2
3
  export declare const StatusController: Elysia<"/campaign-status", false, {
3
4
  decorator: {};
4
5
  store: {};
@@ -149,6 +150,28 @@ export declare const StatusController: Elysia<"/campaign-status", false, {
149
150
  };
150
151
  };
151
152
  };
153
+ } & {
154
+ delay: {
155
+ status: {
156
+ get: {
157
+ body: unknown;
158
+ params: {};
159
+ query: unknown;
160
+ headers: unknown;
161
+ response: {
162
+ 200: {
163
+ [x: number]: {
164
+ live: string;
165
+ tree: string;
166
+ lastTree: string;
167
+ endOfDisputePeriod: number;
168
+ delayed: Awaited<ReturnType<typeof StatusService.findManyDelay>>;
169
+ };
170
+ };
171
+ };
172
+ };
173
+ };
174
+ };
152
175
  };
153
176
  }, {
154
177
  derive: {};
@@ -33,7 +33,8 @@ export const StatusController = new Elysia({ prefix: "/campaign-status", detail:
33
33
  })
34
34
  // ─── Fetch information about delays ────────────────────────────────────
35
35
  .group("/delay", app => {
36
- return app.get("/", async ({ query }) => StatusService.findManyDelay(query), {
36
+ return app
37
+ .get("/", async ({ query }) => StatusService.findManyDelay(query), {
37
38
  query: DelayDto,
38
39
  beforeHandle: ({ query }) => {
39
40
  if (!!query.chainId) {
@@ -41,5 +42,8 @@ export const StatusController = new Elysia({ prefix: "/campaign-status", detail:
41
42
  }
42
43
  },
43
44
  detail: { hide: true },
45
+ })
46
+ .get("/status", async () => StatusService.findUpdatesAndDelays(), {
47
+ detail: { hide: true },
44
48
  });
45
49
  });
@@ -35,6 +35,13 @@ export declare class StatusService {
35
35
  } | null>;
36
36
  static update(campaignUnique: CampaignUnique, status: UpdateStatusModel): Promise<void>;
37
37
  static isSafeForOverlaps(campaignUnique: CampaignUnique): Promise<boolean>;
38
+ static findUpdatesAndDelays(): Promise<Record<number, {
39
+ live: string;
40
+ tree: string;
41
+ lastTree: string;
42
+ endOfDisputePeriod: number;
43
+ delayed: Awaited<ReturnType<typeof StatusService.findManyDelay>>;
44
+ }>>;
38
45
  static findManyDelay(query: DelayModel): Promise<{
39
46
  delay: number;
40
47
  delayFormatted: string;
@@ -1,7 +1,8 @@
1
1
  import { RunStatus } from "../../../../database/api/.generated";
2
- import { MAX_COMPUTE_JOB_TIME } from "@sdk";
2
+ import { HOUR, MAX_COMPUTE_JOB_TIME } from "@sdk";
3
3
  import moment from "moment";
4
4
  import { CampaignService } from "../campaign";
5
+ import { MerklRootService } from "../merklRoot";
5
6
  import { StatusRepository } from "./status.repository";
6
7
  export class StatusService {
7
8
  static async findMany(query) {
@@ -54,6 +55,20 @@ export class StatusService {
54
55
  }
55
56
  return true;
56
57
  }
58
+ static async findUpdatesAndDelays() {
59
+ const merklRoots = await MerklRootService.fetchAll();
60
+ const delayedCampaignPromises = await Promise.allSettled(Object.keys(merklRoots).map(chainId => StatusService.findManyDelay({ chainId: Number.parseInt(chainId), delayLowerBound: 4 * HOUR })));
61
+ const res = {};
62
+ for (const [index, chainId] of Object.keys(merklRoots).entries()) {
63
+ if (delayedCampaignPromises[index].status === "rejected")
64
+ continue;
65
+ res[Number.parseInt(chainId)] = {
66
+ ...merklRoots[Number.parseInt(chainId)],
67
+ delayed: delayedCampaignPromises[index].value,
68
+ };
69
+ }
70
+ return res;
71
+ }
57
72
  static async findManyDelay(query) {
58
73
  const now = moment().unix();
59
74
  return (await StatusRepository.findManyDelay(query))