@ensnode/ensnode-sdk 1.3.0 → 1.4.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
@@ -1,10 +1,10 @@
1
1
  import z$1, { z } from 'zod/v4';
2
2
  import { ENSNamespaceId, DatasourceName } from '@ensnode/datasources';
3
3
  export { ENSNamespaceId, ENSNamespaceIds, getENSRootChainId } from '@ensnode/datasources';
4
- import { Hex, Address, ByteArray, Hash } from 'viem';
4
+ import { Address, Hex, ByteArray, Hash } from 'viem';
5
5
  import { CoinType, EvmCoinType } from '@ensdomains/address-encoder';
6
6
  export { CoinType, EvmCoinType } from '@ensdomains/address-encoder';
7
- import { UnixTimestamp as UnixTimestamp$1, EncodedReferrer, ReferrerLeaderboardPageParams, ReferrerLeaderboardPage, ReferrerDetail } from '@namehash/ens-referrals';
7
+ import { UnixTimestamp as UnixTimestamp$1, EncodedReferrer, ReferrerLeaderboardPageParams, ReferrerLeaderboardPage, ReferrerDetail, AwardedReferrerMetrics, AggregatedReferrerMetrics, ReferrerDetailRanked, ReferrerDetailUnranked, UnrankedReferrerMetrics, ReferralProgramRules } from '@namehash/ens-referrals';
8
8
  export { EncodedReferrer, ZERO_ENCODED_REFERRER, decodeEncodedReferrer } from '@namehash/ens-referrals';
9
9
 
10
10
  /**
@@ -52,6 +52,138 @@ declare const evmChainIdToCoinType: (chainId: ChainId) => CoinType;
52
52
  */
53
53
  declare const bigintToCoinType: (value: bigint) => CoinType;
54
54
 
55
+ /**
56
+ * Serialized CAIP-10 Asset ID that uniquely identifies a Registry contract.
57
+ */
58
+ type RegistryId = string & {
59
+ __brand: "RegistryContractId";
60
+ };
61
+ /**
62
+ * A Domain's Canonical Id is uint256(labelHash) with lower (right-most) 32 bits zero'd.
63
+ */
64
+ type CanonicalId = bigint;
65
+ /**
66
+ * The node that uniquely identifies an ENSv1 name.
67
+ */
68
+ type ENSv1DomainId = Node & {
69
+ __brand: "ENSv1DomainId";
70
+ };
71
+ /**
72
+ * The Serialized CAIP-19 Asset ID that uniquely identifies an ENSv2 name.
73
+ */
74
+ type ENSv2DomainId = string & {
75
+ __brand: "ENSv2DomainId";
76
+ };
77
+ /**
78
+ * A DomainId is one of ENSv1DomainId or ENSv2DomainId.
79
+ */
80
+ type DomainId = ENSv1DomainId | ENSv2DomainId;
81
+ /**
82
+ * Uniquely identifies a Permissions entity.
83
+ */
84
+ type PermissionsId = AccountIdString & {
85
+ __brand: "PermissionsId";
86
+ };
87
+ /**
88
+ * Uniquely identifies a PermissionsResource entity.
89
+ */
90
+ type PermissionsResourceId = string & {
91
+ __brand: "PermissionsResourceId";
92
+ };
93
+ /**
94
+ * Uniquely identifies a PermissionsUser entity.
95
+ */
96
+ type PermissionsUserId = string & {
97
+ __brand: "PermissionsUserId";
98
+ };
99
+ /**
100
+ * Uniquely identifies a Resolver entity.
101
+ */
102
+ type ResolverId = AccountIdString & {
103
+ __brand: "ResolverId";
104
+ };
105
+ /**
106
+ * Uniquely identifies a ResolverRecords entity.
107
+ */
108
+ type ResolverRecordsId = string & {
109
+ __brand: "ResolverRecordsId";
110
+ };
111
+ /**
112
+ * Uniquely identifies a Registration entity.
113
+ */
114
+ type RegistrationId = string & {
115
+ __brand: "RegistrationId";
116
+ };
117
+ /**
118
+ * Uniquely identifies a Renewal entity.
119
+ */
120
+ type RenewalId = string & {
121
+ __brand: "RenewalId";
122
+ };
123
+
124
+ /**
125
+ * Formats and brands an AccountId as a RegistryId.
126
+ */
127
+ declare const makeRegistryId: (accountId: AccountId) => RegistryId;
128
+ /**
129
+ * Makes an ENSv1 Domain Id given the ENSv1 Domain's `node`
130
+ */
131
+ declare const makeENSv1DomainId: (node: Node) => ENSv1DomainId;
132
+ /**
133
+ * Makes an ENSv2 Domain Id given the parent `registry` and the domain's `canonicalId`.
134
+ */
135
+ declare const makeENSv2DomainId: (registry: AccountId, canonicalId: CanonicalId) => ENSv2DomainId;
136
+ /**
137
+ * Computes a Domain's {@link CanonicalId} given its tokenId or LabelHash as `input`.
138
+ */
139
+ declare const getCanonicalId: (input: bigint | LabelHash) => CanonicalId;
140
+ /**
141
+ * Formats and brands an AccountId as a PermissionsId.
142
+ */
143
+ declare const makePermissionsId: (contract: AccountId) => PermissionsId;
144
+ /**
145
+ * Constructs a PermissionsResourceId for a given `contract`'s `resource`.
146
+ */
147
+ declare const makePermissionsResourceId: (contract: AccountId, resource: bigint) => PermissionsResourceId;
148
+ /**
149
+ * Constructs a PermissionsUserId for a given `contract`'s `resource`'s `user`.
150
+ */
151
+ declare const makePermissionsUserId: (contract: AccountId, resource: bigint, user: Address) => PermissionsUserId;
152
+ /**
153
+ * Formats and brands an AccountId as a ResolverId.
154
+ */
155
+ declare const makeResolverId: (contract: AccountId) => ResolverId;
156
+ /**
157
+ * Constructs a ResolverRecordsId for a given `node` under `resolver`.
158
+ */
159
+ declare const makeResolverRecordsId: (resolver: AccountId, node: Node) => ResolverRecordsId;
160
+ /**
161
+ * Constructs a RegistrationId for a `domainId`'s latest Registration.
162
+ *
163
+ * @dev See apps/ensindexer/src/lib/ensv2/registration-db-helpers.ts for more info.
164
+ */
165
+ declare const makeLatestRegistrationId: (domainId: DomainId) => RegistrationId;
166
+ /**
167
+ * Constructs a RegistrationId for a `domainId`'s `index`'thd Registration.
168
+ *
169
+ * @dev See apps/ensindexer/src/lib/ensv2/registration-db-helpers.ts for more info.
170
+ */
171
+ declare const makeRegistrationId: (domainId: DomainId, index?: number) => RegistrationId;
172
+ /**
173
+ * Constructs a RenewalId for a `domainId`'s `registrationIndex`thd Registration's latest Renewal.
174
+ *
175
+ * @dev Forces usage of the 'pinned' RegistrationId to avoid collisions, see
176
+ * apps/ensindexer/src/lib/ensv2/registration-db-helpers.ts for more info.
177
+ */
178
+ declare const makeLatestRenewalId: (domainId: DomainId, registrationIndex: number) => RenewalId;
179
+ /**
180
+ * Constructs a RenewalId for a `domainId`'s `registrationIndex`thd Registration's `index`'thd Renewal.
181
+ *
182
+ * @dev Forces usage of the 'pinned' RegistrationId to avoid collisions, see
183
+ * apps/ensindexer/src/lib/ensv2/registration-db-helpers.ts for more info.
184
+ */
185
+ declare const makeRenewalId: (domainId: DomainId, registrationIndex: number, index?: number) => RenewalId;
186
+
55
187
  /**
56
188
  * A hash value that uniquely identifies a single ENS name.
57
189
  * Result of `namehash` function as specified in ENSIP-1.
@@ -93,8 +225,25 @@ type NormalizedName = Name & {
93
225
  *
94
226
  * @see https://docs.ens.domains/terminology#labelhash
95
227
  * @see https://ensnode.io/docs/reference/terminology#labels-labelhashes-labelhash-function
228
+ * @see https://ensnode.io/ensrainbow/concepts/glossary#labelhash
96
229
  */
97
230
  type LabelHash = Hex;
231
+ /**
232
+ * A LabelHashPath is an ordered list of LabelHashes that uniquely identify an ENS Name.
233
+ * It is ordered in namegraph TRAVERSAL order (i.e. the opposite order of an ENS Name's labels).
234
+ *
235
+ * ex: example.eth's LabelHashPath is
236
+ * [
237
+ * '0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0', // 'eth'
238
+ * '0x6fd43e7cffc31bb581d7421c8698e29aa2bd8e7186a394b85299908b4eb9b175', // 'example'
239
+ * ]
240
+ */
241
+ type LabelHashPath = LabelHash[];
242
+ /**
243
+ * CanonicalPath is an ordered list of DomainIds describing the canonical path to a Domain.
244
+ * It is ordered in namegraph TRAVERSAL order (i.e. the opposite order of an ENS Name's labels).
245
+ */
246
+ type CanonicalPath = DomainId[];
98
247
  /**
99
248
  * A Label is a single part of an ENS Name.
100
249
  *
@@ -303,6 +452,16 @@ declare const ETH_NODE: Node;
303
452
  declare const BASENAMES_NODE: Node;
304
453
  declare const LINEANAMES_NODE: Node;
305
454
  declare const ADDR_REVERSE_NODE: Node;
455
+ /**
456
+ * NODE_ANY is a placeholder Node used in the context of DedicatedResolvers — IResolver events are
457
+ * emitted with NODE_ANY as the `node` for which the records are issued, but the DedicatedResolver
458
+ * returns those records regardless of the name used for record resolution.
459
+ */
460
+ declare const NODE_ANY: Node;
461
+ /**
462
+ * ROOT_RESOURCE represents the 'root' resource in an EnhancedAccessControl contract.
463
+ */
464
+ declare const ROOT_RESOURCE = 0n;
306
465
 
307
466
  /**
308
467
  * Decodes a DNS-Encoded name consisting of Literal Labels into an ordered list of Literal Labels.
@@ -347,6 +506,11 @@ declare const encodeLabelHash: (labelHash: LabelHash) => EncodedLabelHash;
347
506
  */
348
507
  declare function isEncodedLabelHash(maybeEncodedLabelHash: string): maybeEncodedLabelHash is EncodedLabelHash;
349
508
 
509
+ /**
510
+ * Determines whether `fuses` has set ('burnt') the PARENT_CANNOT_CONTROL fuse.
511
+ */
512
+ declare const isPccFuseSet: (fuses: number) => boolean;
513
+
350
514
  /**
351
515
  * Determines whether the Name is normalized.
352
516
  *
@@ -495,6 +659,30 @@ interface AccountId {
495
659
  chainId: ChainId;
496
660
  address: Address;
497
661
  }
662
+ /**
663
+ * An enum representing the possible CAIP-19 Asset Namespace values.
664
+ *
665
+ * @see https://chainagnostic.org/CAIPs/caip-19
666
+ */
667
+ declare const AssetNamespaces: {
668
+ readonly ERC721: "erc721";
669
+ readonly ERC1155: "erc1155";
670
+ };
671
+ type AssetNamespace = (typeof AssetNamespaces)[keyof typeof AssetNamespaces];
672
+ /**
673
+ * A uint256 value that identifies a specific NFT within a NFT contract.
674
+ */
675
+ type TokenId = bigint;
676
+ /**
677
+ * Represents an Asset in `assetNamespace` by `tokenId` in `contract`.
678
+ *
679
+ * @see https://chainagnostic.org/CAIPs/caip-19
680
+ */
681
+ interface AssetId {
682
+ assetNamespace: AssetNamespace;
683
+ contract: AccountId;
684
+ tokenId: TokenId;
685
+ }
498
686
  /**
499
687
  * Block Number
500
688
  *
@@ -585,6 +773,12 @@ type Duration = number;
585
773
  type DeepPartial<T> = {
586
774
  [P in keyof T]?: T[P] extends (infer U)[] ? DeepPartial<U>[] : T[P] extends object ? DeepPartial<T[P]> : T[P];
587
775
  };
776
+ /**
777
+ * Marks keys in K as required (not undefined) and not null.
778
+ */
779
+ type RequiredAndNotNull<T, K extends keyof T> = T & {
780
+ [P in K]-?: NonNullable<T[P]>;
781
+ };
588
782
 
