@namehash/ens-referrals 0.0.0-next-20260117070300 → 0.0.0-next-20260119200329
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 +1085 -182
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +404 -110
- package/dist/index.d.ts +404 -110
- package/dist/index.js +1078 -185
- package/dist/index.js.map +1 -1
- package/package.json +6 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Address
|
|
1
|
+
import { Address } from 'viem';
|
|
2
|
+
import { UnixTimestamp, AccountId, Duration } from '@ensnode/ensnode-sdk';
|
|
2
3
|
|
|
3
4
|
declare const validateLowercaseAddress: (address: Address) => void;
|
|
4
5
|
declare const normalizeAddress: (address: Address) => Address;
|
|
@@ -12,35 +13,6 @@ type USDQuantity = number;
|
|
|
12
13
|
declare function isValidUSDQuantity(value: USDQuantity): boolean;
|
|
13
14
|
declare function validateUSDQuantity(value: USDQuantity): void;
|
|
14
15
|
|
|
15
|
-
/**
|
|
16
|
-
* Unix timestamp value
|
|
17
|
-
*
|
|
18
|
-
* Represents the number of seconds that have elapsed
|
|
19
|
-
* since January 1, 1970 (midnight UTC/GMT). May be zero or negative to represent a time at or
|
|
20
|
-
* before Jan 1, 1970.
|
|
21
|
-
*
|
|
22
|
-
* @invariant Guaranteed to be an integer.
|
|
23
|
-
*/
|
|
24
|
-
type UnixTimestamp = number;
|
|
25
|
-
declare const validateUnixTimestamp: (timestamp: UnixTimestamp) => void;
|
|
26
|
-
/**
|
|
27
|
-
* Duration
|
|
28
|
-
*
|
|
29
|
-
* Represents a duration in seconds.
|
|
30
|
-
*
|
|
31
|
-
* Guaranteed to be a non-negative integer.
|
|
32
|
-
*/
|
|
33
|
-
type Duration = number;
|
|
34
|
-
/**
|
|
35
|
-
* The number of seconds in a year.
|
|
36
|
-
*
|
|
37
|
-
* (60 seconds per minute * 60 minutes per hour *
|
|
38
|
-
* 24 hours per day * 365.2425 days on average per year).
|
|
39
|
-
*/
|
|
40
|
-
declare const SECONDS_PER_YEAR: Duration;
|
|
41
|
-
declare function isValidDuration(duration: Duration): boolean;
|
|
42
|
-
declare function validateDuration(duration: Duration): void;
|
|
43
|
-
|
|
44
16
|
/**
|
|
45
17
|
* Start date for the ENS Holiday Awards referral program.
|
|
46
18
|
* 2025-12-01T00:00:00Z (December 1, 2025 at 00:00:00 UTC)
|
|
@@ -59,22 +31,6 @@ declare const ENS_HOLIDAY_AWARDS_MAX_QUALIFIED_REFERRERS = 10;
|
|
|
59
31
|
* The total value of the award pool in USD.
|
|
60
32
|
*/
|
|
61
33
|
declare const ENS_HOLIDAY_AWARDS_TOTAL_AWARD_POOL_VALUE: USDQuantity;
|
|
62
|
-
/**
|
|
63
|
-
* Chain ID
|
|
64
|
-
*
|
|
65
|
-
* Represents a unique identifier for a chain.
|
|
66
|
-
* Guaranteed to be a positive integer.
|
|
67
|
-
**/
|
|
68
|
-
type ChainId = number;
|
|
69
|
-
/**
|
|
70
|
-
* Represents an account (contract or EOA) at `address` on chain `chainId`.
|
|
71
|
-
*
|
|
72
|
-
* @see https://chainagnostic.org/CAIPs/caip-10
|
|
73
|
-
*/
|
|
74
|
-
interface AccountId {
|
|
75
|
-
chainId: ChainId;
|
|
76
|
-
address: Address;
|
|
77
|
-
}
|
|
78
34
|
interface ReferralProgramRules {
|
|
79
35
|
/**
|
|
80
36
|
* The total value of the award pool in USD.
|
|
@@ -381,57 +337,6 @@ interface AggregatedReferrerMetrics {
|
|
|
381
337
|
declare const validateAggregatedReferrerMetrics: (metrics: AggregatedReferrerMetrics) => void;
|
|
382
338
|
declare const buildAggregatedReferrerMetrics: (referrers: RankedReferrerMetrics[], rules: ReferralProgramRules) => AggregatedReferrerMetrics;
|
|
383
339
|
|
|
384
|
-
/**
|
|
385
|
-
* Encoded Referrer
|
|
386
|
-
*
|
|
387
|
-
* Represents a "raw" ENS referrer value.
|
|
388
|
-
*
|
|
389
|
-
* Guaranteed to be a hex string representation of a 32-byte value.
|
|
390
|
-
* For ENS Holiday Awards a correctly encoded referrer is
|
|
391
|
-
* a left-padded lowercase EVM address.
|
|
392
|
-
*/
|
|
393
|
-
type EncodedReferrer = Hex;
|
|
394
|
-
/**
|
|
395
|
-
* Encoded Referrer byte offset for ENS Holiday Awards.
|
|
396
|
-
*
|
|
397
|
-
* The count of left-padded bytes in an {@link EncodedReferrer} value for ENS Holiday Awards.
|
|
398
|
-
*/
|
|
399
|
-
declare const ENCODED_REFERRER_BYTE_OFFSET = 12;
|
|
400
|
-
/**
|
|
401
|
-
* Encoded Referrer byte length
|
|
402
|
-
*
|
|
403
|
-
* The count of bytes the {@link EncodedReferrer} value consists of.
|
|
404
|
-
*/
|
|
405
|
-
declare const ENCODED_REFERRER_BYTE_LENGTH = 32;
|
|
406
|
-
/**
|
|
407
|
-
* Encoded Referrer Padding for ENS Holiday Awards
|
|
408
|
-
*
|
|
409
|
-
* The initial bytes of correctly encoded referrer value for ENS Holiday Awards.
|
|
410
|
-
*/
|
|
411
|
-
declare const EXPECTED_ENCODED_REFERRER_PADDING: Hex;
|
|
412
|
-
/**
|
|
413
|
-
* Zero Encoded Referrer
|
|
414
|
-
*
|
|
415
|
-
* Guaranteed to be a hex string representation of a 32-byte zero value.
|
|
416
|
-
*/
|
|
417
|
-
declare const ZERO_ENCODED_REFERRER: EncodedReferrer;
|
|
418
|
-
/**
|
|
419
|
-
* Build an {@link EncodedReferrer} value for the given {@link Address}
|
|
420
|
-
* according to the subjective referrer encoding used for ENS Holiday Awards.
|
|
421
|
-
*/
|
|
422
|
-
declare function buildEncodedReferrer(address: Address): EncodedReferrer;
|
|
423
|
-
/**
|
|
424
|
-
* Decode an {@link EncodedReferrer} value into a checksummed {@link Address}
|
|
425
|
-
* according to the subjective referrer encoding used for ENS Holiday Awards.
|
|
426
|
-
*
|
|
427
|
-
* @param encodedReferrer - The "raw" {@link EncodedReferrer} value to decode.
|
|
428
|
-
* @returns The decoded referrer checksummed address.
|
|
429
|
-
* @throws when encodedReferrer value is not represented by
|
|
430
|
-
* {@link ENCODED_REFERRER_BYTE_LENGTH} bytes.
|
|
431
|
-
* @throws when decodedReferrer is not a valid EVM address.
|
|
432
|
-
*/
|
|
433
|
-
declare function decodeEncodedReferrer(encodedReferrer: EncodedReferrer): Address;
|
|
434
|
-
|
|
435
340
|
/**
|
|
436
341
|
* Represents a leaderboard for any number of referrers.
|
|
437
342
|
*/
|
|
@@ -567,18 +472,6 @@ interface ReferrerLeaderboardPage {
|
|
|
567
472
|
}
|
|
568
473
|
declare const getReferrerLeaderboardPage: (pageParams: ReferrerLeaderboardPageParams, leaderboard: ReferrerLeaderboard) => ReferrerLeaderboardPage;
|
|
569
474
|
|
|
570
|
-
/**
|
|
571
|
-
* Build a URL to the official ENS manager app
|
|
572
|
-
* where the given {@link Address} is set as the referrer.
|
|
573
|
-
*/
|
|
574
|
-
declare function buildEnsReferralUrl(address: Address): URL;
|
|
575
|
-
|
|
576
|
-
declare const isInteger: (value: number) => boolean;
|
|
577
|
-
declare const isNonNegativeInteger: (value: number) => boolean;
|
|
578
|
-
declare const isPositiveInteger: (value: number) => boolean;
|
|
579
|
-
declare const validateNonNegativeInteger: (value: number) => void;
|
|
580
|
-
declare const isFiniteNonNegativeNumber: (value: number) => boolean;
|
|
581
|
-
|
|
582
475
|
/**
|
|
583
476
|
* The type of referrer detail data.
|
|
584
477
|
*/
|
|
@@ -684,6 +577,396 @@ type ReferrerDetail = ReferrerDetailRanked | ReferrerDetailUnranked;
|
|
|
684
577
|
*/
|
|
685
578
|
declare const getReferrerDetail: (referrer: Address, leaderboard: ReferrerLeaderboard) => ReferrerDetail;
|
|
686
579
|
|
|
580
|
+
/**
|
|
581
|
+
* Request parameters for a referrer leaderboard page query.
|
|
582
|
+
*/
|
|
583
|
+
interface ReferrerLeaderboardPageRequest extends ReferrerLeaderboardPageParams {
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* A status code for a referrer leaderboard page API response.
|
|
587
|
+
*/
|
|
588
|
+
declare const ReferrerLeaderboardPageResponseCodes: {
|
|
589
|
+
/**
|
|
590
|
+
* Represents that the requested referrer leaderboard page is available.
|
|
591
|
+
*/
|
|
592
|
+
readonly Ok: "ok";
|
|
593
|
+
/**
|
|
594
|
+
* Represents that the referrer leaderboard data is not available.
|
|
595
|
+
*/
|
|
596
|
+
readonly Error: "error";
|
|
597
|
+
};
|
|
598
|
+
/**
|
|
599
|
+
* The derived string union of possible {@link ReferrerLeaderboardPageResponseCodes}.
|
|
600
|
+
*/
|
|
601
|
+
type ReferrerLeaderboardPageResponseCode = (typeof ReferrerLeaderboardPageResponseCodes)[keyof typeof ReferrerLeaderboardPageResponseCodes];
|
|
602
|
+
/**
|
|
603
|
+
* A referrer leaderboard page response when the data is available.
|
|
604
|
+
*/
|
|
605
|
+
type ReferrerLeaderboardPageResponseOk = {
|
|
606
|
+
responseCode: typeof ReferrerLeaderboardPageResponseCodes.Ok;
|
|
607
|
+
data: ReferrerLeaderboardPage;
|
|
608
|
+
};
|
|
609
|
+
/**
|
|
610
|
+
* A referrer leaderboard page response when the data is not available.
|
|
611
|
+
*/
|
|
612
|
+
type ReferrerLeaderboardPageResponseError = {
|
|
613
|
+
responseCode: typeof ReferrerLeaderboardPageResponseCodes.Error;
|
|
614
|
+
error: string;
|
|
615
|
+
errorMessage: string;
|
|
616
|
+
};
|
|
617
|
+
/**
|
|
618
|
+
* A referrer leaderboard page API response.
|
|
619
|
+
*
|
|
620
|
+
* Use the `responseCode` field to determine the specific type interpretation
|
|
621
|
+
* at runtime.
|
|
622
|
+
*/
|
|
623
|
+
type ReferrerLeaderboardPageResponse = ReferrerLeaderboardPageResponseOk | ReferrerLeaderboardPageResponseError;
|
|
624
|
+
/**
|
|
625
|
+
* Request parameters for referrer detail query.
|
|
626
|
+
*/
|
|
627
|
+
interface ReferrerDetailRequest {
|
|
628
|
+
/** The Ethereum address of the referrer to query */
|
|
629
|
+
referrer: Address;
|
|
630
|
+
}
|
|
631
|
+
/**
|
|
632
|
+
* A status code for referrer detail API responses.
|
|
633
|
+
*/
|
|
634
|
+
declare const ReferrerDetailResponseCodes: {
|
|
635
|
+
/**
|
|
636
|
+
* Represents that the referrer detail data is available.
|
|
637
|
+
*/
|
|
638
|
+
readonly Ok: "ok";
|
|
639
|
+
/**
|
|
640
|
+
* Represents that an error occurred while fetching the data.
|
|
641
|
+
*/
|
|
642
|
+
readonly Error: "error";
|
|
643
|
+
};
|
|
644
|
+
/**
|
|
645
|
+
* The derived string union of possible {@link ReferrerDetailResponseCodes}.
|
|
646
|
+
*/
|
|
647
|
+
type ReferrerDetailResponseCode = (typeof ReferrerDetailResponseCodes)[keyof typeof ReferrerDetailResponseCodes];
|
|
648
|
+
/**
|
|
649
|
+
* A referrer detail response when the data is available for a referrer on the leaderboard.
|
|
650
|
+
*/
|
|
651
|
+
type ReferrerDetailResponseOk = {
|
|
652
|
+
responseCode: typeof ReferrerDetailResponseCodes.Ok;
|
|
653
|
+
data: ReferrerDetail;
|
|
654
|
+
};
|
|
655
|
+
/**
|
|
656
|
+
* A referrer detail response when an error occurs.
|
|
657
|
+
*/
|
|
658
|
+
type ReferrerDetailResponseError = {
|
|
659
|
+
responseCode: typeof ReferrerDetailResponseCodes.Error;
|
|
660
|
+
error: string;
|
|
661
|
+
errorMessage: string;
|
|
662
|
+
};
|
|
663
|
+
/**
|
|
664
|
+
* A referrer detail API response.
|
|
665
|
+
*
|
|
666
|
+
* Use the `responseCode` field to determine the specific type interpretation
|
|
667
|
+
* at runtime.
|
|
668
|
+
*/
|
|
669
|
+
type ReferrerDetailResponse = ReferrerDetailResponseOk | ReferrerDetailResponseError;
|
|
670
|
+
|
|
671
|
+
/**
|
|
672
|
+
* Serialized representation of {@link RevenueContribution}.
|
|
673
|
+
*
|
|
674
|
+
* RevenueContribution is a bigint, which is serialized as a string for JSON compatibility.
|
|
675
|
+
*/
|
|
676
|
+
type SerializedRevenueContribution = string;
|
|
677
|
+
/**
|
|
678
|
+
* Serialized representation of {@link ReferralProgramRules}.
|
|
679
|
+
*
|
|
680
|
+
* Note: All fields are already serializable primitives, so this type is identical to the source type.
|
|
681
|
+
*/
|
|
682
|
+
type SerializedReferralProgramRules = ReferralProgramRules;
|
|
683
|
+
/**
|
|
684
|
+
* Serialized representation of {@link AwardedReferrerMetrics}.
|
|
685
|
+
*/
|
|
686
|
+
interface SerializedAwardedReferrerMetrics extends Omit<AwardedReferrerMetrics, "totalRevenueContribution"> {
|
|
687
|
+
totalRevenueContribution: SerializedRevenueContribution;
|
|
688
|
+
}
|
|
689
|
+
/**
|
|
690
|
+
* Serialized representation of {@link UnrankedReferrerMetrics}.
|
|
691
|
+
*/
|
|
692
|
+
interface SerializedUnrankedReferrerMetrics extends Omit<UnrankedReferrerMetrics, "totalRevenueContribution"> {
|
|
693
|
+
totalRevenueContribution: SerializedRevenueContribution;
|
|
694
|
+
}
|
|
695
|
+
/**
|
|
696
|
+
* Serialized representation of {@link AggregatedReferrerMetrics}.
|
|
697
|
+
*/
|
|
698
|
+
interface SerializedAggregatedReferrerMetrics extends Omit<AggregatedReferrerMetrics, "grandTotalRevenueContribution"> {
|
|
699
|
+
grandTotalRevenueContribution: SerializedRevenueContribution;
|
|
700
|
+
}
|
|
701
|
+
/**
|
|
702
|
+
* Serialized representation of {@link ReferrerLeaderboardPage}.
|
|
703
|
+
*/
|
|
704
|
+
interface SerializedReferrerLeaderboardPage extends Omit<ReferrerLeaderboardPage, "referrers" | "aggregatedMetrics"> {
|
|
705
|
+
referrers: SerializedAwardedReferrerMetrics[];
|
|
706
|
+
aggregatedMetrics: SerializedAggregatedReferrerMetrics;
|
|
707
|
+
}
|
|
708
|
+
/**
|
|
709
|
+
* Serialized representation of {@link ReferrerDetailRanked}.
|
|
710
|
+
*/
|
|
711
|
+
interface SerializedReferrerDetailRanked extends Omit<ReferrerDetailRanked, "referrer" | "aggregatedMetrics"> {
|
|
712
|
+
referrer: SerializedAwardedReferrerMetrics;
|
|
713
|
+
aggregatedMetrics: SerializedAggregatedReferrerMetrics;
|
|
714
|
+
}
|
|
715
|
+
/**
|
|
716
|
+
* Serialized representation of {@link ReferrerDetailUnranked}.
|
|
717
|
+
*/
|
|
718
|
+
interface SerializedReferrerDetailUnranked extends Omit<ReferrerDetailUnranked, "referrer" | "aggregatedMetrics"> {
|
|
719
|
+
referrer: SerializedUnrankedReferrerMetrics;
|
|
720
|
+
aggregatedMetrics: SerializedAggregatedReferrerMetrics;
|
|
721
|
+
}
|
|
722
|
+
/**
|
|
723
|
+
* Serialized representation of {@link ReferrerDetail} (union of ranked and unranked).
|
|
724
|
+
*/
|
|
725
|
+
type SerializedReferrerDetail = SerializedReferrerDetailRanked | SerializedReferrerDetailUnranked;
|
|
726
|
+
/**
|
|
727
|
+
* Serialized representation of {@link ReferrerLeaderboardPageResponseError}.
|
|
728
|
+
*
|
|
729
|
+
* Note: All fields are already serializable, so this type is identical to the source type.
|
|
730
|
+
*/
|
|
731
|
+
type SerializedReferrerLeaderboardPageResponseError = ReferrerLeaderboardPageResponseError;
|
|
732
|
+
/**
|
|
733
|
+
* Serialized representation of {@link ReferrerLeaderboardPageResponseOk}.
|
|
734
|
+
*/
|
|
735
|
+
interface SerializedReferrerLeaderboardPageResponseOk extends Omit<ReferrerLeaderboardPageResponseOk, "data"> {
|
|
736
|
+
data: SerializedReferrerLeaderboardPage;
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* Serialized representation of {@link ReferrerLeaderboardPageResponse}.
|
|
740
|
+
*/
|
|
741
|
+
type SerializedReferrerLeaderboardPageResponse = SerializedReferrerLeaderboardPageResponseOk | SerializedReferrerLeaderboardPageResponseError;
|
|
742
|
+
/**
|
|
743
|
+
* Serialized representation of {@link ReferrerDetailResponseError}.
|
|
744
|
+
*
|
|
745
|
+
* Note: All fields are already serializable, so this type is identical to the source type.
|
|
746
|
+
*/
|
|
747
|
+
type SerializedReferrerDetailResponseError = ReferrerDetailResponseError;
|
|
748
|
+
/**
|
|
749
|
+
* Serialized representation of {@link ReferrerDetailResponseOk}.
|
|
750
|
+
*/
|
|
751
|
+
interface SerializedReferrerDetailResponseOk extends Omit<ReferrerDetailResponseOk, "data"> {
|
|
752
|
+
data: SerializedReferrerDetail;
|
|
753
|
+
}
|
|
754
|
+
/**
|
|
755
|
+
* Serialized representation of {@link ReferrerDetailResponse}.
|
|
756
|
+
*/
|
|
757
|
+
type SerializedReferrerDetailResponse = SerializedReferrerDetailResponseOk | SerializedReferrerDetailResponseError;
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* Deserialize a {@link ReferrerLeaderboardPageResponse} object.
|
|
761
|
+
*
|
|
762
|
+
* Note: This function explicitly deserializes each subobject to convert string
|
|
763
|
+
* RevenueContribution values back to bigint, then validates using Zod schemas
|
|
764
|
+
* to enforce invariants on the data.
|
|
765
|
+
*/
|
|
766
|
+
declare function deserializeReferrerLeaderboardPageResponse(maybeResponse: SerializedReferrerLeaderboardPageResponse, valueLabel?: string): ReferrerLeaderboardPageResponse;
|
|
767
|
+
/**
|
|
768
|
+
* Deserialize a {@link ReferrerDetailResponse} object.
|
|
769
|
+
*
|
|
770
|
+
* Note: This function explicitly deserializes each subobject to convert string
|
|
771
|
+
* RevenueContribution values back to bigint, then validates using Zod schemas
|
|
772
|
+
* to enforce invariants on the data.
|
|
773
|
+
*/
|
|
774
|
+
declare function deserializeReferrerDetailResponse(maybeResponse: SerializedReferrerDetailResponse, valueLabel?: string): ReferrerDetailResponse;
|
|
775
|
+
|
|
776
|
+
/**
|
|
777
|
+
* Serialize a {@link ReferrerLeaderboardPageResponse} object.
|
|
778
|
+
*/
|
|
779
|
+
declare function serializeReferrerLeaderboardPageResponse(response: ReferrerLeaderboardPageResponse): SerializedReferrerLeaderboardPageResponse;
|
|
780
|
+
/**
|
|
781
|
+
* Serialize a {@link ReferrerDetailResponse} object.
|
|
782
|
+
*/
|
|
783
|
+
declare function serializeReferrerDetailResponse(response: ReferrerDetailResponse): SerializedReferrerDetailResponse;
|
|
784
|
+
|
|
785
|
+
/**
|
|
786
|
+
* Default ENSNode API endpoint URL
|
|
787
|
+
*/
|
|
788
|
+
declare const DEFAULT_ENSNODE_API_URL: "https://api.alpha.ensnode.io";
|
|
789
|
+
/**
|
|
790
|
+
* Configuration options for ENS Referrals API client
|
|
791
|
+
*/
|
|
792
|
+
interface ClientOptions {
|
|
793
|
+
/** The ENSNode API URL */
|
|
794
|
+
url: URL;
|
|
795
|
+
}
|
|
796
|
+
/**
|
|
797
|
+
* ENS Referrals API Client
|
|
798
|
+
*
|
|
799
|
+
* Provides access to ENS Referrals data and leaderboard information.
|
|
800
|
+
*
|
|
801
|
+
* @example
|
|
802
|
+
* ```typescript
|
|
803
|
+
* // Create client with default options
|
|
804
|
+
* const client = new ENSReferralsClient();
|
|
805
|
+
*
|
|
806
|
+
* // Get referrer leaderboard
|
|
807
|
+
* const leaderboardPage = await client.getReferrerLeaderboardPage({
|
|
808
|
+
* page: 1,
|
|
809
|
+
* recordsPerPage: 25
|
|
810
|
+
* });
|
|
811
|
+
* ```
|
|
812
|
+
*
|
|
813
|
+
* @example
|
|
814
|
+
* ```typescript
|
|
815
|
+
* // Custom configuration
|
|
816
|
+
* const client = new ENSReferralsClient({
|
|
817
|
+
* url: new URL("https://my-ensnode-instance.com"),
|
|
818
|
+
* });
|
|
819
|
+
* ```
|
|
820
|
+
*/
|
|
821
|
+
declare class ENSReferralsClient {
|
|
822
|
+
private readonly options;
|
|
823
|
+
static defaultOptions(): ClientOptions;
|
|
824
|
+
constructor(options?: Partial<ClientOptions>);
|
|
825
|
+
getOptions(): Readonly<ClientOptions>;
|
|
826
|
+
/**
|
|
827
|
+
* Fetch Referrer Leaderboard Page
|
|
828
|
+
*
|
|
829
|
+
* Retrieves a paginated list of referrer leaderboard metrics with contribution percentages.
|
|
830
|
+
* Each referrer's contribution is calculated as a percentage of the grand totals across all referrers.
|
|
831
|
+
*
|
|
832
|
+
* @param request - Pagination parameters
|
|
833
|
+
* @param request.page - The page number to retrieve (1-indexed, default: 1)
|
|
834
|
+
* @param request.recordsPerPage - Number of records per page (default: 25, max: 100)
|
|
835
|
+
* @returns {ReferrerLeaderboardPageResponse}
|
|
836
|
+
*
|
|
837
|
+
* @throws if the ENSNode request fails
|
|
838
|
+
* @throws if the ENSNode API returns an error response
|
|
839
|
+
* @throws if the ENSNode response breaks required invariants
|
|
840
|
+
*
|
|
841
|
+
* @example
|
|
842
|
+
* ```typescript
|
|
843
|
+
* // Get first page with default page size (25 records)
|
|
844
|
+
* const response = await client.getReferrerLeaderboardPage();
|
|
845
|
+
* if (response.responseCode === ReferrerLeaderboardPageResponseCodes.Ok) {
|
|
846
|
+
* const {
|
|
847
|
+
* aggregatedMetrics,
|
|
848
|
+
* referrers,
|
|
849
|
+
* rules,
|
|
850
|
+
* pageContext,
|
|
851
|
+
* updatedAt
|
|
852
|
+
* } = response.data;
|
|
853
|
+
* console.log(aggregatedMetrics);
|
|
854
|
+
* console.log(referrers);
|
|
855
|
+
* console.log(rules);
|
|
856
|
+
* console.log(updatedAt);
|
|
857
|
+
* console.log(`Page ${pageContext.page} of ${pageContext.totalPages}`);
|
|
858
|
+
* }
|
|
859
|
+
* ```
|
|
860
|
+
*
|
|
861
|
+
* @example
|
|
862
|
+
* ```typescript
|
|
863
|
+
* // Get second page with 50 records per page
|
|
864
|
+
* const response = await client.getReferrerLeaderboardPage({ page: 2, recordsPerPage: 50 });
|
|
865
|
+
* ```
|
|
866
|
+
*
|
|
867
|
+
* @example
|
|
868
|
+
* ```typescript
|
|
869
|
+
* // Handle error response, ie. when Referrer Leaderboard is not currently available.
|
|
870
|
+
* const response = await client.getReferrerLeaderboardPage();
|
|
871
|
+
*
|
|
872
|
+
* if (response.responseCode === ReferrerLeaderboardPageResponseCodes.Error) {
|
|
873
|
+
* console.error(response.error);
|
|
874
|
+
* console.error(response.errorMessage);
|
|
875
|
+
* }
|
|
876
|
+
* ```
|
|
877
|
+
*/
|
|
878
|
+
getReferrerLeaderboardPage(request?: ReferrerLeaderboardPageRequest): Promise<ReferrerLeaderboardPageResponse>;
|
|
879
|
+
/**
|
|
880
|
+
* Fetch Referrer Detail
|
|
881
|
+
*
|
|
882
|
+
* Retrieves detailed information about a specific referrer, whether they are on the
|
|
883
|
+
* leaderboard or not.
|
|
884
|
+
*
|
|
885
|
+
* The response data is a discriminated union type with a `type` field:
|
|
886
|
+
*
|
|
887
|
+
* **For referrers on the leaderboard** (`ReferrerDetailRanked`):
|
|
888
|
+
* - `type`: {@link ReferrerDetailTypeIds.Ranked}
|
|
889
|
+
* - `referrer`: The `AwardedReferrerMetrics` from @namehash/ens-referrals
|
|
890
|
+
* - `rules`: The referral program rules
|
|
891
|
+
* - `aggregatedMetrics`: Aggregated metrics for all referrers on the leaderboard
|
|
892
|
+
* - `accurateAsOf`: Unix timestamp indicating when the data was last updated
|
|
893
|
+
*
|
|
894
|
+
* **For referrers NOT on the leaderboard** (`ReferrerDetailUnranked`):
|
|
895
|
+
* - `type`: {@link ReferrerDetailTypeIds.Unranked}
|
|
896
|
+
* - `referrer`: The `UnrankedReferrerMetrics` from @namehash/ens-referrals
|
|
897
|
+
* - `rules`: The referral program rules
|
|
898
|
+
* - `aggregatedMetrics`: Aggregated metrics for all referrers on the leaderboard
|
|
899
|
+
* - `accurateAsOf`: Unix timestamp indicating when the data was last updated
|
|
900
|
+
*
|
|
901
|
+
* @see {@link https://www.npmjs.com/package/@namehash/ens-referrals|@namehash/ens-referrals} for calculation details
|
|
902
|
+
*
|
|
903
|
+
* @param request The referrer address to query
|
|
904
|
+
* @returns {ReferrerDetailResponse} Returns the referrer detail response
|
|
905
|
+
*
|
|
906
|
+
* @throws if the ENSNode request fails
|
|
907
|
+
* @throws if the response data is malformed
|
|
908
|
+
*
|
|
909
|
+
* @example
|
|
910
|
+
* ```typescript
|
|
911
|
+
* // Get referrer detail for a specific address
|
|
912
|
+
* const response = await client.getReferrerDetail({
|
|
913
|
+
* referrer: "0x1234567890123456789012345678901234567890"
|
|
914
|
+
* });
|
|
915
|
+
* if (response.responseCode === ReferrerDetailResponseCodes.Ok) {
|
|
916
|
+
* const { type, referrer, rules, aggregatedMetrics, accurateAsOf } = response.data;
|
|
917
|
+
* console.log(type); // ReferrerDetailTypeIds.Ranked or ReferrerDetailTypeIds.Unranked
|
|
918
|
+
* console.log(referrer);
|
|
919
|
+
* console.log(accurateAsOf);
|
|
920
|
+
* }
|
|
921
|
+
* ```
|
|
922
|
+
*
|
|
923
|
+
* @example
|
|
924
|
+
* ```typescript
|
|
925
|
+
* // Use discriminated union to check if referrer is ranked
|
|
926
|
+
* const response = await client.getReferrerDetail({
|
|
927
|
+
* referrer: "0x1234567890123456789012345678901234567890"
|
|
928
|
+
* });
|
|
929
|
+
* if (response.responseCode === ReferrerDetailResponseCodes.Ok) {
|
|
930
|
+
* if (response.data.type === ReferrerDetailTypeIds.Ranked) {
|
|
931
|
+
* // TypeScript knows this is ReferrerDetailRanked
|
|
932
|
+
* console.log(`Rank: ${response.data.referrer.rank}`);
|
|
933
|
+
* console.log(`Qualified: ${response.data.referrer.isQualified}`);
|
|
934
|
+
* console.log(`Award Pool Share: ${response.data.referrer.awardPoolShare * 100}%`);
|
|
935
|
+
* } else {
|
|
936
|
+
* // TypeScript knows this is ReferrerDetailUnranked
|
|
937
|
+
* console.log("Referrer is not on the leaderboard (no referrals yet)");
|
|
938
|
+
* }
|
|
939
|
+
* }
|
|
940
|
+
* ```
|
|
941
|
+
*
|
|
942
|
+
* @example
|
|
943
|
+
* ```typescript
|
|
944
|
+
* // Handle error response, ie. when Referrer Detail is not currently available.
|
|
945
|
+
* const response = await client.getReferrerDetail({
|
|
946
|
+
* referrer: "0x1234567890123456789012345678901234567890"
|
|
947
|
+
* });
|
|
948
|
+
*
|
|
949
|
+
* if (response.responseCode === ReferrerDetailResponseCodes.Error) {
|
|
950
|
+
* console.error(response.error);
|
|
951
|
+
* console.error(response.errorMessage);
|
|
952
|
+
* }
|
|
953
|
+
* ```
|
|
954
|
+
*/
|
|
955
|
+
getReferrerDetail(request: ReferrerDetailRequest): Promise<ReferrerDetailResponse>;
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
/**
|
|
959
|
+
* Build a URL to the official ENS manager app
|
|
960
|
+
* where the given {@link Address} is set as the referrer.
|
|
961
|
+
*/
|
|
962
|
+
declare function buildEnsReferralUrl(address: Address): URL;
|
|
963
|
+
|
|
964
|
+
declare const isInteger: (value: number) => boolean;
|
|
965
|
+
declare const isNonNegativeInteger: (value: number) => boolean;
|
|
966
|
+
declare const isPositiveInteger: (value: number) => boolean;
|
|
967
|
+
declare const validateNonNegativeInteger: (value: number) => void;
|
|
968
|
+
declare const isFiniteNonNegativeNumber: (value: number) => boolean;
|
|
969
|
+
|
|
687
970
|
/**
|
|
688
971
|
* The type of referral program's status.
|
|
689
972
|
*/
|
|
@@ -716,4 +999,15 @@ type ReferralProgramStatusId = (typeof ReferralProgramStatuses)[keyof typeof Ref
|
|
|
716
999
|
*/
|
|
717
1000
|
declare const calcReferralProgramStatus: (referralProgramRules: ReferralProgramRules, now: UnixTimestamp) => ReferralProgramStatusId;
|
|
718
1001
|
|
|
719
|
-
|
|
1002
|
+
declare const validateUnixTimestamp: (timestamp: UnixTimestamp) => void;
|
|
1003
|
+
/**
|
|
1004
|
+
* The number of seconds in a year.
|
|
1005
|
+
*
|
|
1006
|
+
* (60 seconds per minute * 60 minutes per hour *
|
|
1007
|
+
* 24 hours per day * 365.2425 days on average per year).
|
|
1008
|
+
*/
|
|
1009
|
+
declare const SECONDS_PER_YEAR: Duration;
|
|
1010
|
+
declare function isValidDuration(duration: Duration): boolean;
|
|
1011
|
+
declare function validateDuration(duration: Duration): void;
|
|
1012
|
+
|
|
1013
|
+
export { type AggregatedReferrerMetrics, type AwardedReferrerMetrics, type ClientOptions, DEFAULT_ENSNODE_API_URL, ENSReferralsClient, ENS_HOLIDAY_AWARDS_END_DATE, ENS_HOLIDAY_AWARDS_MAX_QUALIFIED_REFERRERS, ENS_HOLIDAY_AWARDS_START_DATE, ENS_HOLIDAY_AWARDS_TOTAL_AWARD_POOL_VALUE, REFERRERS_PER_LEADERBOARD_PAGE_DEFAULT, REFERRERS_PER_LEADERBOARD_PAGE_MAX, type RankedReferrerMetrics, type ReferralProgramRules, type ReferralProgramStatusId, ReferralProgramStatuses, type ReferrerDetail, type ReferrerDetailRanked, type ReferrerDetailRequest, type ReferrerDetailResponse, type ReferrerDetailResponseCode, ReferrerDetailResponseCodes, type ReferrerDetailResponseError, type ReferrerDetailResponseOk, type ReferrerDetailTypeId, ReferrerDetailTypeIds, type ReferrerDetailUnranked, type ReferrerLeaderboard, type ReferrerLeaderboardPage, type ReferrerLeaderboardPageContext, type ReferrerLeaderboardPageParams, type ReferrerLeaderboardPageRequest, type ReferrerLeaderboardPageResponse, type ReferrerLeaderboardPageResponseCode, ReferrerLeaderboardPageResponseCodes, type ReferrerLeaderboardPageResponseError, type ReferrerLeaderboardPageResponseOk, type ReferrerMetrics, type ReferrerMetricsForComparison, type ReferrerRank, type ReferrerScore, type RevenueContribution, SECONDS_PER_YEAR, type ScoredReferrerMetrics, type SerializedAggregatedReferrerMetrics, type SerializedAwardedReferrerMetrics, type SerializedReferralProgramRules, type SerializedReferrerDetail, type SerializedReferrerDetailRanked, type SerializedReferrerDetailResponse, type SerializedReferrerDetailResponseError, type SerializedReferrerDetailResponseOk, type SerializedReferrerDetailUnranked, type SerializedReferrerLeaderboardPage, type SerializedReferrerLeaderboardPageResponse, type SerializedReferrerLeaderboardPageResponseError, type SerializedReferrerLeaderboardPageResponseOk, type SerializedRevenueContribution, type SerializedUnrankedReferrerMetrics, type USDQuantity, type UnrankedReferrerMetrics, buildAggregatedReferrerMetrics, buildAwardedReferrerMetrics, buildEnsReferralUrl, buildRankedReferrerMetrics, buildReferralProgramRules, buildReferrerLeaderboard, buildReferrerLeaderboardPageContext, buildReferrerLeaderboardPageParams, buildReferrerMetrics, buildScoredReferrerMetrics, buildUnrankedReferrerMetrics, calcReferralProgramStatus, calcReferrerAwardPoolShare, calcReferrerFinalScore, calcReferrerFinalScoreBoost, calcReferrerFinalScoreMultiplier, calcReferrerScore, compareReferrerMetrics, deserializeReferrerDetailResponse, deserializeReferrerLeaderboardPageResponse, getReferrerDetail, getReferrerLeaderboardPage, isFiniteNonNegativeNumber, isInteger, isNonNegativeInteger, isPositiveInteger, isReferrerQualified, isValidDuration, isValidReferrerScore, isValidRevenueContribution, isValidUSDQuantity, normalizeAddress, serializeReferrerDetailResponse, serializeReferrerLeaderboardPageResponse, sortReferrerMetrics, validateAggregatedReferrerMetrics, validateAwardedReferrerMetrics, validateDuration, validateLowercaseAddress, validateNonNegativeInteger, validateRankedReferrerMetrics, validateReferralProgramRules, validateReferrerLeaderboardPageContext, validateReferrerMetrics, validateReferrerRank, validateReferrerScore, validateRevenueContribution, validateScoredReferrerMetrics, validateUSDQuantity, validateUnixTimestamp, validateUnrankedReferrerMetrics };
|