@namehash/ens-referrals 1.10.1 → 1.11.0
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/index.cjs +95 -42
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +29 -19
- package/dist/index.d.ts +29 -19
- package/dist/index.js +95 -42
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.d.cts
CHANGED
|
@@ -250,9 +250,9 @@ type ReferralProgramEditionSlug = string;
|
|
|
250
250
|
*/
|
|
251
251
|
declare const REFERRAL_PROGRAM_EDITION_SLUG_PATTERN: RegExp;
|
|
252
252
|
/**
|
|
253
|
-
*
|
|
253
|
+
* Base fields shared by all referral program edition configs.
|
|
254
254
|
*/
|
|
255
|
-
interface
|
|
255
|
+
interface BaseReferralProgramEditionConfig {
|
|
256
256
|
/**
|
|
257
257
|
* Unique slug identifier for the edition.
|
|
258
258
|
*/
|
|
@@ -262,6 +262,15 @@ interface ReferralProgramEditionConfig {
|
|
|
262
262
|
* @example "ENS Holiday Awards"
|
|
263
263
|
*/
|
|
264
264
|
displayName: string;
|
|
265
|
+
/**
|
|
266
|
+
* The base rules that govern this referral program edition.
|
|
267
|
+
*/
|
|
268
|
+
rules: BaseReferralProgramRules;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Represents a referral program edition configuration.
|
|
272
|
+
*/
|
|
273
|
+
interface ReferralProgramEditionConfig extends BaseReferralProgramEditionConfig {
|
|
265
274
|
/**
|
|
266
275
|
* The rules that govern this referral program edition.
|
|
267
276
|
*/
|
|
@@ -277,13 +286,26 @@ interface ReferralProgramEditionConfig {
|
|
|
277
286
|
*/
|
|
278
287
|
type ReferralProgramEditionConfigSet = Map<ReferralProgramEditionSlug, ReferralProgramEditionConfig>;
|
|
279
288
|
/**
|
|
280
|
-
* Validates
|
|
281
|
-
* that each map key equals the corresponding config's slug.
|
|
289
|
+
* Validates the invariants of a {@link ReferralProgramEditionConfigSet}.
|
|
282
290
|
*
|
|
283
291
|
* @param configSet - The edition config set to validate
|
|
284
|
-
* @throws {Error} If any entry violates the invariant
|
|
292
|
+
* @throws {Error} If any entry violates the invariant that each map key equals the
|
|
293
|
+
* corresponding config's slug
|
|
294
|
+
* @throws {Error} If any pair of editions sharing a `subregistryId` overlap in time
|
|
295
|
+
* (`startTime` and `endTime` are inclusive — touching edges count as overlap)
|
|
285
296
|
*/
|
|
286
297
|
declare function validateReferralProgramEditionConfigSet(configSet: ReferralProgramEditionConfigSet): void;
|
|
298
|
+
/**
|
|
299
|
+
* Returns the first pair of editions sharing a `subregistryId` whose time ranges overlap,
|
|
300
|
+
* or `null` if none do.
|
|
301
|
+
*
|
|
302
|
+
* `startTime` and `endTime` are inclusive, so ranges sharing a single instant
|
|
303
|
+
* (`A.endTime === B.startTime`) count as overlapping.
|
|
304
|
+
*
|
|
305
|
+
* @param editions - Array of editions to check
|
|
306
|
+
* @returns A `[a, b]` tuple of the first offending pair, or `null` if none
|
|
307
|
+
*/
|
|
308
|
+
declare function findOverlappingEditionPair<T extends BaseReferralProgramEditionConfig>(editions: readonly T[]): readonly [T, T] | null;
|
|
287
309
|
/**
|
|
288
310
|
* Builds a new ReferralProgramEditionConfigSet from an array of configs and validates the invariant.
|
|
289
311
|
*
|
|
@@ -711,29 +733,17 @@ type ReferrerEditionMetricsPieSplit = ReferrerEditionMetricsRankedPieSplit | Ref
|
|
|
711
733
|
/**
|
|
712
734
|
* Base fields shared by all edition summary variants.
|
|
713
735
|
*/
|
|
714
|
-
interface BaseReferralProgramEditionSummary {
|
|
736
|
+
interface BaseReferralProgramEditionSummary extends BaseReferralProgramEditionConfig {
|
|
715
737
|
/**
|
|
716
738
|
* Discriminant: identifies the award model for this edition.
|
|
717
739
|
*
|
|
718
740
|
* @invariant Always equals `rules.awardModel`.
|
|
719
741
|
*/
|
|
720
742
|
awardModel: ReferralProgramAwardModel;
|
|
721
|
-
/**
|
|
722
|
-
* Unique slug identifier for the edition.
|
|
723
|
-
*/
|
|
724
|
-
slug: ReferralProgramEditionSlug;
|
|
725
|
-
/**
|
|
726
|
-
* Human-readable display name for the edition.
|
|
727
|
-
*/
|
|
728
|
-
displayName: string;
|
|
729
743
|
/**
|
|
730
744
|
* The current runtime status of the edition.
|
|
731
745
|
*/
|
|
732
746
|
status: ReferralProgramEditionStatusId;
|
|
733
|
-
/**
|
|
734
|
-
* The rules for this edition. Per-model subtypes narrow this to their specific rules type.
|
|
735
|
-
*/
|
|
736
|
-
rules: BaseReferralProgramRules;
|
|
737
747
|
}
|
|
738
748
|
/**
|
|
739
749
|
* Edition summary for an edition whose `awardModel` is not recognized by this client version.
|
|
@@ -2118,4 +2128,4 @@ declare const SECONDS_PER_YEAR: Duration;
|
|
|
2118
2128
|
declare function isValidDuration(duration: Duration): boolean;
|
|
2119
2129
|
declare function validateDuration(duration: Duration): void;
|
|
2120
2130
|
|
|
2121
|
-
export { type AdminAction, type AdminActionDisqualification, type AdminActionType, AdminActionTypes, type AdminActionWarning, type AggregatedReferrerMetricsPieSplit, type AggregatedReferrerMetricsRevShareCap, type AwardedReferrerMetricsPieSplit, type AwardedReferrerMetricsRevShareCap, type BaseReferralProgramEditionSummary, type BaseReferralProgramRules, type BaseReferrerLeaderboardPage, type ClientOptions, DEFAULT_ENSNODE_API_URL, ENSReferralsClient, MAX_EDITIONS_PER_REQUEST, REFERRAL_PROGRAM_EDITION_SLUG_PATTERN, REFERRERS_PER_LEADERBOARD_PAGE_DEFAULT, REFERRERS_PER_LEADERBOARD_PAGE_MAX, type RankedReferrerMetricsPieSplit, type RankedReferrerMetricsRevShareCap, type ReferralEvent, type ReferralProgramAwardModel, ReferralProgramAwardModels, type ReferralProgramEditionConfig, type ReferralProgramEditionConfigSet, type ReferralProgramEditionSlug, type ReferralProgramEditionStatusId, ReferralProgramEditionStatuses, type ReferralProgramEditionSummariesData, type ReferralProgramEditionSummariesResponse, type ReferralProgramEditionSummariesResponseCode, ReferralProgramEditionSummariesResponseCodes, type ReferralProgramEditionSummariesResponseError, type ReferralProgramEditionSummariesResponseOk, type ReferralProgramEditionSummary, type ReferralProgramEditionSummaryPieSplit, type ReferralProgramEditionSummaryRevShareCap, type ReferralProgramEditionSummaryUnrecognized, type ReferralProgramRules, type ReferralProgramRulesPieSplit, type ReferralProgramRulesRevShareCap, type ReferralProgramRulesUnrecognized, type ReferrerEditionMetrics, type ReferrerEditionMetricsPieSplit, type ReferrerEditionMetricsRankedPieSplit, type ReferrerEditionMetricsRankedRevShareCap, type ReferrerEditionMetricsRevShareCap, type ReferrerEditionMetricsTypeId, ReferrerEditionMetricsTypeIds, type ReferrerEditionMetricsUnrankedPieSplit, type ReferrerEditionMetricsUnrankedRevShareCap, type ReferrerEditionMetricsUnrecognized, type ReferrerLeaderboard, type ReferrerLeaderboardPage, type ReferrerLeaderboardPageContext, type ReferrerLeaderboardPageParams, type ReferrerLeaderboardPagePieSplit, type ReferrerLeaderboardPageRequest, type ReferrerLeaderboardPageResponse, type ReferrerLeaderboardPageResponseCode, ReferrerLeaderboardPageResponseCodes, type ReferrerLeaderboardPageResponseError, type ReferrerLeaderboardPageResponseOk, type ReferrerLeaderboardPageRevShareCap, type ReferrerLeaderboardPageUnrecognized, type ReferrerLeaderboardPieSplit, type ReferrerLeaderboardRevShareCap, type ReferrerMetrics, type ReferrerMetricsEditionsData, type ReferrerMetricsEditionsRequest, type ReferrerMetricsEditionsResponse, type ReferrerMetricsEditionsResponseCode, ReferrerMetricsEditionsResponseCodes, type ReferrerMetricsEditionsResponseError, type ReferrerMetricsEditionsResponseOk, type ReferrerMetricsForComparison, type ReferrerMetricsRevShareCap, type ReferrerRank, type ReferrerScore, SECONDS_PER_YEAR, type ScoredReferrerMetricsPieSplit, type SerializedAggregatedReferrerMetricsPieSplit, type SerializedAggregatedReferrerMetricsRevShareCap, type SerializedAwardedReferrerMetricsPieSplit, type SerializedAwardedReferrerMetricsRevShareCap, type SerializedReferralProgramEditionSummariesData, type SerializedReferralProgramEditionSummariesResponse, type SerializedReferralProgramEditionSummariesResponseError, type SerializedReferralProgramEditionSummariesResponseOk, type SerializedReferralProgramEditionSummary, type SerializedReferralProgramEditionSummaryPieSplit, type SerializedReferralProgramEditionSummaryRevShareCap, type SerializedReferralProgramRules, type SerializedReferralProgramRulesPieSplit, type SerializedReferralProgramRulesRevShareCap, type SerializedReferrerEditionMetrics, type SerializedReferrerEditionMetricsPieSplit, type SerializedReferrerEditionMetricsRankedPieSplit, type SerializedReferrerEditionMetricsRankedRevShareCap, type SerializedReferrerEditionMetricsRevShareCap, type SerializedReferrerEditionMetricsUnrankedPieSplit, type SerializedReferrerEditionMetricsUnrankedRevShareCap, type SerializedReferrerLeaderboardPage, type SerializedReferrerLeaderboardPagePieSplit, type SerializedReferrerLeaderboardPageResponse, type SerializedReferrerLeaderboardPageResponseError, type SerializedReferrerLeaderboardPageResponseOk, type SerializedReferrerLeaderboardPageRevShareCap, type SerializedReferrerMetricsEditionsData, type SerializedReferrerMetricsEditionsResponse, type SerializedReferrerMetricsEditionsResponseError, type SerializedReferrerMetricsEditionsResponseOk, type SerializedUnrankedReferrerMetricsPieSplit, type SerializedUnrankedReferrerMetricsRevShareCap, type UnrankedReferrerMetricsPieSplit, type UnrankedReferrerMetricsRevShareCap, buildAggregatedReferrerMetricsPieSplit, buildAggregatedReferrerMetricsRevShareCap, buildAwardedReferrerMetricsPieSplit, buildAwardedReferrerMetricsRevShareCap, buildEditionSummary, buildEditionSummaryPieSplit, buildEditionSummaryRevShareCap, buildEnsReferralUrl, buildLeaderboardPagePieSplit, buildLeaderboardPageRevShareCap, buildRankedReferrerMetricsPieSplit, buildRankedReferrerMetricsRevShareCap, buildReferralProgramEditionConfigSet, buildReferralProgramRulesPieSplit, buildReferralProgramRulesRevShareCap, buildReferrerLeaderboardPageContext, buildReferrerLeaderboardPageParams, buildReferrerLeaderboardPieSplit, buildReferrerLeaderboardRevShareCap, buildReferrerMetrics, buildReferrerMetricsRevShareCap, buildScoredReferrerMetricsPieSplit, buildUnrankedReferrerMetricsPieSplit, buildUnrankedReferrerMetricsRevShareCap, calcBaseReferralProgramEditionStatus, calcBaseRevenueContribution, calcReferralProgramEditionStatusPieSplit, calcReferralProgramEditionStatusRevShareCap, calcReferrerAwardPoolSharePieSplit, calcReferrerScorePieSplit, compareReferrerMetrics, deserializeReferralProgramEditionConfigSetArray, deserializeReferralProgramEditionSummariesResponse, deserializeReferrerLeaderboardPageResponse, deserializeReferrerMetricsEditionsResponse, getReferrerEditionMetrics, getReferrerLeaderboardPage, isFiniteNonNegativeNumber, isInteger, isNonNegativeInteger, isPositiveInteger, isReferrerQualifiedRevShareCap, isValidDuration, isValidReferrerScore, serializeReferralProgramEditionSummariesResponse, serializeReferralProgramEditionSummary, serializeReferralProgramRules, serializeReferrerLeaderboardPageResponse, serializeReferrerMetricsEditionsResponse, sliceReferrers, sortReferrerMetrics, validateAggregatedReferrerMetricsPieSplit, validateAggregatedReferrerMetricsRevShareCap, validateAwardedReferrerMetricsPieSplit, validateAwardedReferrerMetricsRevShareCap, validateBaseReferralProgramEditionSummary, validateBaseReferralProgramRules, validateDuration, validateEditionSummaryPieSplit, validateEditionSummaryRevShareCap, validateNonNegativeInteger, validateNormalizedAddress, validateRankedReferrerMetricsPieSplit, validateRankedReferrerMetricsRevShareCap, validateReferralProgramEditionConfigSet, validateReferralProgramRulesPieSplit, validateReferralProgramRulesRevShareCap, validateReferrerLeaderboardPageContext, validateReferrerMetrics, validateReferrerMetricsRevShareCap, validateReferrerRank, validateReferrerScore, validateScoredReferrerMetricsPieSplit, validateUnixTimestamp, validateUnrankedReferrerMetricsPieSplit, validateUnrankedReferrerMetricsRevShareCap };
|
|
2131
|
+
export { type AdminAction, type AdminActionDisqualification, type AdminActionType, AdminActionTypes, type AdminActionWarning, type AggregatedReferrerMetricsPieSplit, type AggregatedReferrerMetricsRevShareCap, type AwardedReferrerMetricsPieSplit, type AwardedReferrerMetricsRevShareCap, type BaseReferralProgramEditionConfig, type BaseReferralProgramEditionSummary, type BaseReferralProgramRules, type BaseReferrerLeaderboardPage, type ClientOptions, DEFAULT_ENSNODE_API_URL, ENSReferralsClient, MAX_EDITIONS_PER_REQUEST, REFERRAL_PROGRAM_EDITION_SLUG_PATTERN, REFERRERS_PER_LEADERBOARD_PAGE_DEFAULT, REFERRERS_PER_LEADERBOARD_PAGE_MAX, type RankedReferrerMetricsPieSplit, type RankedReferrerMetricsRevShareCap, type ReferralEvent, type ReferralProgramAwardModel, ReferralProgramAwardModels, type ReferralProgramEditionConfig, type ReferralProgramEditionConfigSet, type ReferralProgramEditionSlug, type ReferralProgramEditionStatusId, ReferralProgramEditionStatuses, type ReferralProgramEditionSummariesData, type ReferralProgramEditionSummariesResponse, type ReferralProgramEditionSummariesResponseCode, ReferralProgramEditionSummariesResponseCodes, type ReferralProgramEditionSummariesResponseError, type ReferralProgramEditionSummariesResponseOk, type ReferralProgramEditionSummary, type ReferralProgramEditionSummaryPieSplit, type ReferralProgramEditionSummaryRevShareCap, type ReferralProgramEditionSummaryUnrecognized, type ReferralProgramRules, type ReferralProgramRulesPieSplit, type ReferralProgramRulesRevShareCap, type ReferralProgramRulesUnrecognized, type ReferrerEditionMetrics, type ReferrerEditionMetricsPieSplit, type ReferrerEditionMetricsRankedPieSplit, type ReferrerEditionMetricsRankedRevShareCap, type ReferrerEditionMetricsRevShareCap, type ReferrerEditionMetricsTypeId, ReferrerEditionMetricsTypeIds, type ReferrerEditionMetricsUnrankedPieSplit, type ReferrerEditionMetricsUnrankedRevShareCap, type ReferrerEditionMetricsUnrecognized, type ReferrerLeaderboard, type ReferrerLeaderboardPage, type ReferrerLeaderboardPageContext, type ReferrerLeaderboardPageParams, type ReferrerLeaderboardPagePieSplit, type ReferrerLeaderboardPageRequest, type ReferrerLeaderboardPageResponse, type ReferrerLeaderboardPageResponseCode, ReferrerLeaderboardPageResponseCodes, type ReferrerLeaderboardPageResponseError, type ReferrerLeaderboardPageResponseOk, type ReferrerLeaderboardPageRevShareCap, type ReferrerLeaderboardPageUnrecognized, type ReferrerLeaderboardPieSplit, type ReferrerLeaderboardRevShareCap, type ReferrerMetrics, type ReferrerMetricsEditionsData, type ReferrerMetricsEditionsRequest, type ReferrerMetricsEditionsResponse, type ReferrerMetricsEditionsResponseCode, ReferrerMetricsEditionsResponseCodes, type ReferrerMetricsEditionsResponseError, type ReferrerMetricsEditionsResponseOk, type ReferrerMetricsForComparison, type ReferrerMetricsRevShareCap, type ReferrerRank, type ReferrerScore, SECONDS_PER_YEAR, type ScoredReferrerMetricsPieSplit, type SerializedAggregatedReferrerMetricsPieSplit, type SerializedAggregatedReferrerMetricsRevShareCap, type SerializedAwardedReferrerMetricsPieSplit, type SerializedAwardedReferrerMetricsRevShareCap, type SerializedReferralProgramEditionSummariesData, type SerializedReferralProgramEditionSummariesResponse, type SerializedReferralProgramEditionSummariesResponseError, type SerializedReferralProgramEditionSummariesResponseOk, type SerializedReferralProgramEditionSummary, type SerializedReferralProgramEditionSummaryPieSplit, type SerializedReferralProgramEditionSummaryRevShareCap, type SerializedReferralProgramRules, type SerializedReferralProgramRulesPieSplit, type SerializedReferralProgramRulesRevShareCap, type SerializedReferrerEditionMetrics, type SerializedReferrerEditionMetricsPieSplit, type SerializedReferrerEditionMetricsRankedPieSplit, type SerializedReferrerEditionMetricsRankedRevShareCap, type SerializedReferrerEditionMetricsRevShareCap, type SerializedReferrerEditionMetricsUnrankedPieSplit, type SerializedReferrerEditionMetricsUnrankedRevShareCap, type SerializedReferrerLeaderboardPage, type SerializedReferrerLeaderboardPagePieSplit, type SerializedReferrerLeaderboardPageResponse, type SerializedReferrerLeaderboardPageResponseError, type SerializedReferrerLeaderboardPageResponseOk, type SerializedReferrerLeaderboardPageRevShareCap, type SerializedReferrerMetricsEditionsData, type SerializedReferrerMetricsEditionsResponse, type SerializedReferrerMetricsEditionsResponseError, type SerializedReferrerMetricsEditionsResponseOk, type SerializedUnrankedReferrerMetricsPieSplit, type SerializedUnrankedReferrerMetricsRevShareCap, type UnrankedReferrerMetricsPieSplit, type UnrankedReferrerMetricsRevShareCap, buildAggregatedReferrerMetricsPieSplit, buildAggregatedReferrerMetricsRevShareCap, buildAwardedReferrerMetricsPieSplit, buildAwardedReferrerMetricsRevShareCap, buildEditionSummary, buildEditionSummaryPieSplit, buildEditionSummaryRevShareCap, buildEnsReferralUrl, buildLeaderboardPagePieSplit, buildLeaderboardPageRevShareCap, buildRankedReferrerMetricsPieSplit, buildRankedReferrerMetricsRevShareCap, buildReferralProgramEditionConfigSet, buildReferralProgramRulesPieSplit, buildReferralProgramRulesRevShareCap, buildReferrerLeaderboardPageContext, buildReferrerLeaderboardPageParams, buildReferrerLeaderboardPieSplit, buildReferrerLeaderboardRevShareCap, buildReferrerMetrics, buildReferrerMetricsRevShareCap, buildScoredReferrerMetricsPieSplit, buildUnrankedReferrerMetricsPieSplit, buildUnrankedReferrerMetricsRevShareCap, calcBaseReferralProgramEditionStatus, calcBaseRevenueContribution, calcReferralProgramEditionStatusPieSplit, calcReferralProgramEditionStatusRevShareCap, calcReferrerAwardPoolSharePieSplit, calcReferrerScorePieSplit, compareReferrerMetrics, deserializeReferralProgramEditionConfigSetArray, deserializeReferralProgramEditionSummariesResponse, deserializeReferrerLeaderboardPageResponse, deserializeReferrerMetricsEditionsResponse, findOverlappingEditionPair, getReferrerEditionMetrics, getReferrerLeaderboardPage, isFiniteNonNegativeNumber, isInteger, isNonNegativeInteger, isPositiveInteger, isReferrerQualifiedRevShareCap, isValidDuration, isValidReferrerScore, serializeReferralProgramEditionSummariesResponse, serializeReferralProgramEditionSummary, serializeReferralProgramRules, serializeReferrerLeaderboardPageResponse, serializeReferrerMetricsEditionsResponse, sliceReferrers, sortReferrerMetrics, validateAggregatedReferrerMetricsPieSplit, validateAggregatedReferrerMetricsRevShareCap, validateAwardedReferrerMetricsPieSplit, validateAwardedReferrerMetricsRevShareCap, validateBaseReferralProgramEditionSummary, validateBaseReferralProgramRules, validateDuration, validateEditionSummaryPieSplit, validateEditionSummaryRevShareCap, validateNonNegativeInteger, validateNormalizedAddress, validateRankedReferrerMetricsPieSplit, validateRankedReferrerMetricsRevShareCap, validateReferralProgramEditionConfigSet, validateReferralProgramRulesPieSplit, validateReferralProgramRulesRevShareCap, validateReferrerLeaderboardPageContext, validateReferrerMetrics, validateReferrerMetricsRevShareCap, validateReferrerRank, validateReferrerScore, validateScoredReferrerMetricsPieSplit, validateUnixTimestamp, validateUnrankedReferrerMetricsPieSplit, validateUnrankedReferrerMetricsRevShareCap };
|
package/dist/index.d.ts
CHANGED
|
@@ -250,9 +250,9 @@ type ReferralProgramEditionSlug = string;
|
|
|
250
250
|
*/
|
|
251
251
|
declare const REFERRAL_PROGRAM_EDITION_SLUG_PATTERN: RegExp;
|
|
252
252
|
/**
|
|
253
|
-
*
|
|
253
|
+
* Base fields shared by all referral program edition configs.
|
|
254
254
|
*/
|
|
255
|
-
interface
|
|
255
|
+
interface BaseReferralProgramEditionConfig {
|
|
256
256
|
/**
|
|
257
257
|
* Unique slug identifier for the edition.
|
|
258
258
|
*/
|
|
@@ -262,6 +262,15 @@ interface ReferralProgramEditionConfig {
|
|
|
262
262
|
* @example "ENS Holiday Awards"
|
|
263
263
|
*/
|
|
264
264
|
displayName: string;
|
|
265
|
+
/**
|
|
266
|
+
* The base rules that govern this referral program edition.
|
|
267
|
+
*/
|
|
268
|
+
rules: BaseReferralProgramRules;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Represents a referral program edition configuration.
|
|
272
|
+
*/
|
|
273
|
+
interface ReferralProgramEditionConfig extends BaseReferralProgramEditionConfig {
|
|
265
274
|
/**
|
|
266
275
|
* The rules that govern this referral program edition.
|
|
267
276
|
*/
|
|
@@ -277,13 +286,26 @@ interface ReferralProgramEditionConfig {
|
|
|
277
286
|
*/
|
|
278
287
|
type ReferralProgramEditionConfigSet = Map<ReferralProgramEditionSlug, ReferralProgramEditionConfig>;
|
|
279
288
|
/**
|
|
280
|
-
* Validates
|
|
281
|
-
* that each map key equals the corresponding config's slug.
|
|
289
|
+
* Validates the invariants of a {@link ReferralProgramEditionConfigSet}.
|
|
282
290
|
*
|
|
283
291
|
* @param configSet - The edition config set to validate
|
|
284
|
-
* @throws {Error} If any entry violates the invariant
|
|
292
|
+
* @throws {Error} If any entry violates the invariant that each map key equals the
|
|
293
|
+
* corresponding config's slug
|
|
294
|
+
* @throws {Error} If any pair of editions sharing a `subregistryId` overlap in time
|
|
295
|
+
* (`startTime` and `endTime` are inclusive — touching edges count as overlap)
|
|
285
296
|
*/
|
|
286
297
|
declare function validateReferralProgramEditionConfigSet(configSet: ReferralProgramEditionConfigSet): void;
|
|
298
|
+
/**
|
|
299
|
+
* Returns the first pair of editions sharing a `subregistryId` whose time ranges overlap,
|
|
300
|
+
* or `null` if none do.
|
|
301
|
+
*
|
|
302
|
+
* `startTime` and `endTime` are inclusive, so ranges sharing a single instant
|
|
303
|
+
* (`A.endTime === B.startTime`) count as overlapping.
|
|
304
|
+
*
|
|
305
|
+
* @param editions - Array of editions to check
|
|
306
|
+
* @returns A `[a, b]` tuple of the first offending pair, or `null` if none
|
|
307
|
+
*/
|
|
308
|
+
declare function findOverlappingEditionPair<T extends BaseReferralProgramEditionConfig>(editions: readonly T[]): readonly [T, T] | null;
|
|
287
309
|
/**
|
|
288
310
|
* Builds a new ReferralProgramEditionConfigSet from an array of configs and validates the invariant.
|
|
289
311
|
*
|
|
@@ -711,29 +733,17 @@ type ReferrerEditionMetricsPieSplit = ReferrerEditionMetricsRankedPieSplit | Ref
|
|
|
711
733
|
/**
|
|
712
734
|
* Base fields shared by all edition summary variants.
|
|
713
735
|
*/
|
|
714
|
-
interface BaseReferralProgramEditionSummary {
|
|
736
|
+
interface BaseReferralProgramEditionSummary extends BaseReferralProgramEditionConfig {
|
|
715
737
|
/**
|
|
716
738
|
* Discriminant: identifies the award model for this edition.
|
|
717
739
|
*
|
|
718
740
|
* @invariant Always equals `rules.awardModel`.
|
|
719
741
|
*/
|
|
720
742
|
awardModel: ReferralProgramAwardModel;
|
|
721
|
-
/**
|
|
722
|
-
* Unique slug identifier for the edition.
|
|
723
|
-
*/
|
|
724
|
-
slug: ReferralProgramEditionSlug;
|
|
725
|
-
/**
|
|
726
|
-
* Human-readable display name for the edition.
|
|
727
|
-
*/
|
|
728
|
-
displayName: string;
|
|
729
743
|
/**
|
|
730
744
|
* The current runtime status of the edition.
|
|
731
745
|
*/
|
|
732
746
|
status: ReferralProgramEditionStatusId;
|
|
733
|
-
/**
|
|
734
|
-
* The rules for this edition. Per-model subtypes narrow this to their specific rules type.
|
|
735
|
-
*/
|
|
736
|
-
rules: BaseReferralProgramRules;
|
|
737
747
|
}
|
|
738
748
|
/**
|
|
739
749
|
* Edition summary for an edition whose `awardModel` is not recognized by this client version.
|
|
@@ -2118,4 +2128,4 @@ declare const SECONDS_PER_YEAR: Duration;
|
|
|
2118
2128
|
declare function isValidDuration(duration: Duration): boolean;
|
|
2119
2129
|
declare function validateDuration(duration: Duration): void;
|
|
2120
2130
|
|
|
2121
|
-
export { type AdminAction, type AdminActionDisqualification, type AdminActionType, AdminActionTypes, type AdminActionWarning, type AggregatedReferrerMetricsPieSplit, type AggregatedReferrerMetricsRevShareCap, type AwardedReferrerMetricsPieSplit, type AwardedReferrerMetricsRevShareCap, type BaseReferralProgramEditionSummary, type BaseReferralProgramRules, type BaseReferrerLeaderboardPage, type ClientOptions, DEFAULT_ENSNODE_API_URL, ENSReferralsClient, MAX_EDITIONS_PER_REQUEST, REFERRAL_PROGRAM_EDITION_SLUG_PATTERN, REFERRERS_PER_LEADERBOARD_PAGE_DEFAULT, REFERRERS_PER_LEADERBOARD_PAGE_MAX, type RankedReferrerMetricsPieSplit, type RankedReferrerMetricsRevShareCap, type ReferralEvent, type ReferralProgramAwardModel, ReferralProgramAwardModels, type ReferralProgramEditionConfig, type ReferralProgramEditionConfigSet, type ReferralProgramEditionSlug, type ReferralProgramEditionStatusId, ReferralProgramEditionStatuses, type ReferralProgramEditionSummariesData, type ReferralProgramEditionSummariesResponse, type ReferralProgramEditionSummariesResponseCode, ReferralProgramEditionSummariesResponseCodes, type ReferralProgramEditionSummariesResponseError, type ReferralProgramEditionSummariesResponseOk, type ReferralProgramEditionSummary, type ReferralProgramEditionSummaryPieSplit, type ReferralProgramEditionSummaryRevShareCap, type ReferralProgramEditionSummaryUnrecognized, type ReferralProgramRules, type ReferralProgramRulesPieSplit, type ReferralProgramRulesRevShareCap, type ReferralProgramRulesUnrecognized, type ReferrerEditionMetrics, type ReferrerEditionMetricsPieSplit, type ReferrerEditionMetricsRankedPieSplit, type ReferrerEditionMetricsRankedRevShareCap, type ReferrerEditionMetricsRevShareCap, type ReferrerEditionMetricsTypeId, ReferrerEditionMetricsTypeIds, type ReferrerEditionMetricsUnrankedPieSplit, type ReferrerEditionMetricsUnrankedRevShareCap, type ReferrerEditionMetricsUnrecognized, type ReferrerLeaderboard, type ReferrerLeaderboardPage, type ReferrerLeaderboardPageContext, type ReferrerLeaderboardPageParams, type ReferrerLeaderboardPagePieSplit, type ReferrerLeaderboardPageRequest, type ReferrerLeaderboardPageResponse, type ReferrerLeaderboardPageResponseCode, ReferrerLeaderboardPageResponseCodes, type ReferrerLeaderboardPageResponseError, type ReferrerLeaderboardPageResponseOk, type ReferrerLeaderboardPageRevShareCap, type ReferrerLeaderboardPageUnrecognized, type ReferrerLeaderboardPieSplit, type ReferrerLeaderboardRevShareCap, type ReferrerMetrics, type ReferrerMetricsEditionsData, type ReferrerMetricsEditionsRequest, type ReferrerMetricsEditionsResponse, type ReferrerMetricsEditionsResponseCode, ReferrerMetricsEditionsResponseCodes, type ReferrerMetricsEditionsResponseError, type ReferrerMetricsEditionsResponseOk, type ReferrerMetricsForComparison, type ReferrerMetricsRevShareCap, type ReferrerRank, type ReferrerScore, SECONDS_PER_YEAR, type ScoredReferrerMetricsPieSplit, type SerializedAggregatedReferrerMetricsPieSplit, type SerializedAggregatedReferrerMetricsRevShareCap, type SerializedAwardedReferrerMetricsPieSplit, type SerializedAwardedReferrerMetricsRevShareCap, type SerializedReferralProgramEditionSummariesData, type SerializedReferralProgramEditionSummariesResponse, type SerializedReferralProgramEditionSummariesResponseError, type SerializedReferralProgramEditionSummariesResponseOk, type SerializedReferralProgramEditionSummary, type SerializedReferralProgramEditionSummaryPieSplit, type SerializedReferralProgramEditionSummaryRevShareCap, type SerializedReferralProgramRules, type SerializedReferralProgramRulesPieSplit, type SerializedReferralProgramRulesRevShareCap, type SerializedReferrerEditionMetrics, type SerializedReferrerEditionMetricsPieSplit, type SerializedReferrerEditionMetricsRankedPieSplit, type SerializedReferrerEditionMetricsRankedRevShareCap, type SerializedReferrerEditionMetricsRevShareCap, type SerializedReferrerEditionMetricsUnrankedPieSplit, type SerializedReferrerEditionMetricsUnrankedRevShareCap, type SerializedReferrerLeaderboardPage, type SerializedReferrerLeaderboardPagePieSplit, type SerializedReferrerLeaderboardPageResponse, type SerializedReferrerLeaderboardPageResponseError, type SerializedReferrerLeaderboardPageResponseOk, type SerializedReferrerLeaderboardPageRevShareCap, type SerializedReferrerMetricsEditionsData, type SerializedReferrerMetricsEditionsResponse, type SerializedReferrerMetricsEditionsResponseError, type SerializedReferrerMetricsEditionsResponseOk, type SerializedUnrankedReferrerMetricsPieSplit, type SerializedUnrankedReferrerMetricsRevShareCap, type UnrankedReferrerMetricsPieSplit, type UnrankedReferrerMetricsRevShareCap, buildAggregatedReferrerMetricsPieSplit, buildAggregatedReferrerMetricsRevShareCap, buildAwardedReferrerMetricsPieSplit, buildAwardedReferrerMetricsRevShareCap, buildEditionSummary, buildEditionSummaryPieSplit, buildEditionSummaryRevShareCap, buildEnsReferralUrl, buildLeaderboardPagePieSplit, buildLeaderboardPageRevShareCap, buildRankedReferrerMetricsPieSplit, buildRankedReferrerMetricsRevShareCap, buildReferralProgramEditionConfigSet, buildReferralProgramRulesPieSplit, buildReferralProgramRulesRevShareCap, buildReferrerLeaderboardPageContext, buildReferrerLeaderboardPageParams, buildReferrerLeaderboardPieSplit, buildReferrerLeaderboardRevShareCap, buildReferrerMetrics, buildReferrerMetricsRevShareCap, buildScoredReferrerMetricsPieSplit, buildUnrankedReferrerMetricsPieSplit, buildUnrankedReferrerMetricsRevShareCap, calcBaseReferralProgramEditionStatus, calcBaseRevenueContribution, calcReferralProgramEditionStatusPieSplit, calcReferralProgramEditionStatusRevShareCap, calcReferrerAwardPoolSharePieSplit, calcReferrerScorePieSplit, compareReferrerMetrics, deserializeReferralProgramEditionConfigSetArray, deserializeReferralProgramEditionSummariesResponse, deserializeReferrerLeaderboardPageResponse, deserializeReferrerMetricsEditionsResponse, getReferrerEditionMetrics, getReferrerLeaderboardPage, isFiniteNonNegativeNumber, isInteger, isNonNegativeInteger, isPositiveInteger, isReferrerQualifiedRevShareCap, isValidDuration, isValidReferrerScore, serializeReferralProgramEditionSummariesResponse, serializeReferralProgramEditionSummary, serializeReferralProgramRules, serializeReferrerLeaderboardPageResponse, serializeReferrerMetricsEditionsResponse, sliceReferrers, sortReferrerMetrics, validateAggregatedReferrerMetricsPieSplit, validateAggregatedReferrerMetricsRevShareCap, validateAwardedReferrerMetricsPieSplit, validateAwardedReferrerMetricsRevShareCap, validateBaseReferralProgramEditionSummary, validateBaseReferralProgramRules, validateDuration, validateEditionSummaryPieSplit, validateEditionSummaryRevShareCap, validateNonNegativeInteger, validateNormalizedAddress, validateRankedReferrerMetricsPieSplit, validateRankedReferrerMetricsRevShareCap, validateReferralProgramEditionConfigSet, validateReferralProgramRulesPieSplit, validateReferralProgramRulesRevShareCap, validateReferrerLeaderboardPageContext, validateReferrerMetrics, validateReferrerMetricsRevShareCap, validateReferrerRank, validateReferrerScore, validateScoredReferrerMetricsPieSplit, validateUnixTimestamp, validateUnrankedReferrerMetricsPieSplit, validateUnrankedReferrerMetricsRevShareCap };
|
|
2131
|
+
export { type AdminAction, type AdminActionDisqualification, type AdminActionType, AdminActionTypes, type AdminActionWarning, type AggregatedReferrerMetricsPieSplit, type AggregatedReferrerMetricsRevShareCap, type AwardedReferrerMetricsPieSplit, type AwardedReferrerMetricsRevShareCap, type BaseReferralProgramEditionConfig, type BaseReferralProgramEditionSummary, type BaseReferralProgramRules, type BaseReferrerLeaderboardPage, type ClientOptions, DEFAULT_ENSNODE_API_URL, ENSReferralsClient, MAX_EDITIONS_PER_REQUEST, REFERRAL_PROGRAM_EDITION_SLUG_PATTERN, REFERRERS_PER_LEADERBOARD_PAGE_DEFAULT, REFERRERS_PER_LEADERBOARD_PAGE_MAX, type RankedReferrerMetricsPieSplit, type RankedReferrerMetricsRevShareCap, type ReferralEvent, type ReferralProgramAwardModel, ReferralProgramAwardModels, type ReferralProgramEditionConfig, type ReferralProgramEditionConfigSet, type ReferralProgramEditionSlug, type ReferralProgramEditionStatusId, ReferralProgramEditionStatuses, type ReferralProgramEditionSummariesData, type ReferralProgramEditionSummariesResponse, type ReferralProgramEditionSummariesResponseCode, ReferralProgramEditionSummariesResponseCodes, type ReferralProgramEditionSummariesResponseError, type ReferralProgramEditionSummariesResponseOk, type ReferralProgramEditionSummary, type ReferralProgramEditionSummaryPieSplit, type ReferralProgramEditionSummaryRevShareCap, type ReferralProgramEditionSummaryUnrecognized, type ReferralProgramRules, type ReferralProgramRulesPieSplit, type ReferralProgramRulesRevShareCap, type ReferralProgramRulesUnrecognized, type ReferrerEditionMetrics, type ReferrerEditionMetricsPieSplit, type ReferrerEditionMetricsRankedPieSplit, type ReferrerEditionMetricsRankedRevShareCap, type ReferrerEditionMetricsRevShareCap, type ReferrerEditionMetricsTypeId, ReferrerEditionMetricsTypeIds, type ReferrerEditionMetricsUnrankedPieSplit, type ReferrerEditionMetricsUnrankedRevShareCap, type ReferrerEditionMetricsUnrecognized, type ReferrerLeaderboard, type ReferrerLeaderboardPage, type ReferrerLeaderboardPageContext, type ReferrerLeaderboardPageParams, type ReferrerLeaderboardPagePieSplit, type ReferrerLeaderboardPageRequest, type ReferrerLeaderboardPageResponse, type ReferrerLeaderboardPageResponseCode, ReferrerLeaderboardPageResponseCodes, type ReferrerLeaderboardPageResponseError, type ReferrerLeaderboardPageResponseOk, type ReferrerLeaderboardPageRevShareCap, type ReferrerLeaderboardPageUnrecognized, type ReferrerLeaderboardPieSplit, type ReferrerLeaderboardRevShareCap, type ReferrerMetrics, type ReferrerMetricsEditionsData, type ReferrerMetricsEditionsRequest, type ReferrerMetricsEditionsResponse, type ReferrerMetricsEditionsResponseCode, ReferrerMetricsEditionsResponseCodes, type ReferrerMetricsEditionsResponseError, type ReferrerMetricsEditionsResponseOk, type ReferrerMetricsForComparison, type ReferrerMetricsRevShareCap, type ReferrerRank, type ReferrerScore, SECONDS_PER_YEAR, type ScoredReferrerMetricsPieSplit, type SerializedAggregatedReferrerMetricsPieSplit, type SerializedAggregatedReferrerMetricsRevShareCap, type SerializedAwardedReferrerMetricsPieSplit, type SerializedAwardedReferrerMetricsRevShareCap, type SerializedReferralProgramEditionSummariesData, type SerializedReferralProgramEditionSummariesResponse, type SerializedReferralProgramEditionSummariesResponseError, type SerializedReferralProgramEditionSummariesResponseOk, type SerializedReferralProgramEditionSummary, type SerializedReferralProgramEditionSummaryPieSplit, type SerializedReferralProgramEditionSummaryRevShareCap, type SerializedReferralProgramRules, type SerializedReferralProgramRulesPieSplit, type SerializedReferralProgramRulesRevShareCap, type SerializedReferrerEditionMetrics, type SerializedReferrerEditionMetricsPieSplit, type SerializedReferrerEditionMetricsRankedPieSplit, type SerializedReferrerEditionMetricsRankedRevShareCap, type SerializedReferrerEditionMetricsRevShareCap, type SerializedReferrerEditionMetricsUnrankedPieSplit, type SerializedReferrerEditionMetricsUnrankedRevShareCap, type SerializedReferrerLeaderboardPage, type SerializedReferrerLeaderboardPagePieSplit, type SerializedReferrerLeaderboardPageResponse, type SerializedReferrerLeaderboardPageResponseError, type SerializedReferrerLeaderboardPageResponseOk, type SerializedReferrerLeaderboardPageRevShareCap, type SerializedReferrerMetricsEditionsData, type SerializedReferrerMetricsEditionsResponse, type SerializedReferrerMetricsEditionsResponseError, type SerializedReferrerMetricsEditionsResponseOk, type SerializedUnrankedReferrerMetricsPieSplit, type SerializedUnrankedReferrerMetricsRevShareCap, type UnrankedReferrerMetricsPieSplit, type UnrankedReferrerMetricsRevShareCap, buildAggregatedReferrerMetricsPieSplit, buildAggregatedReferrerMetricsRevShareCap, buildAwardedReferrerMetricsPieSplit, buildAwardedReferrerMetricsRevShareCap, buildEditionSummary, buildEditionSummaryPieSplit, buildEditionSummaryRevShareCap, buildEnsReferralUrl, buildLeaderboardPagePieSplit, buildLeaderboardPageRevShareCap, buildRankedReferrerMetricsPieSplit, buildRankedReferrerMetricsRevShareCap, buildReferralProgramEditionConfigSet, buildReferralProgramRulesPieSplit, buildReferralProgramRulesRevShareCap, buildReferrerLeaderboardPageContext, buildReferrerLeaderboardPageParams, buildReferrerLeaderboardPieSplit, buildReferrerLeaderboardRevShareCap, buildReferrerMetrics, buildReferrerMetricsRevShareCap, buildScoredReferrerMetricsPieSplit, buildUnrankedReferrerMetricsPieSplit, buildUnrankedReferrerMetricsRevShareCap, calcBaseReferralProgramEditionStatus, calcBaseRevenueContribution, calcReferralProgramEditionStatusPieSplit, calcReferralProgramEditionStatusRevShareCap, calcReferrerAwardPoolSharePieSplit, calcReferrerScorePieSplit, compareReferrerMetrics, deserializeReferralProgramEditionConfigSetArray, deserializeReferralProgramEditionSummariesResponse, deserializeReferrerLeaderboardPageResponse, deserializeReferrerMetricsEditionsResponse, findOverlappingEditionPair, getReferrerEditionMetrics, getReferrerLeaderboardPage, isFiniteNonNegativeNumber, isInteger, isNonNegativeInteger, isPositiveInteger, isReferrerQualifiedRevShareCap, isValidDuration, isValidReferrerScore, serializeReferralProgramEditionSummariesResponse, serializeReferralProgramEditionSummary, serializeReferralProgramRules, serializeReferrerLeaderboardPageResponse, serializeReferrerMetricsEditionsResponse, sliceReferrers, sortReferrerMetrics, validateAggregatedReferrerMetricsPieSplit, validateAggregatedReferrerMetricsRevShareCap, validateAwardedReferrerMetricsPieSplit, validateAwardedReferrerMetricsRevShareCap, validateBaseReferralProgramEditionSummary, validateBaseReferralProgramRules, validateDuration, validateEditionSummaryPieSplit, validateEditionSummaryRevShareCap, validateNonNegativeInteger, validateNormalizedAddress, validateRankedReferrerMetricsPieSplit, validateRankedReferrerMetricsRevShareCap, validateReferralProgramEditionConfigSet, validateReferralProgramRulesPieSplit, validateReferralProgramRulesRevShareCap, validateReferrerLeaderboardPageContext, validateReferrerMetrics, validateReferrerMetricsRevShareCap, validateReferrerRank, validateReferrerScore, validateScoredReferrerMetricsPieSplit, validateUnixTimestamp, validateUnrankedReferrerMetricsPieSplit, validateUnrankedReferrerMetricsRevShareCap };
|
package/dist/index.js
CHANGED
|
@@ -353,7 +353,8 @@ function scaleBigintByNumber(value, scaleFactor) {
|
|
|
353
353
|
var CurrencyIds = {
|
|
354
354
|
ETH: "ETH",
|
|
355
355
|
USDC: "USDC",
|
|
356
|
-
DAI: "DAI"
|
|
356
|
+
DAI: "DAI",
|
|
357
|
+
ENSTokens: "ENSTokens"
|
|
357
358
|
};
|
|
358
359
|
var currencyInfo = {
|
|
359
360
|
[CurrencyIds.ETH]: {
|
|
@@ -370,6 +371,11 @@ var currencyInfo = {
|
|
|
370
371
|
id: CurrencyIds.DAI,
|
|
371
372
|
name: "Dai Stablecoin",
|
|
372
373
|
decimals: 18
|
|
374
|
+
},
|
|
375
|
+
[CurrencyIds.ENSTokens]: {
|
|
376
|
+
id: CurrencyIds.ENSTokens,
|
|
377
|
+
name: "$ENS Tokens",
|
|
378
|
+
decimals: 18
|
|
373
379
|
}
|
|
374
380
|
};
|
|
375
381
|
function priceEth(amount) {
|
|
@@ -504,6 +510,62 @@ import z3 from "zod/v4";
|
|
|
504
510
|
// src/award-models/shared/api/zod-schemas.ts
|
|
505
511
|
import z2 from "zod/v4";
|
|
506
512
|
|
|
513
|
+
// src/edition.ts
|
|
514
|
+
var REFERRAL_PROGRAM_EDITION_SLUG_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
515
|
+
function validateReferralProgramEditionConfigSet(configSet) {
|
|
516
|
+
const violation = Array.from(configSet.entries()).find(([key, config]) => key !== config.slug);
|
|
517
|
+
if (violation) {
|
|
518
|
+
const [key, config] = violation;
|
|
519
|
+
throw new Error(
|
|
520
|
+
`Edition config set invariant violation: map key "${key}" does not match config.slug "${config.slug}"`
|
|
521
|
+
);
|
|
522
|
+
}
|
|
523
|
+
const overlap = findOverlappingEditionPair(Array.from(configSet.values()));
|
|
524
|
+
if (overlap) {
|
|
525
|
+
const [a, b] = overlap;
|
|
526
|
+
throw new Error(
|
|
527
|
+
`Edition config set invariant violation: editions "${a.slug}" and "${b.slug}" have overlapping time ranges for subregistryId ${a.rules.subregistryId.chainId}:${a.rules.subregistryId.address} (startTime and endTime are inclusive)`
|
|
528
|
+
);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
function findOverlappingEditionPair(editions) {
|
|
532
|
+
const byRegistry = /* @__PURE__ */ new Map();
|
|
533
|
+
for (const edition of editions) {
|
|
534
|
+
const key = `${edition.rules.subregistryId.chainId}:${edition.rules.subregistryId.address}`;
|
|
535
|
+
const group = byRegistry.get(key);
|
|
536
|
+
if (group) {
|
|
537
|
+
group.push(edition);
|
|
538
|
+
} else {
|
|
539
|
+
byRegistry.set(key, [edition]);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
for (const group of byRegistry.values()) {
|
|
543
|
+
if (group.length < 2) continue;
|
|
544
|
+
group.sort((a, b) => a.rules.startTime - b.rules.startTime);
|
|
545
|
+
for (let i = 1; i < group.length; i++) {
|
|
546
|
+
const prev = group[i - 1];
|
|
547
|
+
const curr = group[i];
|
|
548
|
+
if (curr.rules.startTime <= prev.rules.endTime) {
|
|
549
|
+
return [prev, curr];
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
return null;
|
|
554
|
+
}
|
|
555
|
+
function buildReferralProgramEditionConfigSet(configs) {
|
|
556
|
+
const slugCounts = configs.reduce((counts, config) => {
|
|
557
|
+
counts.set(config.slug, (counts.get(config.slug) || 0) + 1);
|
|
558
|
+
return counts;
|
|
559
|
+
}, /* @__PURE__ */ new Map());
|
|
560
|
+
const duplicates = Array.from(slugCounts.entries()).filter(([_, count]) => count > 1).map(([slug, count]) => `"${slug}" (${count} occurrences)`);
|
|
561
|
+
if (duplicates.length > 0) {
|
|
562
|
+
throw new Error(`Duplicate edition config slugs detected: ${duplicates.join(", ")}`);
|
|
563
|
+
}
|
|
564
|
+
const configSet = new Map(configs.map((config) => [config.slug, config]));
|
|
565
|
+
validateReferralProgramEditionConfigSet(configSet);
|
|
566
|
+
return configSet;
|
|
567
|
+
}
|
|
568
|
+
|
|
507
569
|
// src/number.ts
|
|
508
570
|
var isInteger = (value) => {
|
|
509
571
|
return Number.isInteger(value);
|
|
@@ -710,6 +772,15 @@ var calcBaseReferralProgramEditionStatus = (rules, now) => {
|
|
|
710
772
|
};
|
|
711
773
|
|
|
712
774
|
// src/award-models/shared/api/zod-schemas.ts
|
|
775
|
+
var makeReferralProgramEditionSlugSchema = (valueLabel = "ReferralProgramEditionSlug") => z2.string().min(1, `${valueLabel} must not be empty`).regex(
|
|
776
|
+
REFERRAL_PROGRAM_EDITION_SLUG_PATTERN,
|
|
777
|
+
`${valueLabel} must contain only lowercase letters, digits, and hyphens. Must not start or end with a hyphen.`
|
|
778
|
+
);
|
|
779
|
+
var makeBaseReferralProgramEditionConfigSchema = (valueLabel = "BaseReferralProgramEditionConfig") => z2.object({
|
|
780
|
+
slug: makeReferralProgramEditionSlugSchema(`${valueLabel}.slug`),
|
|
781
|
+
displayName: z2.string().min(1, `${valueLabel}.displayName must not be empty`),
|
|
782
|
+
rules: makeBaseReferralProgramRulesSchema(`${valueLabel}.rules`)
|
|
783
|
+
});
|
|
713
784
|
var makeBaseReferralProgramRulesSchema = (valueLabel) => z2.object({
|
|
714
785
|
awardModel: z2.string(),
|
|
715
786
|
startTime: makeUnixTimestampSchema(`${valueLabel}.startTime`),
|
|
@@ -735,12 +806,9 @@ var makeReferrerLeaderboardPageContextSchema = (valueLabel = "ReferrerLeaderboar
|
|
|
735
806
|
endIndex: z2.optional(makeNonNegativeIntegerSchema(`${valueLabel}.endIndex`))
|
|
736
807
|
});
|
|
737
808
|
var makeReferralProgramStatusSchema = (_valueLabel = "status") => z2.enum(ReferralProgramEditionStatuses);
|
|
738
|
-
var makeBaseReferralProgramEditionSummarySchema = (valueLabel) =>
|
|
809
|
+
var makeBaseReferralProgramEditionSummarySchema = (valueLabel) => makeBaseReferralProgramEditionConfigSchema(valueLabel).safeExtend({
|
|
739
810
|
awardModel: z2.string(),
|
|
740
|
-
|
|
741
|
-
displayName: z2.string().min(1, `${valueLabel}.displayName must not be empty`),
|
|
742
|
-
status: makeReferralProgramStatusSchema(`${valueLabel}.status`),
|
|
743
|
-
rules: makeBaseReferralProgramRulesSchema(`${valueLabel}.rules`)
|
|
811
|
+
status: makeReferralProgramStatusSchema(`${valueLabel}.status`)
|
|
744
812
|
});
|
|
745
813
|
var makeBaseReferrerLeaderboardPageSchema = (valueLabel) => z2.object({
|
|
746
814
|
awardModel: z2.string(),
|
|
@@ -1321,10 +1389,6 @@ var makeReferrerEditionMetricsSchema = (valueLabel = "ReferrerEditionMetrics") =
|
|
|
1321
1389
|
};
|
|
1322
1390
|
});
|
|
1323
1391
|
};
|
|
1324
|
-
var makeReferralProgramEditionSlugSchema = (valueLabel = "ReferralProgramEditionSlug") => z5.string().min(1, `${valueLabel} must not be empty`).regex(
|
|
1325
|
-
/^[a-z0-9]+(-[a-z0-9]+)*$/,
|
|
1326
|
-
`${valueLabel} must contain only lowercase letters, digits, and hyphens. Must not start or end with a hyphen.`
|
|
1327
|
-
);
|
|
1328
1392
|
var makeReferrerMetricsEditionsResponseOkSchema = (valueLabel = "ReferrerMetricsEditionsResponseOk") => z5.object({
|
|
1329
1393
|
responseCode: z5.literal(ReferrerMetricsEditionsResponseCodes.Ok),
|
|
1330
1394
|
data: z5.record(
|
|
@@ -1341,12 +1405,7 @@ var makeReferrerMetricsEditionsResponseSchema = (valueLabel = "ReferrerMetricsEd
|
|
|
1341
1405
|
makeReferrerMetricsEditionsResponseOkSchema(valueLabel),
|
|
1342
1406
|
makeReferrerMetricsEditionsResponseErrorSchema(valueLabel)
|
|
1343
1407
|
]);
|
|
1344
|
-
var
|
|
1345
|
-
slug: makeReferralProgramEditionSlugSchema(`${valueLabel}.slug`),
|
|
1346
|
-
displayName: z5.string().min(1, `${valueLabel}.displayName must not be empty`),
|
|
1347
|
-
rules: makeBaseReferralProgramRulesSchema(`${valueLabel}.rules`)
|
|
1348
|
-
});
|
|
1349
|
-
var makeReferralProgramEditionConfigSchema = (valueLabel = "ReferralProgramEditionConfig") => makeReferralProgramEditionConfigBaseSchema(valueLabel).safeExtend({
|
|
1408
|
+
var makeReferralProgramEditionConfigSchema = (valueLabel = "ReferralProgramEditionConfig") => makeBaseReferralProgramEditionConfigSchema(valueLabel).safeExtend({
|
|
1350
1409
|
rules: makeReferralProgramRulesSchema(`${valueLabel}.rules`)
|
|
1351
1410
|
});
|
|
1352
1411
|
var makeReferralProgramEditionConfigSetArraySchema = (valueLabel = "ReferralProgramEditionConfigSetArray") => {
|
|
@@ -1357,7 +1416,7 @@ var makeReferralProgramEditionConfigSetArraySchema = (valueLabel = "ReferralProg
|
|
|
1357
1416
|
const looseItemSchema = z5.looseObject({
|
|
1358
1417
|
rules: z5.looseObject({ awardModel: z5.string() })
|
|
1359
1418
|
});
|
|
1360
|
-
const unrecognizedBaseSchema =
|
|
1419
|
+
const unrecognizedBaseSchema = makeBaseReferralProgramEditionConfigSchema(
|
|
1361
1420
|
`${valueLabel}[edition]`
|
|
1362
1421
|
);
|
|
1363
1422
|
return z5.array(looseItemSchema).transform((items, ctx) => {
|
|
@@ -1398,6 +1457,15 @@ var makeReferralProgramEditionConfigSetArraySchema = (valueLabel = "ReferralProg
|
|
|
1398
1457
|
}
|
|
1399
1458
|
slugs.add(edition.slug);
|
|
1400
1459
|
}
|
|
1460
|
+
const overlap = findOverlappingEditionPair(result);
|
|
1461
|
+
if (overlap) {
|
|
1462
|
+
const [a, b] = overlap;
|
|
1463
|
+
ctx.addIssue({
|
|
1464
|
+
code: "custom",
|
|
1465
|
+
message: `${valueLabel}: editions "${a.slug}" and "${b.slug}" have overlapping time ranges for subregistryId ${a.rules.subregistryId.chainId}:${a.rules.subregistryId.address} (startTime and endTime are inclusive)`
|
|
1466
|
+
});
|
|
1467
|
+
return [];
|
|
1468
|
+
}
|
|
1401
1469
|
return result;
|
|
1402
1470
|
});
|
|
1403
1471
|
};
|
|
@@ -1438,6 +1506,15 @@ var makeReferralProgramEditionSummarySchema = (valueLabel = "ReferralProgramEdit
|
|
|
1438
1506
|
};
|
|
1439
1507
|
var makeReferralProgramEditionSummariesDataSchema = (valueLabel = "ReferralProgramEditionSummariesData") => z5.object({
|
|
1440
1508
|
editions: z5.array(makeReferralProgramEditionSummarySchema(`${valueLabel}.editions[edition]`))
|
|
1509
|
+
}).superRefine((data, ctx) => {
|
|
1510
|
+
const overlap = findOverlappingEditionPair(data.editions);
|
|
1511
|
+
if (!overlap) return;
|
|
1512
|
+
const [a, b] = overlap;
|
|
1513
|
+
ctx.addIssue({
|
|
1514
|
+
code: "custom",
|
|
1515
|
+
path: ["editions"],
|
|
1516
|
+
message: `${valueLabel}: editions "${a.slug}" and "${b.slug}" have overlapping time ranges for subregistryId ${a.rules.subregistryId.chainId}:${a.rules.subregistryId.address} (startTime and endTime are inclusive)`
|
|
1517
|
+
});
|
|
1441
1518
|
});
|
|
1442
1519
|
var makeReferralProgramEditionSummariesResponseOkSchema = (valueLabel = "ReferralProgramEditionSummariesResponseOk") => z5.object({
|
|
1443
1520
|
responseCode: z5.literal(ReferralProgramEditionSummariesResponseCodes.Ok),
|
|
@@ -1917,31 +1994,6 @@ var buildAggregatedReferrerMetricsPieSplit = (referrers, rules) => {
|
|
|
1917
1994
|
return result;
|
|
1918
1995
|
};
|
|
1919
1996
|
|
|
1920
|
-
// src/edition.ts
|
|
1921
|
-
var REFERRAL_PROGRAM_EDITION_SLUG_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
1922
|
-
function validateReferralProgramEditionConfigSet(configSet) {
|
|
1923
|
-
const violation = Array.from(configSet.entries()).find(([key, config]) => key !== config.slug);
|
|
1924
|
-
if (violation) {
|
|
1925
|
-
const [key, config] = violation;
|
|
1926
|
-
throw new Error(
|
|
1927
|
-
`Edition config set invariant violation: map key "${key}" does not match config.slug "${config.slug}"`
|
|
1928
|
-
);
|
|
1929
|
-
}
|
|
1930
|
-
}
|
|
1931
|
-
function buildReferralProgramEditionConfigSet(configs) {
|
|
1932
|
-
const slugCounts = configs.reduce((counts, config) => {
|
|
1933
|
-
counts.set(config.slug, (counts.get(config.slug) || 0) + 1);
|
|
1934
|
-
return counts;
|
|
1935
|
-
}, /* @__PURE__ */ new Map());
|
|
1936
|
-
const duplicates = Array.from(slugCounts.entries()).filter(([_, count]) => count > 1).map(([slug, count]) => `"${slug}" (${count} occurrences)`);
|
|
1937
|
-
if (duplicates.length > 0) {
|
|
1938
|
-
throw new Error(`Duplicate edition config slugs detected: ${duplicates.join(", ")}`);
|
|
1939
|
-
}
|
|
1940
|
-
const configSet = new Map(configs.map((config) => [config.slug, config]));
|
|
1941
|
-
validateReferralProgramEditionConfigSet(configSet);
|
|
1942
|
-
return configSet;
|
|
1943
|
-
}
|
|
1944
|
-
|
|
1945
1997
|
// src/award-models/shared/edition-summary.ts
|
|
1946
1998
|
var validateBaseReferralProgramEditionSummary = (summary) => {
|
|
1947
1999
|
if (!REFERRAL_PROGRAM_EDITION_SLUG_PATTERN.test(summary.slug)) {
|
|
@@ -3088,6 +3140,7 @@ export {
|
|
|
3088
3140
|
deserializeReferralProgramEditionSummariesResponse,
|
|
3089
3141
|
deserializeReferrerLeaderboardPageResponse,
|
|
3090
3142
|
deserializeReferrerMetricsEditionsResponse,
|
|
3143
|
+
findOverlappingEditionPair,
|
|
3091
3144
|
getReferrerEditionMetrics,
|
|
3092
3145
|
getReferrerLeaderboardPage,
|
|
3093
3146
|
isFiniteNonNegativeNumber,
|