589
783
  /**
590
784
  * Determines where the provided AccountId values represent the same address on the same chain.
@@ -655,61 +849,32 @@ declare class LruCache<KeyType extends string, ValueType> implements Cache<KeyTy
655
849
  get capacity(): number;
656
850
  }
657
851
 
658
- /**
659
- * Data structure for a single cached value.
660
- */
661
- interface CachedValue<ValueType> {
662
- /**
663
- * The cached value of type ValueType.
664
- */
665
- value: ValueType;
666
- /**
667
- * Unix timestamp indicating when the cached `value` was generated.
668
- */
669
- updatedAt: UnixTimestamp;
670
- }
671
852
  interface SWRCacheOptions<ValueType> {
672
853
  /**
673
- * The async function generating a value of `ValueType` to wrap with SWR caching.
674
- *
675
- * On success:
676
- * - This function returns a value of type `ValueType` to store in the `SWRCache`.
677
- *
678
- * On error:
679
- * - This function throws an error and no changes will be made to the `SWRCache`.
854
+ * The async function generating a value of `ValueType` to wrap with SWR caching. It may throw an
855
+ * Error type.
680
856
  */
681
857
  fn: () => Promise<ValueType>;
682
858
  /**
683
- * Time-to-live duration in seconds. After this duration, data in the `SWRCache` is
684
- * considered stale but is still retained in the cache until successfully replaced with a new value.
859
+ * Time-to-live duration of a cached result in seconds. After this duration:
860
+ * - the currently cached result is considered "stale" but is still retained in the cache
861
+ * until successfully replaced.
862
+ * - Each time the cache is read, if the cached result is "stale" and no background
863
+ * revalidation attempt is already in progress, a new background revalidation
864
+ * attempt will be made.
685
865
  */
686
866
  ttl: Duration;
687
867
  /**
688
- * Optional time-to-proactively-revalidate duration in seconds. After this duration, automated attempts
689
- * to asynchronously revalidate the cached value will be made in the background.
690
- *
691
- * If defined:
692
- * - Proactive asynchronous revalidation attempts will be automatically triggered in the background
693
- * on this interval.
694
- *
695
- * If undefined:
696
- * - Revalidation only occurs lazily when an explicit request for the cached value is
697
- * made after the `ttl` duration of the latest successfully cached value expires.
868
+ * Optional time-to-proactively-revalidate duration in seconds. After a cached result is
869
+ * initialized, and this duration has passed, attempts to asynchronously revalidate
870
+ * the cached result will be proactively made in the background on this interval.
698
871
  */
699
- revalidationInterval?: Duration;
872
+ proactiveRevalidationInterval?: Duration;
700
873
  /**
701
- * Proactively initialize
702
- *
703
- * Optional. Defaults to `false`.
874
+ * Optional proactive initialization. Defaults to `false`.
704
875
  *
705
- * If `true`:
706
- * - The SWR cache will proactively work to initialize itself, even before any explicit request to
707
- * access the cached value is made.
708
- *
709
- * If `false`:
710
- * - The SWR cache will lazily wait to initialize itself only when one of the following occurs:
711
- * - Background revalidation occurred (if requested); or
712
- * - An explicit attempt to access the cached value is made.
876
+ * If `true`: The SWR cache will proactively initialize itself.
877
+ * If `false`: The SWR cache will lazily wait to initialize itself until the first read.
713
878
  */
714
879
  proactivelyInitialize?: boolean;
715
880
  }
