@merkl/api 0.20.172 → 0.20.173

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.
@@ -107,6 +107,8 @@ export declare const CreateCampaignDto: import("@sinclair/typebox").TObject<{
107
107
  computeChainId: import("@sinclair/typebox").TNumber;
108
108
  chainId: import("@sinclair/typebox").TNumber;
109
109
  campaignId: import("@sinclair/typebox").TString;
110
+ rootCampaignId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
111
+ parentCampaignId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
110
112
  identifier: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
111
113
  creator: import("@sinclair/typebox").TString;
112
114
  type: import("@sinclair/typebox").TNumber;
@@ -168,6 +170,8 @@ export declare const GetCampaignQueryDto: import("@sinclair/typebox").TObject<{
168
170
  endTimestamp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
169
171
  withOpportunity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
170
172
  createdAfter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNull]>>;
173
+ rootCampaignId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
174
+ parentCampaignId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
171
175
  page: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
172
176
  items: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
173
177
  }>;
@@ -55,6 +55,8 @@ export const CreateCampaignDto = t.Object({
55
55
  computeChainId: t.Number(),
56
56
  chainId: t.Number(),
57
57
  campaignId: t.String(),
58
+ rootCampaignId: t.Optional(t.String()),
59
+ parentCampaignId: t.Optional(t.String()),
58
60
  identifier: t.Optional(t.String()),
59
61
  creator: t.String(),
60
62
  type: t.Numeric(),
@@ -126,6 +128,12 @@ export const GetCampaignQueryDto = t.Object({
126
128
  description: "Include opportunity data. Will slow down the request. Default: false",
127
129
  })),
128
130
  createdAfter: t.Optional(t.Union([t.Date({ description: "Return campaigns created after the given date. Format: YYYY-MM-DD" }), t.Null()])),
131
+ rootCampaignId: t.Optional(t.String({
132
+ description: "Filter campaigns by rootCampaignId. This only return subcampaigns.",
133
+ })),
134
+ parentCampaignId: t.Optional(t.String({
135
+ description: "Filter campaigns by parentCampaignId. This only return subcampaigns.",
136
+ })),
129
137
  page: t.Optional(t.Numeric({ description: "0-indexed page number", default: 0 })),
130
138
  items: t.Optional(t.Numeric({ description: "Number of items returned by page", default: 20 })), // items per page
131
139
  });
