@namehash/ens-referrals 1.10.0 → 1.10.1

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.d.cts CHANGED
@@ -193,6 +193,15 @@ interface ReferralProgramRulesRevShareCap extends BaseReferralProgramRules {
193
193
  }
194
194
  declare const validateReferralProgramRulesRevShareCap: (rules: ReferralProgramRulesRevShareCap) => void;
195
195
  declare const buildReferralProgramRulesRevShareCap: (awardPool: PriceUsdc, minBaseRevenueContribution: PriceUsdc, baseAnnualRevenueContribution: PriceUsdc, maxBaseRevenueShare: number, startTime: UnixTimestamp, endTime: UnixTimestamp, subregistryId: AccountId, rulesUrl: URL, areAwardsDistributed: boolean, adminActions?: AdminAction[]) => ReferralProgramRulesRevShareCap;
196
+ /**
197
+ * Calculate the base revenue contribution accrued over a given duration under
198
+ * rev-share-cap rules: `rules.baseAnnualRevenueContribution × (duration / 1 year)`.
199
+ *
200
+ * Uses exact integer bigint arithmetic (single floor division) so the result
201
+ * matches the aggregate for the same duration — avoids per-event truncation
202
+ * that would compound into a smaller sum than the aggregated value.
203
+ */
204
+ declare function calcBaseRevenueContribution(rules: ReferralProgramRulesRevShareCap, duration: Duration): PriceUsdc;
196
205
  /**
197
206
  * Determine if a referrer is qualified under rev-share-cap rules.
198
207
  *
@@ -816,7 +825,7 @@ interface ReferrerMetricsRevShareCap extends ReferrerMetrics {
816
825
  * (`rules.baseAnnualRevenueContribution` × years of incremental duration).
817
826
  * Used for qualification and award calculation in the rev-share-cap model.
818
827
  *
819
- * @invariant Guaranteed to be `priceUsdc(rules.baseAnnualRevenueContribution.amount * BigInt(totalIncrementalDuration) / BigInt(SECONDS_PER_YEAR))`
828
+ * @invariant Guaranteed to equal `calcBaseRevenueContribution(rules, totalIncrementalDuration)`.
820
829
  */
821
830
  totalBaseRevenueContribution: PriceUsdc;
822
831
  }
@@ -2109,4 +2118,4 @@ declare const SECONDS_PER_YEAR: Duration;
2109
2118
  declare function isValidDuration(duration: Duration): boolean;
2110
2119
  declare function validateDuration(duration: Duration): void;
2111
2120
 
2112
- 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, 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 };
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 };
package/dist/index.d.ts CHANGED
@@ -193,6 +193,15 @@ interface ReferralProgramRulesRevShareCap extends BaseReferralProgramRules {
193
193
  }
194
194
  declare const validateReferralProgramRulesRevShareCap: (rules: ReferralProgramRulesRevShareCap) => void;
195
195
  declare const buildReferralProgramRulesRevShareCap: (awardPool: PriceUsdc, minBaseRevenueContribution: PriceUsdc, baseAnnualRevenueContribution: PriceUsdc, maxBaseRevenueShare: number, startTime: UnixTimestamp, endTime: UnixTimestamp, subregistryId: AccountId, rulesUrl: URL, areAwardsDistributed: boolean, adminActions?: AdminAction[]) => ReferralProgramRulesRevShareCap;
196
+ /**
197
+ * Calculate the base revenue contribution accrued over a given duration under
198
+ * rev-share-cap rules: `rules.baseAnnualRevenueContribution × (duration / 1 year)`.
199
+ *
200
+ * Uses exact integer bigint arithmetic (single floor division) so the result
201
+ * matches the aggregate for the same duration — avoids per-event truncation
202
+ * that would compound into a smaller sum than the aggregated value.
203
+ */
204
+ declare function calcBaseRevenueContribution(rules: ReferralProgramRulesRevShareCap, duration: Duration): PriceUsdc;
196
205
  /**
197
206
  * Determine if a referrer is qualified under rev-share-cap rules.
198
207
  *
@@ -816,7 +825,7 @@ interface ReferrerMetricsRevShareCap extends ReferrerMetrics {
816
825
  * (`rules.baseAnnualRevenueContribution` × years of incremental duration).
817
826
  * Used for qualification and award calculation in the rev-share-cap model.
818
827
  *
819
- * @invariant Guaranteed to be `priceUsdc(rules.baseAnnualRevenueContribution.amount * BigInt(totalIncrementalDuration) / BigInt(SECONDS_PER_YEAR))`
828
+ * @invariant Guaranteed to equal `calcBaseRevenueContribution(rules, totalIncrementalDuration)`.
820
829
  */