@@ -720,81 +885,43 @@ interface SWRCacheOptions<ValueType> {
720
885
  * asynchronously revalidating the cache in the background. This provides:
721
886
  * - Sub-millisecond response times (after first fetch)
722
887
  * - Always available data (serves stale data during revalidation)
723
- * - Automatic background updates (triggered lazily when new requests
724
- * are made for the cached data or when the `revalidationInterval` is reached)
888
+ * - Automatic background updates via configurable intervals
725
889
  *
726
890
  * @example
727
891
  * ```typescript
728
- * const fetchExpensiveData = async () => {
729
- * const response = await fetch('/api/data');
730
- * return response.json();
731
- * };
732
- *
733
- * const cache = await SWRCache.create({
734
- * fn: fetchExpensiveData,
892
+ * const cache = new SWRCache({
893
+ * fn: async () => fetch('/api/data').then(r => r.json()),
735
894
  * ttl: 60, // 1 minute TTL
736
- * revalidationInterval: 5 * 60 // proactive revalidation after 5 minutes from latest cache update
895
+ * proactiveRevalidationInterval: 300 // proactively revalidate every 5 minutes
737
896
  * });
738
897
  *
739
- * // [T0: 0] First call: fetches data (slow)
740
- * const firstRead = await cache.readCache();
741
- *
742
- * // [T1: T0 + 59s] Within TTL: returns data cache at T0 (fast)
743
- * const secondRead = await cache.readCache();
898
+ * // Returns cached data or waits for initial fetch
899
+ * const data = await cache.read();
744
900
  *
745
- * // [T2: T0 + 1m30s] After TTL: returns stale data that was cached at T0 immediately
746
- * // revalidates asynchronously in the background
747
- * const thirdRead = await cache.readCache(); // Still fast!
748
- *
749
- * // [T3: T2 + 90m] Background revalidation kicks in
750
- *
751
- * // [T4: T3 + 1m] Within TTL: returns data cache at T3 (fast)
752
- * const fourthRead = await cache.readCache(); // Still fast!
753
- *
754
- * // Please note how using `SWRCache` enabled action at T3 to happen.
755
- * // If no `revalidationInterval` value was set, the action at T3 would not happen.
756
- * // Therefore, the `fourthRead` would return stale data cached at T2.
901
+ * if (data instanceof Error) { ... }
902
+ * ```
757
903
  *
758
904
  * @link https://web.dev/stale-while-revalidate/
759
905
  * @link https://datatracker.ietf.org/doc/html/rfc5861
760
906
  */
761
907
  declare class SWRCache<ValueType> {
762
- readonly options: SWRCacheOptions<ValueType>;
908
+ private readonly options;
763
909
  private cache;
764
- /**
765
- * Optional promise of the current in-progress attempt to revalidate the `cache`.
766
- *
767
- * If null, no revalidation attempt is currently in progress.
768
- * If not null, identifies the revalidation attempt that is currently in progress.
769
- *
770
- * Used to enforce no concurrent revalidation attempts.
771
- */
772
910
  private inProgressRevalidate;
911
+ private backgroundInterval;
912
+ constructor(options: SWRCacheOptions<ValueType>);
913
+ private revalidate;
773
914
  /**
774
- * The callback function being managed by `BackgroundRevalidationScheduler`.
775
- *
776
- * If null, no background revalidation is scheduled.
777
- * If not null, identifies the background revalidation that is currently scheduled.
778
- *
779
- * Used to enforce no concurrent background revalidation attempts.
780
- */
781
- private scheduledBackgroundRevalidate;
782
- private constructor();
783
- /**
784
- * Asynchronously create a new `SWRCache` instance.
915
+ * Read the most recently cached result from the `SWRCache`.
785
916
  *
786
- * @param options - The {@link SWRCacheOptions} for the SWR cache.
787
- * @returns a new `SWRCache` instance.
917
+ * @returns a `ValueType` that was most recently successfully returned by `fn` or `Error` if `fn`
918
+ * has never successfully returned.
788
919
  */
789
- static create<ValueType>(options: SWRCacheOptions<ValueType>): Promise<SWRCache<ValueType>>;
790
- private revalidate;
920
+ read(): Promise<ValueType | Error>;
791
921
  /**
792
- * Read the most recently cached `CachedValue` from the `SWRCache`.
793
- *
794
- * @returns a `CachedValue` holding a `value` of `ValueType` that was most recently successfully returned by `fn`
795
- * or `null` if `fn` has never successfully returned and has always thrown an error,
922
+ * Destroys the background revalidation interval, if exists.
796
923
  */
797
- readCache: () => Promise<CachedValue<ValueType> | null>;
924
+ destroy(): void;
798
925
  }
799
926
 
800
927
  /**
@@ -928,20 +1055,18 @@ declare function addPrices<const PriceType extends Price = Price>(...prices: [Pr
928
1055
  * This is useful when you want to retrieve the AccountId for a contract by its name
929
1056
  * where it may or may not actually be defined for the given namespace and datasource.
930
1057
  *
931
- * @param namespaceId - The ENSNamespace identifier (e.g. 'mainnet', 'sepolia', 'holesky',
932
- * 'ens-test-env')
1058
+ * @param namespaceId - The ENSNamespace identifier (e.g. 'mainnet', 'sepolia', 'ens-test-env')
933
1059
  * @param datasourceName - The name of the Datasource to search for contractName in
934
1060
  * @param contractName - The name of the contract to retrieve
935
1061
  * @returns The AccountId of the contract with the given namespace, datasource,
936
1062
  * and contract name, or undefined if it is not found or is not a single AccountId
937
1063
  */
938
- declare const maybeGetDatasourceContract: (namespaceId: ENSNamespaceId, datasourceName: DatasourceName, contractName: string) => AccountId | undefined;
1064
+ declare const maybeGetDatasourceContract: <N extends ENSNamespaceId, D extends DatasourceName, C extends string>(namespaceId: N, datasourceName: D, contractName: C) => AccountId | undefined;
939
1065
  /**
940
1066
  * Gets the AccountId for the contract in the specified namespace, datasource, and
941
1067
  * contract name, or throws an error if it is not defined or is not a single AccountId.
942
1068
  *
943
- * @param namespaceId - The ENSNamespace identifier (e.g. 'mainnet', 'sepolia', 'holesky',
944
- * 'ens-test-env')
1069
+ * @param namespaceId - The ENSNamespace identifier (e.g. 'mainnet', 'sepolia', 'ens-test-env')
945
1070
  * @param datasourceName - The name of the Datasource to search for contractName in
946
1071
  * @param contractName - The name of the contract to retrieve
947
1072
  * @returns The AccountId of the contract with the given namespace, datasource,
@@ -949,6 +1074,10 @@ declare const maybeGetDatasourceContract: (namespaceId: ENSNamespaceId, datasour
949
1074
  * @throws Error if the contract is not found or is not a single AccountId
950
1075
  */
951
1076
  declare const getDatasourceContract: (namespaceId: ENSNamespaceId, datasourceName: DatasourceName, contractName: string) => AccountId;
1077
+ /**
1078
+ * Makes a comparator fn for `b` against the contract described by `namespace`, `datasourceName`, and `contractName`.
1079
+ */
1080
+ declare const makeContractMatcher: (namespace: ENSNamespaceId, b: AccountId) => (datasourceName: DatasourceName, contractName: string) => boolean | undefined;
952
1081
 
953
1082
  /**
954
1083
  * Duration between two moments in time.
@@ -981,6 +1110,16 @@ type UrlString = string;
981
1110
  * @see https://chainagnostic.org/CAIPs/caip-10
982
1111
  */
983
1112
  type AccountIdString = string;
1113
+ /**
1114
+ * String representation of {@link AssetId}.
1115
+ *
1116
+ * Formatted as a fully lowercase CAIP-19 AssetId.
1117
+ *
1118
+ * @see https://chainagnostic.org/CAIPs/caip-19
1119
+ * @example "eip155:1/erc721:0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85/0xaf2caa1c2ca1d027f1ac823b529d0a67cd144264b2789fa2ea4d63a67c7103cc"
1120
+ * for vitalik.eth in the eth base registrar on mainnet.
1121
+ */
1122
+ type AssetIdString = string;
984
1123
 
985
1124
  declare function deserializeChainId(maybeChainId: ChainIdString, valueLabel?: string): ChainId;
986
1125
  declare function deserializeDatetime(maybeDatetime: string, valueLabel?: string): Datetime;
@@ -995,6 +1134,104 @@ declare function deserializeBlockRef(maybeBlockRef: Partial<BlockRef>, valueLabe
995
1134
  declare function deserializeDuration(maybeDuration: unknown, valueLabel?: string): Duration;
996
1135
  declare function parseAccountId(maybeAccountId: unknown, valueLabel?: string): AccountId;
997
1136
 
1137
+ /**
1138
+ * Interprets a viem#Address. zeroAddress is interpreted as null, otherwise Address.
1139
+ */
1140
+ declare const interpretAddress: (owner: Address) => `0x${string}` | null;
1141
+
1142
+ /**
1143
+ * Interprets a name record value string and returns null if the value is interpreted as a deletion.
1144
+ *
1145
+ * The interpreted record value is either:
1146
+ * a) null, representing a non-existant or deletion of the record, or
1147
+ * b) a normalized, non-empty-string Name.
1148
+ *
1149
+ * @param value - The name record value string to interpret.
1150
+ * @returns The interpreted name string, or null if deleted.
1151
+ */
1152
+ declare function interpretNameRecordValue(value: string): NormalizedName | null;
1153
+ /**
1154
+ * Interprets an address record value string and returns null if the value is interpreted as a deletion.
1155
+ *
1156
+ * The interpreted record value is either:
1157
+ * a) null, representing a non-existant or deletion of the record, or
1158
+ * i. contains null bytes
1159
+ * ii. empty string
1160
+ * iii. empty hex (0x)
1161
+ * iv. zeroAddress
1162
+ * b) an address record value that
1163
+ * i. does not contain null bytes
1164
+ * ii. (if is an EVM address) is lowercase
1165
+ *
1166
+ * @param value - The address record value to interpret.
1167
+ * @returns The interpreted address string or null if deleted.
1168
+ */
1169
+ declare function interpretAddressRecordValue(value: string): string | null;
1170
+ /**
1171
+ * Interprets a text record key string and returns null if the key should be ignored.
1172
+ *
1173
+ * The interpreted text record key is either:
1174
+ * a) null, representing a text record key that should be ignored, or
1175
+ * i. contains null bytes
1176
+ * ii. empty string
1177
+ * b) a text record key that
1178
+ * i. does not contain null bytes
1179
+ *
1180
+ * @param value - The text record key to interpret.
1181
+ * @returns The interpreted text string or null if ignored.
1182
+ */
1183
+ declare function interpretTextRecordKey(key: string): string | null;
1184
+ /**
1185
+ * Interprets a text record value string and returns null if the value is interpreted as a deletion.
1186
+ *
1187
+ * The interpreted record value is either:
1188
+ * a) null, representing a non-existant or deletion of the record, or
1189
+ * i. contains null bytes
1190
+ * ii. empty string
1191
+ * b) a text record value that
1192
+ * i. does not contain null bytes
1193
+ *
1194
+ * @param value - The text record value to interpret.
1195
+ * @returns The interpreted text string or null if deleted.
1196
+ */
1197
+ declare function interpretTextRecordValue(value: string): string | null;
1198
+
1199
+ /**
1200
+ * Decodes a uint256-encoded-LabelHash (eg. from a tokenId) into a {@link LabelHash}.
1201
+ *
1202
+ * Remember that contracts that operate in the context of a Managed Name frequently store and operate
1203
+ * over _LabelHashes_ that represent a direct subname of a Managed Name. These contracts also frequently
1204
+ * implement ERC721 or ERC1155 to represent ownership of these Names. As such, to construct the
1205
+ * ERC721/ERC1155 tokenId, they may encode the direct subnames's LabelHash as a uint256.
1206
+ *
1207
+ * This is true for the ENSv1 BaseRegistrar, RegistrarControllers, as well as any
1208
+ * contracts forked from it (which includes Basenames' and Lineanames' implementations).
1209
+ *
1210
+ * So, in order to turn the tokenId into a LabelHash, we perform the opposite operation, decoding
1211
+ * from a uint256 into a Hex (of size 32) and cast it as our semantic {@link LabelHash} type.
1212
+ *
1213
+ * @see https://github.com/ensdomains/ens-contracts/blob/db613bc/contracts/ethregistrar/ETHRegistrarController.sol#L215
1214
+ * @see https://github.com/base/basenames/blob/1b5c1ad/src/L2/RegistrarController.sol#L488
1215
+ * @see https://github.com/Consensys/linea-ens/blob/3a4f02f/packages/linea-ens-contracts/contracts/ethregistrar/ETHRegistrarController.sol#L447
1216
+ */
1217
+ declare const interpretTokenIdAsLabelHash: (tokenId: bigint) => LabelHash;
1218
+ /**
1219
+ * Decodes a uint256-encoded-Node (eg. from a tokenId) into a {@link Node}.
1220
+ *
1221
+ * Contracts in the ENSv1 ecosystem frequently implement ERC721 or ERC1155 to represent
1222
+ * ownership of a Domain. As such, to construct the ERC721/ERC1155 tokenId, they may encode the
1223
+ * domain's {@link Node} as a uint256.
1224
+ *
1225
+ * This is true for the ENSv1 NameWrapper, as well as any contracts forked from it (which includes
1226
+ * Lineanames' implementation).
1227
+ *
1228
+ * So, in order to turn the tokenId into a Node, we perform the opposite operation, decoding
1229
+ * from a uint256 into a Hex (of size 32) and cast it as our semantic {@link Node} type.
1230
+ *
1231
+ * @see https://github.com/ensdomains/ens-contracts/blob/db613bc/contracts/wrapper/ERC1155Fuse.sol#L262
1232
+ */
1233
+ declare const interpretTokenIdAsNode: (tokenId: bigint) => Node;
1234
+
998
1235
  /**
999
1236
  * Interprets a Literal Label, producing an Interpreted Label.
1000
1237
  *
@@ -1037,6 +1274,17 @@ declare function interpretedLabelsToInterpretedName(labels: InterpretedLabel[]):
1037
1274
  * @returns An LiteralName
1038
1275
  */
1039
1276
  declare function literalLabelsToLiteralName(labels: LiteralLabel[]): LiteralName;
1277
+ /**
1278
+ * Converts an Interpreted Name into a list of Interpreted Labels.
1279
+ */
1280
+ declare function interpretedNameToInterpretedLabels(name: InterpretedName): InterpretedLabel[];
1281
+ declare function encodedLabelToLabelhash(label: string): LabelHash | null;
1282
+ declare function isInterpetedLabel(label: Label): label is InterpretedLabel;
1283
+ declare function isInterpretedName(name: Name): name is InterpretedName;
1284
+ /**
1285
+ * Converts an InterpretedName into a LabelHashPath.
1286
+ */
1287
+ declare function interpretedNameToLabelHashPath(name: InterpretedName): LabelHashPath;
1040
1288
 
1041
1289
  /**
1042
1290
  * Implements the ENS `labelhash` function for Literal Labels.
@@ -1059,6 +1307,27 @@ declare const stripNullBytes: (value: string) => string;
1059
1307
  */
1060
1308
  declare function bigIntToNumber(n: bigint): number;
1061
1309
 
1310
+ /**
1311
+ * Gets the AccountId representing the ENSv1 Registry in the selected `namespace`.
1312
+ */
1313
+ declare const getENSv1Registry: (namespace: ENSNamespaceId) => AccountId;
1314
+ /**
1315
+ * Determines whether `contract` is the ENSv1 Registry in `namespace`.
1316
+ */
1317
+ declare const isENSv1Registry: (namespace: ENSNamespaceId, contract: AccountId) => boolean;
1318
+ /**
1319
+ * Gets the AccountId representing the ENSv2 Root Registry in the selected `namespace`.
1320
+ */
1321
+ declare const getENSv2RootRegistry: (namespace: ENSNamespaceId) => AccountId;
1322
+ /**
1323
+ * Gets the RegistryId representing the ENSv2 Root Registry in the selected `namespace`.
1324
+ */
1325
+ declare const getENSv2RootRegistryId: (namespace: ENSNamespaceId) => RegistryId;
1326
+ /**
1327
+ * Determines whether `contract` is the ENSv2 Root Registry in `namespace`.
1328
+ */
1329
+ declare const isENSv2RootRegistry: (namespace: ENSNamespaceId, contract: AccountId) => boolean;
1330
+
1062
1331
  /**
1063
1332
  * Serializes a {@link ChainId} value into its string representation.
1064
1333
  */
@@ -1087,15 +1356,20 @@ declare function serializePriceEth(price: PriceEth): SerializedPriceEth;
1087
1356
  * @see https://chainagnostic.org/CAIPs/caip-10
1088
1357
  */
1089
1358
  declare function formatAccountId(accountId: AccountId): AccountIdString;
1359
+ /**
1360
+ * Format {@link AssetId} object as a string.
1361
+ *
1362
+ * Formatted as a fully lowercase CAIP-19 AssetId.
1363
+ *
1364
+ * @see https://chainagnostic.org/CAIPs/caip-19
1365
+ */
1366
+ declare function formatAssetId({ assetNamespace, contract: { chainId, address }, tokenId, }: AssetId): AssetIdString;
1090
1367
 
1091
1368
  declare function isHttpProtocol(url: URL): boolean;
1092
1369
  declare function isWebSocketProtocol(url: URL): boolean;
1093
1370
 
1094
1371
  /**
1095
- * A label set ID identifies a set of labels that can be used for deterministic healing.
1096
- * A label set allows clients to deterministically heal their state against a server,
1097
- * ensuring that both are operating on the same version of data.
1098
- *
1372
+ * A label set ID identifies a label set (see https://ensnode.io/ensrainbow/concepts/glossary#label-set for definition).
1099
1373
  * It is guaranteed to be 1 to 50 characters long and contain only lowercase letters (a-z)
1100
1374
  * and hyphens (-).
1101
1375
  */
@@ -1153,7 +1427,8 @@ declare enum PluginName {
1153
1427
  ThreeDNS = "threedns",
1154
1428
  ProtocolAcceleration = "protocol-acceleration",
1155
1429
  Registrars = "registrars",
1156
- TokenScope = "tokenscope"
1430
+ TokenScope = "tokenscope",
1431
+ ENSv2 = "ensv2"
1157
1432
  }
1158
1433
  /**
1159
1434
  * Version info about ENSIndexer and its dependencies.
@@ -2092,63 +2367,32 @@ declare function serializeChainIndexingSnapshots<ChainIndexingStatusSnapshotType
2092
2367
  */
2093
2368
  declare function serializeOmnichainIndexingStatusSnapshot(indexingStatus: OmnichainIndexingStatusSnapshot): SerializedOmnichainIndexingStatusSnapshot;
2094
2369
 
2370
+ /**
2371
+ * Reasons why TheGraph fallback cannot be used.
2372
+ */
2095
2373
  declare const TheGraphCannotFallbackReasonSchema: z.ZodEnum<{
2096
2374
  readonly NotSubgraphCompatible: "not-subgraph-compatible";
2097
2375
  readonly NoApiKey: "no-api-key";
2098
2376
  readonly NoSubgraphUrl: "no-subgraph-url";
2099
2377
  }>;
2100
- declare const TheGraphFallbackSchema: z.ZodObject<{
2101
- canFallback: z.ZodBoolean;
2102
- reason: z.ZodNullable<z.ZodEnum<{
2378
+ type TheGraphCannotFallbackReason = z.infer<typeof TheGraphCannotFallbackReasonSchema>;
2379
+ /**
2380
+ * Configuration for TheGraph fallback behavior.
2381
+ * Indicates whether fallback to TheGraph is possible and the reason if not.
2382
+ */
2383
+ declare const TheGraphFallbackSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2384
+ canFallback: z.ZodLiteral<true>;
2385
+ url: z.ZodString;
2386
+ }, z.core.$strict>, z.ZodObject<{
2387
+ canFallback: z.ZodLiteral<false>;
2388
+ reason: z.ZodEnum<{
2103
2389
  readonly NotSubgraphCompatible: "not-subgraph-compatible";
2104
2390
  readonly NoApiKey: "no-api-key";
2105
2391
  readonly NoSubgraphUrl: "no-subgraph-url";
2106
- }>>;
2107
- }, z.core.$strict>;
2108
- /**
2109
- * Create a Zod schema for validating a serialized ENSApiPublicConfig.
2110
- *
2111
- * @param valueLabel - Optional label for the value being validated (used in error messages)
2112
- */
2113
- declare function makeENSApiPublicConfigSchema(valueLabel?: string): z.ZodObject<{
2114
- version: z.ZodString;
2115
- theGraphFallback: z.ZodObject<{
2116
- canFallback: z.ZodBoolean;
2117
- reason: z.ZodNullable<z.ZodEnum<{
2118
- readonly NotSubgraphCompatible: "not-subgraph-compatible";
2119
- readonly NoApiKey: "no-api-key";
2120
- readonly NoSubgraphUrl: "no-subgraph-url";
2121
- }>>;
2122
- }, z.core.$strict>;
2123
- ensIndexerPublicConfig: z.ZodObject<{
2124
- labelSet: z.ZodObject<{
2125
- labelSetId: z.ZodString;
2126
- labelSetVersion: z.ZodPipe<z.ZodCoercedNumber<unknown>, z.ZodInt>;
2127
- }, z.core.$strip>;
2128
- indexedChainIds: z.ZodPipe<z.ZodArray<z.ZodPipe<z.ZodInt, z.ZodTransform<number, number>>>, z.ZodTransform<Set<number>, number[]>>;
2129
- isSubgraphCompatible: z.ZodBoolean;
2130
- namespace: z.ZodEnum<{
2131
- readonly Mainnet: "mainnet";
2132
- readonly Sepolia: "sepolia";
2133
- readonly Holesky: "holesky";
2134
- readonly EnsTestEnv: "ens-test-env";
2135
- }>;
2136
- plugins: z.ZodArray<z.ZodString>;
2137
- databaseSchemaName: z.ZodString;
2138
- versionInfo: z.ZodObject<{
2139
- nodejs: z.ZodString;
2140
- ponder: z.ZodString;
2141
- ensDb: z.ZodString;
2142
- ensIndexer: z.ZodString;
2143
- ensNormalize: z.ZodString;
2144
- ensRainbow: z.ZodString;
2145
- ensRainbowSchema: z.ZodInt;
2146
- }, z.core.$strict>;
2147
- }, z.core.$strip>;
2148
- }, z.core.$strict>;
2149
-
2150
- type TheGraphCannotFallbackReason = z.infer<typeof TheGraphCannotFallbackReasonSchema>;
2392
+ }>;
2393
+ }, z.core.$strict>]>;
2151
2394
  type TheGraphFallback = z.infer<typeof TheGraphFallbackSchema>;
