@merkl/api 1.11.31 → 1.11.33

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.
Files changed (34) hide show
  1. package/dist/src/jobs/basculate-past-pendings/index.js.map +1 -1
  2. package/dist/src/jobs/pendings-etl/index.js.map +1 -1
  3. package/dist/src/jobs/pendings-etl/load-leaf.d.ts +6 -0
  4. package/dist/src/jobs/pendings-etl/load-leaf.js.map +1 -0
  5. package/dist/src/jobs/pendings-etl/load.js.map +1 -1
  6. package/dist/src/jobs/pendings-etl/transform.js.map +1 -1
  7. package/dist/src/jobs/pendings-etl/types.d.ts +1 -1
  8. package/dist/src/jobs/reward-breakdowns-etl/load-breakdowns.d.ts +2 -3
  9. package/dist/src/jobs/reward-breakdowns-etl/load-breakdowns.js.map +1 -1
  10. package/dist/src/jobs/reward-breakdowns-etl/load.js.map +1 -1
  11. package/dist/src/jobs/reward-breakdowns-etl/subcampaigns.d.ts +1 -1
  12. package/dist/src/jobs/reward-breakdowns-etl/subcampaigns.js.map +1 -1
  13. package/dist/src/jobs/reward-breakdowns-etl/transform.js.map +1 -1
  14. package/dist/src/jobs/reward-breakdowns-etl/types.d.ts +3 -1
  15. package/dist/src/jobs/rewards-etl/index.js.map +1 -1
  16. package/dist/src/jobs/rewards-etl/load-leaf.d.ts +5 -0
  17. package/dist/src/jobs/rewards-etl/load-leaf.js.map +1 -0
  18. package/dist/src/jobs/rewards-etl/load-rewards.js.map +1 -1
  19. package/dist/src/modules/v4/leaf/leaf.model.d.ts +0 -0
  20. package/dist/src/modules/v4/leaf/leaf.model.js.map +1 -0
  21. package/dist/src/modules/v4/leaf/leaf.repository.d.ts +355 -0
  22. package/dist/src/modules/v4/leaf/leaf.repository.js.map +1 -0
  23. package/dist/src/modules/v4/leaf/leaf.service.d.ts +315 -0
  24. package/dist/src/modules/v4/leaf/leaf.service.js.map +1 -0
  25. package/dist/src/modules/v4/legacy-claims/claims.service.js.map +1 -1
  26. package/dist/src/modules/v4/opportunity/opportunity.query-transformer.d.ts +56 -56
  27. package/dist/src/modules/v4/programPayload/subPayloads/drip.d.ts +1 -1
  28. package/dist/src/modules/v4/programPayload/subPayloads/ethena.d.ts +385 -1
  29. package/dist/src/modules/v4/programPayload/subPayloads/ethena.js.map +1 -1
  30. package/dist/src/modules/v4/reward/reward.service.d.ts +2 -1
  31. package/dist/src/modules/v4/reward/reward.service.js.map +1 -1
  32. package/dist/src/modules/v4/uniswap/uniswap.service.js.map +1 -1
  33. package/dist/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +1 -1
