@ensnode/ensdb-sdk 1.8.1 → 1.10.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.js CHANGED
@@ -4,18 +4,6 @@ var __export = (target, all) => {
4
4
  __defProp(target, name, { get: all[name], enumerable: true });
5
5
  };
6
6
 
7
- // src/client/ensdb-reader.ts
8
- import { and, eq } from "drizzle-orm/sql";
9
- import {
10
- deserializeCrossChainIndexingStatusSnapshot,
11
- deserializeEnsIndexerPublicConfig
12
- } from "@ensnode/ensnode-sdk";
13
-
14
- // src/lib/drizzle.ts
15
- import { drizzle } from "drizzle-orm/node-postgres";
16
- import { isPgEnum } from "drizzle-orm/pg-core";
17
- import { isTable, Table } from "drizzle-orm/table";
18
-
19
7
  // src/ensindexer-abstract/index.ts
20
8
  var ensindexer_abstract_exports = {};
21
9
  __export(ensindexer_abstract_exports, {
@@ -24,7 +12,6 @@ __export(ensindexer_abstract_exports, {
24
12
  domainEvent: () => domainEvent,
25
13
  domainResolverRelation: () => domainResolverRelation,
26
14
  domainResolverRelation_relations: () => domainResolverRelation_relations,
27
- ensNodeMetadata: () => ensNodeMetadata,
28
15
  event: () => event,
29
16
  internal_registrarActionMetadata: () => internal_registrarActionMetadata,
30
17
  internal_registrarActionMetadataType: () => internal_registrarActionMetadataType,
@@ -127,34 +114,9 @@ __export(ensindexer_abstract_exports, {
127
114
  v2Domain: () => v2Domain
128
115
  });
129
116
 
130
- // src/ensindexer-abstract/ensnode-metadata.schema.ts
131
- import { onchainTable } from "ponder";
132
- var ensNodeMetadata = onchainTable("ensnode_metadata", (t) => ({
133
- /**
134
- * Key
135
- *
136
- * Allowed keys:
137
- * - `EnsNodeMetadataEnsDbVersion['key']`
138
- * - `EnsNodeMetadataEnsIndexerPublicConfig['key']`
139
- * - `EnsNodeMetadataEnsIndexerIndexingStatus['key']`
140
- */
141
- key: t.text().primaryKey(),
142
- /**
143
- * Value
144
- *
145
- * Allowed values:
146
- * - `EnsNodeMetadataEnsDbVersion['value']`
147
- * - `EnsNodeMetadataEnsIndexerPublicConfig['value']`
148
- * - `EnsNodeMetadataEnsIndexerIndexingStatus['value']`
149
- *
150
- * Guaranteed to be a serialized representation of JSON object.
151
- */
152
- value: t.jsonb().notNull()
153
- }));
154
-
155
117
  // src/ensindexer-abstract/ensv2.schema.ts
156
- import { index, onchainEnum, onchainTable as onchainTable2, primaryKey, relations, sql, uniqueIndex } from "ponder";
157
- var event = onchainTable2(
118
+ import { index, onchainEnum, onchainTable, primaryKey, relations, sql, uniqueIndex } from "ponder";
119
+ var event = onchainTable(
158
120
  "events",
159
121
  (t) => ({
160
122
  // Ponder's event.id
@@ -185,7 +147,7 @@ var event = onchainTable2(
185
147
  byTimestamp: index().on(t.timestamp)
186
148
  })
187
149
  );
188
- var domainEvent = onchainTable2(
150
+ var domainEvent = onchainTable(
189
151
  "domain_events",
190
152
  (t) => ({
191
153
  domainId: t.text().notNull().$type(),
@@ -193,7 +155,7 @@ var domainEvent = onchainTable2(
193
155
  }),
194
156
  (t) => ({ pk: primaryKey({ columns: [t.domainId, t.eventId] }) })
195
157
  );
196
- var resolverEvent = onchainTable2(
158
+ var resolverEvent = onchainTable(
197
159
  "resolver_events",
198
160
  (t) => ({
199
161
  resolverId: t.text().notNull().$type(),
@@ -201,7 +163,7 @@ var resolverEvent = onchainTable2(
201
163
  }),
202
164
  (t) => ({ pk: primaryKey({ columns: [t.resolverId, t.eventId] }) })
203
165
  );
204
- var permissionsEvent = onchainTable2(
166
+ var permissionsEvent = onchainTable(
205
167
  "permissions_events",
206
168
  (t) => ({
207
169
  permissionsId: t.text().notNull().$type(),
@@ -209,7 +171,7 @@ var permissionsEvent = onchainTable2(
209
171
  }),
210
172
  (t) => ({ pk: primaryKey({ columns: [t.permissionsId, t.eventId] }) })
211
173
  );
212
- var account = onchainTable2("accounts", (t) => ({
174
+ var account = onchainTable("accounts", (t) => ({
213
175
  id: t.hex().primaryKey().$type()
214
176
  }));
215
177
  var account_relations = relations(account, ({ many }) => ({
@@ -217,7 +179,7 @@ var account_relations = relations(account, ({ many }) => ({
217
179
  domains: many(v2Domain),
218
180
  permissions: many(permissionsUser)
219
181
  }));
220
- var registry = onchainTable2(
182
+ var registry = onchainTable(
221
183
  "registries",
222
184
  (t) => ({
223
185
  // see RegistryId for guarantees
@@ -242,7 +204,7 @@ var relations_registry = relations(registry, ({ one, many }) => ({
242
204
  references: [permissions.chainId, permissions.address]
243
205
  })
244
206
  }));
245
- var v1Domain = onchainTable2(
207
+ var v1Domain = onchainTable(
246
208
  "v1_domains",
247
209
  (t) => ({
248
210
  // keyed by node, see ENSv1DomainId for guarantees.
@@ -288,7 +250,7 @@ var relations_v1Domain = relations(v1Domain, ({ one, many }) => ({
288
250
  }),
289
251
  registrations: many(registration)
290
252
  }));
291
- var v2Domain = onchainTable2(
253
+ var v2Domain = onchainTable(
292
254
  "v2_domains",
293
255
  (t) => ({
294
256
  // see ENSv2DomainId for guarantees
@@ -342,15 +304,16 @@ var registrationType = onchainEnum("RegistrationType", [
342
304
  "NameWrapper",
343
305
  "BaseRegistrar",
344
306
  "ThreeDNS",
345
- "ENSv2Registry"
307
+ "ENSv2RegistryRegistration",
308
+ "ENSv2RegistryReservation"
346
309
  ]);
347
- var registration = onchainTable2(
310
+ var registration = onchainTable(
348
311
  "registrations",
349
312
  (t) => ({
350
- // keyed by (domainId, index)
313
+ // keyed by (domainId, registrationIndex)
351
314
  id: t.text().primaryKey().$type(),
352
315
  domainId: t.text().notNull().$type(),
353
- index: t.integer().notNull(),
316
+ registrationIndex: t.integer().notNull(),
354
317
  // has a type
355
318
  type: registrationType().notNull(),
356
319
  // has a start
@@ -362,9 +325,11 @@ var registration = onchainTable2(
362
325
  // registrar AccountId
363
326
  registrarChainId: t.integer().notNull().$type(),
364
327
  registrarAddress: t.hex().notNull().$type(),
365
- // references registrant
328
+ // may reference a registrant
366
329
  registrantId: t.hex().$type(),
367
- // may have a referrer
330
+ // may reference an unregistrant
331
+ unregistrantId: t.hex().$type(),
332
+ // may have referrer data
368
333
  referrer: t.hex().$type(),
369
334
  // may have fuses (NameWrapper, Wrapped BaseRegistrar)
370
335
  fuses: t.integer(),
@@ -379,12 +344,12 @@ var registration = onchainTable2(
379
344
  eventId: t.text().notNull()
380
345
  }),
381
346
  (t) => ({
382
- byId: uniqueIndex().on(t.domainId, t.index)
347
+ byId: uniqueIndex().on(t.domainId, t.registrationIndex)
383
348
  })
384
349
  );
385
- var latestRegistrationIndex = onchainTable2("latest_registration_indexes", (t) => ({
350
+ var latestRegistrationIndex = onchainTable("latest_registration_indexes", (t) => ({
386
351
  domainId: t.text().primaryKey().$type(),
387
- index: t.integer().notNull()
352
+ registrationIndex: t.integer().notNull()
388
353
  }));
389
354
  var registration_relations = relations(registration, ({ one, many }) => ({
390
355
  // belongs to either v1Domain or v2Domain
@@ -402,6 +367,12 @@ var registration_relations = relations(registration, ({ one, many }) => ({
402
367
  references: [account.id],
403
368
  relationName: "registrant"
404
369
  }),
370
+ // has one unregistrant
371
+ unregistrant: one(account, {
372
+ fields: [registration.unregistrantId],
373
+ references: [account.id],
374
+ relationName: "unregistrant"
375
+ }),
405
376
  // has many renewals
406
377
  renewals: many(renewal),
407
378
  // has an event
@@ -410,14 +381,14 @@ var registration_relations = relations(registration, ({ one, many }) => ({
410
381
  references: [event.id]
411
382
  })
412
383
  }));
413
- var renewal = onchainTable2(
384
+ var renewal = onchainTable(
414
385
  "renewals",
415
386
  (t) => ({
416
387
  // keyed by (registrationId, index)
417
388
  id: t.text().primaryKey().$type(),
418
389
  domainId: t.text().notNull().$type(),
419
390
  registrationIndex: t.integer().notNull(),
420
- index: t.integer().notNull(),
391
+ renewalIndex: t.integer().notNull(),
421
392
  // all renewals have a duration
422
393
  duration: t.bigint().notNull(),
423
394
  // may have a referrer
@@ -431,14 +402,14 @@ var renewal = onchainTable2(
431
402
  eventId: t.text().notNull()
432
403
  }),
433
404
  (t) => ({
434
- byId: uniqueIndex().on(t.domainId, t.registrationIndex, t.index)
405
+ byId: uniqueIndex().on(t.domainId, t.registrationIndex, t.renewalIndex)
435
406
  })
436
407
  );
437
408
  var renewal_relations = relations(renewal, ({ one }) => ({
438
409
  // belongs to registration
439
410
  registration: one(registration, {
440
411
  fields: [renewal.domainId, renewal.registrationIndex],
441
- references: [registration.domainId, registration.index]
412
+ references: [registration.domainId, registration.registrationIndex]
442
413
  }),
443
414
  // has an event
444
415
  event: one(event, {
@@ -446,16 +417,16 @@ var renewal_relations = relations(renewal, ({ one }) => ({
446
417
  references: [event.id]
447
418
  })
448
419
  }));
449
- var latestRenewalIndex = onchainTable2(
420
+ var latestRenewalIndex = onchainTable(
450
421
  "latest_renewal_indexes",
451
422
  (t) => ({
452
423
  domainId: t.text().notNull().$type(),
453
424
  registrationIndex: t.integer().notNull(),
454
- index: t.integer().notNull()
425
+ renewalIndex: t.integer().notNull()
455
426
  }),
456
427
  (t) => ({ pk: primaryKey({ columns: [t.domainId, t.registrationIndex] }) })
457
428
  );
458
- var permissions = onchainTable2(
429
+ var permissions = onchainTable(
459
430
  "permissions",
460
431
  (t) => ({
461
432
  id: t.text().primaryKey().$type(),
@@ -470,7 +441,7 @@ var relations_permissions = relations(permissions, ({ many }) => ({
470
441
  resources: many(permissionsResource),
471
442
  users: many(permissionsUser)
472
443
  }));
473
- var permissionsResource = onchainTable2(
444
+ var permissionsResource = onchainTable(
474
445
  "permissions_resources",
475
446
  (t) => ({
476
447
  id: t.text().primaryKey().$type(),
@@ -488,7 +459,7 @@ var relations_permissionsResource = relations(permissionsResource, ({ one }) =>
488
459
  references: [permissions.chainId, permissions.address]
489
460
  })
490
461
  }));
491
- var permissionsUser = onchainTable2(
462
+ var permissionsUser = onchainTable(
492
463
  "permissions_users",
493
464
  (t) => ({
494
465
  id: t.text().primaryKey().$type(),
@@ -521,7 +492,7 @@ var relations_permissionsUser = relations(permissionsUser, ({ one }) => ({
521
492
  ]
522
493
  })
523
494
  }));
524
- var label = onchainTable2(
495
+ var label = onchainTable(
525
496
  "labels",
526
497
  (t) => ({
527
498
  labelHash: t.hex().primaryKey().$type(),
@@ -534,14 +505,14 @@ var label = onchainTable2(
534
505
  var label_relations = relations(label, ({ many }) => ({
535
506
  domains: many(v2Domain)
536
507
  }));
537
- var registryCanonicalDomain = onchainTable2("registry_canonical_domains", (t) => ({
508
+ var registryCanonicalDomain = onchainTable("registry_canonical_domains", (t) => ({
538
509
  registryId: t.text().primaryKey().$type(),
539
510
  domainId: t.text().notNull().$type()
540
511
  }));
541
512
 
542
513
  // src/ensindexer-abstract/protocol-acceleration.schema.ts
543
- import { onchainTable as onchainTable3, primaryKey as primaryKey2, relations as relations2, uniqueIndex as uniqueIndex2 } from "ponder";
544
- var reverseNameRecord = onchainTable3(
514
+ import { onchainTable as onchainTable2, primaryKey as primaryKey2, relations as relations2, uniqueIndex as uniqueIndex2 } from "ponder";
515
+ var reverseNameRecord = onchainTable2(
545
516
  "reverse_name_records",
546
517
  (t) => ({
547
518
  // keyed by (address, coinType)
@@ -550,19 +521,15 @@ var reverseNameRecord = onchainTable3(
550
521
  /**
551
522
  * Represents the ENSIP-19 Reverse Name Record for a given (address, coinType).
552
523
  *
553
- * The value of this field is guaranteed to be a non-empty-string normalized ENS name (see
554
- * `interpretNameRecordValue` for additional context and specific guarantees). Unnormalized
555
- * names and empty string values are interpreted as a deletion of the associated Reverse Name
556
- * Record entity (represented in the schema as the _absence_ of a relevant Reverse Name Record
557
- * entity).
524
+ * The value of this field is guaranteed to be a non-empty {@link InterpretedName}.
558
525
  */
559
- value: t.text().notNull()
526
+ value: t.text().notNull().$type()
560
527
  }),
561
528
  (t) => ({
562
529
  pk: primaryKey2({ columns: [t.address, t.coinType] })
563
530
  })
564
531
  );
565
- var domainResolverRelation = onchainTable3(
532
+ var domainResolverRelation = onchainTable2(
566
533
  "domain_resolver_relations",
567
534
  (t) => ({
568
535
  // keyed by (chainId, registry, node)
@@ -583,7 +550,7 @@ var domainResolverRelation_relations = relations2(domainResolverRelation, ({ one
583
550
  references: [resolver.chainId, resolver.address]
584
551
  })
585
552
  }));
586
- var resolver = onchainTable3(
553
+ var resolver = onchainTable2(
587
554
  "resolvers",
588
555
  (t) => ({
589
556
  // keyed by (chainId, address)
@@ -598,7 +565,7 @@ var resolver = onchainTable3(
598
565
  var resolver_relations = relations2(resolver, ({ many }) => ({
599
566
  records: many(resolverRecords)
600
567
  }));
601
- var resolverRecords = onchainTable3(
568
+ var resolverRecords = onchainTable2(
602
569
  "resolver_records",
603
570
  (t) => ({
604
571
  // keyed by (chainId, resolver, node)
@@ -609,14 +576,30 @@ var resolverRecords = onchainTable3(
609
576
  /**
610
577
  * Represents the value of the reverse-resolution (ENSIP-3) name() record, used for Reverse Resolution.
611
578
  *
612
- * The emitted record values are interpreted according to `interpretNameRecordValue` unnormalized
613
- * names and empty string values are interpreted as a deletion of the associated record (represented
614
- * here as `null`).
579
+ * If present, the value of this field is guaranteed to be a non-empty {@link InterpretedName}.
580
+ */
581
+ name: t.text().$type(),
582
+ /**
583
+ * ENSIP-7 contenthash raw bytes or null if not set.
584
+ */
585
+ contenthash: t.hex(),
586
+ /**
587
+ * PubkeyResolver (x, y) pair, or null if not set.
615
588
  *
616
- * If set, the value of this field is guaranteed to be a non-empty-string normalized ENS name
617
- * (see `interpretNameRecordValue` for additional context and specific guarantees).
589
+ * Invariant: both null together, or both set together.
618
590
  */
619
- name: t.text()
591
+ pubkeyX: t.hex(),
592
+ pubkeyY: t.hex(),
593
+ /**
594
+ * IDNSZoneResolver zonehash or null if not set.
595
+ */
596
+ dnszonehash: t.hex(),
597
+ /**
598
+ * IVersionableResolver version. Null when no `VersionChanged` event has been seen for this
599
+ * (chainId, address, node) — the resolver may not implement `IVersionableResolver`, or simply
600
+ * may never have been version-bumped. Consumers should treat null as "unknown" rather than 0.
601
+ */
602
+ version: t.bigint().$type()
620
603
  }),
621
604
  (t) => ({
622
605
  byId: uniqueIndex2().on(t.chainId, t.address, t.node)
@@ -633,7 +616,7 @@ var resolverRecords_relations = relations2(resolverRecords, ({ one, many }) => (
633
616
  // resolverRecord has many text records
634
617
  textRecords: many(resolverTextRecord)
635
618
  }));
636
- var resolverAddressRecord = onchainTable3(
619
+ var resolverAddressRecord = onchainTable2(
637
620
  "resolver_address_records",
638
621
  (t) => ({
639
622
  // keyed by ((chainId, resolver, node), coinType)
@@ -666,7 +649,7 @@ var resolverAddressRecordRelations = relations2(resolverAddressRecord, ({ one })
666
649
  references: [resolverRecords.chainId, resolverRecords.address, resolverRecords.node]
667
650
  })
668
651
  }));
669
- var resolverTextRecord = onchainTable3(
652
+ var resolverTextRecord = onchainTable2(
670
653
  "resolver_text_records",
671
654
  (t) => ({
672
655
  // keyed by ((chainId, resolver, node), key)
@@ -693,13 +676,13 @@ var resolverTextRecordRelations = relations2(resolverTextRecord, ({ one }) => ({
693
676
  references: [resolverRecords.chainId, resolverRecords.address, resolverRecords.node]
694
677
  })
695
678
  }));
696
- var migratedNode = onchainTable3("migrated_nodes", (t) => ({
697
- node: t.hex().primaryKey()
679
+ var migratedNode = onchainTable2("migrated_nodes", (t) => ({
680
+ node: t.hex().primaryKey().$type()
698
681
  }));
699
682
 
700
683
  // src/ensindexer-abstract/registrars.schema.ts
701
- import { index as index2, onchainEnum as onchainEnum2, onchainTable as onchainTable4, relations as relations3, uniqueIndex as uniqueIndex3 } from "ponder";
702
- var subregistries = onchainTable4(
684
+ import { index as index2, onchainEnum as onchainEnum2, onchainTable as onchainTable3, relations as relations3, uniqueIndex as uniqueIndex3 } from "ponder";
685
+ var subregistries = onchainTable3(
703
686
  "subregistries",
704
687
  (t) => ({
705
688
  /**
@@ -729,7 +712,7 @@ var subregistries = onchainTable4(
729
712
  uniqueNode: uniqueIndex3().on(t.node)
730
713
  })
731
714
  );
732
- var registrationLifecycles = onchainTable4(
715
+ var registrationLifecycles = onchainTable3(
733
716
  "registration_lifecycles",
734
717
  (t) => ({
735
718
  /**
@@ -769,7 +752,7 @@ var registrarActionType = onchainEnum2("registrar_action_type", [
769
752
  "registration",
770
753
  "renewal"
771
754
  ]);
772
- var registrarActions = onchainTable4(
755
+ var registrarActions = onchainTable3(
773
756
  "registrar_actions",
774
757
  (t) => ({
775
758
  /**
@@ -961,7 +944,7 @@ var registrarActions = onchainTable4(
961
944
  * 3) May be the "zero address" to represent that an `encodedReferrer` is
962
945
  * defined but that it is interpreted as no referrer.
963
946
  */
964
- decodedReferrer: t.hex(),
947
+ decodedReferrer: t.hex().$type(),
965
948
  /**
966
949
  * Number of the block that includes the "logical registrar action".
967
950
  *
@@ -1026,7 +1009,7 @@ var internal_registrarActionMetadataType = onchainEnum2(
1026
1009
  "_ensindexer_registrar_action_metadata_type",
1027
1010
  ["CURRENT_LOGICAL_REGISTRAR_ACTION"]
1028
1011
  );
1029
- var internal_registrarActionMetadata = onchainTable4(
1012
+ var internal_registrarActionMetadata = onchainTable3(
1030
1013
  "_ensindexer_registrar_action_metadata",
1031
1014
  (t) => ({
1032
1015
  /**
@@ -1075,7 +1058,7 @@ var registrarActionRelations = relations3(registrarActions, ({ one }) => ({
1075
1058
  }));
1076
1059
 
1077
1060
  // src/ensindexer-abstract/subgraph.schema.ts
1078
- import { index as index3, onchainTable as onchainTable5, relations as relations4 } from "ponder";
1061
+ import { index as index3, onchainTable as onchainTable4, relations as relations4, sql as sql2 } from "ponder";
1079
1062
 
1080
1063
  // src/lib/collate.ts
1081
1064
  function monkeypatchCollate(col, collation) {
@@ -1086,7 +1069,7 @@ function monkeypatchCollate(col, collation) {
1086
1069
  }
1087
1070
 
1088
1071
  // src/ensindexer-abstract/subgraph.schema.ts
1089
- var subgraph_domain = onchainTable5(
1072
+ var subgraph_domain = onchainTable4(
1090
1073
  "subgraph_domains",
1091
1074
  (t) => ({
1092
1075
  // The namehash of the name
@@ -1155,9 +1138,12 @@ var subgraph_domain = onchainTable5(
1155
1138
  expiryDate: t.bigint()
1156
1139
  }),
1157
1140
  (t) => ({
1158
- // Temporarily disable the `byName` index to avoid index creation issues.
1159
- // For more details, see: https://github.com/namehash/ensnode/issues/1819
1160
- // byName: index().on(t.name),
1141
+ // uses a hash index because some name values exceed the btree max row size (8191 bytes)
1142
+ byExactName: index3().using("hash", t.name),
1143
+ // GIN trigram index for partial-match filters (_contains, _starts_with, _ends_with).
1144
+ // (inline `gin_trgm_ops` via `sql` because passing it through `.op()` gets dropped by Ponder,
1145
+ // producing `USING gin (name)` with no opclass)
1146
+ byFuzzyName: index3().using("gin", sql2`${t.name} gin_trgm_ops`),
1161
1147
  byLabelhash: index3().on(t.labelhash),
1162
1148
  byParentId: index3().on(t.parentId),
1163
1149
  byOwnerId: index3().on(t.ownerId),
@@ -1213,7 +1199,7 @@ var subgraph_domainRelations = relations4(subgraph_domain, ({ one, many }) => ({
1213
1199
  fusesSets: many(subgraph_fusesSet),
1214
1200
  expiryExtendeds: many(subgraph_expiryExtended)
1215
1201
  }));
1216
- var subgraph_account = onchainTable5("subgraph_accounts", (t) => ({
1202
+ var subgraph_account = onchainTable4("subgraph_accounts", (t) => ({
1217
1203
  id: t.hex().primaryKey()
1218
1204
  }));
1219
1205
  var subgraph_accountRelations = relations4(subgraph_account, ({ many }) => ({
@@ -1221,7 +1207,7 @@ var subgraph_accountRelations = relations4(subgraph_account, ({ many }) => ({
1221
1207
  wrappedDomains: many(subgraph_wrappedDomain),
1222
1208
  registrations: many(subgraph_registration)
1223
1209
  }));
1224
- var subgraph_resolver = onchainTable5(
1210
+ var subgraph_resolver = onchainTable4(
1225
1211
  "subgraph_resolvers",
1226
1212
  (t) => ({
1227
1213
  // The unique identifier for this resolver, which is a concatenation of the domain namehash and the resolver address
@@ -1266,7 +1252,7 @@ var subgraph_resolverRelations = relations4(subgraph_resolver, ({ one, many }) =
1266
1252
  authorisationChangeds: many(subgraph_authorisationChanged),
1267
1253
  versionChangeds: many(subgraph_versionChanged)
1268
1254
  }));
1269
- var subgraph_registration = onchainTable5(
1255
+ var subgraph_registration = onchainTable4(
1270
1256
  "subgraph_registrations",
1271
1257
  (t) => ({
1272
1258
  // The unique identifier of the registration
@@ -1322,7 +1308,7 @@ var subgraph_registrationRelations = relations4(subgraph_registration, ({ one, m
1322
1308
  nameReneweds: many(subgraph_nameRenewed),
1323
1309
  nameTransferreds: many(subgraph_nameTransferred)
1324
1310
  }));
1325
- var subgraph_wrappedDomain = onchainTable5(
1311
+ var subgraph_wrappedDomain = onchainTable4(
1326
1312
  "subgraph_wrapped_domains",
1327
1313
  (t) => ({
1328
1314
  // The unique identifier for each instance of the WrappedDomain entity
@@ -1382,7 +1368,7 @@ var domainEventIndex = (t) => ({
1382
1368
  // sorting index
1383
1369
  idx_compound: index3().on(t.domainId, t.id)
1384
1370
  });
1385
- var subgraph_transfer = onchainTable5(
1371
+ var subgraph_transfer = onchainTable4(
1386
1372
  "subgraph_transfers",
1387
1373
  (t) => ({
1388
1374
  ...domainEvent2(t),
@@ -1390,7 +1376,7 @@ var subgraph_transfer = onchainTable5(
1390
1376
  }),
1391
1377
  domainEventIndex
1392
1378
  );
1393
- var subgraph_newOwner = onchainTable5(
1379
+ var subgraph_newOwner = onchainTable4(
1394
1380
  "subgraph_new_owners",
1395
1381
  (t) => ({
1396
1382
  ...domainEvent2(t),
@@ -1399,7 +1385,7 @@ var subgraph_newOwner = onchainTable5(
1399
1385
  }),
1400
1386
  domainEventIndex
1401
1387
  );
1402
- var subgraph_newResolver = onchainTable5(
1388
+ var subgraph_newResolver = onchainTable4(
1403
1389
  "subgraph_new_resolvers",
1404
1390
  (t) => ({
1405
1391
  ...domainEvent2(t),
@@ -1407,7 +1393,7 @@ var subgraph_newResolver = onchainTable5(
1407
1393
  }),
1408
1394
  domainEventIndex
1409
1395
  );
1410
- var subgraph_newTTL = onchainTable5(
1396
+ var subgraph_newTTL = onchainTable4(
1411
1397
  "subgraph_new_ttls",
1412
1398
  (t) => ({
1413
1399
  ...domainEvent2(t),
@@ -1415,7 +1401,7 @@ var subgraph_newTTL = onchainTable5(
1415
1401
  }),
1416
1402
  domainEventIndex
1417
1403
  );
1418
- var subgraph_wrappedTransfer = onchainTable5(
1404
+ var subgraph_wrappedTransfer = onchainTable4(
1419
1405
  "subgraph_wrapped_transfers",
1420
1406
  (t) => ({
1421
1407
  ...domainEvent2(t),
@@ -1423,7 +1409,7 @@ var subgraph_wrappedTransfer = onchainTable5(
1423
1409
  }),
1424
1410
  domainEventIndex
1425
1411
  );
1426
- var subgraph_nameWrapped = onchainTable5(
1412
+ var subgraph_nameWrapped = onchainTable4(
1427
1413
  "subgraph_name_wrapped",
1428
1414
  (t) => ({
1429
1415
  ...domainEvent2(t),
@@ -1434,7 +1420,7 @@ var subgraph_nameWrapped = onchainTable5(
1434
1420
  }),
1435
1421
  domainEventIndex
1436
1422
  );
1437
- var subgraph_nameUnwrapped = onchainTable5(
1423
+ var subgraph_nameUnwrapped = onchainTable4(
1438
1424
  "subgraph_name_unwrapped",
1439
1425
  (t) => ({
1440
1426
  ...domainEvent2(t),
@@ -1442,7 +1428,7 @@ var subgraph_nameUnwrapped = onchainTable5(
1442
1428
  }),
1443
1429
  domainEventIndex
1444
1430
  );
1445
- var subgraph_fusesSet = onchainTable5(
1431
+ var subgraph_fusesSet = onchainTable4(
1446
1432
  "subgraph_fuses_set",
1447
1433
  (t) => ({
1448
1434
  ...domainEvent2(t),
@@ -1450,7 +1436,7 @@ var subgraph_fusesSet = onchainTable5(
1450
1436
  }),
1451
1437
  domainEventIndex
1452
1438
  );
1453
- var subgraph_expiryExtended = onchainTable5(
1439
+ var subgraph_expiryExtended = onchainTable4(
1454
1440
  "subgraph_expiry_extended",
1455
1441
  (t) => ({
1456
1442
  ...domainEvent2(t),
@@ -1468,7 +1454,7 @@ var registrationEventIndex = (t) => ({
1468
1454
  // sorting index
1469
1455
  idx_compound: index3().on(t.registrationId, t.id)
1470
1456
  });
1471
- var subgraph_nameRegistered = onchainTable5(
1457
+ var subgraph_nameRegistered = onchainTable4(
1472
1458
  "subgraph_name_registered",
1473
1459
  (t) => ({
1474
1460
  ...registrationEvent(t),
@@ -1477,7 +1463,7 @@ var subgraph_nameRegistered = onchainTable5(
1477
1463
  }),
1478
1464
  registrationEventIndex
1479
1465
  );
1480
- var subgraph_nameRenewed = onchainTable5(
1466
+ var subgraph_nameRenewed = onchainTable4(
1481
1467
  "subgraph_name_renewed",
1482
1468
  (t) => ({
1483
1469
  ...registrationEvent(t),
@@ -1485,7 +1471,7 @@ var subgraph_nameRenewed = onchainTable5(
1485
1471
  }),
1486
1472
  registrationEventIndex
1487
1473
  );
1488
- var subgraph_nameTransferred = onchainTable5(
1474
+ var subgraph_nameTransferred = onchainTable4(
1489
1475
  "subgraph_name_transferred",
1490
1476
  (t) => ({
1491
1477
  ...registrationEvent(t),
@@ -1503,7 +1489,7 @@ var resolverEventIndex = (t) => ({
1503
1489
  // sorting index
1504
1490
  idx_compound: index3().on(t.resolverId, t.id)
1505
1491
  });
1506
- var subgraph_addrChanged = onchainTable5(
1492
+ var subgraph_addrChanged = onchainTable4(
1507
1493
  "subgraph_addr_changed",
1508
1494
  (t) => ({
1509
1495
  ...resolverEvent2(t),
@@ -1511,7 +1497,7 @@ var subgraph_addrChanged = onchainTable5(
1511
1497
  }),
1512
1498
  resolverEventIndex
1513
1499
  );
1514
- var subgraph_multicoinAddrChanged = onchainTable5(
1500
+ var subgraph_multicoinAddrChanged = onchainTable4(
1515
1501
  "subgraph_multicoin_addr_changed",
1516
1502
  (t) => ({
1517
1503
  ...resolverEvent2(t),
@@ -1520,7 +1506,7 @@ var subgraph_multicoinAddrChanged = onchainTable5(
1520
1506
  }),
1521
1507
  resolverEventIndex
1522
1508
  );
1523
- var subgraph_nameChanged = onchainTable5(
1509
+ var subgraph_nameChanged = onchainTable4(
1524
1510
  "subgraph_name_changed",
1525
1511
  (t) => ({
1526
1512
  ...resolverEvent2(t),
@@ -1528,7 +1514,7 @@ var subgraph_nameChanged = onchainTable5(
1528
1514
  }),
1529
1515
  resolverEventIndex
1530
1516
  );
1531
- var subgraph_abiChanged = onchainTable5(
1517
+ var subgraph_abiChanged = onchainTable4(
1532
1518
  "subgraph_abi_changed",
1533
1519
  (t) => ({
1534
1520
  ...resolverEvent2(t),
@@ -1536,7 +1522,7 @@ var subgraph_abiChanged = onchainTable5(
1536
1522
  }),
1537
1523
  resolverEventIndex
1538
1524
  );
1539
- var subgraph_pubkeyChanged = onchainTable5(
1525
+ var subgraph_pubkeyChanged = onchainTable4(
1540
1526
  "subgraph_pubkey_changed",
1541
1527
  (t) => ({
1542
1528
  ...resolverEvent2(t),
@@ -1545,7 +1531,7 @@ var subgraph_pubkeyChanged = onchainTable5(
1545
1531
  }),
1546
1532
  resolverEventIndex
1547
1533
  );
1548
- var subgraph_textChanged = onchainTable5(
1534
+ var subgraph_textChanged = onchainTable4(
1549
1535
  "subgraph_text_changed",
1550
1536
  (t) => ({
1551
1537
  ...resolverEvent2(t),
@@ -1554,7 +1540,7 @@ var subgraph_textChanged = onchainTable5(
1554
1540
  }),
1555
1541
  resolverEventIndex
1556
1542
  );
1557
- var subgraph_contenthashChanged = onchainTable5(
1543
+ var subgraph_contenthashChanged = onchainTable4(
1558
1544
  "subgraph_contenthash_changed",
1559
1545
  (t) => ({
1560
1546
  ...resolverEvent2(t),
@@ -1562,7 +1548,7 @@ var subgraph_contenthashChanged = onchainTable5(
1562
1548
  }),
1563
1549
  resolverEventIndex
1564
1550
  );
1565
- var subgraph_interfaceChanged = onchainTable5(
1551
+ var subgraph_interfaceChanged = onchainTable4(
1566
1552
  "subgraph_interface_changed",
1567
1553
  (t) => ({
1568
1554
  ...resolverEvent2(t),
@@ -1571,7 +1557,7 @@ var subgraph_interfaceChanged = onchainTable5(
1571
1557
  }),
1572
1558
  resolverEventIndex
1573
1559
  );
1574
- var subgraph_authorisationChanged = onchainTable5(
1560
+ var subgraph_authorisationChanged = onchainTable4(
1575
1561
  "subgraph_authorisation_changed",
1576
1562
  (t) => ({
1577
1563
  ...resolverEvent2(t),
@@ -1581,7 +1567,7 @@ var subgraph_authorisationChanged = onchainTable5(
1581
1567
  }),
1582
1568
  resolverEventIndex
1583
1569
  );
1584
- var subgraph_versionChanged = onchainTable5(
1570
+ var subgraph_versionChanged = onchainTable4(
1585
1571
  "subgraph_version_changed",
1586
1572
  (t) => ({
1587
1573
  ...resolverEvent2(t),
@@ -1775,8 +1761,8 @@ var subgraph_versionChangedRelations = relations4(subgraph_versionChanged, ({ on
1775
1761
  }));
1776
1762
 
1777
1763
  // src/ensindexer-abstract/tokenscope.schema.ts
1778
- import { index as index4, onchainTable as onchainTable6 } from "ponder";
1779
- var nameSales = onchainTable6(
1764
+ import { index as index4, onchainTable as onchainTable5 } from "ponder";
1765
+ var nameSales = onchainTable5(
1780
1766
  "name_sales",
1781
1767
  (t) => ({
1782
1768
  /**
@@ -1872,7 +1858,7 @@ var nameSales = onchainTable6(
1872
1858
  idx_timestamp: index4().on(t.timestamp)
1873
1859
  })
1874
1860
  );
1875
- var nameTokens = onchainTable6(
1861
+ var nameTokens = onchainTable5(
1876
1862
  "name_tokens",
1877
1863
  (t) => ({
1878
1864
  /**
@@ -2010,37 +1996,34 @@ var metadata = ENSNODE_SCHEMA.table(
2010
1996
  );
2011
1997
 
2012
1998
  // src/lib/drizzle.ts
2013
- function cloneTableWithSchema(table, schemaName) {
2014
- const clone = Object.create(
2015
- Object.getPrototypeOf(table),
2016
- Object.getOwnPropertyDescriptors(table)
2017
- );
2018
- clone[Table.Symbol.Schema] = schemaName;
2019
- if (!isTable(clone)) {
2020
- throw new Error(`Cloned table is no longer a valid Drizzle Table (schema: ${schemaName}).`);
2021
- }
2022
- return clone;
1999
+ import { drizzle } from "drizzle-orm/node-postgres";
2000
+ import { isPgEnum } from "drizzle-orm/pg-core";
2001
+ import { isTable, Table } from "drizzle-orm/table";
2002
+
2003
+ // src/lib/checksum.ts
2004
+ import { createHash } from "crypto";
2005
+ function createChecksum(data) {
2006
+ return createHash("sha256").update(data).digest("hex").slice(0, 10);
2023
2007
  }
2008
+
2009
+ // src/lib/drizzle.ts
2010
+ var appliedNameForConcreteEnsIndexerSchema;
2024
2011
  function buildConcreteEnsIndexerSchema(ensIndexerSchemaName) {
2025
- const ensIndexerSchema = {};
2026
- for (const [key, abstractSchemaObject] of Object.entries(ensindexer_abstract_exports)) {
2027
- if (isTable(abstractSchemaObject)) {
2028
- ensIndexerSchema[key] = cloneTableWithSchema(
2029
- abstractSchemaObject,
2030
- ensIndexerSchemaName
2031
- );
2032
- } else if (isPgEnum(abstractSchemaObject)) {
2033
- const concreteSchemaObject = Object.assign(
2034
- (...args) => abstractSchemaObject(...args),
2035
- abstractSchemaObject
2036
- );
2037
- concreteSchemaObject.schema = ensIndexerSchemaName;
2038
- ensIndexerSchema[key] = concreteSchemaObject;
2039
- } else {
2040
- ensIndexerSchema[key] = abstractSchemaObject;
2012
+ if (appliedNameForConcreteEnsIndexerSchema !== void 0 && appliedNameForConcreteEnsIndexerSchema !== ensIndexerSchemaName) {
2013
+ throw new Error(
2014
+ `buildConcreteEnsIndexerSchema was already called with schema "${appliedNameForConcreteEnsIndexerSchema}". Calling it again with "${ensIndexerSchemaName}" would corrupt the previously built schema.`
2015
+ );
2016
+ }
2017
+ appliedNameForConcreteEnsIndexerSchema = ensIndexerSchemaName;
2018
+ const concreteEnsIndexerSchema = ensindexer_abstract_exports;
2019
+ for (const dbObject of Object.values(ensindexer_abstract_exports)) {
2020
+ if (isTable(dbObject)) {
2021
+ dbObject[Table.Symbol.Schema] = ensIndexerSchemaName;
2022
+ } else if (isPgEnum(dbObject)) {
2023
+ dbObject.schema = ensIndexerSchemaName;
2041
2024
  }
2042
2025
  }
2043
- return ensIndexerSchema;
2026
+ return concreteEnsIndexerSchema;
2044
2027
  }
2045
2028
  function buildIndividualEnsDbSchemas(ensIndexerSchemaName) {
2046
2029
  return {
@@ -2063,6 +2046,50 @@ function buildEnsDbDrizzleClient(connectionString, concreteEnsIndexerSchema, log
2063
2046
  logger
2064
2047
  });
2065
2048
  }
2049
+ function safeStringifyDrizzleSchema(schema) {
2050
+ const seen = /* @__PURE__ */ new WeakSet();
2051
+ return JSON.stringify(schema, (_key, value) => {
2052
+ if (typeof value === "bigint") return `${value}n`;
2053
+ if (typeof value === "object" && value !== null) {
2054
+ if (seen.has(value)) return "[circular]";
2055
+ seen.add(value);
2056
+ }
2057
+ return value;
2058
+ });
2059
+ }
2060
+ function getDrizzleSchemaChecksum(schema) {
2061
+ const stringifiedSchema = safeStringifyDrizzleSchema(schema);
2062
+ return createChecksum(stringifiedSchema);
2063
+ }
2064
+
2065
+ // src/client/ensdb-config.ts
2066
+ var ENSDB_SCHEMA_CHECKSUM = getDrizzleSchemaChecksum({
2067
+ ...ensindexer_abstract_exports,
2068
+ ...ensnode_exports
2069
+ });
2070
+
2071
+ // src/client/ensdb-reader.ts
2072
+ import { and, eq } from "drizzle-orm/sql";
2073
+ import {
2074
+ deserializeCrossChainIndexingStatusSnapshot,
2075
+ deserializeEnsIndexerPublicConfig
2076
+ } from "@ensnode/ensnode-sdk";
2077
+
2078
+ // src/lib/parse-pg-version-info.ts
2079
+ function parsePgVersionInfo(versionString) {
2080
+ if (typeof versionString !== "string") {
2081
+ throw new Error("PostgreSQL version string must be a string");
2082
+ }
2083
+ const match = versionString.match(/PostgreSQL (\d+\.\d+)/);
2084
+ if (!match) {
2085
+ throw new Error(`Failed to parse PostgreSQL version from version string: '${versionString}'`);
2086
+ }
2087
+ const parsedVersion = match[1];
2088
+ if (typeof parsedVersion !== "string") {
2089
+ throw new Error(`Parsed PostgreSQL version is not a string: '${parsedVersion}'`);
2090
+ }
2091
+ return parsedVersion;
2092
+ }
2066
2093
 
2067
2094
  // src/client/ensnode-metadata.ts
2068
2095
  var EnsNodeMetadataKeys = {
@@ -2092,21 +2119,21 @@ var EnsDbReader = class {
2092
2119
  * This also identifies which ENSNode metadata records to read from the ENSNode Schema
2093
2120
  * as the ENSNode Schema is multi-tenant across ENSIndexer instances / ENSIndexer Schemas in an ENSDb.
2094
2121
  */
2095
- ensIndexerSchemaName;
2122
+ _ensIndexerSchemaName;
2096
2123
  _ensNodeSchema;
2097
2124
  /**
2098
- * @param ensDbConnectionString The connection string for Drizzle to connect to the ENSDb instance.
2125
+ * @param ensDbUrl The connection string for Drizzle to connect to the ENSDb instance.
2099
2126
  * @param ensIndexerSchemaName The name of the ENSIndexer schema to read from in ENSDb, used to identify which ENSNode metadata records to read.
2100
2127
  */
2101
- constructor(ensDbConnectionString, ensIndexerSchemaName) {
2128
+ constructor(ensDbUrl, ensIndexerSchemaName) {
2102
2129
  const { concreteEnsIndexerSchema, ensNodeSchema } = buildIndividualEnsDbSchemas(ensIndexerSchemaName);
2103
2130
  const ensDbDrizzleClient = buildEnsDbDrizzleClient(
2104
- ensDbConnectionString,
2131
+ ensDbUrl,
2105
2132
  concreteEnsIndexerSchema
2106
2133
  );
2107
2134
  this.drizzleClient = ensDbDrizzleClient;
2108
2135
  this._concreteEnsIndexerSchema = concreteEnsIndexerSchema;
2109
- this.ensIndexerSchemaName = ensIndexerSchemaName;
2136
+ this._ensIndexerSchemaName = ensIndexerSchemaName;
2110
2137
  this._ensNodeSchema = ensNodeSchema;
2111
2138
  }
2112
2139
  /**
@@ -2114,7 +2141,7 @@ var EnsDbReader = class {
2114
2141
  *
2115
2142
  * Useful while working on complex queries for ENSDb.
2116
2143
  */
2117
- get client() {
2144
+ get ensDb() {
2118
2145
  return this.drizzleClient;
2119
2146
  }
2120
2147
  /**
@@ -2125,12 +2152,18 @@ var EnsDbReader = class {
2125
2152
  *
2126
2153
  * Note: using `ensIndexerSchema` name for this getter to make it read better
2127
2154
  * in the context of query building. For example:
2128
- * `this.client.select().from(this.ensIndexerSchema.event)` vs.
2129
- * `this.client.select().from(this.concreteEnsIndexerSchema.event)`.
2155
+ * `this.ensDb.select().from(this.ensIndexerSchema.event)` vs.
2156
+ * `this.ensDb.select().from(this.concreteEnsIndexerSchema.event)`.
2130
2157
  */
2131
2158
  get ensIndexerSchema() {
2132
2159
  return this._concreteEnsIndexerSchema;
2133
2160
  }
2161
+ /**
2162
+ * Getter for the ENSIndexer Schema Name used by this ENSDbReader instance.
2163
+ */
2164
+ get ensIndexerSchemaName() {
2165
+ return this._ensIndexerSchemaName;
2166
+ }
2134
2167
  /**
2135
2168
  * Getter for the ENSNode Schema definition used in the Drizzle client
2136
2169
  * for ENSDb instance.
@@ -2165,6 +2198,15 @@ var EnsDbReader = class {
2165
2198
  }
2166
2199
  return deserializeEnsIndexerPublicConfig(record);
2167
2200
  }
2201
+ /**
2202
+ * Build ENSDb Public Config
2203
+ */
2204
+ async buildEnsDbPublicConfig() {
2205
+ const versionInfo = await this.buildEnsDbVersionInfo();
2206
+ return {
2207
+ versionInfo
2208
+ };
2209
+ }
2168
2210
  /**
2169
2211
  * Get Indexing Status Snapshot
2170
2212
  *
@@ -2190,7 +2232,7 @@ var EnsDbReader = class {
2190
2232
  * 'ensIndexerSchemaName' and 'key')
2191
2233
  */
2192
2234
  async getEnsNodeMetadata(metadata2) {
2193
- const result = await this.drizzleClient.select().from(this.ensNodeSchema.metadata).where(
2235
+ const result = await this.ensDb.select().from(this.ensNodeSchema.metadata).where(
2194
2236
  and(
2195
2237
  eq(this.ensNodeSchema.metadata.ensIndexerSchemaName, this.ensIndexerSchemaName),
2196
2238
  eq(this.ensNodeSchema.metadata.key, metadata2.key)
@@ -2206,6 +2248,33 @@ var EnsDbReader = class {
2206
2248
  `There must be exactly one ENSNodeMetadata record for ('${this.ensIndexerSchemaName}', '${metadata2.key}') composite key`
2207
2249
  );
2208
2250
  }
2251
+ /**
2252
+ * Get PostgreSQL version for the server hosting the ENSDb instance.
2253
+ *
2254
+ * @throws when the version cannot be retrieved or parsed from the query result.
2255
+ */
2256
+ async getPostgresVersion() {
2257
+ const result = await this.ensDb.execute("SELECT version();");
2258
+ const versionString = result.rows[0]?.version;
2259
+ try {
2260
+ return parsePgVersionInfo(versionString);
2261
+ } catch (error) {
2262
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
2263
+ throw new Error(`Failed to get PostgreSQL version for the ENSDb instance: ${errorMessage}`);
2264
+ }
2265
+ }
2266
+ /**
2267
+ * Build ENSDb version info.
2268
+ *
2269
+ * @throws when version info cannot be retrieved or parsed from
2270
+ * the ENSDb instance.
2271
+ */
2272
+ async buildEnsDbVersionInfo() {
2273
+ const postgresVersion = await this.getPostgresVersion();
2274
+ return {
2275
+ postgresql: postgresVersion
2276
+ };
2277
+ }
2209
2278
  };
2210
2279
 
2211
2280
  // src/client/ensdb-writer.ts
@@ -2267,7 +2336,7 @@ var EnsDbWriter = class extends EnsDbReader {
2267
2336
  * @throws when upsert operation failed.
2268
2337
  */
2269
2338
  async upsertEnsNodeMetadata(metadata2) {
2270
- await this.drizzleClient.insert(this.ensNodeSchema.metadata).values({
2339
+ await this.ensDb.insert(this.ensNodeSchema.metadata).values({
2271
2340
  ensIndexerSchemaName: this.ensIndexerSchemaName,
2272
2341
  key: metadata2.key,
2273
2342
  value: metadata2.value
@@ -2277,115 +2346,54 @@ var EnsDbWriter = class extends EnsDbReader {
2277
2346
  });
2278
2347
  }
2279
2348
  };
2349
+
2350
+ // src/client/validate/ensdb-config.ts
2351
+ import { prettifyError } from "zod/v4";
2352
+
2353
+ // src/client/zod-schemas/ensdb-config.ts
2354
+ import { parse as parseConnectionString } from "pg-connection-string";
2355
+ import { z } from "zod/v4";
2356
+ var EnsDbUrlSchema = z.string().refine(
2357
+ (url) => {
2358
+ try {
2359
+ if (!url.startsWith("postgresql://") && !url.startsWith("postgres://")) {
2360
+ return false;
2361
+ }
2362
+ const config = parseConnectionString(url);
2363
+ return !!(config.host && config.port && config.database);
2364
+ } catch {
2365
+ return false;
2366
+ }
2367
+ },
2368
+ {
2369
+ error: "Invalid PostgreSQL connection string for ENSDb. Expected format: postgresql://username:password@host:port/database"
2370
+ }
2371
+ );
2372
+ var EnsIndexerSchemaNameSchema = z.string({
2373
+ error: "ENSIndexer Schema Name is required."
2374
+ }).trim().nonempty({
2375
+ error: "ENSIndexer Schema Name cannot be an empty string."
2376
+ });
2377
+ var EnsDbConfigSchema = z.object({
2378
+ ensDbUrl: EnsDbUrlSchema,
2379
+ ensIndexerSchemaName: EnsIndexerSchemaNameSchema
2380
+ });
2381
+
2382
+ // src/client/validate/ensdb-config.ts
2383
+ function validateEnsDbConfig(unvalidatedConfig) {
2384
+ const ensDbConfig = EnsDbConfigSchema.safeParse(unvalidatedConfig);
2385
+ if (!ensDbConfig.success) {
2386
+ throw new Error(`Failed to parse ENSDb configuration:
2387
+ ${prettifyError(ensDbConfig.error)}
2388
+ `);
2389
+ }
2390
+ return ensDbConfig.data;
2391
+ }
2280
2392
  export {
2393
+ ENSDB_SCHEMA_CHECKSUM,
2281
2394
  EnsDbReader,
2282
2395
  EnsDbWriter,
2283
2396
  EnsNodeMetadataKeys,
2284
- account,
2285
- account_relations,
2286
- domainEvent,
2287
- domainResolverRelation,
2288
- domainResolverRelation_relations,
2289
- ensNodeMetadata,
2290
- event,
2291
- internal_registrarActionMetadata,
2292
- internal_registrarActionMetadataType,
2293
- label,
2294
- label_relations,
2295
- latestRegistrationIndex,
2296
- latestRenewalIndex,
2297
- migratedNode,
2298
- nameSales,
2299
- nameTokens,
2300
- permissions,
2301
- permissionsEvent,
2302
- permissionsResource,
2303
- permissionsUser,
2304
- registrarActionRelations,
2305
- registrarActionType,
2306
- registrarActions,
2307
- registration,
2308
- registrationLifecycleRelations,
2309
- registrationLifecycles,
2310
- registrationType,
2311
- registration_relations,
2312
- registry,
2313
- registryCanonicalDomain,
2314
- relations_permissions,
2315
- relations_permissionsResource,
2316
- relations_permissionsUser,
2317
- relations_registry,
2318
- relations_v1Domain,
2319
- relations_v2Domain,
2320
- renewal,
2321
- renewal_relations,
2322
- resolver,
2323
- resolverAddressRecord,
2324
- resolverAddressRecordRelations,
2325
- resolverEvent,
2326
- resolverRecords,
2327
- resolverRecords_relations,
2328
- resolverTextRecord,
2329
- resolverTextRecordRelations,
2330
- resolver_relations,
2331
- reverseNameRecord,
2332
- subgraph_abiChanged,
2333
- subgraph_abiChangedRelations,
2334
- subgraph_account,
2335
- subgraph_accountRelations,
2336
- subgraph_addrChanged,
2337
- subgraph_addrChangedRelations,
2338
- subgraph_authorisationChanged,
2339
- subgraph_authorisationChangedRelations,
2340
- subgraph_contenthashChanged,
2341
- subgraph_contenthashChangedRelations,
2342
- subgraph_domain,
2343
- subgraph_domainRelations,
2344
- subgraph_expiryExtended,
2345
- subgraph_expiryExtendedRelations,
2346
- subgraph_fusesSet,
2347
- subgraph_fusesSetRelations,
2348
- subgraph_interfaceChanged,
2349
- subgraph_interfaceChangedRelations,
2350
- subgraph_multicoinAddrChanged,
2351
- subgraph_multicoinAddrChangedRelations,
2352
- subgraph_nameChanged,
2353
- subgraph_nameChangedRelations,
2354
- subgraph_nameRegistered,
2355
- subgraph_nameRegisteredRelations,
2356
- subgraph_nameRenewed,
2357
- subgraph_nameRenewedRelations,
2358
- subgraph_nameTransferred,
2359
- subgraph_nameTransferredRelations,
2360
- subgraph_nameUnwrapped,
2361
- subgraph_nameUnwrappedRelations,
2362
- subgraph_nameWrapped,
2363
- subgraph_nameWrappedRelations,
2364
- subgraph_newOwner,
2365
- subgraph_newOwnerRelations,
2366
- subgraph_newResolver,
2367
- subgraph_newResolverRelations,
2368
- subgraph_newTTL,
2369
- subgraph_newTTLRelations,
2370
- subgraph_pubkeyChanged,
2371
- subgraph_pubkeyChangedRelations,
2372
- subgraph_registration,
2373
- subgraph_registrationRelations,
2374
- subgraph_resolver,
2375
- subgraph_resolverRelations,
2376
- subgraph_textChanged,
2377
- subgraph_textChangedRelations,
2378
- subgraph_transfer,
2379
- subgraph_transferRelations,
2380
- subgraph_versionChanged,
2381
- subgraph_versionChangedRelations,
2382
- subgraph_wrappedDomain,
2383
- subgraph_wrappedDomainRelations,
2384
- subgraph_wrappedTransfer,
2385
- subgraph_wrappedTransferRelations,
2386
- subregistries,
2387
- subregistryRelations,
2388
- v1Domain,
2389
- v2Domain
2397
+ validateEnsDbConfig
2390
2398
  };
2391
2399
  //# sourceMappingURL=index.js.map