2395
+
2152
2396
  /**
2153
2397
  * Complete public configuration object for ENSApi.
2154
2398
  *
@@ -2195,6 +2439,50 @@ declare function deserializeENSApiPublicConfig(maybeConfig: SerializedENSApiPubl
2195
2439
  */
2196
2440
  declare function serializeENSApiPublicConfig(config: ENSApiPublicConfig): SerializedENSApiPublicConfig;
2197
2441
 
2442
+ /**
2443
+ * Create a Zod schema for validating a serialized ENSApiPublicConfig.
2444
+ *
2445
+ * @param valueLabel - Optional label for the value being validated (used in error messages)
2446
+ */
2447
+ declare function makeENSApiPublicConfigSchema(valueLabel?: string): z.ZodObject<{
2448
+ version: z.ZodString;
2449
+ theGraphFallback: z.ZodDiscriminatedUnion<[z.ZodObject<{
2450
+ canFallback: z.ZodLiteral<true>;
2451
+ url: z.ZodString;
2452
+ }, z.core.$strict>, z.ZodObject<{
2453
+ canFallback: z.ZodLiteral<false>;
2454
+ reason: z.ZodEnum<{
2455
+ readonly NotSubgraphCompatible: "not-subgraph-compatible";
2456
+ readonly NoApiKey: "no-api-key";
2457
+ readonly NoSubgraphUrl: "no-subgraph-url";
2458
+ }>;
2459
+ }, z.core.$strict>]>;
2460
+ ensIndexerPublicConfig: z.ZodObject<{
2461
+ labelSet: z.ZodObject<{
2462
+ labelSetId: z.ZodString;
2463
+ labelSetVersion: z.ZodPipe<z.ZodCoercedNumber<unknown>, z.ZodInt>;
2464
+ }, z.core.$strip>;
2465
+ indexedChainIds: z.ZodPipe<z.ZodArray<z.ZodPipe<z.ZodInt, z.ZodTransform<number, number>>>, z.ZodTransform<Set<number>, number[]>>;
2466
+ isSubgraphCompatible: z.ZodBoolean;
2467
+ namespace: z.ZodEnum<{
2468
+ readonly Mainnet: "mainnet";
2469
+ readonly Sepolia: "sepolia";
2470
+ readonly EnsTestEnv: "ens-test-env";
2471
+ }>;
2472
+ plugins: z.ZodArray<z.ZodString>;
2473
+ databaseSchemaName: z.ZodString;
2474
+ versionInfo: z.ZodObject<{
2475
+ nodejs: z.ZodString;
2476
+ ponder: z.ZodString;
2477
+ ensDb: z.ZodString;
2478
+ ensIndexer: z.ZodString;
2479
+ ensNormalize: z.ZodString;
2480
+ ensRainbow: z.ZodString;
2481
+ ensRainbowSchema: z.ZodInt;
2482
+ }, z.core.$strict>;
2483
+ }, z.core.$strip>;
2484
+ }, z.core.$strict>;
2485
+
2198
2486
  /**
2199
2487
  * ENSApi Public Config Response
2200
2488
  */