821
830
  totalBaseRevenueContribution: PriceUsdc;
822
831
  }
@@ -2109,4 +2118,4 @@ declare const SECONDS_PER_YEAR: Duration;
2109
2118
  declare function isValidDuration(duration: Duration): boolean;
2110
2119
  declare function validateDuration(duration: Duration): void;
2111
2120
 
2112
- 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, 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 };
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 };
package/dist/index.js CHANGED
@@ -384,6 +384,45 @@ function priceUsdc(amount) {
384
384
  currency: CurrencyIds.USDC
385
385
  };
386
386
  }
387
+ function isPriceCurrencyEqual(priceA, priceB) {
388
+ return priceA.currency === priceB.currency;
389
+ }
390
+ function addPrices(...prices) {
391
+ const firstPrice = prices[0];
392
+ const allPricesInSameCurrency = prices.every((price) => isPriceCurrencyEqual(firstPrice, price));
393
+ if (allPricesInSameCurrency === false) {
394
+ throw new Error("All prices must have the same currency to be added together.");
395
+ }
396
+ const { currency } = firstPrice;
397
+ return prices.reduce(
398
+ (acc, price) => ({
399
+ amount: acc.amount + price.amount,
400
+ currency
401
+ }),
402
+ {
403
+ amount: 0n,
404
+ currency: firstPrice.currency
405
+ }
406
+ );
407
+ }
408
+ function subtractPrice(a, b) {
409
+ if (!isPriceCurrencyEqual(a, b)) {
410
+ throw new Error("All prices must have the same currency to be subtracted.");
411
+ }
412
+ const resultAmount = a.amount - b.amount;
413
+ if (resultAmount < 0n) {
414
+ throw new Error("subtractPrice result must be non-negative.");
415
+ }
416
+ return { amount: resultAmount, currency: a.currency };
417
+ }
418
+ function minPrice(...prices) {
419
+ const firstPrice = prices[0];
420
+ const allPricesInSameCurrency = prices.every((price) => isPriceCurrencyEqual(firstPrice, price));
421
+ if (allPricesInSameCurrency === false) {
422
+ throw new Error("All prices must have the same currency to be compared.");
423
+ }
424
+ return prices.reduce((acc, price) => price.amount < acc.amount ? price : acc);
425
+ }
387
426
  function scalePrice(price, scaleFactor) {
388
427
  const scaledAmount = scaleBigintByNumber(price.amount, scaleFactor);
389
428
  return {
@@ -938,6 +977,11 @@ var buildReferralProgramRulesRevShareCap = (awardPool, minBaseRevenueContributio
938
977
  validateReferralProgramRulesRevShareCap(result);
939
978
  return result;
940
979
  };
980
+ function calcBaseRevenueContribution(rules, duration) {
981
+ return priceUsdc(
982
+ rules.baseAnnualRevenueContribution.amount * BigInt(duration) / BigInt(SECONDS_PER_YEAR)
983
+ );
984
+ }
941
985
  function isReferrerQualifiedRevShareCap(referrer, totalBaseRevenueContribution, rules) {
942
986
  const isAdminDisqualified = rules.adminActions.some(
943
987
  (a) => a.referrer === referrer && a.actionType === AdminActionTypes.Disqualification
@@ -2296,8 +2340,9 @@ var validateReferrerMetricsRevShareCap = (metrics, rules) => {
2296
2340
  makePriceUsdcSchema("ReferrerMetricsRevShareCap.totalBaseRevenueContribution").parse(
2297
2341
  metrics.totalBaseRevenueContribution
2298
2342
  );
2299
- const expectedTotalBaseRevenueContribution = priceUsdc(
2300
- rules.baseAnnualRevenueContribution.amount * BigInt(metrics.totalIncrementalDuration) / BigInt(SECONDS_PER_YEAR)
2343
+ const expectedTotalBaseRevenueContribution = calcBaseRevenueContribution(
2344
+ rules,
2345
+ metrics.totalIncrementalDuration
2301
2346
  );
2302
2347
  if (metrics.totalBaseRevenueContribution.amount !== expectedTotalBaseRevenueContribution.amount) {
2303
2348
  throw new Error(
@@ -2306,8 +2351,9 @@ var validateReferrerMetricsRevShareCap = (metrics, rules) => {
2306
2351
  }
2307
2352
  };
2308
2353
  var buildReferrerMetricsRevShareCap = (metrics, rules) => {
2309
- const totalBaseRevenueContribution = priceUsdc(
2310
- rules.baseAnnualRevenueContribution.amount * BigInt(metrics.totalIncrementalDuration) / BigInt(SECONDS_PER_YEAR)
2354
+ const totalBaseRevenueContribution = calcBaseRevenueContribution(
2355
+ rules,
2356
+ metrics.totalIncrementalDuration
2311
2357
  );
2312
2358
  const result = {
2313
2359
  ...metrics,
@@ -2481,71 +2527,71 @@ function sortReferralEvents(events) {
2481
2527
  }
2482
2528
 
2483
2529
  // src/award-models/rev-share-cap/leaderboard.ts
2484
- var bigintMin = (a, b) => a < b ? a : b;
2485
2530
  var buildReferrerLeaderboardRevShareCap = (events, rules, accurateAsOf) => {
2486
2531
  const sortedEvents = sortReferralEvents(events);
2487
2532
  const referrerStates = /* @__PURE__ */ new Map();
2488
- let awardPoolRemaining = rules.awardPool.amount;
2533
+ let awardPoolRemaining = rules.awardPool;
2489
2534
  for (const event of sortedEvents) {
2490
- const referrer = event.referrer;
2491
- let state = referrerStates.get(referrer);
2492
- if (!state) {
2493
- state = {
2535
+ const referrerId = event.referrer;
2536
+ let referrerState = referrerStates.get(referrerId);
2537
+ if (!referrerState) {
2538
+ referrerState = {
2494
2539
  totalReferrals: 0,
2495
2540
  totalIncrementalDuration: 0,
2496
- totalRevenueContributionAmount: 0n,
2497
- wasQualified: false,
2498
- cappedAwardAmount: 0n
2541
+ totalRevenueContribution: priceEth(0n),
2542
+ hasQualified: false,
2543
+ cappedAward: priceUsdc(0n)
2499
2544
  };
2500
- referrerStates.set(referrer, state);
2545
+ referrerStates.set(referrerId, referrerState);
2501
2546
  }
2502
- state.totalReferrals += 1;
2503
- state.totalIncrementalDuration += event.incrementalDuration;
2504
- state.totalRevenueContributionAmount += event.incrementalRevenueContribution.amount;
2505
- const totalBaseRevenueAmount = rules.baseAnnualRevenueContribution.amount * BigInt(state.totalIncrementalDuration) / BigInt(SECONDS_PER_YEAR);
2506
- const isNowQualified = isReferrerQualifiedRevShareCap(
2507
- referrer,
2508
- priceUsdc(totalBaseRevenueAmount),
2509
- rules
2510
- );
2511
- if (isNowQualified && !state.wasQualified) {
2512
- const accumulatedUncappedAward = scalePrice(
2513
- priceUsdc(totalBaseRevenueAmount),
2514
- rules.maxBaseRevenueShare
2515
- ).amount;
2516
- const incrementalCappedAward = bigintMin(accumulatedUncappedAward, awardPoolRemaining);
2517
- state.cappedAwardAmount += incrementalCappedAward;
2518
- awardPoolRemaining -= incrementalCappedAward;
2519
- state.wasQualified = true;
2520
- } else if (state.wasQualified) {
2521
- const incrementalBaseRevenueAmount = rules.baseAnnualRevenueContribution.amount * BigInt(event.incrementalDuration) / BigInt(SECONDS_PER_YEAR);
2547
+ referrerState.totalReferrals += 1;
2548
+ referrerState.totalIncrementalDuration += event.incrementalDuration;
2549
+ referrerState.totalRevenueContribution = addPrices(
2550
+ referrerState.totalRevenueContribution,
2551
+ event.incrementalRevenueContribution
2552
+ );
2553
+ const totalBaseRevenue = calcBaseRevenueContribution(
2554
+ rules,
2555
+ referrerState.totalIncrementalDuration
2556
+ );
2557
+ const isNowQualified = isReferrerQualifiedRevShareCap(referrerId, totalBaseRevenue, rules);
2558
+ if (isNowQualified && !referrerState.hasQualified) {
2559
+ const accumulatedUncappedAward = scalePrice(totalBaseRevenue, rules.maxBaseRevenueShare);
2560
+ const incrementalCappedAward = minPrice(accumulatedUncappedAward, awardPoolRemaining);
2561
+ referrerState.cappedAward = addPrices(referrerState.cappedAward, incrementalCappedAward);
2562
+ awardPoolRemaining = subtractPrice(awardPoolRemaining, incrementalCappedAward);
2563
+ referrerState.hasQualified = true;
2564
+ } else if (referrerState.hasQualified) {
2565
+ const incrementalBaseRevenue = calcBaseRevenueContribution(rules, event.incrementalDuration);
2522
2566
  const incrementalUncappedAward = scalePrice(
2523
- priceUsdc(incrementalBaseRevenueAmount),
2567
+ incrementalBaseRevenue,
2524
2568
  rules.maxBaseRevenueShare
2525
- ).amount;
2526
- const incrementalCappedAward = bigintMin(incrementalUncappedAward, awardPoolRemaining);
2527
- state.cappedAwardAmount += incrementalCappedAward;
2528
- awardPoolRemaining -= incrementalCappedAward;
2569
+ );
2570
+ const incrementalCappedAward = minPrice(incrementalUncappedAward, awardPoolRemaining);
2571
+ referrerState.cappedAward = addPrices(referrerState.cappedAward, incrementalCappedAward);
2572
+ awardPoolRemaining = subtractPrice(awardPoolRemaining, incrementalCappedAward);
2529
2573
  }
2530
2574
  }
2531
- const sortedEntries = [...referrerStates.entries()].sort(([a, stateA], [b, stateB]) => {
2532
- if (stateB.cappedAwardAmount !== stateA.cappedAwardAmount) {
2533
- return stateB.cappedAwardAmount > stateA.cappedAwardAmount ? 1 : -1;
2534
- }
2535
- if (stateB.totalIncrementalDuration !== stateA.totalIncrementalDuration) {
2536
- return stateB.totalIncrementalDuration - stateA.totalIncrementalDuration;
2575
+ const sortedEntries = [...referrerStates.entries()].sort(
2576
+ ([referrerIdA, referrerStateA], [referrerIdB, referrerStateB]) => {
2577
+ if (referrerStateB.cappedAward.amount !== referrerStateA.cappedAward.amount) {
2578
+ return referrerStateB.cappedAward.amount > referrerStateA.cappedAward.amount ? 1 : -1;
2579
+ }
2580
+ if (referrerStateB.totalIncrementalDuration !== referrerStateA.totalIncrementalDuration) {
2581
+ return referrerStateB.totalIncrementalDuration - referrerStateA.totalIncrementalDuration;
2582
+ }
2583
+ if (referrerIdB > referrerIdA) return 1;
2584
+ if (referrerIdB < referrerIdA) return -1;
2585
+ return 0;
2537
2586
  }
2538
- if (b > a) return 1;
2539
- if (b < a) return -1;
2540
- return 0;
2541
- });
2587
+ );
2542
2588
  const awardedReferrers = sortedEntries.map(
2543
- ([referrerAddr, state], index) => {
2589
+ ([referrerId, referrerState], index) => {
2544
2590
  const baseMetrics = buildReferrerMetrics(
2545
- referrerAddr,
2546
- state.totalReferrals,
2547
- state.totalIncrementalDuration,
2548
- priceEth(state.totalRevenueContributionAmount)
2591
+ referrerId,
2592
+ referrerState.totalReferrals,
2593
+ referrerState.totalIncrementalDuration,
2594
+ referrerState.totalRevenueContribution
2549
2595
  );
2550
2596
  const revShareMetrics = buildReferrerMetricsRevShareCap(baseMetrics, rules);
2551
2597
  const rankedMetrics = buildRankedReferrerMetricsRevShareCap(
@@ -2560,14 +2606,14 @@ var buildReferrerLeaderboardRevShareCap = (events, rules, accurateAsOf) => {
2560
2606
  return buildAwardedReferrerMetricsRevShareCap(
2561
2607
  rankedMetrics,
2562
2608
  uncappedAward,
2563
- priceUsdc(state.cappedAwardAmount),
2609
+ referrerState.cappedAward,
2564
2610
  rules
2565
2611
  );
2566
2612
  }
2567
2613
  );
2568
2614
  const aggregatedMetrics = buildAggregatedReferrerMetricsRevShareCap(
2569
2615
  awardedReferrers,
2570
- priceUsdc(awardPoolRemaining)
2616
+ awardPoolRemaining
2571
2617
  );
2572
2618
  const referrers = new Map(awardedReferrers.map((r) => [r.referrer, r]));
2573
2619
  return { awardModel: rules.awardModel, rules, aggregatedMetrics, referrers, accurateAsOf };
@@ -3032,6 +3078,7 @@ export {
3032
3078
  buildUnrankedReferrerMetricsPieSplit,
3033
3079
  buildUnrankedReferrerMetricsRevShareCap,
3034
3080
  calcBaseReferralProgramEditionStatus,
3081
+ calcBaseRevenueContribution,
3035
3082
  calcReferralProgramEditionStatusPieSplit,
3036
3083
  calcReferralProgramEditionStatusRevShareCap,
3037
3084
  calcReferrerAwardPoolSharePieSplit,