@namehash/ens-referrals 1.1.0 → 1.3.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.d.cts CHANGED
@@ -279,6 +279,31 @@ interface AwardedReferrerMetrics extends RankedReferrerMetrics {
279
279
  }
280
280
  declare const validateAwardedReferrerMetrics: (referrer: AwardedReferrerMetrics, rules: ReferralProgramRules) => void;
281
281
  declare const buildAwardedReferrerMetrics: (referrer: RankedReferrerMetrics, aggregatedMetrics: AggregatedReferrerMetrics, rules: ReferralProgramRules) => AwardedReferrerMetrics;
282
+ /**
283
+ * Extends {@link AwardedReferrerMetrics} but with rank set to null to represent
284
+ * a referrer who is not on the leaderboard (has zero referrals within the rules associated with the leaderboard).
285
+ */
286
+ interface UnrankedReferrerMetrics extends Omit<AwardedReferrerMetrics, "rank" | "isQualified"> {
287
+ /**
288
+ * The referrer is not on the leaderboard and therefore has no rank.
289
+ */
290
+ rank: null;
291
+ /**
292
+ * Always false for unranked referrers.
293
+ */
294
+ isQualified: false;
295
+ }
296
+ declare const validateUnrankedReferrerMetrics: (metrics: UnrankedReferrerMetrics) => void;
297
+ /**
298
+ * Build an unranked zero-score referrer record for a referrer address that is not in the leaderboard.
299
+ *
300
+ * This is useful when you want to return a referrer record for an address that has no referrals
301
+ * and is not qualified for the leaderboard.
302
+ *
303
+ * @param referrer - The referrer address
304
+ * @returns An {@link UnrankedReferrerMetrics} with zero values for all metrics and null rank
305
+ */
306
+ declare const buildUnrankedReferrerMetrics: (referrer: Address) => UnrankedReferrerMetrics;
282
307
 
283
308
  /**
284
309
  * Represents aggregated metrics for a list of `RankedReferrerMetrics`.
@@ -404,7 +429,7 @@ declare const REFERRERS_PER_LEADERBOARD_PAGE_MAX = 100;
404
429
  /**
405
430
  * Pagination params for leaderboard queries.
406
431
  */