@@ -0,0 +1,355 @@
1
+ import type { TokenType } from "@package/resources/enums";
2
+ import type { AddressListModel } from "../reward/reward.model";
3
+ export declare abstract class LeafRepository {
4
+ static getByRecipient(recipient: string, distributionChainIds: number[], tags: string[], options: {
5
+ items?: number;
6
+ page?: number;
7
+ withToken?: boolean;
8
+ withTestTokens?: boolean;
9
+ reasonFilter?: string;
10
+ type?: TokenType;
11
+ }): Promise<({
12
+ Breakdowns: ({
13
+ Campaign: {
14
+ CampaignStatus: {
15
+ campaignId: string;
16
+ computedUntil: bigint;
17
+ processingStarted: bigint;
18
+ status: import("@package/databases").RunStatus;
19
+ preComputeStatus: import("@package/databases").RunStatus;
20
+ preComputeProcessingStarted: bigint;
21
+ error: string;
22
+ details: import("@prisma/client/runtime/client").JsonValue;
23
+ }[];
24
+ Opportunity: {
25
+ ActivePrograms: {
26
+ id: string;
27
+ slug: string | null;
28
+ name: string;
29
+ description: string;
30
+ icon: string;
31
+ }[];
32
+ Chain: {
33
+ id: number;
34
+ name: string;
35
+ icon: string;
36
+ liveCampaigns: number;
37
+ endOfDisputePeriod: number;
38
+ lastClaimsOnchainFetchTimestamp: string | null;
39
+ };
40
+ MainProtocol: {
41
+ id: string;
42
+ tags: string[];
43
+ name: string;
44
+ description: string;
45
+ url: string;
46
+ icon: string;
47
+ banner: string | null;
48
+ opportunityBannerLight: string | null;
49
+ opportunityBannerDark: string | null;
50
+ } | null;
51
+ Protocols: {
52
+ id: string;
53
+ tags: string[];
54
+ name: string;
55
+ description: string;
56
+ url: string;
57
+ icon: string;
58
+ banner: string | null;
59
+ opportunityBannerLight: string | null;
60
+ opportunityBannerDark: string | null;
61
+ }[];
62
+ Tokens: {
63
+ id: string;
64
+ name: string | null;
65
+ chainId: number;
66
+ address: string;
67
+ decimals: number;
68
+ symbol: string;
69
+ displaySymbol: string;
70
+ icon: string;
71
+ verified: boolean;
72
+ isTest: boolean;
73
+ type: import("@package/databases").TokenType;
74
+ isNative: boolean;
75
+ underlyingTokenId: string | null;
76
+ price: number | null;
77
+ updatedAt: number | null;
78
+ priceSource: string | null;
79
+ }[];
80
+ } & {
81
+ id: string;
82
+ chainId: number;
83
+ type: string;
84
+ identifier: string;
85
+ name: string;
86
+ description: string;
87
+ howToSteps: string[];
88
+ depositUrl: string | null;
89
+ explorerAddress: string | null;
90
+ status: import("@package/databases").Status;
91
+ action: import("@package/databases").OpportunityAction;
92
+ mainProtocolId: string | null;
93
+ tvl: number;
94
+ apr: number;
95
+ nativeApr: number | null;
96
+ maxApr: number | null;
97
+ dailyRewards: number;
98
+ tags: string[];
99
+ lastCampaignCreatedAt: Date;
100
+ manualOverrides: import("@package/databases").OpportunityManualOverride[];
101
+ liveCampaigns: number;
102
+ earliestCampaignStart: bigint | null;
103
+ latestCampaignStart: bigint | null;
104
+ earliestCampaignEnd: bigint | null;
105
+ latestCampaignEnd: bigint | null;
106
+ hidden: boolean;
107
+ };
108
+ } & {
109
+ id: string;
110
+ computeChainId: number;
111
+ distributionChainId: number;
112
+ campaignId: string;
113
+ type: string;
114
+ distributionType: import("@package/databases").DistributionType;
115
+ subType: number | null;
116
+ rewardTokenId: string;
117
+ amount: string;
118
+ opportunityId: string;
119
+ startTimestamp: bigint;
120
+ endTimestamp: bigint;
121
+ params: import("@prisma/client/runtime/client").JsonValue;
122
+ description: string | null;
123
+ pauseCompute: string | null;
124
+ dailyRewards: number;
125
+ apr: number;
126
+ creatorAddress: string;
127
+ manualOverrides: import("@package/databases").CampaignManualOverride[];
128
+ createdAt: Date;
129
+ rootCampaignId: string | null;
130
+ parentCampaignId: string | null;
131
+ isPrivate: boolean;
132
+ campaignEncodingHash: string | null;
133
+ };
134
+ PendingRewardBreakdowns: {
135
+ distributionChainId: number;
136
+ tokenAddress: string;
137
+ recipient: string;
138
+ campaignId: string;
139
+ reason: string;
140
+ root: string;
141
+ amount: string;
142
+ claimed: string;
143
+ }[];
144
+ SubCampaign: ({
145
+ CampaignStatus: {
146
+ campaignId: string;
147
+ computedUntil: bigint;
148
+ processingStarted: bigint;
149
+ status: import("@package/databases").RunStatus;
150
+ preComputeStatus: import("@package/databases").RunStatus;
151
+ preComputeProcessingStarted: bigint;
152
+ error: string;
153
+ details: import("@prisma/client/runtime/client").JsonValue;
154
+ }[];
155
+ Opportunity: {
156
+ ActivePrograms: {
157
+ id: string;
158
+ slug: string | null;
159
+ name: string;
160
+ description: string;
161
+ icon: string;
162
+ }[];
163
+ Chain: {
164
+ id: number;
165
+ name: string;
166
+ icon: string;
167
+ liveCampaigns: number;
168
+ endOfDisputePeriod: number;
169
+ lastClaimsOnchainFetchTimestamp: string | null;
170
+ };
171
+ MainProtocol: {
172
+ id: string;
173
+ tags: string[];
174
+ name: string;
175
+ description: string;
176
+ url: string;
177
+ icon: string;
178
+ banner: string | null;
179
+ opportunityBannerLight: string | null;
180
+ opportunityBannerDark: string | null;
181
+ } | null;
182
+ Protocols: {
183
+ id: string;
184
+ tags: string[];
185
+ name: string;
186
+ description: string;
187
+ url: string;
188
+ icon: string;
189
+ banner: string | null;
190
+ opportunityBannerLight: string | null;
191
+ opportunityBannerDark: string | null;
192
+ }[];
193
+ Tokens: {
194
+ id: string;
195
+ name: string | null;
196
+ chainId: number;
197
+ address: string;
198
+ decimals: number;
199
+ symbol: string;
200
+ displaySymbol: string;
201
+ icon: string;
202
+ verified: boolean;
203
+ isTest: boolean;
204
+ type: import("@package/databases").TokenType;
205
+ isNative: boolean;
206
+ underlyingTokenId: string | null;
207
+ price: number | null;
208
+ updatedAt: number | null;
209
+ priceSource: string | null;
210
+ }[];
211
+ } & {
212
+ id: string;
213
+ chainId: number;
214
+ type: string;
215
+ identifier: string;
216
+ name: string;
217
+ description: string;
218
+ howToSteps: string[];
219
+ depositUrl: string | null;
220
+ explorerAddress: string | null;
221
+ status: import("@package/databases").Status;
222
+ action: import("@package/databases").OpportunityAction;
223
+ mainProtocolId: string | null;
224
+ tvl: number;
225
+ apr: number;
226
+ nativeApr: number | null;
227
+ maxApr: number | null;
228
+ dailyRewards: number;
229
+ tags: string[];
230
+ lastCampaignCreatedAt: Date;
231
+ manualOverrides: import("@package/databases").OpportunityManualOverride[];
232
+ liveCampaigns: number;
233
+ earliestCampaignStart: bigint | null;
234
+ latestCampaignStart: bigint | null;
235
+ earliestCampaignEnd: bigint | null;
236
+ latestCampaignEnd: bigint | null;
237
+ hidden: boolean;
238
+ };
239
+ } & {
240
+ id: string;
241
+ computeChainId: number;
242
+ distributionChainId: number;
243
+ campaignId: string;
244
+ type: string;
245
+ distributionType: import("@package/databases").DistributionType;
246
+ subType: number | null;
247
+ rewardTokenId: string;
248
+ amount: string;
249
+ opportunityId: string;
250
+ startTimestamp: bigint;
251
+ endTimestamp: bigint;
252
+ params: import("@prisma/client/runtime/client").JsonValue;
253
+ description: string | null;
254
+ pauseCompute: string | null;
255
+ dailyRewards: number;
256
+ apr: number;
257
+ creatorAddress: string;
258
+ manualOverrides: import("@package/databases").CampaignManualOverride[];
259
+ createdAt: Date;
260
+ rootCampaignId: string | null;
261
+ parentCampaignId: string | null;
262
+ isPrivate: boolean;
263
+ campaignEncodingHash: string | null;
264
+ }) | null;
265
+ } & {
266
+ distributionChainId: number;
267
+ tokenAddress: string;
268
+ recipient: string;
269
+ campaignId: string;
270
+ reason: string;
271
+ amount: string;
272
+ claimed: string;
273
+ subCampaignId: string | null;
274
+ })[];
275
+ PendingRewards: {
276
+ distributionChainId: number;
277
+ tokenAddress: string;
278
+ recipient: string;
279
+ root: string;
280
+ amount: string;
281
+ claimed: string;
282
+ }[];
283
+ Proofs: {
284
+ distributionChainId: number;
285
+ tokenAddress: string;
286
+ recipient: string;
287
+ root: string;
288
+ proof: string[];
289
+ }[];
290
+ Token: {
291
+ id: string;
292
+ name: string | null;
293
+ chainId: number;
294
+ address: string;
295
+ decimals: number;
296
+ symbol: string;
297
+ displaySymbol: string;
298
+ icon: string;
299
+ verified: boolean;
300
+ isTest: boolean;
301
+ type: import("@package/databases").TokenType;
302
+ isNative: boolean;
303
+ underlyingTokenId: string | null;
304
+ price: number | null;
305
+ updatedAt: number | null;
306
+ priceSource: string | null;
307
+ };
308
+ } & {
309
+ distributionChainId: number;
310
+ tokenAddress: string;
311
+ recipient: string;
312
+ amount: string;
313
+ claimed: string;
314
+ })[]>;
315
+ /**
316
+ * @notice Returns rewards and campaignIds from breakdowns matching (recipient, root, tokenId)
317
+ */
318
+ static getByChainRecipientToken(id: {
319
+ distributionChainId: number;
320
+ recipient: string;
321
+ tokenAddress: string;
322
+ }): Promise<({
323
+ Breakdowns: ({
324
+ Campaign: {
325
+ campaignId: string;
326
+ };
327
+ SubCampaign: {
328
+ campaignId: string;
329
+ } | null;
330
+ } & {
331
+ distributionChainId: number;
332
+ tokenAddress: string;
333
+ recipient: string;
334
+ campaignId: string;
335
+ reason: string;
336
+ amount: string;
337
+ claimed: string;
338
+ subCampaignId: string | null;
339
+ })[];
340
+ } & {
341
+ distributionChainId: number;
342
+ tokenAddress: string;
343
+ recipient: string;
344
+ amount: string;
345
+ claimed: string;
346
+ }) | null>;
347
+ static findRewardsForCampaign(params: {
348
+ campaignId: string;
349
+ }, query: AddressListModel, root: string): Promise<{
350
+ amount: string;
351
+ claimed: string;
352
+ reason: string;
353
+ recipient: string;
354
+ }[]>;
355
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaf.repository.js","sourceRoot":"","sources":["../../../../../../../apps/api/src/modules/v4/leaf/leaf.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,315 @@
1
+ import { type TokenType } from "@package/databases";
2
+ import type { MerklRootService } from "../merklRoot/merklRoot.service";
3
+ export declare abstract class LeafService {
4
+ static getByRecipient(recipient: string, distributionChainIds: number[], roots: Awaited<ReturnType<typeof MerklRootService.fetchAll>>, tags: string[], options: {
5
+ items?: number;
6
+ page?: number;
7
+ withToken?: boolean;
8
+ withTestTokens?: boolean;
9
+ reasonFilter?: string;
10
+ type?: TokenType;
11
+ }): Promise<{
12
+ id: string;
13
+ root: string;
14
+ distributionChainId: number;
15
+ rewardTokenId: string;
16
+ recipient: string;
17
+ amount: string;
18
+ claimed: string;
19
+ pending: string;
20
+ proofs: string[];
21
+ RewardToken: {
22
+ id: string;
23
+ name: string | null;
24
+ chainId: number;
25
+ address: string;
26
+ decimals: number;
27
+ symbol: string;
28
+ displaySymbol: string;
29
+ icon: string;
30
+ verified: boolean;
31
+ isTest: boolean;
32
+ type: TokenType;
33
+ isNative: boolean;
34
+ underlyingTokenId: string | null;
35
+ price: number | null;
36
+ updatedAt: number | null;
37
+ priceSource: string | null;
38
+ };
39
+ Breakdown: {
40
+ id: string;
41
+ rewardId: string;
42
+ root: string;
43
+ distributionChainId: number;
44
+ reason: string;
45
+ amount: string;
46
+ claimed: string;
47
+ pending: string;
48
+ campaignId: string;
49
+ Campaign: {
50
+ CampaignStatus: {
51
+ campaignId: string;
52
+ computedUntil: bigint;
53
+ processingStarted: bigint;
54
+ status: import("@package/databases").RunStatus;
55
+ preComputeStatus: import("@package/databases").RunStatus;
56
+ preComputeProcessingStarted: bigint;
57
+ error: string;
58
+ details: import("@prisma/client/runtime/client").JsonValue;
59
+ }[];
60
+ Opportunity: {
61
+ ActivePrograms: {
62
+ id: string;
63
+ slug: string | null;
64
+ name: string;
65
+ description: string;
66
+ icon: string;
67
+ }[];
68
+ Chain: {
69
+ id: number;
70
+ name: string;
71
+ icon: string;
72
+ liveCampaigns: number;
73
+ endOfDisputePeriod: number;
74
+ lastClaimsOnchainFetchTimestamp: string | null;
75
+ };
76
+ MainProtocol: {
77
+ id: string;
78
+ tags: string[];
79
+ name: string;
80
+ description: string;
81
+ url: string;
82
+ icon: string;
83
+ banner: string | null;
84
+ opportunityBannerLight: string | null;
85
+ opportunityBannerDark: string | null;
86
+ } | null;
87
+ Protocols: {
88
+ id: string;
89
+ tags: string[];
90
+ name: string;
91
+ description: string;
92
+ url: string;
93
+ icon: string;
94
+ banner: string | null;
95
+ opportunityBannerLight: string | null;
96
+ opportunityBannerDark: string | null;
97
+ }[];
98
+ Tokens: {
99
+ id: string;
100
+ name: string | null;
101
+ chainId: number;
102
+ address: string;
103
+ decimals: number;
104
+ symbol: string;
105
+ displaySymbol: string;
106
+ icon: string;
107
+ verified: boolean;
108
+ isTest: boolean;
109
+ type: TokenType;
110
+ isNative: boolean;
111
+ underlyingTokenId: string | null;
112
+ price: number | null;
113
+ updatedAt: number | null;
114
+ priceSource: string | null;
115
+ }[];
116
+ } & {
117
+ id: string;
118
+ chainId: number;
119
+ type: string;
120
+ identifier: string;
121
+ name: string;
122
+ description: string;
123
+ howToSteps: string[];
124
+ depositUrl: string | null;
125
+ explorerAddress: string | null;
126
+ status: import("@package/databases").Status;
127
+ action: import("@package/databases").OpportunityAction;
128
+ mainProtocolId: string | null;
129
+ tvl: number;
130
+ apr: number;
131
+ nativeApr: number | null;
132
+ maxApr: number | null;
133
+ dailyRewards: number;
134
+ tags: string[];
135
+ lastCampaignCreatedAt: Date;
136
+ manualOverrides: import("@package/databases").OpportunityManualOverride[];
137
+ liveCampaigns: number;
138
+ earliestCampaignStart: bigint | null;
139
+ latestCampaignStart: bigint | null;
140
+ earliestCampaignEnd: bigint | null;
141
+ latestCampaignEnd: bigint | null;
142
+ hidden: boolean;
143
+ };
144
+ } & {
145
+ id: string;
146
+ computeChainId: number;
147
+ distributionChainId: number;
148
+ campaignId: string;
149
+ type: string;
150
+ distributionType: import("@package/databases").DistributionType;
151
+ subType: number | null;
152
+ rewardTokenId: string;
153
+ amount: string;
154
+ opportunityId: string;
155
+ startTimestamp: bigint;
156
+ endTimestamp: bigint;
157
+ params: import("@prisma/client/runtime/client").JsonValue;
158
+ description: string | null;
159
+ pauseCompute: string | null;
160
+ dailyRewards: number;
161
+ apr: number;
162
+ creatorAddress: string;
163
+ manualOverrides: import("@package/databases").CampaignManualOverride[];
164
+ createdAt: Date;
165
+ rootCampaignId: string | null;
166
+ parentCampaignId: string | null;
167
+ isPrivate: boolean;
168
+ campaignEncodingHash: string | null;
169
+ };
170
+ subCampaignId: string | null;
171
+ SubCampaign: ({
172
+ CampaignStatus: {
173
+ campaignId: string;
174
+ computedUntil: bigint;
175
+ processingStarted: bigint;
176
+ status: import("@package/databases").RunStatus;
177
+ preComputeStatus: import("@package/databases").RunStatus;
178
+ preComputeProcessingStarted: bigint;
179
+ error: string;
180
+ details: import("@prisma/client/runtime/client").JsonValue;
181
+ }[];
182
+ Opportunity: {
183
+ ActivePrograms: {
184
+ id: string;
185
+ slug: string | null;
186
+ name: string;
187
+ description: string;
188
+ icon: string;
189
+ }[];
190
+ Chain: {
191
+ id: number;
192
+ name: string;
193
+ icon: string;
194
+ liveCampaigns: number;
195
+ endOfDisputePeriod: number;
196
+ lastClaimsOnchainFetchTimestamp: string | null;
197
+ };
198
+ MainProtocol: {
199
+ id: string;
200
+ tags: string[];
201
+ name: string;
202
+ description: string;
203
+ url: string;
204
+ icon: string;
205
+ banner: string | null;
206
+ opportunityBannerLight: string | null;
207
+ opportunityBannerDark: string | null;
208
+ } | null;
209
+ Protocols: {
210
+ id: string;
211
+ tags: string[];
212
+ name: string;
213
+ description: string;
214
+ url: string;
215
+ icon: string;
216
+ banner: string | null;
217
+ opportunityBannerLight: string | null;
218
+ opportunityBannerDark: string | null;
219
+ }[];
220
+ Tokens: {
221
+ id: string;
222
+ name: string | null;
223
+ chainId: number;
224
+ address: string;
225
+ decimals: number;
226
+ symbol: string;
227
+ displaySymbol: string;
228
+ icon: string;
229
+ verified: boolean;
230
+ isTest: boolean;
231
+ type: TokenType;
232
+ isNative: boolean;
233
+ underlyingTokenId: string | null;
234
+ price: number | null;
235
+ updatedAt: number | null;
236
+ priceSource: string | null;
237
+ }[];
238
+ } & {
239
+ id: string;
240
+ chainId: number;
241
+ type: string;
242
+ identifier: string;
243
+ name: string;
244
+ description: string;
245
+ howToSteps: string[];
246
+ depositUrl: string | null;
247
+ explorerAddress: string | null;
248
+ status: import("@package/databases").Status;
249
+ action: import("@package/databases").OpportunityAction;
250
+ mainProtocolId: string | null;
251
+ tvl: number;
252
+ apr: number;
253
+ nativeApr: number | null;
254
+ maxApr: number | null;
255
+ dailyRewards: number;
256
+ tags: string[];
257
+ lastCampaignCreatedAt: Date;
258
+ manualOverrides: import("@package/databases").OpportunityManualOverride[];
259
+ liveCampaigns: number;
260
+ earliestCampaignStart: bigint | null;
261
+ latestCampaignStart: bigint | null;
262
+ earliestCampaignEnd: bigint | null;
263
+ latestCampaignEnd: bigint | null;
264
+ hidden: boolean;
265
+ };
266
+ } & {
267
+ id: string;
268
+ computeChainId: number;
269
+ distributionChainId: number;
270
+ campaignId: string;
271
+ type: string;
272
+ distributionType: import("@package/databases").DistributionType;
273
+ subType: number | null;
274
+ rewardTokenId: string;
275
+ amount: string;
276
+ opportunityId: string;
277
+ startTimestamp: bigint;
278
+ endTimestamp: bigint;
279
+ params: import("@prisma/client/runtime/client").JsonValue;
280
+ description: string | null;
281
+ pauseCompute: string | null;
282
+ dailyRewards: number;
283
+ apr: number;
284
+ creatorAddress: string;
285
+ manualOverrides: import("@package/databases").CampaignManualOverride[];
286
+ createdAt: Date;
287
+ rootCampaignId: string | null;
288
+ parentCampaignId: string | null;
289
+ isPrivate: boolean;
290
+ campaignEncodingHash: string | null;
291
+ }) | null;
292
+ protocolId: null;
293
+ }[];
294
+ }[]>;
295
+ /**
296
+ * Finds existing leaves by their unique keys; creates missing ones seeded from Reward data.
297
+ * @returns all leaves (existing + newly created)
298
+ */
299
+ static findOrCreateManyLeaves(keys: {
300
+ distributionChainId: number;
301
+ recipient: string;
302
+ tokenAddress: string;
303
+ }[], root: string): Promise<void>;
304
+ /**
305
+ * Finds existing leaf breakdowns by their unique keys; creates missing ones seeded from RewardBreakdown data.
306
+ * @returns all breakdowns (existing + newly created)
307
+ */
308
+ static findOrCreateManyLeafBreakdowns(keys: {
309
+ distributionChainId: number;
310
+ recipient: string;
311
+ tokenAddress: string;
312
+ campaignId: string;
313
+ reason: string;
314
+ }[], root: string): Promise<void>;
315
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaf.service.js","sourceRoot":"","sources":["../../../../../../../apps/api/src/modules/v4/leaf/leaf.service.ts"],"names":[],"mappings":"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"}