@merkl/api 0.21.4 → 0.21.5
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.
- package/dist/database/api/.generated/edge.js +2 -2
- package/dist/database/api/.generated/index.js +2 -2
- package/dist/database/api/.generated/package.json +1 -1
- package/dist/database/api/.generated/schema.prisma +1 -0
- package/dist/src/eden/index.d.ts +1110 -581
- package/dist/src/index.d.ts +448 -261
- package/dist/src/modules/v4/campaign/campaign.controller.d.ts +11 -2
- package/dist/src/modules/v4/campaign/campaign.controller.js +3 -3
- package/dist/src/modules/v4/campaign/campaign.repository.d.ts +44 -3
- package/dist/src/modules/v4/campaign/campaign.repository.js +46 -2
- package/dist/src/modules/v4/campaign/campaign.service.d.ts +36 -2
- package/dist/src/modules/v4/campaign/campaign.service.js +20 -8
- package/dist/src/modules/v4/creator/creator.controller.d.ts +236 -34
- package/dist/src/modules/v4/creator/creator.controller.js +28 -21
- package/dist/src/modules/v4/creator/creator.model.d.ts +29 -5
- package/dist/src/modules/v4/creator/creator.model.js +21 -1
- package/dist/src/modules/v4/creator/creator.repository.d.ts +52 -6
- package/dist/src/modules/v4/creator/creator.repository.js +16 -13
- package/dist/src/modules/v4/creator/creator.service.d.ts +161 -14
- package/dist/src/modules/v4/creator/creator.service.js +49 -11
- package/dist/src/modules/v4/dynamicData/dynamicData.service.js +1 -1
- package/dist/src/modules/v4/opportunity/opportunity.repository.js +4 -3
- package/dist/src/modules/v4/router.d.ts +448 -261
- package/dist/src/modules/v4/user/user.controller.d.ts +177 -192
- package/dist/src/modules/v4/user/user.controller.js +38 -56
- package/dist/src/modules/v4/user/user.model.d.ts +1 -1
- package/dist/src/modules/v4/user/user.model.js +1 -1
- package/dist/src/modules/v4/user/user.repository.d.ts +1 -1
- package/dist/src/modules/v4/user/user.repository.js +1 -1
- package/dist/src/modules/v4/user/user.service.d.ts +1 -1
- package/dist/tsconfig.package.tsbuildinfo +1 -1
- package/package.json +1 -1
@@ -457,7 +457,7 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
|
|
457
457
|
};
|
458
458
|
} & {
|
459
459
|
":id": {
|
460
|
-
|
460
|
+
metrics: {
|
461
461
|
get: {
|
462
462
|
body: unknown;
|
463
463
|
params: {
|
@@ -473,8 +473,17 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
|
|
473
473
|
}[];
|
474
474
|
aprRecords: {
|
475
475
|
timestamp: bigint;
|
476
|
-
|
476
|
+
apr: number;
|
477
477
|
}[];
|
478
|
+
dailyRewardsRecords: {
|
479
|
+
total: number;
|
480
|
+
timestamp: bigint;
|
481
|
+
}[];
|
482
|
+
walletCount: {
|
483
|
+
timestamp: bigint;
|
484
|
+
walletCount: number;
|
485
|
+
}[];
|
486
|
+
tvlInflowPerDollar: bigint;
|
478
487
|
};
|
479
488
|
};
|
480
489
|
};
|
@@ -100,11 +100,11 @@ export const CampaignController = new Elysia({ prefix: "/campaigns", detail: { t
|
|
100
100
|
<p>This endpoint enables you to retrieve a campaign by providing its unique identifier.</p>`,
|
101
101
|
},
|
102
102
|
})
|
103
|
-
.get("/:id/
|
103
|
+
.get("/:id/metrics", async ({ params }) => {
|
104
104
|
if (!params.id.includes("-"))
|
105
|
-
return await CampaignService.
|
105
|
+
return await CampaignService.getMetrics(params.id);
|
106
106
|
const [distributionChain, campaignId] = params.id.split("-");
|
107
|
-
return await CampaignService.
|
107
|
+
return await CampaignService.getMetrics({ distributionChain: +distributionChain, campaignId });
|
108
108
|
})
|
109
109
|
.group("/campaigns-to-process", app => {
|
110
110
|
return (app
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { CampaignUnique, CampaignWithParams, GetCampaignQueryModel } from "@/modules/v4/campaign/campaign.model";
|
1
|
+
import type { Campaign, CampaignUnique, CampaignWithParams, GetCampaignQueryModel } from "@/modules/v4/campaign/campaign.model";
|
2
2
|
import { type CampaignManualOverride, Prisma } from "@db/api";
|
3
3
|
import { type ChainId } from "@sdk";
|
4
4
|
export declare abstract class CampaignRepository {
|
@@ -333,6 +333,8 @@ export declare abstract class CampaignRepository {
|
|
333
333
|
static getPastCampaigns(query?: {
|
334
334
|
computeChainId?: number;
|
335
335
|
type?: string;
|
336
|
+
creatorId?: string;
|
337
|
+
creatorAddress?: string;
|
336
338
|
}): Promise<({
|
337
339
|
Opportunity: {
|
338
340
|
status: import("@db/api").$Enums.Status;
|
@@ -386,6 +388,8 @@ export declare abstract class CampaignRepository {
|
|
386
388
|
static getFutureCampaigns(query?: {
|
387
389
|
computeChainId?: number;
|
388
390
|
type?: string;
|
391
|
+
creatorId?: string;
|
392
|
+
creatorAddress?: string;
|
389
393
|
}): Promise<({
|
390
394
|
Opportunity: {
|
391
395
|
status: import("@db/api").$Enums.Status;
|
@@ -440,6 +444,8 @@ export declare abstract class CampaignRepository {
|
|
440
444
|
distributionChainId?: number;
|
441
445
|
computeChainId?: number;
|
442
446
|
type?: string;
|
447
|
+
creatorId?: string;
|
448
|
+
creatorAddress?: string;
|
443
449
|
}): Promise<({
|
444
450
|
RewardToken: {
|
445
451
|
symbol: string;
|
@@ -477,6 +483,28 @@ export declare abstract class CampaignRepository {
|
|
477
483
|
dailyRewards: number;
|
478
484
|
lastCampaignCreatedAt: Date;
|
479
485
|
};
|
486
|
+
RewardBreakdown: ({
|
487
|
+
Reward: {
|
488
|
+
pending: string;
|
489
|
+
id: string;
|
490
|
+
rewardTokenId: string;
|
491
|
+
amount: string;
|
492
|
+
root: string;
|
493
|
+
recipient: string;
|
494
|
+
claimed: string;
|
495
|
+
proofs: string[];
|
496
|
+
};
|
497
|
+
} & {
|
498
|
+
reason: string;
|
499
|
+
pending: string;
|
500
|
+
id: string;
|
501
|
+
campaignId: string;
|
502
|
+
amount: string;
|
503
|
+
claimed: string;
|
504
|
+
protocolId: string | null;
|
505
|
+
rewardId: string;
|
506
|
+
subCampaignId: string | null;
|
507
|
+
})[];
|
480
508
|
} & {
|
481
509
|
type: string;
|
482
510
|
description: string | null;
|
@@ -831,12 +859,25 @@ export declare abstract class CampaignRepository {
|
|
831
859
|
total: number;
|
832
860
|
timestamp: bigint;
|
833
861
|
}[]>;
|
834
|
-
static getAprRecords(campaign: {
|
862
|
+
static getAprRecords(campaign: Campaign["raw"]): Promise<{
|
863
|
+
timestamp: bigint;
|
864
|
+
apr: number;
|
865
|
+
}[]>;
|
866
|
+
static getDailyRewardsRecords(campaign: {
|
867
|
+
opportunityId: string;
|
868
|
+
startTimestamp: bigint;
|
869
|
+
endTimestamp: bigint;
|
870
|
+
}): Promise<{
|
871
|
+
total: number;
|
872
|
+
timestamp: bigint;
|
873
|
+
}[]>;
|
874
|
+
static getWalletCountOverTime(campaign: {
|
875
|
+
id: string;
|
835
876
|
opportunityId: string;
|
836
877
|
startTimestamp: bigint;
|
837
878
|
endTimestamp: bigint;
|
838
879
|
}): Promise<{
|
839
880
|
timestamp: bigint;
|
840
|
-
|
881
|
+
walletCount: number;
|
841
882
|
}[]>;
|
842
883
|
}
|
@@ -148,6 +148,7 @@ export class CampaignRepository {
|
|
148
148
|
include: {
|
149
149
|
Opportunity: true,
|
150
150
|
RewardToken: true,
|
151
|
+
RewardBreakdown: { include: { Reward: true } },
|
151
152
|
},
|
152
153
|
});
|
153
154
|
}
|
@@ -466,12 +467,55 @@ export class CampaignRepository {
|
|
466
467
|
});
|
467
468
|
}
|
468
469
|
static async getAprRecords(campaign) {
|
469
|
-
return await apiDbClient.aprRecord.findMany({
|
470
|
+
return (await apiDbClient.aprRecord.findMany({
|
470
471
|
where: {
|
471
472
|
opportunityId: campaign.opportunityId,
|
472
473
|
timestamp: { gte: campaign.startTimestamp, lte: campaign.endTimestamp },
|
473
474
|
},
|
474
|
-
select: {
|
475
|
+
select: {
|
476
|
+
timestamp: true,
|
477
|
+
AprBreakdown: {
|
478
|
+
select: {
|
479
|
+
value: true,
|
480
|
+
},
|
481
|
+
where: { type: "CAMPAIGN", identifier: campaign.campaignId },
|
482
|
+
},
|
483
|
+
},
|
484
|
+
})).map(record => ({
|
485
|
+
timestamp: record.timestamp,
|
486
|
+
apr: record.AprBreakdown[0]?.value,
|
487
|
+
}));
|
488
|
+
}
|
489
|
+
static async getDailyRewardsRecords(campaign) {
|
490
|
+
return await apiDbClient.dailyRewardsRecord.findMany({
|
491
|
+
where: {
|
492
|
+
opportunityId: campaign.opportunityId,
|
493
|
+
timestamp: { gte: campaign.startTimestamp, lte: campaign.endTimestamp },
|
494
|
+
},
|
495
|
+
select: { timestamp: true, total: true },
|
475
496
|
});
|
476
497
|
}
|
498
|
+
static async getWalletCountOverTime(campaign) {
|
499
|
+
const rewardBreakdowns = await apiDbClient.rewardBreakdown.findMany({
|
500
|
+
where: {
|
501
|
+
campaignId: campaign.id,
|
502
|
+
Reward: {
|
503
|
+
MerklRoot: { timestamp: { gte: campaign.startTimestamp, lte: campaign.endTimestamp } },
|
504
|
+
},
|
505
|
+
},
|
506
|
+
select: { Reward: { select: { recipient: true, MerklRoot: { select: { timestamp: true } } } } },
|
507
|
+
});
|
508
|
+
const walletCounts = {};
|
509
|
+
for (const { Reward } of rewardBreakdowns) {
|
510
|
+
const timestampKey = Reward.MerklRoot.timestamp.toString();
|
511
|
+
if (!walletCounts[timestampKey]) {
|
512
|
+
walletCounts[timestampKey] = new Set();
|
513
|
+
}
|
514
|
+
walletCounts[timestampKey].add(Reward.recipient);
|
515
|
+
}
|
516
|
+
return Object.entries(walletCounts).map(([timestampKey, recipients]) => ({
|
517
|
+
timestamp: BigInt(timestampKey),
|
518
|
+
walletCount: recipients.size,
|
519
|
+
}));
|
520
|
+
}
|
477
521
|
}
|
@@ -9,6 +9,7 @@ export declare abstract class CampaignService {
|
|
9
9
|
static getPastCampaigns(query?: {
|
10
10
|
computeChainId?: number;
|
11
11
|
type?: string;
|
12
|
+
creatorAddress?: string;
|
12
13
|
}): Promise<({
|
13
14
|
Opportunity: {
|
14
15
|
status: import("@db/api").$Enums.Status;
|
@@ -54,6 +55,7 @@ export declare abstract class CampaignService {
|
|
54
55
|
static getFutureCampaigns(query?: {
|
55
56
|
computeChainId?: number;
|
56
57
|
type?: string;
|
58
|
+
creatorAddress?: string;
|
57
59
|
}): Promise<({
|
58
60
|
Opportunity: {
|
59
61
|
status: import("@db/api").$Enums.Status;
|
@@ -100,6 +102,7 @@ export declare abstract class CampaignService {
|
|
100
102
|
distributionChainId?: number;
|
101
103
|
computeChainId?: number;
|
102
104
|
type?: string;
|
105
|
+
creatorAddress?: string;
|
103
106
|
}): Promise<({
|
104
107
|
RewardToken: {
|
105
108
|
symbol: string;
|
@@ -137,6 +140,28 @@ export declare abstract class CampaignService {
|
|
137
140
|
dailyRewards: number;
|
138
141
|
lastCampaignCreatedAt: Date;
|
139
142
|
};
|
143
|
+
RewardBreakdown: ({
|
144
|
+
Reward: {
|
145
|
+
pending: string;
|
146
|
+
id: string;
|
147
|
+
rewardTokenId: string;
|
148
|
+
amount: string;
|
149
|
+
root: string;
|
150
|
+
recipient: string;
|
151
|
+
claimed: string;
|
152
|
+
proofs: string[];
|
153
|
+
};
|
154
|
+
} & {
|
155
|
+
reason: string;
|
156
|
+
pending: string;
|
157
|
+
id: string;
|
158
|
+
campaignId: string;
|
159
|
+
amount: string;
|
160
|
+
claimed: string;
|
161
|
+
protocolId: string | null;
|
162
|
+
rewardId: string;
|
163
|
+
subCampaignId: string | null;
|
164
|
+
})[];
|
140
165
|
} & {
|
141
166
|
type: string;
|
142
167
|
description: string | null;
|
@@ -938,14 +963,23 @@ export declare abstract class CampaignService {
|
|
938
963
|
endTimestamp: any;
|
939
964
|
params: string;
|
940
965
|
};
|
941
|
-
static
|
966
|
+
static getMetrics(campaignId: CampaignUnique | string): Promise<{
|
942
967
|
tvlRecords: {
|
943
968
|
total: number;
|
944
969
|
timestamp: bigint;
|
945
970
|
}[];
|
946
971
|
aprRecords: {
|
947
972
|
timestamp: bigint;
|
948
|
-
|
973
|
+
apr: number;
|
974
|
+
}[];
|
975
|
+
dailyRewardsRecords: {
|
976
|
+
total: number;
|
977
|
+
timestamp: bigint;
|
978
|
+
}[];
|
979
|
+
walletCount: {
|
980
|
+
timestamp: bigint;
|
981
|
+
walletCount: number;
|
949
982
|
}[];
|
983
|
+
tvlInflowPerDollar: bigint;
|
950
984
|
}>;
|
951
985
|
}
|
@@ -40,9 +40,8 @@ export class CampaignService {
|
|
40
40
|
const [rewardToken] = await TokenService.findManyOrCreate([
|
41
41
|
{ chainId: body.chainId, address: body.rewardTokenAddress },
|
42
42
|
]);
|
43
|
-
if (!rewardToken)
|
43
|
+
if (!rewardToken)
|
44
44
|
throw new Error(`unable to fetch data for token ${body.rewardTokenAddress}`);
|
45
|
-
}
|
46
45
|
const chain = await ChainService.findUniqueOrThrow(body.chainId);
|
47
46
|
const params = JSON.parse(body.params);
|
48
47
|
const campaign = {
|
@@ -73,8 +72,7 @@ export class CampaignService {
|
|
73
72
|
if (dryRun)
|
74
73
|
return opportunity;
|
75
74
|
}
|
76
|
-
catch (
|
77
|
-
console.error(e);
|
75
|
+
catch (_err) {
|
78
76
|
throw new CannotParseOpportunity(campaign.campaignId, campaign.distributionChainId, campaign.type);
|
79
77
|
}
|
80
78
|
return await CampaignRepository.upsert(campaign, body.opportunityIdentifier);
|
@@ -388,11 +386,25 @@ export class CampaignService {
|
|
388
386
|
params: JSON.stringify(fakeCampaign.campaignParameters),
|
389
387
|
};
|
390
388
|
}
|
391
|
-
static async
|
389
|
+
static async getMetrics(campaignId) {
|
392
390
|
const id = typeof campaignId === "string" ? campaignId : CampaignService.hashId(campaignId);
|
393
391
|
const campaign = await CampaignRepository.findUniqueOrThrow(id, false);
|
394
|
-
const tvlRecords = await
|
395
|
-
|
396
|
-
|
392
|
+
const [tvlRecords, aprRecords, dailyRewardsRecords, walletCount] = await Promise.all([
|
393
|
+
CampaignRepository.getTvlRecords(campaign),
|
394
|
+
CampaignRepository.getAprRecords(campaign),
|
395
|
+
CampaignRepository.getDailyRewardsRecords(campaign),
|
396
|
+
CampaignRepository.getWalletCountOverTime(campaign),
|
397
|
+
]);
|
398
|
+
return {
|
399
|
+
tvlRecords,
|
400
|
+
aprRecords,
|
401
|
+
dailyRewardsRecords,
|
402
|
+
walletCount,
|
403
|
+
tvlInflowPerDollar: tvlRecords.length > 1
|
404
|
+
? (BigInt(tvlRecords[tvlRecords.length - 1].total) - BigInt(tvlRecords[0].total)) /
|
405
|
+
((BigInt(campaign.amount) / BigInt(10 ** campaign.RewardToken.decimals)) *
|
406
|
+
BigInt(campaign.RewardToken.price ?? 1))
|
407
|
+
: 0n,
|
408
|
+
};
|
397
409
|
}
|
398
410
|
}
|
@@ -12,12 +12,39 @@ export declare const CreatorController: Elysia<"/creators", false, {
|
|
12
12
|
macro: {};
|
13
13
|
macroFn: {};
|
14
14
|
}, {
|
15
|
+
creators: {
|
16
|
+
index: {
|
17
|
+
post: {
|
18
|
+
body: {
|
19
|
+
icon?: string | undefined;
|
20
|
+
name: string;
|
21
|
+
id: string;
|
22
|
+
addresses: string[];
|
23
|
+
};
|
24
|
+
params: {};
|
25
|
+
query: unknown;
|
26
|
+
headers: {
|
27
|
+
authorization: string;
|
28
|
+
};
|
29
|
+
response: {
|
30
|
+
200: {
|
31
|
+
name: string;
|
32
|
+
id: string;
|
33
|
+
icon: string | null;
|
34
|
+
rebateFee: number;
|
35
|
+
};
|
36
|
+
};
|
37
|
+
};
|
38
|
+
};
|
39
|
+
};
|
40
|
+
} & {
|
15
41
|
creators: {
|
16
42
|
index: {
|
17
43
|
get: {
|
18
44
|
body: unknown;
|
19
45
|
params: {};
|
20
46
|
query: {
|
47
|
+
id?: string | undefined;
|
21
48
|
items?: number | undefined;
|
22
49
|
page?: number | undefined;
|
23
50
|
address?: string | undefined;
|
@@ -25,12 +52,14 @@ export declare const CreatorController: Elysia<"/creators", false, {
|
|
25
52
|
headers: unknown;
|
26
53
|
response: {
|
27
54
|
200: ({
|
55
|
+
Users: {
|
56
|
+
address: string;
|
57
|
+
}[];
|
58
|
+
} & {
|
28
59
|
name: string;
|
29
60
|
id: string;
|
30
|
-
|
31
|
-
|
32
|
-
icon?: string | undefined;
|
33
|
-
rebateFee?: number | undefined;
|
61
|
+
icon: string | null;
|
62
|
+
rebateFee: number;
|
34
63
|
})[];
|
35
64
|
};
|
36
65
|
};
|
@@ -38,21 +67,25 @@ export declare const CreatorController: Elysia<"/creators", false, {
|
|
38
67
|
};
|
39
68
|
} & {
|
40
69
|
creators: {
|
41
|
-
":
|
70
|
+
":address": {
|
42
71
|
get: {
|
43
72
|
body: unknown;
|
44
73
|
params: {
|
45
|
-
|
74
|
+
address: string;
|
46
75
|
};
|
47
76
|
query: unknown;
|
48
77
|
headers: unknown;
|
49
78
|
response: {
|
50
79
|
200: {
|
80
|
+
Users: {
|
81
|
+
tags: string[];
|
82
|
+
address: string;
|
83
|
+
creatorId: string | null;
|
84
|
+
}[];
|
51
85
|
name: string;
|
52
86
|
id: string;
|
53
|
-
|
54
|
-
|
55
|
-
rebateFee?: number | undefined;
|
87
|
+
icon: string | null;
|
88
|
+
rebateFee: number;
|
56
89
|
};
|
57
90
|
};
|
58
91
|
};
|
@@ -60,16 +93,16 @@ export declare const CreatorController: Elysia<"/creators", false, {
|
|
60
93
|
};
|
61
94
|
} & {
|
62
95
|
creators: {
|
63
|
-
|
64
|
-
|
96
|
+
":address": {
|
97
|
+
patch: {
|
65
98
|
body: {
|
66
99
|
icon?: string | undefined;
|
67
|
-
rebateFee?: number | undefined;
|
68
100
|
name: string;
|
69
|
-
id: string;
|
70
101
|
addresses: string[];
|
71
102
|
};
|
72
|
-
params: {
|
103
|
+
params: {
|
104
|
+
address: string;
|
105
|
+
};
|
73
106
|
query: unknown;
|
74
107
|
headers: {
|
75
108
|
authorization: string;
|
@@ -87,15 +120,11 @@ export declare const CreatorController: Elysia<"/creators", false, {
|
|
87
120
|
};
|
88
121
|
} & {
|
89
122
|
creators: {
|
90
|
-
":
|
91
|
-
|
92
|
-
body:
|
93
|
-
icon?: string | undefined;
|
94
|
-
name: string;
|
95
|
-
addresses: string[];
|
96
|
-
};
|
123
|
+
":address": {
|
124
|
+
delete: {
|
125
|
+
body: unknown;
|
97
126
|
params: {
|
98
|
-
|
127
|
+
address: string;
|
99
128
|
};
|
100
129
|
query: unknown;
|
101
130
|
headers: {
|
@@ -114,25 +143,198 @@ export declare const CreatorController: Elysia<"/creators", false, {
|
|
114
143
|
};
|
115
144
|
} & {
|
116
145
|
creators: {
|
117
|
-
":
|
118
|
-
|
119
|
-
|
120
|
-
body:
|
121
|
-
|
146
|
+
":address": {
|
147
|
+
dashboard: {
|
148
|
+
get: {
|
149
|
+
body: unknown;
|
150
|
+
params: {
|
151
|
+
address: string;
|
122
152
|
};
|
153
|
+
query: unknown;
|
154
|
+
headers: unknown;
|
155
|
+
response: {
|
156
|
+
200: {
|
157
|
+
pastCampaigns: number;
|
158
|
+
liveCampaigns: number;
|
159
|
+
futureCampaigns: number;
|
160
|
+
incentivizedTvl: number;
|
161
|
+
totalCampaigns: number;
|
162
|
+
creatorId: string | null;
|
163
|
+
};
|
164
|
+
};
|
165
|
+
};
|
166
|
+
};
|
167
|
+
};
|
168
|
+
};
|
169
|
+
} & {
|
170
|
+
creators: {
|
171
|
+
":address": {
|
172
|
+
campaigns: {
|
173
|
+
get: {
|
174
|
+
body: unknown;
|
175
|
+
params: {
|
176
|
+
address: string;
|
177
|
+
};
|
178
|
+
query: {
|
179
|
+
status?: "PAST" | "LIVE" | "FUTURE" | undefined;
|
180
|
+
};
|
181
|
+
headers: unknown;
|
182
|
+
response: {
|
183
|
+
200: ({
|
184
|
+
Opportunity: {
|
185
|
+
status: import("@db/api").$Enums.Status;
|
186
|
+
type: string;
|
187
|
+
name: string;
|
188
|
+
description: string;
|
189
|
+
id: string;
|
190
|
+
tags: string[];
|
191
|
+
identifier: string;
|
192
|
+
action: import("@db/api").$Enums.OpportunityAction;
|
193
|
+
manualOverrides: import("@db/api").$Enums.OpportunityManualOverride[];
|
194
|
+
chainId: number;
|
195
|
+
howToSteps: string[];
|
196
|
+
depositUrl: string | null;
|
197
|
+
explorerAddress: string | null;
|
198
|
+
mainProtocolId: string | null;
|
199
|
+
tvl: number;
|
200
|
+
apr: number;
|
201
|
+
dailyRewards: number;
|
202
|
+
lastCampaignCreatedAt: Date;
|
203
|
+
};
|
204
|
+
} & {
|
205
|
+
type: string;
|
206
|
+
description: string | null;
|
207
|
+
id: string;
|
208
|
+
params: import("database/api/.generated/runtime/library").JsonValue;
|
209
|
+
subType: number | null;
|
210
|
+
computeChainId: number;
|
211
|
+
distributionChainId: number;
|
212
|
+
campaignId: string;
|
213
|
+
distributionType: import("@db/api").$Enums.DistributionType;
|
214
|
+
rewardTokenId: string;
|
215
|
+
amount: string;
|
216
|
+
opportunityId: string;
|
217
|
+
startTimestamp: bigint;
|
218
|
+
endTimestamp: bigint;
|
219
|
+
creatorAddress: string;
|
220
|
+
manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
|
221
|
+
createdAt: Date;
|
222
|
+
rootCampaignId: string | null;
|
223
|
+
parentCampaignId: string | null;
|
224
|
+
})[] | {
|
225
|
+
params: any;
|
226
|
+
chain: {
|
227
|
+
name: string;
|
228
|
+
id: number;
|
229
|
+
icon: string;
|
230
|
+
};
|
231
|
+
endTimestamp: number;
|
232
|
+
startTimestamp: number;
|
233
|
+
rewardToken: {
|
234
|
+
symbol: string;
|
235
|
+
name: string | null;
|
236
|
+
id: string;
|
237
|
+
icon: string;
|
238
|
+
address: string;
|
239
|
+
chainId: number;
|
240
|
+
decimals: number;
|
241
|
+
verified: boolean;
|
242
|
+
isTest: boolean;
|
243
|
+
isPoint: boolean;
|
244
|
+
isPreTGE: boolean;
|
245
|
+
isNative: boolean;
|
246
|
+
} & {
|
247
|
+
price?: number | null | undefined;
|
248
|
+
};
|
249
|
+
distributionChain: {
|
250
|
+
name: string;
|
251
|
+
id: number;
|
252
|
+
icon: string;
|
253
|
+
} | undefined;
|
254
|
+
campaignStatus: {
|
255
|
+
computedUntil: number;
|
256
|
+
processingStarted: number;
|
257
|
+
status: import("@db/api").$Enums.RunStatus;
|
258
|
+
error: string;
|
259
|
+
details: import("database/api/.generated/runtime/library").JsonValue;
|
260
|
+
campaignId: string;
|
261
|
+
} | undefined;
|
262
|
+
creatorAddress: string;
|
263
|
+
creator: {
|
264
|
+
tags: string[];
|
265
|
+
address: string;
|
266
|
+
creatorId: string | null;
|
267
|
+
};
|
268
|
+
createdAt: string;
|
269
|
+
description: string | undefined;
|
270
|
+
parentCampaignId: string | undefined;
|
271
|
+
rootCampaignId: string | undefined;
|
272
|
+
Opportunity: {
|
273
|
+
status: import("@db/api").$Enums.Status;
|
274
|
+
type: string;
|
275
|
+
name: string;
|
276
|
+
description: string;
|
277
|
+
id: string;
|
278
|
+
tags: string[];
|
279
|
+
identifier: string;
|
280
|
+
action: import("@db/api").$Enums.OpportunityAction;
|
281
|
+
manualOverrides: import("@db/api").$Enums.OpportunityManualOverride[];
|
282
|
+
chainId: number;
|
283
|
+
howToSteps: string[];
|
284
|
+
depositUrl: string | null;
|
285
|
+
explorerAddress: string | null;
|
286
|
+
mainProtocolId: string | null;
|
287
|
+
tvl: number;
|
288
|
+
apr: number;
|
289
|
+
dailyRewards: number;
|
290
|
+
lastCampaignCreatedAt: Date;
|
291
|
+
};
|
292
|
+
type: string;
|
293
|
+
id: string;
|
294
|
+
subType: number | null;
|
295
|
+
computeChainId: number;
|
296
|
+
distributionChainId: number;
|
297
|
+
campaignId: string;
|
298
|
+
distributionType: import("@db/api").$Enums.DistributionType;
|
299
|
+
rewardTokenId: string;
|
300
|
+
amount: string;
|
301
|
+
opportunityId: string;
|
302
|
+
}[];
|
303
|
+
};
|
304
|
+
};
|
305
|
+
};
|
306
|
+
};
|
307
|
+
};
|
308
|
+
} & {
|
309
|
+
creators: {
|
310
|
+
campaigns: {
|
311
|
+
":id": {
|
312
|
+
get: {
|
313
|
+
body: unknown;
|
123
314
|
params: {
|
124
315
|
id: string;
|
125
316
|
};
|
126
317
|
query: unknown;
|
127
|
-
headers:
|
128
|
-
authorization: string;
|
129
|
-
};
|
318
|
+
headers: unknown;
|
130
319
|
response: {
|
131
320
|
200: {
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
321
|
+
tvlRecords: {
|
322
|
+
total: number;
|
323
|
+
timestamp: bigint;
|
324
|
+
}[];
|
325
|
+
aprRecords: {
|
326
|
+
timestamp: bigint;
|
327
|
+
apr: number;
|
328
|
+
}[];
|
329
|
+
dailyRewardsRecords: {
|
330
|
+
total: number;
|
331
|
+
timestamp: bigint;
|
332
|
+
}[];
|
333
|
+
walletCount: {
|
334
|
+
timestamp: bigint;
|
335
|
+
walletCount: number;
|
336
|
+
}[];
|
337
|
+
tvlInflowPerDollar: bigint;
|
136
338
|
};
|
137
339
|
};
|
138
340
|
};
|