407
- interface ReferrerLeaderboardPaginationParams {
432
+ interface ReferrerLeaderboardPageParams {
408
433
  /**
409
434
  * Requested referrer leaderboard page number (1-indexed)
410
435
  * @invariant Must be a positive integer (>= 1)
@@ -416,10 +441,10 @@ interface ReferrerLeaderboardPaginationParams {
416
441
  * @invariant Must be a positive integer (>= 1) and less than or equal to {@link REFERRERS_PER_LEADERBOARD_PAGE_MAX}
417
442
  * @default {@link REFERRERS_PER_LEADERBOARD_PAGE_DEFAULT}
418
443
  */
419
- itemsPerPage?: number;
444
+ recordsPerPage?: number;
420
445
  }
421
- declare const buildReferrerLeaderboardPaginationParams: (params: ReferrerLeaderboardPaginationParams) => Required<ReferrerLeaderboardPaginationParams>;
422
- interface ReferrerLeaderboardPaginationContext extends Required<ReferrerLeaderboardPaginationParams> {
446
+ declare const buildReferrerLeaderboardPageParams: (params: ReferrerLeaderboardPageParams) => Required<ReferrerLeaderboardPageParams>;
447
+ interface ReferrerLeaderboardPageContext extends Required<ReferrerLeaderboardPageParams> {
423
448
  /**
424
449
  * Total number of referrers across all leaderboard pages
425
450
  * @invariant Guaranteed to be a non-negative integer (>= 0)
@@ -432,7 +457,7 @@ interface ReferrerLeaderboardPaginationContext extends Required<ReferrerLeaderbo
432
457
  totalPages: number;
433
458
  /**
434
459
  * Indicates if there is a next page available
435
- * @invariant true if and only if (`page` * `itemsPerPage` < `total`)
460
+ * @invariant true if and only if (`page` * `recordsPerPage` < `total`)
436
461
  */
437
462
  hasNext: boolean;
438
463
  /**
@@ -460,8 +485,8 @@ interface ReferrerLeaderboardPaginationContext extends Required<ReferrerLeaderbo
460
485
  */
461
486
  endIndex?: number;
462
487
  }
463
- declare const validateReferrerLeaderboardPaginationContext: (context: ReferrerLeaderboardPaginationContext) => void;
464
- declare const buildReferrerLeaderboardPaginationContext: (optionalParams: ReferrerLeaderboardPaginationParams, leaderboard: ReferrerLeaderboard) => ReferrerLeaderboardPaginationContext;
488
+ declare const validateReferrerLeaderboardPageContext: (context: ReferrerLeaderboardPageContext) => void;
489
+ declare const buildReferrerLeaderboardPageContext: (optionalParams: ReferrerLeaderboardPageParams, leaderboard: ReferrerLeaderboard) => ReferrerLeaderboardPageContext;
465
490
  /**
466
491
  * A page of referrers from the referrer leaderboard.
467
492
  */
@@ -473,9 +498,9 @@ interface ReferrerLeaderboardPage {
473
498
  rules: ReferralProgramRules;
474
499
  /**
475
500
  * Ordered list of {@link AwardedReferrerMetrics} for the {@link ReferrerLeaderboardPage}
476
- * described by `paginationContext` within the related {@link ReferrerLeaderboard}.
501
+ * described by `pageContext` within the related {@link ReferrerLeaderboard}.
477
502
  *
478
- * @invariant Array will be empty if `paginationContext.totalRecords` is 0.
503
+ * @invariant Array will be empty if `pageContext.totalRecords` is 0.
479
504
  * @invariant Array entries are ordered by `rank` (descending).
480
505
  */
481
506
  referrers: AwardedReferrerMetrics[];
@@ -484,16 +509,16 @@ interface ReferrerLeaderboardPage {
484
509
  */
485
510
  aggregatedMetrics: AggregatedReferrerMetrics;
486
511
  /**
487
- * The {@link ReferrerLeaderboardPaginationContext} of this {@link ReferrerLeaderboardPage} relative to the overall
512
+ * The {@link ReferrerLeaderboardPageContext} of this {@link ReferrerLeaderboardPage} relative to the overall
488
513
  * {@link ReferrerLeaderboard}.
489
514
  */
490
- paginationContext: ReferrerLeaderboardPaginationContext;
515
+ pageContext: ReferrerLeaderboardPageContext;
491
516
  /**
492
517
  * The {@link UnixTimestamp} of when the data used to build the {@link ReferrerLeaderboardPage} was accurate as of.
493
518
  */
494
519
  accurateAsOf: UnixTimestamp;
495
520
  }
496
- declare const getReferrerLeaderboardPage: (paginationParams: ReferrerLeaderboardPaginationParams, leaderboard: ReferrerLeaderboard) => ReferrerLeaderboardPage;
521
+ declare const getReferrerLeaderboardPage: (pageParams: ReferrerLeaderboardPageParams, leaderboard: ReferrerLeaderboard) => ReferrerLeaderboardPage;
497
522
 
498
523
  /**
499
524
  * Build a URL to the official ENS manager app
@@ -507,4 +532,109 @@ declare const isPositiveInteger: (value: number) => boolean;
507
532
  declare const validateNonNegativeInteger: (value: number) => void;
508
533
  declare const isFiniteNonNegativeNumber: (value: number) => boolean;
509
534
 
510
- export { type AccountId, type AggregatedReferrerMetrics, type AwardedReferrerMetrics, type ChainId, type Duration, ENCODED_REFERRER_BYTE_LENGTH, ENCODED_REFERRER_BYTE_OFFSET, ENS_HOLIDAY_AWARDS_END_DATE, ENS_HOLIDAY_AWARDS_MAX_QUALIFIED_REFERRERS, ENS_HOLIDAY_AWARDS_START_DATE, ENS_HOLIDAY_AWARDS_TOTAL_AWARD_POOL_VALUE, EXPECTED_ENCODED_REFERRER_PADDING, type EncodedReferrer, REFERRERS_PER_LEADERBOARD_PAGE_DEFAULT, REFERRERS_PER_LEADERBOARD_PAGE_MAX, type RankedReferrerMetrics, type ReferralProgramRules, type ReferrerLeaderboard, type ReferrerLeaderboardPage, type ReferrerLeaderboardPaginationContext, type ReferrerLeaderboardPaginationParams, type ReferrerMetrics, type ReferrerMetricsForComparison, type ReferrerRank, type ReferrerScore, SECONDS_PER_YEAR, type ScoredReferrerMetrics, type USDQuantity, type UnixTimestamp, ZERO_ENCODED_REFERRER, buildAggregatedReferrerMetrics, buildAwardedReferrerMetrics, buildEncodedReferrer, buildEnsReferralUrl, buildRankedReferrerMetrics, buildReferralProgramRules, buildReferrerLeaderboard, buildReferrerLeaderboardPaginationContext, buildReferrerLeaderboardPaginationParams, buildReferrerMetrics, buildScoredReferrerMetrics, calcReferrerAwardPoolShare, calcReferrerFinalScore, calcReferrerFinalScoreBoost, calcReferrerFinalScoreMultiplier, calcReferrerScore, compareReferrerMetrics, decodeEncodedReferrer, getReferrerLeaderboardPage, isFiniteNonNegativeNumber, isInteger, isNonNegativeInteger, isPositiveInteger, isReferrerQualified, isValidDuration, isValidReferrerScore, isValidUSDQuantity, normalizeAddress, sortReferrerMetrics, validateAggregatedReferrerMetrics, validateAwardedReferrerMetrics, validateDuration, validateLowercaseAddress, validateNonNegativeInteger, validateRankedReferrerMetrics, validateReferralProgramRules, validateReferrerLeaderboardPaginationContext, validateReferrerMetrics, validateReferrerRank, validateReferrerScore, validateScoredReferrerMetrics, validateUSDQuantity, validateUnixTimestamp };
535
+ /**
536
+ * The type of referrer detail data.
537
+ */
538
+ declare const ReferrerDetailTypeIds: {
539
+ /**
540
+ * Represents a referrer who is ranked on the leaderboard.
541
+ */
542
+ readonly Ranked: "ranked";
543
+ /**
544
+ * Represents a referrer who is not ranked on the leaderboard.
545
+ */
546
+ readonly Unranked: "unranked";
547
+ };
548
+ /**
549
+ * The derived string union of possible {@link ReferrerDetailTypeIds}.
550
+ */
551
+ type ReferrerDetailTypeId = (typeof ReferrerDetailTypeIds)[keyof typeof ReferrerDetailTypeIds];
552
+ /**
553
+ * Referrer detail data for a specific referrer address on the leaderboard.
554
+ *
555
+ * Includes the referrer's awarded metrics from the leaderboard plus timestamp.
556
+ *
557
+ * Invariants:
558
+ * - `type` is always {@link ReferrerDetailTypeIds.Ranked}.
559
+ *
560
+ * @see {@link AwardedReferrerMetrics}
561
+ */
562
+ interface ReferrerDetailRanked {
563
+ /**
564
+ * The type of referrer detail data.
565
+ */
566
+ type: typeof ReferrerDetailTypeIds.Ranked;
567
+ /**
568
+ * The {@link ReferralProgramRules} used to calculate the {@link AwardedReferrerMetrics}.
569
+ */
570
+ rules: ReferralProgramRules;
571
+ /**
572
+ * The awarded referrer metrics from the leaderboard.
573
+ *
574
+ * Contains all calculated metrics including score, rank, qualification status,
575
+ * and award pool share information.
576
+ */
577
+ referrer: AwardedReferrerMetrics;
578
+ /**
579
+ * Aggregated metrics for all referrers on the leaderboard.
580
+ */
581
+ aggregatedMetrics: AggregatedReferrerMetrics;
582
+ /**
583
+ * The {@link UnixTimestamp} of when the data used to build the {@link ReferrerDetailData} was accurate as of.
584
+ */
585
+ accurateAsOf: UnixTimestamp;
586
+ }
587
+ /**
588
+ * Referrer detail data for a specific referrer address NOT on the leaderboard.
589
+ *
590
+ * Includes the referrer's unranked metrics (with null rank and isQualified: false) plus timestamp.
591
+ *
592
+ * Invariants:
593
+ * - `type` is always {@link ReferrerDetailTypeIds.Unranked}.
594
+ *
595
+ * @see {@link UnrankedReferrerMetrics}
596
+ */
597
+ interface ReferrerDetailUnranked {
598
+ /**
599
+ * The type of referrer detail data.
600
+ */
601
+ type: typeof ReferrerDetailTypeIds.Unranked;
602
+ /**
603
+ * The {@link ReferralProgramRules} used to calculate the {@link UnrankedReferrerMetrics}.
604
+ */
605
+ rules: ReferralProgramRules;
606
+ /**
607
+ * The unranked referrer metrics (not on the leaderboard).
608
+ *
609
+ * Contains all calculated metrics with rank set to null and isQualified set to false.
610
+ */
611
+ referrer: UnrankedReferrerMetrics;
612
+ /**
613
+ * Aggregated metrics for all referrers on the leaderboard.
614
+ */
615
+ aggregatedMetrics: AggregatedReferrerMetrics;
616
+ /**
617
+ * The {@link UnixTimestamp} of when the data used to build the {@link UnrankedReferrerDetailData} was accurate as of.
618
+ */
619
+ accurateAsOf: UnixTimestamp;
620
+ }
621
+ /**
622
+ * Referrer detail data for a specific referrer address.
623
+ *
624
+ * Use the `type` field to determine the specific type interpretation
625
+ * at runtime.
626
+ */
627
+ type ReferrerDetail = ReferrerDetailRanked | ReferrerDetailUnranked;
628
+ /**
629
+ * Get the detail for a specific referrer from the leaderboard.
630
+ *
631
+ * Returns a {@link ReferrerDetailRanked} if the referrer is on the leaderboard,
632
+ * or a {@link ReferrerDetailUnranked} if the referrer has no referrals.
633
+ *
634
+ * @param referrer - The referrer address to look up
635
+ * @param leaderboard - The referrer leaderboard to query
636
+ * @returns The appropriate {@link ReferrerDetail} (ranked or unranked)
637
+ */
638
+ declare const getReferrerDetail: (referrer: Address, leaderboard: ReferrerLeaderboard) => ReferrerDetail;
639
+
640
+ export { type AccountId, type AggregatedReferrerMetrics, type AwardedReferrerMetrics, type ChainId, type Duration, ENCODED_REFERRER_BYTE_LENGTH, ENCODED_REFERRER_BYTE_OFFSET, ENS_HOLIDAY_AWARDS_END_DATE, ENS_HOLIDAY_AWARDS_MAX_QUALIFIED_REFERRERS, ENS_HOLIDAY_AWARDS_START_DATE, ENS_HOLIDAY_AWARDS_TOTAL_AWARD_POOL_VALUE, EXPECTED_ENCODED_REFERRER_PADDING, type EncodedReferrer, REFERRERS_PER_LEADERBOARD_PAGE_DEFAULT, REFERRERS_PER_LEADERBOARD_PAGE_MAX, type RankedReferrerMetrics, type ReferralProgramRules, type ReferrerDetail, type ReferrerDetailRanked, type ReferrerDetailTypeId, ReferrerDetailTypeIds, type ReferrerDetailUnranked, type ReferrerLeaderboard, type ReferrerLeaderboardPage, type ReferrerLeaderboardPageContext, type ReferrerLeaderboardPageParams, type ReferrerMetrics, type ReferrerMetricsForComparison, type ReferrerRank, type ReferrerScore, SECONDS_PER_YEAR, type ScoredReferrerMetrics, type USDQuantity, type UnixTimestamp, type UnrankedReferrerMetrics, ZERO_ENCODED_REFERRER, buildAggregatedReferrerMetrics, buildAwardedReferrerMetrics, buildEncodedReferrer, buildEnsReferralUrl, buildRankedReferrerMetrics, buildReferralProgramRules, buildReferrerLeaderboard, buildReferrerLeaderboardPageContext, buildReferrerLeaderboardPageParams, buildReferrerMetrics, buildScoredReferrerMetrics, buildUnrankedReferrerMetrics, calcReferrerAwardPoolShare, calcReferrerFinalScore, calcReferrerFinalScoreBoost, calcReferrerFinalScoreMultiplier, calcReferrerScore, compareReferrerMetrics, decodeEncodedReferrer, getReferrerDetail, getReferrerLeaderboardPage, isFiniteNonNegativeNumber, isInteger, isNonNegativeInteger, isPositiveInteger, isReferrerQualified, isValidDuration, isValidReferrerScore, isValidUSDQuantity, normalizeAddress, sortReferrerMetrics, validateAggregatedReferrerMetrics, validateAwardedReferrerMetrics, validateDuration, validateLowercaseAddress, validateNonNegativeInteger, validateRankedReferrerMetrics, validateReferralProgramRules, validateReferrerLeaderboardPageContext, validateReferrerMetrics, validateReferrerRank, validateReferrerScore, validateScoredReferrerMetrics, validateUSDQuantity, validateUnixTimestamp, validateUnrankedReferrerMetrics };
package/dist/index.d.ts CHANGED
@@ -279,6 +279,31 @@ interface AwardedReferrerMetrics extends RankedReferrerMetrics {
279
279
  }
280
280
  declare const validateAwardedReferrerMetrics: (referrer: AwardedReferrerMetrics, rules: ReferralProgramRules) => void;
281
281
  declare const buildAwardedReferrerMetrics: (referrer: RankedReferrerMetrics, aggregatedMetrics: AggregatedReferrerMetrics, rules: ReferralProgramRules) => AwardedReferrerMetrics;
282
+ /**
283
+ * Extends {@link AwardedReferrerMetrics} but with rank set to null to represent
284
+ * a referrer who is not on the leaderboard (has zero referrals within the rules associated with the leaderboard).
285
+ */
286
+ interface UnrankedReferrerMetrics extends Omit<AwardedReferrerMetrics, "rank" | "isQualified"> {
287
+ /**
288
+ * The referrer is not on the leaderboard and therefore has no rank.
289
+ */
290
+ rank: null;
291
+ /**
292
+ * Always false for unranked referrers.
293
+ */
294
+ isQualified: false;
295
+ }
296
+ declare const validateUnrankedReferrerMetrics: (metrics: UnrankedReferrerMetrics) => void;
297
+ /**
298
+ * Build an unranked zero-score referrer record for a referrer address that is not in the leaderboard.
299
+ *
300
+ * This is useful when you want to return a referrer record for an address that has no referrals
301
+ * and is not qualified for the leaderboard.
302
+ *
303
+ * @param referrer - The referrer address
304
+ * @returns An {@link UnrankedReferrerMetrics} with zero values for all metrics and null rank
305
+ */
306
+ declare const buildUnrankedReferrerMetrics: (referrer: Address) => UnrankedReferrerMetrics;
282
307
 
283
308
  /**
284
309
  * Represents aggregated metrics for a list of `RankedReferrerMetrics`.
@@ -404,7 +429,7 @@ declare const REFERRERS_PER_LEADERBOARD_PAGE_MAX = 100;
404
429
  /**
405
430
  * Pagination params for leaderboard queries.
406
431
  */
407
- interface ReferrerLeaderboardPaginationParams {
432
+ interface ReferrerLeaderboardPageParams {
408
433
  /**
409
434
  * Requested referrer leaderboard page number (1-indexed)
410
435
  * @invariant Must be a positive integer (>= 1)
@@ -416,10 +441,10 @@ interface ReferrerLeaderboardPaginationParams {
416
441
  * @invariant Must be a positive integer (>= 1) and less than or equal to {@link REFERRERS_PER_LEADERBOARD_PAGE_MAX}
417
442
  * @default {@link REFERRERS_PER_LEADERBOARD_PAGE_DEFAULT}
418
443
  */
419
- itemsPerPage?: number;
444
+ recordsPerPage?: number;
420
445
  }
421
- declare const buildReferrerLeaderboardPaginationParams: (params: ReferrerLeaderboardPaginationParams) => Required<ReferrerLeaderboardPaginationParams>;
422
- interface ReferrerLeaderboardPaginationContext extends Required<ReferrerLeaderboardPaginationParams> {
446
+ declare const buildReferrerLeaderboardPageParams: (params: ReferrerLeaderboardPageParams) => Required<ReferrerLeaderboardPageParams>;
447
+ interface ReferrerLeaderboardPageContext extends Required<ReferrerLeaderboardPageParams> {
423
448
  /**
424
449
  * Total number of referrers across all leaderboard pages
425
450
  * @invariant Guaranteed to be a non-negative integer (>= 0)
@@ -432,7 +457,7 @@ interface ReferrerLeaderboardPaginationContext extends Required<ReferrerLeaderbo
432
457
  totalPages: number;
433
458
  /**
434
459
  * Indicates if there is a next page available
435
- * @invariant true if and only if (`page` * `itemsPerPage` < `total`)
460
+ * @invariant true if and only if (`page` * `recordsPerPage` < `total`)
436
461
  */
437
462
  hasNext: boolean;
438
463
  /**
@@ -460,8 +485,8 @@ interface ReferrerLeaderboardPaginationContext extends Required<ReferrerLeaderbo
460
485
  */
461
486
  endIndex?: number;
462
487
  }
463
- declare const validateReferrerLeaderboardPaginationContext: (context: ReferrerLeaderboardPaginationContext) => void;
464
- declare const buildReferrerLeaderboardPaginationContext: (optionalParams: ReferrerLeaderboardPaginationParams, leaderboard: ReferrerLeaderboard) => ReferrerLeaderboardPaginationContext;
488
+ declare const validateReferrerLeaderboardPageContext: (context: ReferrerLeaderboardPageContext) => void;
489
+ declare const buildReferrerLeaderboardPageContext: (optionalParams: ReferrerLeaderboardPageParams, leaderboard: ReferrerLeaderboard) => ReferrerLeaderboardPageContext;
465
490
  /**
466
491
  * A page of referrers from the referrer leaderboard.
467
492
  */
@@ -473,9 +498,9 @@ interface ReferrerLeaderboardPage {
473
498
  rules: ReferralProgramRules;
474
499
  /**
475
500
  * Ordered list of {@link AwardedReferrerMetrics} for the {@link ReferrerLeaderboardPage}
476
- * described by `paginationContext` within the related {@link ReferrerLeaderboard}.
501
+ * described by `pageContext` within the related {@link ReferrerLeaderboard}.
477
502
  *
478
- * @invariant Array will be empty if `paginationContext.totalRecords` is 0.
503
+ * @invariant Array will be empty if `pageContext.totalRecords` is 0.
479
504
  * @invariant Array entries are ordered by `rank` (descending).
480
505
  */
481
506
  referrers: AwardedReferrerMetrics[];
@@ -484,16 +509,16 @@ interface ReferrerLeaderboardPage {
484
509
  */
485
510
  aggregatedMetrics: AggregatedReferrerMetrics;
486
511
  /**
487
- * The {@link ReferrerLeaderboardPaginationContext} of this {@link ReferrerLeaderboardPage} relative to the overall
512
+ * The {@link ReferrerLeaderboardPageContext} of this {@link ReferrerLeaderboardPage} relative to the overall
488
513
  * {@link ReferrerLeaderboard}.
489
514
  */
490
- paginationContext: ReferrerLeaderboardPaginationContext;
515
+ pageContext: ReferrerLeaderboardPageContext;
491
516
  /**
492
517
  * The {@link UnixTimestamp} of when the data used to build the {@link ReferrerLeaderboardPage} was accurate as of.
493
518
  */
494
519
  accurateAsOf: UnixTimestamp;
495
520
  }
496
- declare const getReferrerLeaderboardPage: (paginationParams: ReferrerLeaderboardPaginationParams, leaderboard: ReferrerLeaderboard) => ReferrerLeaderboardPage;
521
+ declare const getReferrerLeaderboardPage: (pageParams: ReferrerLeaderboardPageParams, leaderboard: ReferrerLeaderboard) => ReferrerLeaderboardPage;
497
522
 
498
523
  /**
499
524
  * Build a URL to the official ENS manager app
@@ -507,4 +532,109 @@ declare const isPositiveInteger: (value: number) => boolean;
507
532
  declare const validateNonNegativeInteger: (value: number) => void;
508
533
  declare const isFiniteNonNegativeNumber: (value: number) => boolean;
509
534
 
510
- export { type AccountId, type AggregatedReferrerMetrics, type AwardedReferrerMetrics, type ChainId, type Duration, ENCODED_REFERRER_BYTE_LENGTH, ENCODED_REFERRER_BYTE_OFFSET, ENS_HOLIDAY_AWARDS_END_DATE, ENS_HOLIDAY_AWARDS_MAX_QUALIFIED_REFERRERS, ENS_HOLIDAY_AWARDS_START_DATE, ENS_HOLIDAY_AWARDS_TOTAL_AWARD_POOL_VALUE, EXPECTED_ENCODED_REFERRER_PADDING, type EncodedReferrer, REFERRERS_PER_LEADERBOARD_PAGE_DEFAULT, REFERRERS_PER_LEADERBOARD_PAGE_MAX, type RankedReferrerMetrics, type ReferralProgramRules, type ReferrerLeaderboard, type ReferrerLeaderboardPage, type ReferrerLeaderboardPaginationContext, type ReferrerLeaderboardPaginationParams, type ReferrerMetrics, type ReferrerMetricsForComparison, type ReferrerRank, type ReferrerScore, SECONDS_PER_YEAR, type ScoredReferrerMetrics, type USDQuantity, type UnixTimestamp, ZERO_ENCODED_REFERRER, buildAggregatedReferrerMetrics, buildAwardedReferrerMetrics, buildEncodedReferrer, buildEnsReferralUrl, buildRankedReferrerMetrics, buildReferralProgramRules, buildReferrerLeaderboard, buildReferrerLeaderboardPaginationContext, buildReferrerLeaderboardPaginationParams, buildReferrerMetrics, buildScoredReferrerMetrics, calcReferrerAwardPoolShare, calcReferrerFinalScore, calcReferrerFinalScoreBoost, calcReferrerFinalScoreMultiplier, calcReferrerScore, compareReferrerMetrics, decodeEncodedReferrer, getReferrerLeaderboardPage, isFiniteNonNegativeNumber, isInteger, isNonNegativeInteger, isPositiveInteger, isReferrerQualified, isValidDuration, isValidReferrerScore, isValidUSDQuantity, normalizeAddress, sortReferrerMetrics, validateAggregatedReferrerMetrics, validateAwardedReferrerMetrics, validateDuration, validateLowercaseAddress, validateNonNegativeInteger, validateRankedReferrerMetrics, validateReferralProgramRules, validateReferrerLeaderboardPaginationContext, validateReferrerMetrics, validateReferrerRank, validateReferrerScore, validateScoredReferrerMetrics, validateUSDQuantity, validateUnixTimestamp };
535
+ /**
536
+ * The type of referrer detail data.
537
+ */
538
+ declare const ReferrerDetailTypeIds: {
539
+ /**
540
+ * Represents a referrer who is ranked on the leaderboard.
541
+ */
542
+ readonly Ranked: "ranked";
543
+ /**
544
+ * Represents a referrer who is not ranked on the leaderboard.
545
+ */
546
+ readonly Unranked: "unranked";
547
+ };
548
+ /**
549
+ * The derived string union of possible {@link ReferrerDetailTypeIds}.
550
+ */
551
+ type ReferrerDetailTypeId = (typeof ReferrerDetailTypeIds)[keyof typeof ReferrerDetailTypeIds];
552
+ /**
553
+ * Referrer detail data for a specific referrer address on the leaderboard.
554
+ *
555
+ * Includes the referrer's awarded metrics from the leaderboard plus timestamp.
556
+ *
557
+ * Invariants:
558
+ * - `type` is always {@link ReferrerDetailTypeIds.Ranked}.
559
+ *
560
+ * @see {@link AwardedReferrerMetrics}
561
+ */
562
+ interface ReferrerDetailRanked {
563
+ /**
564
+ * The type of referrer detail data.
565
+ */
566
+ type: typeof ReferrerDetailTypeIds.Ranked;
567
+ /**
568
+ * The {@link ReferralProgramRules} used to calculate the {@link AwardedReferrerMetrics}.
569
+ */
570
+ rules: ReferralProgramRules;
571
+ /**
572
+ * The awarded referrer metrics from the leaderboard.
573
+ *
574
+ * Contains all calculated metrics including score, rank, qualification status,
575
+ * and award pool share information.
576
+ */
577
+ referrer: AwardedReferrerMetrics;
578
+ /**
579
+ * Aggregated metrics for all referrers on the leaderboard.
580
+ */
581
+ aggregatedMetrics: AggregatedReferrerMetrics;
582
+ /**
583
+ * The {@link UnixTimestamp} of when the data used to build the {@link ReferrerDetailData} was accurate as of.
584
+ */
585
+ accurateAsOf: UnixTimestamp;
586
+ }
587
+ /**
588
+ * Referrer detail data for a specific referrer address NOT on the leaderboard.
589
+ *
590
+ * Includes the referrer's unranked metrics (with null rank and isQualified: false) plus timestamp.
591
+ *
592
+ * Invariants:
593
+ * - `type` is always {@link ReferrerDetailTypeIds.Unranked}.
594
+ *
595
+ * @see {@link UnrankedReferrerMetrics}
596
+ */
597
+ interface ReferrerDetailUnranked {
598
+ /**
599
+ * The type of referrer detail data.
600
+ */
601
+ type: typeof ReferrerDetailTypeIds.Unranked;
602
+ /**
603
+ * The {@link ReferralProgramRules} used to calculate the {@link UnrankedReferrerMetrics}.
604
+ */
605
+ rules: ReferralProgramRules;
606
+ /**
607
+ * The unranked referrer metrics (not on the leaderboard).
608
+ *
609
+ * Contains all calculated metrics with rank set to null and isQualified set to false.
610
+ */
611
+ referrer: UnrankedReferrerMetrics;
612
+ /**
613
+ * Aggregated metrics for all referrers on the leaderboard.
614
+ */
615
+ aggregatedMetrics: AggregatedReferrerMetrics;
616
+ /**
617
+ * The {@link UnixTimestamp} of when the data used to build the {@link UnrankedReferrerDetailData} was accurate as of.
618
+ */
619
+ accurateAsOf: UnixTimestamp;
620
+ }
621
+ /**
622
+ * Referrer detail data for a specific referrer address.
623
+ *
624
+ * Use the `type` field to determine the specific type interpretation
625
+ * at runtime.
626
+ */
627
+ type ReferrerDetail = ReferrerDetailRanked | ReferrerDetailUnranked;
628
+ /**
629
+ * Get the detail for a specific referrer from the leaderboard.
630
+ *
631
+ * Returns a {@link ReferrerDetailRanked} if the referrer is on the leaderboard,
632
+ * or a {@link ReferrerDetailUnranked} if the referrer has no referrals.
633
+ *
634
+ * @param referrer - The referrer address to look up
635
+ * @param leaderboard - The referrer leaderboard to query
636
+ * @returns The appropriate {@link ReferrerDetail} (ranked or unranked)
637
+ */
638
+ declare const getReferrerDetail: (referrer: Address, leaderboard: ReferrerLeaderboard) => ReferrerDetail;
639
+
640
+ export { type AccountId, type AggregatedReferrerMetrics, type AwardedReferrerMetrics, type ChainId, type Duration, ENCODED_REFERRER_BYTE_LENGTH, ENCODED_REFERRER_BYTE_OFFSET, ENS_HOLIDAY_AWARDS_END_DATE, ENS_HOLIDAY_AWARDS_MAX_QUALIFIED_REFERRERS, ENS_HOLIDAY_AWARDS_START_DATE, ENS_HOLIDAY_AWARDS_TOTAL_AWARD_POOL_VALUE, EXPECTED_ENCODED_REFERRER_PADDING, type EncodedReferrer, REFERRERS_PER_LEADERBOARD_PAGE_DEFAULT, REFERRERS_PER_LEADERBOARD_PAGE_MAX, type RankedReferrerMetrics, type ReferralProgramRules, type ReferrerDetail, type ReferrerDetailRanked, type ReferrerDetailTypeId, ReferrerDetailTypeIds, type ReferrerDetailUnranked, type ReferrerLeaderboard, type ReferrerLeaderboardPage, type ReferrerLeaderboardPageContext, type ReferrerLeaderboardPageParams, type ReferrerMetrics, type ReferrerMetricsForComparison, type ReferrerRank, type ReferrerScore, SECONDS_PER_YEAR, type ScoredReferrerMetrics, type USDQuantity, type UnixTimestamp, type UnrankedReferrerMetrics, ZERO_ENCODED_REFERRER, buildAggregatedReferrerMetrics, buildAwardedReferrerMetrics, buildEncodedReferrer, buildEnsReferralUrl, buildRankedReferrerMetrics, buildReferralProgramRules, buildReferrerLeaderboard, buildReferrerLeaderboardPageContext, buildReferrerLeaderboardPageParams, buildReferrerMetrics, buildScoredReferrerMetrics, buildUnrankedReferrerMetrics, calcReferrerAwardPoolShare, calcReferrerFinalScore, calcReferrerFinalScoreBoost, calcReferrerFinalScoreMultiplier, calcReferrerScore, compareReferrerMetrics, decodeEncodedReferrer, getReferrerDetail, getReferrerLeaderboardPage, isFiniteNonNegativeNumber, isInteger, isNonNegativeInteger, isPositiveInteger, isReferrerQualified, isValidDuration, isValidReferrerScore, isValidUSDQuantity, normalizeAddress, sortReferrerMetrics, validateAggregatedReferrerMetrics, validateAwardedReferrerMetrics, validateDuration, validateLowercaseAddress, validateNonNegativeInteger, validateRankedReferrerMetrics, validateReferralProgramRules, validateReferrerLeaderboardPageContext, validateReferrerMetrics, validateReferrerRank, validateReferrerScore, validateScoredReferrerMetrics, validateUSDQuantity, validateUnixTimestamp, validateUnrankedReferrerMetrics };