@@ -2308,50 +2596,24 @@ declare const nameTokensPrerequisites: Readonly<{
2308
2596
 
2309
2597
  /**
2310
2598
  * Represents request to Name Tokens API.
2599
+ *
2600
+ * Either `domainId` or `name` must be provided, but not both.
2311
2601
  */
2312
- interface NameTokensRequestByDomainId {
2313
- domainId: Node;
2602
+ interface NameTokensRequest {
2314
2603
  /**
2315
- * Name for which name tokens were requested.
2604
+ * Domain ID (namehash) for which name tokens were requested.
2316
2605
  */
2317
- name?: undefined;
2318
- }
2319
- /**
2320
- * Represents request to Name Tokens API.
2321
- */
2322
- interface NameTokensRequestByName {
2323
- domainId?: undefined;
2606
+ domainId?: Node;
2324
2607
  /**
2325
2608
  * Name for which name tokens were requested.
2326
2609
  */
2327
- name: Name;
2610
+ name?: Name;
2328
2611
  }
2329
- type NameTokensRequest = NameTokensRequestByDomainId | NameTokensRequestByName;
2330
2612
 
2331
- /**
2332
- * An enum representing the possible CAIP-19 Asset Namespace values.
2333
- */
2334
- declare const AssetNamespaces: {
2335
- readonly ERC721: "erc721";
2336
- readonly ERC1155: "erc1155";
2337
- };
2338
- type AssetNamespace = (typeof AssetNamespaces)[keyof typeof AssetNamespaces];
2339
- /**
2340
- * A uint256 value that identifies a specific NFT within a NFT contract.
2341
- */
2342
- type TokenId = bigint;
2343
2613
  /**
2344
2614
  * Serialized representation of {@link TokenId}.
2345
2615
  */
2346
2616
  type SerializedTokenId = string;
2347
- /**
2348
- * A globally unique reference to an NFT.
2349
- */
2350
- interface AssetId {
2351
- assetNamespace: AssetNamespace;
2352
- contract: AccountId;
2353
- tokenId: TokenId;
2354
- }
2355
2617
  /**
2356
2618
  * Serialized representation of {@link AssetId}.
2357
2619
  */
@@ -2359,27 +2621,13 @@ interface SerializedAssetId extends Omit<AssetId, "tokenId"> {
2359
2621
  tokenId: SerializedTokenId;
2360
2622
  }
2361
2623
  /**
2362
- * String representation of an {@link AssetId}.
2363
- *
2364
- * Formatted as a fully lowercase CAIP-19 AssetId.
2365
- *
2366
- * @see https://chainagnostic.org/CAIPs/caip-19
2367
- * @example "eip155:1/erc721:0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85/0xaf2caa1c2ca1d027f1ac823b529d0a67cd144264b2789fa2ea4d63a67c7103cc"
2368
- * for vitalik.eth in the eth base registrar on mainnet.
2369
- */
2370
- type AssetIdString = string;
2371
- /**
2372
- * Serializes {@link AssetId} object.
2624
+ * Serializes {@link AssetId} object to a structured form.
2373
2625
  */
2374
2626
  declare function serializeAssetId(assetId: AssetId): SerializedAssetId;
2375
2627
  /**
2376
2628
  * Deserialize a {@link AssetId} object.
2377
2629
  */
2378
2630
  declare function deserializeAssetId(maybeAssetId: unknown, valueLabel?: string): AssetId;
2379
- /**
2380
- * Format {@link AssetId} object as a string.
2381
- */
2382
- declare function formatAssetId(assetId: AssetId): AssetIdString;
2383
2631
  /**
2384
2632
  * Parse a stringified representation of {@link AssetId} object.
2385
2633
  */
@@ -3331,6 +3579,25 @@ interface SerializedRegistrarAction extends Omit<RegistrarAction, "pricing"> {
3331
3579
  declare function serializeRegistrarActionPricing(pricing: RegistrarActionPricing): SerializedRegistrarActionPricing;
3332
3580
  declare function serializeRegistrarAction(registrarAction: RegistrarAction): SerializedRegistrarAction;
3333
3581
 
3582
+ interface RegistrationExpiryInfo {
3583
+ expiry: bigint | null;
3584
+ gracePeriod: bigint | null;
3585
+ }
3586
+ /**
3587
+ * Returns whether Registration is expired. If the Registration includes a Grace Period, the
3588
+ * Grace Period window is considered expired.
3589
+ */
3590
+ declare function isRegistrationExpired(info: RegistrationExpiryInfo, now: bigint): boolean;
3591
+ /**
3592
+ * Returns whether Registration is fully expired. If the Registration includes a Grace Period, the
3593
+ * Grace Period window is considered NOT fully-expired.
3594
+ */
3595
+ declare function isRegistrationFullyExpired(info: RegistrationExpiryInfo, now: bigint): boolean;
3596
+ /**
3597
+ * Returns whether Registration is in grace period.
3598
+ */
3599
+ declare function isRegistrationInGracePeriod(info: RegistrationExpiryInfo, now: bigint): boolean;
3600
+
3334
3601
  declare const RECORDS_PER_PAGE_DEFAULT = 10;
3335
3602
  declare const RECORDS_PER_PAGE_MAX = 100;
3336
3603
  /**
@@ -3459,6 +3726,19 @@ type RegistrarActionsResponseOk = {
3459
3726
  responseCode: typeof RegistrarActionsResponseCodes.Ok;
3460
3727
  registrarActions: NamedRegistrarAction[];
3461
3728
  pageContext: ResponsePageContext;
3729
+ /**
3730
+ * The {@link UnixTimestamp} of when the data used to build the list of {@link NamedRegistrarAction} was accurate as of.
3731
+ *
3732
+ * @remarks
3733
+ * **Note:** This value represents the `slowestChainIndexingCursor` from the latest omnichain indexing status
3734
+ * snapshot captured by ENSApi. The state returned in the response is guaranteed to be accurate as of this
3735
+ * timestamp but may be from a timestamp higher than this value.
3736
+ *
3737
+ * **Temporary:** This field is currently optional to maintain backward compatibility with ENS Awards
3738
+ * using older snapshot NPM packages. This will be changed to required in a future release.
3739
+ * See: https://github.com/namehash/ensnode/issues/1497
3740
+ */
3741
+ accurateAsOf?: UnixTimestamp;
3462
3742
  };
3463
3743
  /**
3464
3744
  * A response when Registrar Actions are unavailable.
@@ -3508,6 +3788,8 @@ declare const RegistrarActionsFilterTypes: {
3508
3788
  readonly BySubregistryNode: "bySubregistryNode";
3509
3789
  readonly WithEncodedReferral: "withEncodedReferral";
3510
3790
  readonly ByDecodedReferrer: "byDecodedReferrer";
3791
+ readonly BeginTimestamp: "beginTimestamp";
3792
+ readonly EndTimestamp: "endTimestamp";
3511
3793
  };
3512
3794
  type RegistrarActionsFilterType = (typeof RegistrarActionsFilterTypes)[keyof typeof RegistrarActionsFilterTypes];
3513
3795
  type RegistrarActionsFilterBySubregistryNode = {
@@ -3521,7 +3803,15 @@ type RegistrarActionsFilterByDecodedReferrer = {
3521
3803
  filterType: typeof RegistrarActionsFilterTypes.ByDecodedReferrer;
3522
3804
  value: Address;
3523
3805
  };
3524
- type RegistrarActionsFilter = RegistrarActionsFilterBySubregistryNode | RegistrarActionsFilterWithEncodedReferral | RegistrarActionsFilterByDecodedReferrer;
3806
+ type RegistrarActionsFilterBeginTimestamp = {
3807
+ filterType: typeof RegistrarActionsFilterTypes.BeginTimestamp;
3808
+ value: UnixTimestamp;
3809
+ };
3810
+ type RegistrarActionsFilterEndTimestamp = {
3811
+ filterType: typeof RegistrarActionsFilterTypes.EndTimestamp;
3812
+ value: UnixTimestamp;
3813
+ };
3814
+ type RegistrarActionsFilter = RegistrarActionsFilterBySubregistryNode | RegistrarActionsFilterWithEncodedReferral | RegistrarActionsFilterByDecodedReferrer | RegistrarActionsFilterBeginTimestamp | RegistrarActionsFilterEndTimestamp;
3525
3815
  /**
3526
3816
  * Records Orders
3527
3817
  */
@@ -3558,10 +3848,26 @@ declare function withReferral(withReferral: false | undefined): undefined;
3558
3848
  */
3559
3849
  declare function byDecodedReferrer(decodedReferrer: Address): RegistrarActionsFilter;
3560
3850
  declare function byDecodedReferrer(decodedReferrer: undefined): undefined;
3851
+ /**
3852
+ * Build a "begin timestamp" filter object for Registrar Actions query.
3853
+ *
3854
+ * Filters registrar actions to only include those at or after the specified timestamp (inclusive).
3855
+ */
3856
+ declare function beginTimestamp(timestamp: UnixTimestamp): RegistrarActionsFilter;
3857
+ declare function beginTimestamp(timestamp: undefined): undefined;
3858
+ /**
3859
+ * Build an "end timestamp" filter object for Registrar Actions query.
3860
+ *
3861
+ * Filters registrar actions to only include those at or before the specified timestamp (inclusive).
3862
+ */
3863
+ declare function endTimestamp(timestamp: UnixTimestamp): RegistrarActionsFilter;
3864
+ declare function endTimestamp(timestamp: undefined): undefined;
3561
3865
  declare const registrarActionsFilter: {
3562
3866
  byParentNode: typeof byParentNode;
3563
3867
  withReferral: typeof withReferral;
3564
3868
  byDecodedReferrer: typeof byDecodedReferrer;
3869
+ beginTimestamp: typeof beginTimestamp;
3870
+ endTimestamp: typeof endTimestamp;
3565
3871
  };
3566
3872
 
3567
3873
  declare const registrarActionsPrerequisites: Readonly<{
@@ -3878,6 +4184,10 @@ interface MultichainPrimaryNameResolutionArgs {
3878
4184
  */
3879
4185
  type MultichainPrimaryNameResolutionResult = Record<ChainId, Name | null>;
3880
4186
 
4187
+ declare const PROTOCOL_ATTRIBUTE_PREFIX = "ens";
4188
+ declare const ATTR_PROTOCOL_NAME = "ens.protocol";
4189
+ declare const ATTR_PROTOCOL_STEP = "ens.protocol.step";
4190
+ declare const ATTR_PROTOCOL_STEP_RESULT = "ens.protocol.step.result";
3881
4191
  /**
3882
4192
  * Identifiers for each traceable ENS protocol.
3883
4193
  */
@@ -3908,19 +4218,16 @@ declare enum ReverseResolutionProtocolStep {
3908
4218
  ForwardResolveAddressRecord = "forward-resolve-address-record",
3909
4219
  VerifyResolvedAddressMatchesAddress = "verify-resolved-address-matches-address"
3910
4220
  }
3911
- declare const PROTOCOL_ATTRIBUTE_PREFIX = "ens";
3912
- declare const ATTR_PROTOCOL_NAME = "ens.protocol";
3913
- declare const ATTR_PROTOCOL_STEP = "ens.protocol.step";
3914
- declare const ATTR_PROTOCOL_STEP_RESULT = "ens.protocol.step.result";
3915
- interface SpanAttributes {
4221
+
4222
+ interface TracingSpanAttributes {
3916
4223
  [key: string]: unknown;
3917
4224
  }
3918
- interface SpanEvent {
4225
+ interface TracingSpanEvent {
3919
4226
  name: string;
3920
- attributes: SpanAttributes;
4227
+ attributes: TracingSpanAttributes;
3921
4228
  time: number;
3922
4229
  }
3923
- interface ProtocolSpan {
4230
+ interface TracingSpan {
3924
4231
  scope: string;
3925
4232
  id: string;
3926
4233
  traceId: string;
@@ -3931,23 +4238,23 @@ interface ProtocolSpan {
3931
4238
  name: string;
3932
4239
  timestamp: number;
3933
4240
  duration: number;
3934
- attributes: SpanAttributes;
4241
+ attributes: TracingSpanAttributes;
3935
4242
  status: {
3936
4243
  code: number;
3937
4244
  message?: string;
3938
4245
  };
3939
- events: SpanEvent[];
4246
+ events: TracingSpanEvent[];
3940
4247
  }
3941
- type ProtocolSpanTreeNode = ProtocolSpan & {
3942
- children: ProtocolSpanTreeNode[];
4248
+ type TracingNode = TracingSpan & {
4249
+ children: TracingNode[];
3943
4250
  };
3944
- type ProtocolTrace = ProtocolSpanTreeNode[];
4251
+ type TracingTrace = TracingNode[];
3945
4252
 
3946
4253
  interface TraceableRequest {
3947
4254
  trace?: boolean;
3948
4255
  }
3949
4256
  interface TraceableResponse {
3950
- trace?: ProtocolTrace;
4257
+ trace?: TracingTrace;
3951
4258
  }
3952
4259
  interface AcceleratableRequest {
3953
4260
  accelerate?: boolean;
@@ -4075,6 +4382,61 @@ type ReferrerDetailResponseError = {
4075
4382
  */
4076
4383
  type ReferrerDetailResponse = ReferrerDetailResponseOk | ReferrerDetailResponseError;
4077
4384
 
4385
+ /**
4386
+ * Serialized representation of {@link RevenueContribution}.
4387
+ *
4388
+ * RevenueContribution is a bigint, which is serialized as a string for JSON compatibility.
4389
+ */
4390
+ type SerializedRevenueContribution = string;
4391
+ /**
4392
+ * Serialized representation of {@link ReferralProgramRules}.
4393
+ *
4394
+ * Note: All fields are already serializable primitives, so this type is identical to the source type.
4395
+ */
4396
+ type SerializedReferralProgramRules = ReferralProgramRules;
4397
+ /**
4398
+ * Serialized representation of {@link AwardedReferrerMetrics}.
4399
+ */
4400
+ interface SerializedAwardedReferrerMetrics extends Omit<AwardedReferrerMetrics, "totalRevenueContribution"> {
4401
+ totalRevenueContribution: SerializedRevenueContribution;
4402
+ }
4403
+ /**
4404
+ * Serialized representation of {@link UnrankedReferrerMetrics}.
4405
+ */
4406
+ interface SerializedUnrankedReferrerMetrics extends Omit<UnrankedReferrerMetrics, "totalRevenueContribution"> {
4407
+ totalRevenueContribution: SerializedRevenueContribution;
4408
+ }
4409
+ /**
4410
+ * Serialized representation of {@link AggregatedReferrerMetrics}.
4411
+ */
4412
+ interface SerializedAggregatedReferrerMetrics extends Omit<AggregatedReferrerMetrics, "grandTotalRevenueContribution"> {
4413
+ grandTotalRevenueContribution: SerializedRevenueContribution;
4414
+ }
4415
+ /**
4416
+ * Serialized representation of {@link ReferrerLeaderboardPage}.
4417
+ */
4418
+ interface SerializedReferrerLeaderboardPage extends Omit<ReferrerLeaderboardPage, "referrers" | "aggregatedMetrics"> {
4419
+ referrers: SerializedAwardedReferrerMetrics[];
4420
+ aggregatedMetrics: SerializedAggregatedReferrerMetrics;
4421
+ }
4422
+ /**
4423
+ * Serialized representation of {@link ReferrerDetailRanked}.
4424
+ */
4425
+ interface SerializedReferrerDetailRanked extends Omit<ReferrerDetailRanked, "referrer" | "aggregatedMetrics"> {
4426
+ referrer: SerializedAwardedReferrerMetrics;
4427
+ aggregatedMetrics: SerializedAggregatedReferrerMetrics;
4428
+ }
4429
+ /**
4430
+ * Serialized representation of {@link ReferrerDetailUnranked}.
4431
+ */
4432
+ interface SerializedReferrerDetailUnranked extends Omit<ReferrerDetailUnranked, "referrer" | "aggregatedMetrics"> {
4433
+ referrer: SerializedUnrankedReferrerMetrics;
4434
+ aggregatedMetrics: SerializedAggregatedReferrerMetrics;
4435
+ }
4436
+ /**
4437
+ * Serialized representation of {@link ReferrerDetail} (union of ranked and unranked).
4438
+ */
4439
+ type SerializedReferrerDetail = SerializedReferrerDetailRanked | SerializedReferrerDetailUnranked;
4078
4440
  /**
4079
4441
  * Serialized representation of {@link ReferrerLeaderboardPageResponseError}.
4080
4442
  *
@@ -4083,28 +4445,26 @@ type ReferrerDetailResponse = ReferrerDetailResponseOk | ReferrerDetailResponseE
4083
4445
  type SerializedReferrerLeaderboardPageResponseError = ReferrerLeaderboardPageResponseError;
4084
4446
  /**
4085
4447
  * Serialized representation of {@link ReferrerLeaderboardPageResponseOk}.
4086
- *
4087
- * Note: All fields are already serializable, so this type is identical to the source type.
4088
4448
  */
4089
- type SerializedReferrerLeaderboardPageResponseOk = ReferrerLeaderboardPageResponseOk;
4449
+ interface SerializedReferrerLeaderboardPageResponseOk extends Omit<ReferrerLeaderboardPageResponseOk, "data"> {
4450
+ data: SerializedReferrerLeaderboardPage;
4451
+ }
4090
4452
  /**
4091
4453
  * Serialized representation of {@link ReferrerLeaderboardPageResponse}.
4092
4454
  */
4093
4455
  type SerializedReferrerLeaderboardPageResponse = SerializedReferrerLeaderboardPageResponseOk | SerializedReferrerLeaderboardPageResponseError;
4094
- /**
4095
- * Serialized representation of {@link ReferrerDetailResponseOk}.
4096
- *
4097
- * Note: All fields in ReferrerDetailRanked and ReferrerDetailUnranked
4098
- * (rules, referrer metrics, aggregatedMetrics, and timestamp) are already serializable primitives.
4099
- * The rank field can be either a number or null, both of which are valid JSON primitives.
4100
- */
4101
- type SerializedReferrerDetailResponseOk = ReferrerDetailResponseOk;
4102
4456
  /**
4103
4457
  * Serialized representation of {@link ReferrerDetailResponseError}.
4104
4458
  *
4105
4459
  * Note: All fields are already serializable, so this type is identical to the source type.
4106
4460
  */
4107
4461
  type SerializedReferrerDetailResponseError = ReferrerDetailResponseError;
4462
+ /**
4463
+ * Serialized representation of {@link ReferrerDetailResponseOk}.
4464
+ */
4465
+ interface SerializedReferrerDetailResponseOk extends Omit<ReferrerDetailResponseOk, "data"> {
4466
+ data: SerializedReferrerDetail;
4467
+ }
4108
4468
  /**
4109
4469
  * Serialized representation of {@link ReferrerDetailResponse}.
4110
4470
  */
@@ -4113,39 +4473,26 @@ type SerializedReferrerDetailResponse = SerializedReferrerDetailResponseOk | Ser
4113
4473
  /**
4114
4474
  * Deserialize a {@link ReferrerLeaderboardPageResponse} object.
4115
4475
  *
4116
- * Note: While the serialized and deserialized types are identical (all fields
4117
- * are primitives), this function performs critical validation using Zod schemas
4118
- * to enforce invariants on the data. This ensures data integrity when receiving
4119
- * responses from the API.
4476
+ * Note: This function explicitly deserializes each subobject to convert string
4477
+ * RevenueContribution values back to bigint, then validates using Zod schemas
4478
+ * to enforce invariants on the data.
4120
4479
  */
4121
4480
  declare function deserializeReferrerLeaderboardPageResponse(maybeResponse: SerializedReferrerLeaderboardPageResponse, valueLabel?: string): ReferrerLeaderboardPageResponse;
4122
4481
  /**
4123
4482
  * Deserialize a {@link ReferrerDetailResponse} object.
4124
4483
  *
4125
- * Note: While the serialized and deserialized types are identical (all fields
4126
- * are primitives), this function performs critical validation using Zod schemas
4127
- * to enforce invariants on the data. This ensures data integrity when receiving
4128
- * responses from the API.
4484
+ * Note: This function explicitly deserializes each subobject to convert string
4485
+ * RevenueContribution values back to bigint, then validates using Zod schemas
4486
+ * to enforce invariants on the data.
4129
4487
  */
4130
4488
  declare function deserializeReferrerDetailResponse(maybeResponse: SerializedReferrerDetailResponse, valueLabel?: string): ReferrerDetailResponse;
4131
4489
 
4132
4490
  /**
4133
4491
  * Serialize a {@link ReferrerLeaderboardPageResponse} object.
4134
- *
4135
- * Note: Since all fields in ReferrerLeaderboardPageResponse are already
4136
- * serializable primitives, this function performs an identity transformation.
4137
- * It exists to maintain consistency with the serialization pattern used
4138
- * throughout the codebase.
4139
4492
  */
4140
4493
  declare function serializeReferrerLeaderboardPageResponse(response: ReferrerLeaderboardPageResponse): SerializedReferrerLeaderboardPageResponse;
4141
4494
  /**
4142
4495
  * Serialize a {@link ReferrerDetailResponse} object.
4143
- *
4144
- * Note: Since all fields in ReferrerDetailRanked and ReferrerDetailUnranked
4145
- * (rules, referrer metrics, aggregatedMetrics, and timestamp) are already
4146
- * serializable primitives, this function performs an identity transformation.
4147
- * The rank field can be either a number or null, both of which are valid JSON primitives.
4148
- * It exists to maintain consistency with the serialization pattern used throughout the codebase.
4149
4496
  */
4150
4497
  declare function serializeReferrerDetailResponse(response: ReferrerDetailResponse): SerializedReferrerDetailResponse;
4151
4498
 
@@ -4490,6 +4837,7 @@ declare class ENSNodeClient {
4490
4837
  * const { registrarActions, pageContext } = response;
4491
4838
  * console.log(registrarActions);
4492
4839
  * console.log(`Page ${pageContext.page} of ${pageContext.totalPages}`);
4840
+ * console.log(`Accurate as of: ${response.accurateAsOf}`);
4493
4841
  * }
4494
4842
  *
4495
4843
  * // Get second page with 25 records per page
@@ -4520,6 +4868,26 @@ declare class ENSNodeClient {
4520
4868
  * filters: [registrarActionsFilter.byParentNode(namehash('base.eth'))],
4521
4869
  * recordsPerPage: 10
4522
4870
  * });
4871
+ *
4872
+ * // get registrar actions within a specific time range
4873
+ * const beginTimestamp = 1764547200; // Dec 1, 2025, 00:00:00 UTC
4874
+ * const endTimestamp = 1767225600; // Jan 1, 2026, 00:00:00 UTC
4875
+ * await client.registrarActions({
4876
+ * filters: [
4877
+ * registrarActionsFilter.beginTimestamp(beginTimestamp),
4878
+ * registrarActionsFilter.endTimestamp(endTimestamp),
4879
+ * ],
4880
+ * });
4881
+ *
4882
+ * // get registrar actions from a specific timestamp onwards
4883
+ * await client.registrarActions({
4884
+ * filters: [registrarActionsFilter.beginTimestamp(1764547200)],
4885
+ * });
4886
+ *
4887
+ * // get registrar actions up to a specific timestamp
4888
+ * await client.registrarActions({
4889
+ * filters: [registrarActionsFilter.endTimestamp(1767225600)],
4890
+ * });
4523
4891
  * ```
4524
4892
  */
4525
4893
  registrarActions(request?: RegistrarActionsRequest): Promise<RegistrarActionsResponse>;
@@ -4561,4 +4929,4 @@ declare class ClientError extends Error {
4561
4929
  static fromErrorResponse({ message, details }: ErrorResponse): ClientError;
4562
4930
  }
4563
4931
 
4564
- export { ADDR_REVERSE_NODE, ATTR_PROTOCOL_NAME, ATTR_PROTOCOL_STEP, ATTR_PROTOCOL_STEP_RESULT, type AcceleratableRequest, type AcceleratableResponse, type AccountId, type AccountIdString, type AssetId, type AssetIdString, type AssetNamespace, AssetNamespaces, BASENAMES_NODE, type BlockNumber, type BlockRef, type Blockrange, type Cache, type CachedValue, type ChainId, type ChainIdString, type ChainIndexingConfig, type ChainIndexingConfigDefinite, type ChainIndexingConfigIndefinite, type ChainIndexingConfigTypeId, ChainIndexingConfigTypeIds, type ChainIndexingStatusId, ChainIndexingStatusIds, type ChainIndexingStatusSnapshot, type ChainIndexingStatusSnapshotBackfill, type ChainIndexingStatusSnapshotCompleted, type ChainIndexingStatusSnapshotFollowing, type ChainIndexingStatusSnapshotForOmnichainIndexingStatusSnapshotBackfill, type ChainIndexingStatusSnapshotQueued, ClientError, type ClientOptions, type ConfigResponse, type CrossChainIndexingStatusSnapshot, type CrossChainIndexingStatusSnapshotOmnichain, type CrossChainIndexingStrategyId, CrossChainIndexingStrategyIds, type CurrencyAmount, type CurrencyId, CurrencyIds, type CurrencyInfo, DEFAULT_EVM_CHAIN_ID, DEFAULT_EVM_COIN_TYPE, type DNSEncodedLiteralName, type DNSEncodedName, type DNSEncodedPartiallyInterpretedName, type Datetime, type DatetimeISO8601, type DeepPartial, type DefaultableChainId, type DomainAssetId, type Duration, type ENSApiPublicConfig, type ENSIndexerPublicConfig, type ENSIndexerVersionInfo, ENSNodeClient, ENS_ROOT, ETH_COIN_TYPE, ETH_NODE, type EncodedLabelHash, type EnsRainbowClientLabelSet, type EnsRainbowServerLabelSet, type ErrorResponse, type ForwardResolutionArgs, ForwardResolutionProtocolStep, type ForwardResolutionResult, type Identity, type IndexingStatusRequest, type IndexingStatusResponse, type IndexingStatusResponseCode, IndexingStatusResponseCodes, type IndexingStatusResponseError, type IndexingStatusResponseOk, type InterpretedLabel, type InterpretedName, LINEANAMES_NODE, type Label, type LabelHash, type LabelSetId, type LabelSetVersion, type LiteralLabel, type LiteralName, LruCache, type MultichainPrimaryNameResolutionArgs, type MultichainPrimaryNameResolutionResult, type NFTMintStatus, NFTMintStatuses, type NFTTransferEventMetadata, type NFTTransferType, NFTTransferTypes, type Name, type NameToken, type NameTokenOwnership, type NameTokenOwnershipBurned, type NameTokenOwnershipFullyOnchain, type NameTokenOwnershipNameWrapper, type NameTokenOwnershipType, NameTokenOwnershipTypes, type NameTokenOwnershipUnknown, type NameTokensRequest, type NameTokensRequestByDomainId, type NameTokensRequestByName, type NameTokensResponse, type NameTokensResponseCode, NameTokensResponseCodes, type NameTokensResponseError, type NameTokensResponseErrorCode, NameTokensResponseErrorCodes, type NameTokensResponseErrorEnsIndexerConfigUnsupported, type NameTokensResponseErrorIndexingStatusUnsupported, type NameTokensResponseErrorNameTokensNotIndexed, type NameTokensResponseOk, type NamedIdentity, type NamedRegistrarAction, type Node, type NormalizedName, type OmnichainIndexingStatusId, OmnichainIndexingStatusIds, type OmnichainIndexingStatusSnapshot, type OmnichainIndexingStatusSnapshotBackfill, type OmnichainIndexingStatusSnapshotCompleted, type OmnichainIndexingStatusSnapshotFollowing, type OmnichainIndexingStatusSnapshotUnstarted, PROTOCOL_ATTRIBUTE_PREFIX, PluginName, type Price, type PriceDai, type PriceEth, type PriceUsdc, type ProtocolSpan, type ProtocolSpanTreeNode, type ProtocolTrace, RECORDS_PER_PAGE_DEFAULT, RECORDS_PER_PAGE_MAX, ROOT_NODE, type RealtimeIndexingStatusProjection, type ReferrerDetailRequest, type ReferrerDetailResponse, type ReferrerDetailResponseCode, ReferrerDetailResponseCodes, type ReferrerDetailResponseError, type ReferrerDetailResponseOk, type ReferrerLeaderboardPageRequest, type ReferrerLeaderboardPageResponse, type ReferrerLeaderboardPageResponseCode, ReferrerLeaderboardPageResponseCodes, type ReferrerLeaderboardPageResponseError, type ReferrerLeaderboardPageResponseOk, type RegisteredNameTokens, type RegistrarAction, type RegistrarActionEventId, type RegistrarActionPricing, type RegistrarActionPricingAvailable, type RegistrarActionPricingUnknown, type RegistrarActionReferral, type RegistrarActionReferralAvailable, type RegistrarActionReferralNotApplicable, type RegistrarActionType, RegistrarActionTypes, type RegistrarActionsFilter, type RegistrarActionsFilterByDecodedReferrer, type RegistrarActionsFilterBySubregistryNode, type RegistrarActionsFilterType, RegistrarActionsFilterTypes, type RegistrarActionsFilterWithEncodedReferral, type RegistrarActionsOrder, RegistrarActionsOrders, type RegistrarActionsRequest, type RegistrarActionsResponse, type RegistrarActionsResponseCode, RegistrarActionsResponseCodes, type RegistrarActionsResponseError, type RegistrarActionsResponseOk, type RegistrationLifecycle, type RegistrationLifecycleStage, type RequestPageParams, type ResolutionStatusId, ResolutionStatusIds, type ResolvePrimaryNameRequest, type ResolvePrimaryNameResponse, type ResolvePrimaryNamesRequest, type ResolvePrimaryNamesResponse, type ResolveRecordsRequest, type ResolveRecordsResponse, type ResolvedIdentity, type ResolverRecordsResponse, type ResolverRecordsResponseBase, type ResolverRecordsSelection, type ResponsePageContext, type ResponsePageContextWithNoRecords, type ResponsePageContextWithRecords, type ReverseResolutionArgs, ReverseResolutionProtocolStep, type ReverseResolutionResult, type RpcUrl, SWRCache, type SWRCacheOptions, type SerializedAssetId, type SerializedChainIndexingStatusSnapshot, type SerializedChainIndexingStatusSnapshotBackfill, type SerializedChainIndexingStatusSnapshotCompleted, type SerializedChainIndexingStatusSnapshotFollowing, type SerializedChainIndexingStatusSnapshotQueued, type SerializedConfigResponse, type SerializedCrossChainIndexingStatusSnapshot, type SerializedCrossChainIndexingStatusSnapshotOmnichain, type SerializedCurrencyAmount, type SerializedCurrentIndexingProjectionOmnichain, type SerializedDomainAssetId, type SerializedENSApiPublicConfig, type SerializedENSIndexerPublicConfig, type SerializedENSIndexerVersionInfo, type SerializedIndexedChainIds, type SerializedIndexingStatusResponse, type SerializedIndexingStatusResponseError, type SerializedIndexingStatusResponseOk, type SerializedNameToken, type SerializedNameTokensResponse, type SerializedNameTokensResponseError, type SerializedNameTokensResponseOk, type SerializedNamedRegistrarAction, type SerializedOmnichainIndexingStatusSnapshot, type SerializedOmnichainIndexingStatusSnapshotBackfill, type SerializedOmnichainIndexingStatusSnapshotCompleted, type SerializedOmnichainIndexingStatusSnapshotFollowing, type SerializedOmnichainIndexingStatusSnapshotUnstarted, type SerializedPrice, type SerializedPriceDai, type SerializedPriceEth, type SerializedPriceUsdc, type SerializedRealtimeIndexingStatusProjection, type SerializedReferrerDetailResponse, type SerializedReferrerDetailResponseError, type SerializedReferrerDetailResponseOk, type SerializedReferrerLeaderboardPageResponse, type SerializedReferrerLeaderboardPageResponseError, type SerializedReferrerLeaderboardPageResponseOk, type SerializedRegisteredNameTokens, type SerializedRegistrarAction, type SerializedRegistrarActionPricing, type SerializedRegistrarActionPricingAvailable, type SerializedRegistrarActionPricingUnknown, type SerializedRegistrarActionsResponse, type SerializedRegistrarActionsResponseError, type SerializedRegistrarActionsResponseOk, type SerializedTokenId, type SubgraphInterpretedLabel, type SubgraphInterpretedName, type Subregistry, type TheGraphCannotFallbackReason, TheGraphCannotFallbackReasonSchema, type TheGraphFallback, TheGraphFallbackSchema, type TokenId, TraceableENSProtocol, type TraceableRequest, type TraceableResponse, TtlCache, type UnixTimestamp, type UnknownIdentity, type UnnamedIdentity, type UnresolvedIdentity, type UrlString, accountIdEqual, addDuration, addPrices, addrReverseLabel, asLowerCaseAddress, beautifyName, bigIntToNumber, bigintToCoinType, buildAssetId, buildEnsRainbowClientLabelSet, buildLabelSetId, buildLabelSetVersion, buildPageContext, buildUnresolvedIdentity, checkChainIndexingStatusSnapshotsForOmnichainStatusSnapshotBackfill, checkChainIndexingStatusSnapshotsForOmnichainStatusSnapshotCompleted, checkChainIndexingStatusSnapshotsForOmnichainStatusSnapshotFollowing, checkChainIndexingStatusSnapshotsForOmnichainStatusSnapshotUnstarted, coinTypeReverseLabel, coinTypeToEvmChainId, createIndexingConfig, createRealtimeIndexingStatusProjection, decodeDNSEncodedLiteralName, decodeDNSEncodedName, deserializeAssetId, deserializeBlockNumber, deserializeBlockRef, deserializeBlockrange, deserializeChainId, deserializeChainIndexingStatusSnapshot, deserializeConfigResponse, deserializeCrossChainIndexingStatusSnapshot, deserializeDatetime, deserializeDuration, deserializeENSApiPublicConfig, deserializeENSIndexerPublicConfig, deserializeErrorResponse, deserializeIndexingStatusResponse, deserializeOmnichainIndexingStatusSnapshot, deserializeRealtimeIndexingStatusProjection, deserializeReferrerDetailResponse, deserializeReferrerLeaderboardPageResponse, deserializeRegistrarActionsResponse, deserializeUnixTimestamp, deserializeUrl, deserializedNameTokensResponse, durationBetween, encodeLabelHash, evmChainIdToCoinType, formatAccountId, formatAssetId, formatNFTTransferEventMetadata, getBasenamesSubregistryId, getBasenamesSubregistryManagedName, getCurrencyInfo, getDatasourceContract, getEthnamesSubregistryId, getEthnamesSubregistryManagedName, getLatestIndexedBlockRef, getLineanamesSubregistryId, getLineanamesSubregistryManagedName, getNFTTransferType, getNameHierarchy, getNameTokenOwnership, getNameWrapperAccounts, getOmnichainIndexingCursor, getOmnichainIndexingStatus, getParentNameFQDN, getResolvePrimaryNameChainIdParam, getTimestampForHighestOmnichainKnownBlock, getTimestampForLowestOmnichainStartBlock, hasNullByte, interpretedLabelsToInterpretedName, isEncodedLabelHash, isHttpProtocol, isLabelHash, isNormalizedLabel, isNormalizedName, isPriceCurrencyEqual, isPriceEqual, isRegistrarActionPricingAvailable, isRegistrarActionReferralAvailable, isResolvedIdentity, isSelectionEmpty, isSubgraphCompatible, isWebSocketProtocol, labelHashToBytes, labelhashLiteralLabel, literalLabelToInterpretedLabel, literalLabelsToInterpretedName, literalLabelsToLiteralName, makeENSApiPublicConfigSchema, makeSubdomainNode, maybeGetDatasourceContract, nameTokensPrerequisites, parseAccountId, parseAssetId, parseNonNegativeInteger, parseReverseName, priceDai, priceEth, priceUsdc, registrarActionsFilter, registrarActionsPrerequisites, reverseName, serializeAssetId, serializeChainId, serializeChainIndexingSnapshots, serializeConfigResponse, serializeCrossChainIndexingStatusSnapshotOmnichain, serializeDatetime, serializeDomainAssetId, serializeENSApiPublicConfig, serializeENSIndexerPublicConfig, serializeIndexedChainIds, serializeIndexingStatusResponse, serializeNameToken, serializeNameTokensResponse, serializeNamedRegistrarAction, serializeOmnichainIndexingStatusSnapshot, serializePrice, serializePriceEth, serializeRealtimeIndexingStatusProjection, serializeReferrerDetailResponse, serializeReferrerLeaderboardPageResponse, serializeRegisteredNameTokens, serializeRegistrarAction, serializeRegistrarActionPricing, serializeRegistrarActionsResponse, serializeUrl, sortChainStatusesByStartBlockAsc, stripNullBytes, translateDefaultableChainIdToChainId, uint256ToHex32, uniq, validateSupportedLabelSetAndVersion };
4932
+ export { ADDR_REVERSE_NODE, ATTR_PROTOCOL_NAME, ATTR_PROTOCOL_STEP, ATTR_PROTOCOL_STEP_RESULT, type AcceleratableRequest, type AcceleratableResponse, type AccountId, type AccountIdString, type AssetId, type AssetIdString, type AssetNamespace, AssetNamespaces, BASENAMES_NODE, type BlockNumber, type BlockRef, type Blockrange, type Cache, type CanonicalId, type CanonicalPath, type ChainId, type ChainIdString, type ChainIndexingConfig, type ChainIndexingConfigDefinite, type ChainIndexingConfigIndefinite, type ChainIndexingConfigTypeId, ChainIndexingConfigTypeIds, type ChainIndexingStatusId, ChainIndexingStatusIds, type ChainIndexingStatusSnapshot, type ChainIndexingStatusSnapshotBackfill, type ChainIndexingStatusSnapshotCompleted, type ChainIndexingStatusSnapshotFollowing, type ChainIndexingStatusSnapshotForOmnichainIndexingStatusSnapshotBackfill, type ChainIndexingStatusSnapshotQueued, ClientError, type ClientOptions, type ConfigResponse, type CrossChainIndexingStatusSnapshot, type CrossChainIndexingStatusSnapshotOmnichain, type CrossChainIndexingStrategyId, CrossChainIndexingStrategyIds, type CurrencyAmount, type CurrencyId, CurrencyIds, type CurrencyInfo, DEFAULT_EVM_CHAIN_ID, DEFAULT_EVM_COIN_TYPE, type DNSEncodedLiteralName, type DNSEncodedName, type DNSEncodedPartiallyInterpretedName, type Datetime, type DatetimeISO8601, type DeepPartial, type DefaultableChainId, type DomainAssetId, type DomainId, type Duration, type ENSApiPublicConfig, type ENSIndexerPublicConfig, type ENSIndexerVersionInfo, ENSNodeClient, ENS_ROOT, type ENSv1DomainId, type ENSv2DomainId, ETH_COIN_TYPE, ETH_NODE, type EncodedLabelHash, type EnsRainbowClientLabelSet, type EnsRainbowServerLabelSet, type ErrorResponse, type ForwardResolutionArgs, ForwardResolutionProtocolStep, type ForwardResolutionResult, type Identity, type IndexingStatusRequest, type IndexingStatusResponse, type IndexingStatusResponseCode, IndexingStatusResponseCodes, type IndexingStatusResponseError, type IndexingStatusResponseOk, type InterpretedLabel, type InterpretedName, LINEANAMES_NODE, type Label, type LabelHash, type LabelHashPath, type LabelSetId, type LabelSetVersion, type LiteralLabel, type LiteralName, LruCache, type MultichainPrimaryNameResolutionArgs, type MultichainPrimaryNameResolutionResult, type NFTMintStatus, NFTMintStatuses, type NFTTransferEventMetadata, type NFTTransferType, NFTTransferTypes, NODE_ANY, type Name, type NameToken, type NameTokenOwnership, type NameTokenOwnershipBurned, type NameTokenOwnershipFullyOnchain, type NameTokenOwnershipNameWrapper, type NameTokenOwnershipType, NameTokenOwnershipTypes, type NameTokenOwnershipUnknown, type NameTokensRequest, type NameTokensResponse, type NameTokensResponseCode, NameTokensResponseCodes, type NameTokensResponseError, type NameTokensResponseErrorCode, NameTokensResponseErrorCodes, type NameTokensResponseErrorEnsIndexerConfigUnsupported, type NameTokensResponseErrorIndexingStatusUnsupported, type NameTokensResponseErrorNameTokensNotIndexed, type NameTokensResponseOk, type NamedIdentity, type NamedRegistrarAction, type Node, type NormalizedName, type OmnichainIndexingStatusId, OmnichainIndexingStatusIds, type OmnichainIndexingStatusSnapshot, type OmnichainIndexingStatusSnapshotBackfill, type OmnichainIndexingStatusSnapshotCompleted, type OmnichainIndexingStatusSnapshotFollowing, type OmnichainIndexingStatusSnapshotUnstarted, PROTOCOL_ATTRIBUTE_PREFIX, type PermissionsId, type PermissionsResourceId, type PermissionsUserId, PluginName, type Price, type PriceDai, type PriceEth, type PriceUsdc, RECORDS_PER_PAGE_DEFAULT, RECORDS_PER_PAGE_MAX, ROOT_NODE, ROOT_RESOURCE, type RealtimeIndexingStatusProjection, type ReferrerDetailRequest, type ReferrerDetailResponse, type ReferrerDetailResponseCode, ReferrerDetailResponseCodes, type ReferrerDetailResponseError, type ReferrerDetailResponseOk, type ReferrerLeaderboardPageRequest, type ReferrerLeaderboardPageResponse, type ReferrerLeaderboardPageResponseCode, ReferrerLeaderboardPageResponseCodes, type ReferrerLeaderboardPageResponseError, type ReferrerLeaderboardPageResponseOk, type RegisteredNameTokens, type RegistrarAction, type RegistrarActionEventId, type RegistrarActionPricing, type RegistrarActionPricingAvailable, type RegistrarActionPricingUnknown, type RegistrarActionReferral, type RegistrarActionReferralAvailable, type RegistrarActionReferralNotApplicable, type RegistrarActionType, RegistrarActionTypes, type RegistrarActionsFilter, type RegistrarActionsFilterBeginTimestamp, type RegistrarActionsFilterByDecodedReferrer, type RegistrarActionsFilterBySubregistryNode, type RegistrarActionsFilterEndTimestamp, type RegistrarActionsFilterType, RegistrarActionsFilterTypes, type RegistrarActionsFilterWithEncodedReferral, type RegistrarActionsOrder, RegistrarActionsOrders, type RegistrarActionsRequest, type RegistrarActionsResponse, type RegistrarActionsResponseCode, RegistrarActionsResponseCodes, type RegistrarActionsResponseError, type RegistrarActionsResponseOk, type RegistrationExpiryInfo, type RegistrationId, type RegistrationLifecycle, type RegistrationLifecycleStage, type RegistryId, type RenewalId, type RequestPageParams, type RequiredAndNotNull, type ResolutionStatusId, ResolutionStatusIds, type ResolvePrimaryNameRequest, type ResolvePrimaryNameResponse, type ResolvePrimaryNamesRequest, type ResolvePrimaryNamesResponse, type ResolveRecordsRequest, type ResolveRecordsResponse, type ResolvedIdentity, type ResolverId, type ResolverRecordsId, type ResolverRecordsResponse, type ResolverRecordsResponseBase, type ResolverRecordsSelection, type ResponsePageContext, type ResponsePageContextWithNoRecords, type ResponsePageContextWithRecords, type ReverseResolutionArgs, ReverseResolutionProtocolStep, type ReverseResolutionResult, type RpcUrl, SWRCache, type SWRCacheOptions, type SerializedAggregatedReferrerMetrics, type SerializedAssetId, type SerializedAwardedReferrerMetrics, type SerializedChainIndexingStatusSnapshot, type SerializedChainIndexingStatusSnapshotBackfill, type SerializedChainIndexingStatusSnapshotCompleted, type SerializedChainIndexingStatusSnapshotFollowing, type SerializedChainIndexingStatusSnapshotQueued, type SerializedConfigResponse, type SerializedCrossChainIndexingStatusSnapshot, type SerializedCrossChainIndexingStatusSnapshotOmnichain, type SerializedCurrencyAmount, type SerializedCurrentIndexingProjectionOmnichain, type SerializedDomainAssetId, type SerializedENSApiPublicConfig, type SerializedENSIndexerPublicConfig, type SerializedENSIndexerVersionInfo, type SerializedIndexedChainIds, type SerializedIndexingStatusResponse, type SerializedIndexingStatusResponseError, type SerializedIndexingStatusResponseOk, type SerializedNameToken, type SerializedNameTokensResponse, type SerializedNameTokensResponseError, type SerializedNameTokensResponseOk, type SerializedNamedRegistrarAction, type SerializedOmnichainIndexingStatusSnapshot, type SerializedOmnichainIndexingStatusSnapshotBackfill, type SerializedOmnichainIndexingStatusSnapshotCompleted, type SerializedOmnichainIndexingStatusSnapshotFollowing, type SerializedOmnichainIndexingStatusSnapshotUnstarted, type SerializedPrice, type SerializedPriceDai, type SerializedPriceEth, type SerializedPriceUsdc, type SerializedRealtimeIndexingStatusProjection, type SerializedReferralProgramRules, type SerializedReferrerDetail, type SerializedReferrerDetailRanked, type SerializedReferrerDetailResponse, type SerializedReferrerDetailResponseError, type SerializedReferrerDetailResponseOk, type SerializedReferrerDetailUnranked, type SerializedReferrerLeaderboardPage, type SerializedReferrerLeaderboardPageResponse, type SerializedReferrerLeaderboardPageResponseError, type SerializedReferrerLeaderboardPageResponseOk, type SerializedRegisteredNameTokens, type SerializedRegistrarAction, type SerializedRegistrarActionPricing, type SerializedRegistrarActionPricingAvailable, type SerializedRegistrarActionPricingUnknown, type SerializedRegistrarActionsResponse, type SerializedRegistrarActionsResponseError, type SerializedRegistrarActionsResponseOk, type SerializedRevenueContribution, type SerializedTokenId, type SerializedUnrankedReferrerMetrics, type SubgraphInterpretedLabel, type SubgraphInterpretedName, type Subregistry, type TheGraphCannotFallbackReason, TheGraphCannotFallbackReasonSchema, type TheGraphFallback, TheGraphFallbackSchema, type TokenId, TraceableENSProtocol, type TraceableRequest, type TraceableResponse, type TracingNode, type TracingSpan, type TracingTrace, TtlCache, type UnixTimestamp, type UnknownIdentity, type UnnamedIdentity, type UnresolvedIdentity, type UrlString, accountIdEqual, addDuration, addPrices, addrReverseLabel, asLowerCaseAddress, beautifyName, bigIntToNumber, bigintToCoinType, buildAssetId, buildEnsRainbowClientLabelSet, buildLabelSetId, buildLabelSetVersion, buildPageContext, buildUnresolvedIdentity, checkChainIndexingStatusSnapshotsForOmnichainStatusSnapshotBackfill, checkChainIndexingStatusSnapshotsForOmnichainStatusSnapshotCompleted, checkChainIndexingStatusSnapshotsForOmnichainStatusSnapshotFollowing, checkChainIndexingStatusSnapshotsForOmnichainStatusSnapshotUnstarted, coinTypeReverseLabel, coinTypeToEvmChainId, createIndexingConfig, createRealtimeIndexingStatusProjection, decodeDNSEncodedLiteralName, decodeDNSEncodedName, deserializeAssetId, deserializeBlockNumber, deserializeBlockRef, deserializeBlockrange, deserializeChainId, deserializeChainIndexingStatusSnapshot, deserializeConfigResponse, deserializeCrossChainIndexingStatusSnapshot, deserializeDatetime, deserializeDuration, deserializeENSApiPublicConfig, deserializeENSIndexerPublicConfig, deserializeErrorResponse, deserializeIndexingStatusResponse, deserializeOmnichainIndexingStatusSnapshot, deserializeRealtimeIndexingStatusProjection, deserializeReferrerDetailResponse, deserializeReferrerLeaderboardPageResponse, deserializeRegistrarActionsResponse, deserializeUnixTimestamp, deserializeUrl, deserializedNameTokensResponse, durationBetween, encodeLabelHash, encodedLabelToLabelhash, evmChainIdToCoinType, formatAccountId, formatAssetId, formatNFTTransferEventMetadata, getBasenamesSubregistryId, getBasenamesSubregistryManagedName, getCanonicalId, getCurrencyInfo, getDatasourceContract, getENSv1Registry, getENSv2RootRegistry, getENSv2RootRegistryId, getEthnamesSubregistryId, getEthnamesSubregistryManagedName, getLatestIndexedBlockRef, getLineanamesSubregistryId, getLineanamesSubregistryManagedName, getNFTTransferType, getNameHierarchy, getNameTokenOwnership, getNameWrapperAccounts, getOmnichainIndexingCursor, getOmnichainIndexingStatus, getParentNameFQDN, getResolvePrimaryNameChainIdParam, getTimestampForHighestOmnichainKnownBlock, getTimestampForLowestOmnichainStartBlock, hasNullByte, interpretAddress, interpretAddressRecordValue, interpretNameRecordValue, interpretTextRecordKey, interpretTextRecordValue, interpretTokenIdAsLabelHash, interpretTokenIdAsNode, interpretedLabelsToInterpretedName, interpretedNameToInterpretedLabels, interpretedNameToLabelHashPath, isENSv1Registry, isENSv2RootRegistry, isEncodedLabelHash, isHttpProtocol, isInterpetedLabel, isInterpretedName, isLabelHash, isNormalizedLabel, isNormalizedName, isPccFuseSet, isPriceCurrencyEqual, isPriceEqual, isRegistrarActionPricingAvailable, isRegistrarActionReferralAvailable, isRegistrationExpired, isRegistrationFullyExpired, isRegistrationInGracePeriod, isResolvedIdentity, isSelectionEmpty, isSubgraphCompatible, isWebSocketProtocol, labelHashToBytes, labelhashLiteralLabel, literalLabelToInterpretedLabel, literalLabelsToInterpretedName, literalLabelsToLiteralName, makeContractMatcher, makeENSApiPublicConfigSchema, makeENSv1DomainId, makeENSv2DomainId, makeLatestRegistrationId, makeLatestRenewalId, makePermissionsId, makePermissionsResourceId, makePermissionsUserId, makeRegistrationId, makeRegistryId, makeRenewalId, makeResolverId, makeResolverRecordsId, makeSubdomainNode, maybeGetDatasourceContract, nameTokensPrerequisites, parseAccountId, parseAssetId, parseNonNegativeInteger, parseReverseName, priceDai, priceEth, priceUsdc, registrarActionsFilter, registrarActionsPrerequisites, reverseName, serializeAssetId, serializeChainId, serializeChainIndexingSnapshots, serializeConfigResponse, serializeCrossChainIndexingStatusSnapshotOmnichain, serializeDatetime, serializeDomainAssetId, serializeENSApiPublicConfig, serializeENSIndexerPublicConfig, serializeIndexedChainIds, serializeIndexingStatusResponse, serializeNameToken, serializeNameTokensResponse, serializeNamedRegistrarAction, serializeOmnichainIndexingStatusSnapshot, serializePrice, serializePriceEth, serializeRealtimeIndexingStatusProjection, serializeReferrerDetailResponse, serializeReferrerLeaderboardPageResponse, serializeRegisteredNameTokens, serializeRegistrarAction, serializeRegistrarActionPricing, serializeRegistrarActionsResponse, serializeUrl, sortChainStatusesByStartBlockAsc, stripNullBytes, translateDefaultableChainIdToChainId, uint256ToHex32, uniq, validateSupportedLabelSetAndVersion };