@@ -7,6 +7,14 @@ export declare abstract class CampaignRepository {
7
7
  createdAt: {
8
8
  gte: Date;
9
9
  } | undefined;
10
+ rootCampaignId: {
11
+ equals: string;
12
+ mode: "insensitive";
13
+ } | undefined;
14
+ parentCampaignId: {
15
+ equals: string;
16
+ mode: "insensitive";
17
+ } | undefined;
10
18
  endTimestamp: {
11
19
  gte: number;
12
20
  lt?: undefined;
@@ -80,6 +88,14 @@ export declare abstract class CampaignRepository {
80
88
  createdAt: {
81
89
  gte: Date;
82
90
  } | undefined;
91
+ rootCampaignId: {
92
+ equals: string;
93
+ mode: "insensitive";
94
+ } | undefined;
95
+ parentCampaignId: {
96
+ equals: string;
97
+ mode: "insensitive";
98
+ } | undefined;
83
99
  endTimestamp: {
84
100
  lt: number;
85
101
  gte?: undefined;
@@ -149,6 +165,14 @@ export declare abstract class CampaignRepository {
149
165
  createdAt: {
150
166
  gte: Date;
151
167
  } | undefined;
168
+ rootCampaignId: {
169
+ equals: string;
170
+ mode: "insensitive";
171
+ } | undefined;
172
+ parentCampaignId: {
173
+ equals: string;
174
+ mode: "insensitive";
175
+ } | undefined;
152
176
  startTimestamp: {
153
177
  gt: number;
154
178
  lte?: undefined;
@@ -219,6 +243,14 @@ export declare abstract class CampaignRepository {
219
243
  createdAt: {
220
244
  gte: Date;
221
245
  } | undefined;
246
+ rootCampaignId: {
247
+ equals: string;
248
+ mode: "insensitive";
249
+ } | undefined;
250
+ parentCampaignId: {
251
+ equals: string;
252
+ mode: "insensitive";
253
+ } | undefined;
222
254
  endTimestamp: {
223
255
  gte: number;
224
256
  lt?: undefined;
@@ -7,7 +7,7 @@ import { MAX_COMPUTE_JOB_TIME } from "@sdk";
7
7
  import moment from "moment";
8
8
  export class CampaignRepository {
9
9
  static transformQueryToPrismaFilters(query) {
10
- const { creatorTag, creatorId, creatorAddress, chainId, distributionChainIds, endTimestamp, opportunityId, mainParameter, campaignId, startTimestamp, status, subType, type, types, tokenAddress, tokenSymbol, test, createdAfter, point, } = query;
10
+ const { creatorTag, creatorId, creatorAddress, chainId, distributionChainIds, endTimestamp, opportunityId, mainParameter, campaignId, startTimestamp, status, subType, type, types, tokenAddress, tokenSymbol, test, createdAfter, point, rootCampaignId, parentCampaignId, } = query;
11
11
  const getTagFilter = () => {
12
12
  if (creatorTag && creatorId)
13
13
  return {
@@ -67,6 +67,8 @@ export class CampaignRepository {
67
67
  Creator: getTagFilter(),
68
68
  ...timeFilter,
69
69
  createdAt: createdAfter ? { gte: createdAfter } : undefined,
70
+ rootCampaignId: rootCampaignId ? { equals: rootCampaignId, mode: "insensitive" } : undefined,
71
+ parentCampaignId: parentCampaignId ? { equals: parentCampaignId, mode: "insensitive" } : undefined,
70
72
  },
71
73
  };
72
74
  }
@@ -61,6 +61,8 @@ export class CampaignService {
61
61
  creatorAddress: body.creator,
62
62
  createdAt: new Date().toISOString(),
63
63
  chain,
64
+ parentCampaignId: body.parentCampaignId,
65
+ rootCampaignId: body.rootCampaignId,
64
66
  };
65
67
  // Separate Worldchain ID only campaign opportunities
66
68
  if (campaign.params.hooks?.some(hook => hook.hookType === HOOK.WORLDCHAINID)) {
@@ -791,6 +791,8 @@ export declare const OpportunityController: Elysia<"/opportunities", false, {
791
791
  startTimestamp?: string | undefined;
792
792
  endTimestamp?: string | undefined;
793
793
  creatorAddress?: string | undefined;
794
+ rootCampaignId?: string | undefined;
795
+ parentCampaignId?: string | undefined;
794
796
  chainId?: number | undefined;
795
797
  creatorId?: string | undefined;
796
798
  mainParameter?: string | undefined;
@@ -73,25 +73,22 @@ export const RewardController = new Elysia({ prefix: "/rewards", detail: { tags:
73
73
  .get("/total", async ({ query }) => await RewardService.totalForToken(query))
74
74
  .get("/count", async ({ query }) => await RewardService.countForToken(query));
75
75
  })
76
- .group("/engine", app => {
76
+ .group("/engine", {
77
+ headers: AuthorizationHeadersDto,
78
+ beforeHandle: EngineGuard,
79
+ detail: { hide: true },
80
+ }, app => {
77
81
  return (app
78
82
  // ─── Create Many Rewards ─────────────────────────────────────────────
79
83
  .post("/", async ({ body }) => await RewardService.createManyReward(body), {
80
- headers: AuthorizationHeadersDto,
81
84
  body: CreateManyRewardDto,
82
- beforeHandle: EngineGuard,
83
- detail: { hide: true },
84
85
  })
85
86
  // ─── Create Many Reward Breakdowns ───────────────────────────────────
86
87
  .post("/breakdowns", async ({ body }) => await RewardService.createManyBreakdown(body), {
87
- headers: AuthorizationHeadersDto,
88
88
  body: CreateManyBreakdownDto,
89
- beforeHandle: EngineGuard,
90
- detail: { hide: true },
91
89
  })
92
90
  // ─── Register new claims ──────────────────────────────────────────────
93
91
  .post("/claims", async ({ body }) => await RewardService.registerClaims(body), {
94
- headers: AuthorizationHeadersDto,
95
92
  body: RegisterClaimsDto,
96
93
  beforeHandle: ({ headers, body }) => {
97
94
  EngineGuard({ headers });
@@ -101,7 +98,6 @@ export const RewardController = new Elysia({ prefix: "/rewards", detail: { tags:
101
98
  claim.recipient = throwOnInvalidRequiredAddress(claim.recipient);
102
99
  }
103
100
  },
104
- detail: { hide: true },
105
101
  }));
106
102
  })
107
103
  // ─── Get Reward Count By Chain And Root ──────────────────────────────
@@ -806,6 +806,8 @@ export declare const v4: Elysia<"/v4", false, {
806
806
  startTimestamp?: string | undefined;
807
807
  endTimestamp?: string | undefined;
808
808
  creatorAddress?: string | undefined;
809
+ rootCampaignId?: string | undefined;
810
+ parentCampaignId?: string | undefined;
809
811
  chainId?: number | undefined;
810
812
  creatorId?: string | undefined;
811
813
  mainParameter?: string | undefined;
@@ -1289,123 +1291,127 @@ export declare const v4: Elysia<"/v4", false, {
1289
1291
  v4: {
1290
1292
  campaigns: {
1291
1293
  engine: {
1292
- post: {
1293
- body: {
1294
- tags?: string[] | undefined;
1295
- identifier?: string | undefined;
1296
- subType?: number | undefined;
1297
- type: number;
1298
- params: string;
1299
- creator: string;
1300
- computeChainId: number;
1301
- campaignId: string;
1302
- amount: string;
1303
- startTimestamp: string;
1304
- endTimestamp: string;
1305
- chainId: number;
1306
- rewardTokenAddress: string;
1307
- opportunityIdentifier: string;
1308
- };
1309
- params: {};
1310
- query: unknown;
1311
- headers: {
1312
- authorization: string;
1313
- };
1314
- response: {
1315
- 200: {
1316
- type: string;
1317
- description: string | null;
1318
- id: string;
1319
- params: import("database/api/.generated/runtime/library").JsonValue;
1320
- subType: number | null;
1294
+ index: {
1295
+ post: {
1296
+ body: {
1297
+ tags?: string[] | undefined;
1298
+ identifier?: string | undefined;
1299
+ subType?: number | undefined;
1300
+ rootCampaignId?: string | undefined;
1301
+ parentCampaignId?: string | undefined;
1302
+ type: number;
1303
+ params: string;
1304
+ creator: string;
1321
1305
  computeChainId: number;
1322
- distributionChainId: number;
1323
1306
  campaignId: string;
1324
- distributionType: import("@db/api").$Enums.DistributionType;
1325
- rewardTokenId: string;
1326
1307
  amount: string;
1327
- opportunityId: string;
1328
- startTimestamp: bigint;
1329
- endTimestamp: bigint;
1330
- creatorAddress: string;
1331
- manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
1332
- createdAt: Date;
1333
- rootCampaignId: string | null;
1334
- parentCampaignId: string | null;
1335
- } | {
1336
- Tokens: {
1337
- symbol: string;
1338
- name: string | null;
1308
+ startTimestamp: string;
1309
+ endTimestamp: string;
1310
+ chainId: number;
1311
+ rewardTokenAddress: string;
1312
+ opportunityIdentifier: string;
1313
+ };
1314
+ params: {};
1315
+ query: unknown;
1316
+ headers: {
1317
+ authorization: string;
1318
+ };
1319
+ response: {
1320
+ 200: {
1321
+ type: string;
1322
+ description: string | null;
1339
1323
  id: string;
1340
- icon: string;
1341
- address: string;
1342
- chainId: number;
1343
- decimals: number;
1344
- displaySymbol: string;
1345
- verified: boolean;
1346
- isTest: boolean;
1347
- isPoint: boolean;
1348
- isPreTGE: boolean;
1349
- isNative: boolean;
1350
- price: number | null;
1351
- }[];
1352
- Protocols: {
1353
- url: string;
1324
+ params: import("database/api/.generated/runtime/library").JsonValue;
1325
+ subType: number | null;
1326
+ computeChainId: number;
1327
+ distributionChainId: number;
1328
+ campaignId: string;
1329
+ distributionType: import("@db/api").$Enums.DistributionType;
1330
+ rewardTokenId: string;
1331
+ amount: string;
1332
+ opportunityId: string;
1333
+ startTimestamp: bigint;
1334
+ endTimestamp: bigint;
1335
+ creatorAddress: string;
1336
+ manualOverrides: import("@db/api").$Enums.CampaignManualOverride[];
1337
+ createdAt: Date;
1338
+ rootCampaignId: string | null;
1339
+ parentCampaignId: string | null;
1340
+ } | {
1341
+ Tokens: {
1342
+ symbol: string;
1343
+ name: string | null;
1344
+ id: string;
1345
+ icon: string;
1346
+ address: string;
1347
+ chainId: number;
1348
+ decimals: number;
1349
+ displaySymbol: string;
1350
+ verified: boolean;
1351
+ isTest: boolean;
1352
+ isPoint: boolean;
1353
+ isPreTGE: boolean;
1354
+ isNative: boolean;
1355
+ price: number | null;
1356
+ }[];
1357
+ Protocols: {
1358
+ url: string;
1359
+ name: string;
1360
+ description: string;
1361
+ id: string;
1362
+ tags: string[];
1363
+ icon: string;
1364
+ }[];
1365
+ status: import("@db/api").$Enums.Status;
1366
+ type: string;
1354
1367
  name: string;
1355
1368
  description: string;
1356
1369
  id: string;
1357
1370
  tags: string[];
1358
- icon: string;
1359
- }[];
1360
- status: import("@db/api").$Enums.Status;
1361
- type: string;
1362
- name: string;
1363
- description: string;
1364
- id: string;
1365
- tags: string[];
1366
- identifier: string;
1367
- action: import("@db/api").$Enums.OpportunityAction;
1368
- manualOverrides: import("@db/api").$Enums.OpportunityManualOverride[];
1369
- chainId: number;
1370
- howToSteps: string[];
1371
- depositUrl: string | null;
1372
- explorerAddress: string | null;
1373
- mainProtocolId: string | null;
1374
- tvl: number;
1375
- apr: number;
1376
- dailyRewards: number;
1377
- lastCampaignCreatedAt: Date;
1378
- } | {
1379
- id: string;
1380
- chainId: number;
1381
- type: string;
1382
- identifier: string;
1383
- name: string;
1384
- status: "PAST" | "LIVE" | "SOON";
1385
- action: any;
1386
- tokens: ({
1387
- symbol: string;
1388
- name: string | null;
1371
+ identifier: string;
1372
+ action: import("@db/api").$Enums.OpportunityAction;
1373
+ manualOverrides: import("@db/api").$Enums.OpportunityManualOverride[];
1374
+ chainId: number;
1375
+ howToSteps: string[];
1376
+ depositUrl: string | null;
1377
+ explorerAddress: string | null;
1378
+ mainProtocolId: string | null;
1379
+ tvl: number;
1380
+ apr: number;
1381
+ dailyRewards: number;
1382
+ lastCampaignCreatedAt: Date;
1383
+ } | {
1389
1384
  id: string;
1390
- icon: string;
1391
- address: string;
1392
1385
  chainId: number;
1393
- decimals: number;
1394
- verified: boolean;
1395
- isTest: boolean;
1396
- isPoint: boolean;
1397
- isPreTGE: boolean;
1398
- isNative: boolean;
1399
- } & {
1400
- price?: number | null | undefined;
1401
- })[];
1402
- mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "termmax" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
1403
- description: string;
1404
- howToSteps: string[];
1405
- depositUrl: string | undefined;
1406
- explorerAddress: string | undefined;
1407
- tags: string[];
1408
- } | undefined;
1386
+ type: string;
1387
+ identifier: string;
1388
+ name: string;
1389
+ status: "PAST" | "LIVE" | "SOON";
1390
+ action: any;
1391
+ tokens: ({
1392
+ symbol: string;
1393
+ name: string | null;
1394
+ id: string;
1395
+ icon: string;
1396
+ address: string;
1397
+ chainId: number;
1398
+ decimals: number;
1399
+ verified: boolean;
1400
+ isTest: boolean;
1401
+ isPoint: boolean;
1402
+ isPreTGE: boolean;
1403
+ isNative: boolean;
1404
+ } & {
1405
+ price?: number | null | undefined;
1406
+ })[];
1407
+ mainProtocol: "splice" | "reserve" | "morpho" | "quickswap" | "euler" | "aura" | "poolside" | "gearbox" | "filament" | "fluid" | "compound" | "ionic" | "layerbank" | "moonwell" | "fraxlend" | "fenix" | "ra" | "syncswap" | "beefy" | "aerodrome" | "velodrome" | "curve" | "toros" | "akron" | "enzyme" | "dragonswap" | "koi" | "rfx" | "woofi" | "pendle" | "zkSwapThreePool" | "maha" | "tempest" | "holdstation" | "venus" | "reactor_fusion" | "vicuna" | "curveNPool" | "satlayer" | "veda" | "cian" | "concrete" | "hourglass" | "katana" | "gamma" | "stability" | "termmax" | "uniswap" | "ambient" | "arthswap" | "base-swap" | "camelot" | "crust" | "horiza" | "izumi" | "kim" | "pancake-swap" | "ramses" | "retro" | "stryke" | "sushi-swap" | "swapr" | "thruster" | "voltage" | "zero" | "supswap" | "zk-swap" | "thirdtrade" | "swap-x" | "balancer" | "cross_curve" | "neptune" | "maverick" | "trader-joe" | "hanji" | "radiant" | "aave" | "ironclad" | "sturdy" | "frax" | "silo" | "dolomite" | "badger" | "ajna" | "ion" | "eigenlayer" | "vest" | "zerolend" | "lnd" | "hyperdrive" | "oku" | "kyo" | "sonex" | "lendle" | "tako-tako" | "equalizer" | "spectra" | "beraborrow" | "superlend" | "avalon" | "iguana" | "xlend" | "sake" | "sonicmarket" | "angles" | "bunni" | "beratrax" | "yei" | "gammaswap" | "uranium" | "puffer" | undefined;
1408
+ description: string;
1409
+ howToSteps: string[];
1410
+ depositUrl: string | undefined;
1411
+ explorerAddress: string | undefined;
1412
+ tags: string[];
1413
+ } | undefined;
1414
+ };
1409
1415
  };
1410
1416
  };
1411
1417
  };
@@ -1536,6 +1542,8 @@ export declare const v4: Elysia<"/v4", false, {
1536
1542
  startTimestamp?: string | undefined;
1537
1543
  endTimestamp?: string | undefined;
1538
1544
  creatorAddress?: string | undefined;
1545
+ rootCampaignId?: string | undefined;
1546
+ parentCampaignId?: string | undefined;
1539
1547
  chainId?: number | undefined;
1540
1548
  creatorId?: string | undefined;
1541
1549
  mainParameter?: string | undefined;
@@ -1846,6 +1854,8 @@ export declare const v4: Elysia<"/v4", false, {
1846
1854
  startTimestamp?: string | undefined;
1847
1855
  endTimestamp?: string | undefined;
1848
1856
  creatorAddress?: string | undefined;
1857
+ rootCampaignId?: string | undefined;
1858
+ parentCampaignId?: string | undefined;
1849
1859
  chainId?: number | undefined;
1850
1860
  creatorId?: string | undefined;
1851
1861
  mainParameter?: string | undefined;
@@ -1961,6 +1971,8 @@ export declare const v4: Elysia<"/v4", false, {
1961
1971
  startTimestamp?: string | undefined;
1962
1972
  endTimestamp?: string | undefined;
1963
1973
  creatorAddress?: string | undefined;
1974
+ rootCampaignId?: string | undefined;
1975
+ parentCampaignId?: string | undefined;
1964
1976
  chainId?: number | undefined;
1965
1977
  creatorId?: string | undefined;
1966
1978
  mainParameter?: string | undefined;
@@ -1998,6 +2010,8 @@ export declare const v4: Elysia<"/v4", false, {
1998
2010
  startTimestamp?: string | undefined;
1999
2011
  endTimestamp?: string | undefined;
2000
2012
  creatorAddress?: string | undefined;
2013
+ rootCampaignId?: string | undefined;
2014
+ parentCampaignId?: string | undefined;
2001
2015
  chainId?: number | undefined;
2002
2016
  creatorId?: string | undefined;
2003
2017
  mainParameter?: string | undefined;
@@ -2040,6 +2054,8 @@ export declare const v4: Elysia<"/v4", false, {
2040
2054
  startTimestamp?: string | undefined;
2041
2055
  endTimestamp?: string | undefined;
2042
2056
  creatorAddress?: string | undefined;
2057
+ rootCampaignId?: string | undefined;
2058
+ parentCampaignId?: string | undefined;
2043
2059
  chainId?: number | undefined;
2044
2060
  creatorId?: string | undefined;
2045
2061
  mainParameter?: string | undefined;
@@ -2083,6 +2099,8 @@ export declare const v4: Elysia<"/v4", false, {
2083
2099
  startTimestamp?: string | undefined;
2084
2100
  endTimestamp?: string | undefined;
2085
2101
  creatorAddress?: string | undefined;
2102
+ rootCampaignId?: string | undefined;
2103
+ parentCampaignId?: string | undefined;
2086
2104
  chainId?: number | undefined;
2087
2105
  creatorId?: string | undefined;
2088
2106
  mainParameter?: string | undefined;