@ensnode/ensnode-schema 0.35.0 → 0.36.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/ponder.schema.js +646 -636
- package/dist/ponder.schema.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/subgraph.schema.ts","../src/collate.ts","../src/resolver-records.schema.ts","../src/tokenscope.schema.ts","../src/resolver-relations.schema.ts","../src/referrals.schema.ts","../src/primary-names.schema.ts"],"sourcesContent":["import { index, onchainTable, relations } from \"ponder\";\nimport type { Address } from \"viem\";\nimport { monkeypatchCollate } from \"./collate\";\n\n/**\n * Domain\n */\n\nexport const domain = onchainTable(\"domains\", (t) => ({\n // The namehash of the name\n id: t.hex().primaryKey(),\n\n /**\n * The human readable name that this Domain represents.\n *\n * If REPLACE_UNNORMALIZED is true, this value is guaranteed to be an Interpreted Name, which is either:\n * a) a normalized Name, or\n * b) a Name entirely consisting of Interpreted Labels.\n *\n * Note that the type of the column will remain string | null, for legacy subgraph compatibility,\n * but in practice will never be null. The Root node's name will be '' (empty string).\n *\n * @see https://ensnode.io/docs/reference/terminology#interpreted-name\n *\n * If REPLACE_UNNORMALIZED is false, this value may contain:\n * a) null (in the case of the root node), or\n * b) a Literal Name that may or may not be normalized and may or may not contain Encoded LabelHashes.\n *\n * @see https://ensnode.io/docs/reference/terminology#literal-name\n */\n name: t.text(),\n\n /**\n * The Label associated with the Domain.\n *\n * If REPLACE_UNNORMALIZED is true, this value is guaranteed to be an Interpreted Label which is either:\n * a) null, exclusively in the case of the root Node,\n * b) a normalized Label, or\n * c) an Encoded LabelHash of the Literal Label value found onchain.\n *\n * @see https://ensnode.io/docs/reference/terminology#interpreted-label\n *\n * If REPLACE_UNNORMALIZED is false, this value my contain:\n * a) null, exclusively in the case of the root Node, or\n * b) a Literal Label that may or may not be normalized and may or may not be an Encoded LabelHash.\n *\n * @see https://ensnode.io/docs/reference/terminology#literal-label\n */\n labelName: t.text(),\n\n // keccak256(labelName)\n labelhash: t.hex(),\n // The namehash (id) of the parent name\n parentId: t.hex(),\n\n // The number of subdomains\n subdomainCount: t.integer().notNull().default(0),\n\n // Address logged from current resolver, if any\n resolvedAddressId: t.hex(),\n\n // The resolver that controls the domain's settings\n resolverId: t.text(),\n\n // The time-to-live (TTL) value of the domain's records\n ttl: t.bigint(),\n\n // Indicates whether the domain has been migrated to a new registrar\n isMigrated: t.boolean().notNull().default(false),\n // The time when the domain was created\n createdAt: t.bigint().notNull(),\n\n // The account that owns the domain\n ownerId: t.hex().notNull(),\n // The account that owns the ERC721 NFT for the domain\n registrantId: t.hex(),\n // The account that owns the wrapped domain\n wrappedOwnerId: t.hex(),\n\n // The expiry date for the domain, from either the registration, or the wrapped domain if PCC is burned\n expiryDate: t.bigint(),\n}));\n\n// monkeypatch drizzle's column (necessary to match graph-node default collation \"C\")\n// https://github.com/drizzle-team/drizzle-orm/issues/638\nmonkeypatchCollate(domain.name, '\"C\"');\nmonkeypatchCollate(domain.labelName, '\"C\"');\n\nexport const domainRelations = relations(domain, ({ one, many }) => ({\n resolvedAddress: one(account, {\n fields: [domain.resolvedAddressId],\n references: [account.id],\n }),\n owner: one(account, { fields: [domain.ownerId], references: [account.id] }),\n parent: one(domain, { fields: [domain.parentId], references: [domain.id] }),\n resolver: one(resolver, {\n fields: [domain.resolverId],\n references: [resolver.id],\n }),\n subdomains: many(domain, { relationName: \"parent\" }),\n registrant: one(account, {\n fields: [domain.registrantId],\n references: [account.id],\n }),\n wrappedOwner: one(account, {\n fields: [domain.wrappedOwnerId],\n references: [account.id],\n }),\n wrappedDomain: one(wrappedDomain, {\n fields: [domain.id],\n references: [wrappedDomain.domainId],\n }),\n registration: one(registration, {\n fields: [domain.id],\n references: [registration.domainId],\n }),\n\n // event relations\n transfers: many(transfer),\n newOwners: many(newOwner),\n newResolvers: many(newResolver),\n newTTLs: many(newTTL),\n wrappedTransfers: many(wrappedTransfer),\n nameWrappeds: many(nameWrapped),\n nameUnwrappeds: many(nameUnwrapped),\n fusesSets: many(fusesSet),\n expiryExtendeds: many(expiryExtended),\n}));\n\n/**\n * Account\n */\n\nexport const account = onchainTable(\"accounts\", (t) => ({\n id: t.hex().primaryKey(),\n}));\n\nexport const accountRelations = relations(account, ({ many }) => ({\n domains: many(domain),\n wrappedDomains: many(wrappedDomain),\n registrations: many(registration),\n}));\n\n/**\n * Resolver\n */\n\nexport const resolver = onchainTable(\n \"resolvers\",\n (t) => ({\n // The unique identifier for this resolver, which is a concatenation of the domain namehash and the resolver address\n id: t.text().primaryKey(),\n // The domain that this resolver is associated with\n domainId: t.hex().notNull(),\n // The address of the resolver contract\n address: t.hex().notNull().$type<Address>(),\n\n // The current value of the 'addr' record for this resolver, as determined by the associated events\n addrId: t.hex(),\n // The content hash for this resolver, in binary format\n contentHash: t.text(),\n // The set of observed text record keys for this resolver\n // NOTE: we avoid .notNull.default([]) to match subgraph behavior\n texts: t.text().array(),\n // The set of observed SLIP-44 coin types for this resolver\n // NOTE: we avoid .notNull.default([]) to match subgraph behavior\n coinTypes: t.bigint().array(),\n\n /**\n * Represents the value of the reverse-resolution (ENSIP-3) name() record.\n *\n * The emitted record values are interpreted according to `interpretNameRecordValue` — unnormalized\n * names and empty string values are interpreted as a deletion of the associated record (represented\n * here as `null`).\n *\n * If set, the value of this field is guaranteed to be a non-empty-string normalized ENS name\n * (see `interpretNameRecordValue` for guarantees).\n *\n * Note that this is an extension to the original subgraph schema and legacy subgraph compatibility\n * is not relevant.\n */\n name: t.text(),\n }),\n (t) => ({\n idx: index().on(t.domainId),\n }),\n);\n\nexport const resolverRelations = relations(resolver, ({ one, many }) => ({\n addr: one(account, { fields: [resolver.addrId], references: [account.id] }),\n domain: one(domain, { fields: [resolver.domainId], references: [domain.id] }),\n\n // event relations\n addrChangeds: many(addrChanged),\n multicoinAddrChangeds: many(multicoinAddrChanged),\n nameChangeds: many(nameChanged),\n abiChangeds: many(abiChanged),\n pubkeyChangeds: many(pubkeyChanged),\n textChangeds: many(textChanged),\n contenthashChangeds: many(contenthashChanged),\n interfaceChangeds: many(interfaceChanged),\n authorisationChangeds: many(authorisationChanged),\n versionChangeds: many(versionChanged),\n}));\n\n/**\n * Registration\n */\n\nexport const registration = onchainTable(\n \"registrations\",\n (t) => ({\n // The unique identifier of the registration\n id: t.hex().primaryKey(),\n // The domain name associated with the registration\n domainId: t.hex().notNull(),\n // The registration date of the domain\n registrationDate: t.bigint().notNull(),\n // The expiry date of the domain\n expiryDate: t.bigint().notNull(),\n // The cost associated with the domain registration\n cost: t.bigint(),\n // The account that registered the domain\n registrantId: t.hex().notNull(),\n /**\n * The Label associated with the domain registration.\n *\n * If REPLACE_UNNORMALIZED is true, this value is guaranteed to be an Interpreted Label which is either:\n * a) a normalized Label, or\n * b) an Encoded LabelHash of the Literal Label value found onchain.\n *\n * Note that the type of the column will remain string | null, for legacy subgraph compatibility.\n * In practice however, when REPLACE_UNNORMALIZED is true, because there is no Registration entity\n * for the root Node—the only Node with a null labelName—this field will never be null.\n *\n * @see https://ensnode.io/docs/reference/terminology#interpreted-label\n *\n * If REPLACE_UNNORMALIZED is false, this value may contain:\n * a) null, or\n * b) a Literal Label that may or may not be normalized and may or may not be an Encoded LabelHash.\n *\n * @see https://ensnode.io/docs/reference/terminology#literal-label\n */\n labelName: t.text(),\n }),\n (t) => ({\n idx: index().on(t.domainId),\n }),\n);\n\nexport const registrationRelations = relations(registration, ({ one, many }) => ({\n domain: one(domain, {\n fields: [registration.domainId],\n references: [domain.id],\n }),\n registrant: one(account, {\n fields: [registration.registrantId],\n references: [account.id],\n }),\n\n // event relations\n nameRegistereds: many(nameRegistered),\n nameReneweds: many(nameRenewed),\n nameTransferreds: many(nameTransferred),\n}));\n\n/**\n * Wrapped Domain\n */\n\nexport const wrappedDomain = onchainTable(\n \"wrapped_domains\",\n (t) => ({\n // The unique identifier for each instance of the WrappedDomain entity\n id: t.hex().primaryKey(),\n // The domain that is wrapped by this WrappedDomain\n domainId: t.hex().notNull(),\n // The expiry date of the wrapped domain\n expiryDate: t.bigint().notNull(),\n // The number of fuses remaining on the wrapped domain\n fuses: t.integer().notNull(),\n // The account that owns this WrappedDomain\n ownerId: t.hex().notNull(),\n /**\n * The Name that this WrappedDomain represents.\n *\n * If REPLACE_UNNORMALIZED is true, this value is guaranteed to be an Interpreted Name, which is either:\n * a) a normalized Name, or\n * b) a Name entirely consisting of Interpreted Labels.\n *\n * Note that the type of the column will remain string | null, for legacy subgraph compatibility,\n * but in practice will never be null.\n *\n * @see https://ensnode.io/docs/reference/terminology#interpreted-name\n *\n * If REPLACE_UNNORMALIZED is false, this value may contain:\n * a) null (in the case of the root node or invalid Name), or\n * b) a Literal Name that may or may not be normalized and may or may not contain Encoded LabelHashes.\n *\n * @see https://ensnode.io/docs/reference/terminology#literal-name\n */\n name: t.text(),\n }),\n (t) => ({\n idx: index().on(t.domainId),\n }),\n);\n\nexport const wrappedDomainRelations = relations(wrappedDomain, ({ one }) => ({\n domain: one(domain, {\n fields: [wrappedDomain.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [wrappedDomain.ownerId],\n references: [account.id],\n }),\n}));\n\n/**\n * Events\n */\n\nconst sharedEventColumns = (t: any) => ({\n id: t.text().primaryKey(),\n blockNumber: t.integer().notNull(),\n transactionID: t.hex().notNull(),\n});\n\nconst domainEvent = (t: any) => ({\n ...sharedEventColumns(t),\n domainId: t.hex().notNull(),\n});\n\nconst domainEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.domainId),\n // sorting index\n idx_compound: index().on(t.domainId, t.id),\n});\n\n// Domain Event Entities\n\nexport const transfer = onchainTable(\n \"transfers\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const newOwner = onchainTable(\n \"new_owners\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n parentDomainId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const newResolver = onchainTable(\n \"new_resolvers\",\n (t) => ({\n ...domainEvent(t),\n resolverId: t.text().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const newTTL = onchainTable(\n \"new_ttls\",\n (t) => ({\n ...domainEvent(t),\n ttl: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const wrappedTransfer = onchainTable(\n \"wrapped_transfers\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const nameWrapped = onchainTable(\n \"name_wrapped\",\n (t) => ({\n ...domainEvent(t),\n name: t.text(),\n fuses: t.integer().notNull(),\n ownerId: t.hex().notNull(),\n expiryDate: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const nameUnwrapped = onchainTable(\n \"name_unwrapped\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const fusesSet = onchainTable(\n \"fuses_set\",\n (t) => ({\n ...domainEvent(t),\n fuses: t.integer().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const expiryExtended = onchainTable(\n \"expiry_extended\",\n (t) => ({\n ...domainEvent(t),\n expiryDate: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\n// Registration Event Entities\n\nconst registrationEvent = (t: any) => ({\n ...sharedEventColumns(t),\n registrationId: t.hex().notNull(),\n});\n\nconst registrationEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.registrationId),\n // sorting index\n idx_compound: index().on(t.registrationId, t.id),\n});\n\nexport const nameRegistered = onchainTable(\n \"name_registered\",\n (t) => ({\n ...registrationEvent(t),\n registrantId: t.hex().notNull(),\n expiryDate: t.bigint().notNull(),\n }),\n registrationEventIndex,\n);\n\nexport const nameRenewed = onchainTable(\n \"name_renewed\",\n (t) => ({\n ...registrationEvent(t),\n expiryDate: t.bigint().notNull(),\n }),\n registrationEventIndex,\n);\n\nexport const nameTransferred = onchainTable(\n \"name_transferred\",\n (t) => ({\n ...registrationEvent(t),\n newOwnerId: t.hex().notNull(),\n }),\n registrationEventIndex,\n);\n\n// Resolver Event Entities\n\nconst resolverEvent = (t: any) => ({\n ...sharedEventColumns(t),\n resolverId: t.text().notNull(),\n});\n\nconst resolverEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.resolverId),\n // sorting index\n idx_compound: index().on(t.resolverId, t.id),\n});\n\nexport const addrChanged = onchainTable(\n \"addr_changed\",\n (t) => ({\n ...resolverEvent(t),\n addrId: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const multicoinAddrChanged = onchainTable(\n \"multicoin_addr_changed\",\n (t) => ({\n ...resolverEvent(t),\n coinType: t.bigint().notNull(),\n addr: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const nameChanged = onchainTable(\n \"name_changed\",\n (t) => ({\n ...resolverEvent(t),\n name: t.text().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const abiChanged = onchainTable(\n \"abi_changed\",\n (t) => ({\n ...resolverEvent(t),\n contentType: t.bigint().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const pubkeyChanged = onchainTable(\n \"pubkey_changed\",\n (t) => ({\n ...resolverEvent(t),\n x: t.hex().notNull(),\n y: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const textChanged = onchainTable(\n \"text_changed\",\n (t) => ({\n ...resolverEvent(t),\n key: t.text().notNull(),\n value: t.text(),\n }),\n resolverEventIndex,\n);\n\nexport const contenthashChanged = onchainTable(\n \"contenthash_changed\",\n (t) => ({\n ...resolverEvent(t),\n hash: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const interfaceChanged = onchainTable(\n \"interface_changed\",\n (t) => ({\n ...resolverEvent(t),\n interfaceID: t.hex().notNull(),\n implementer: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const authorisationChanged = onchainTable(\n \"authorisation_changed\",\n (t) => ({\n ...resolverEvent(t),\n owner: t.hex().notNull(),\n target: t.hex().notNull(),\n isAuthorized: t.boolean().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const versionChanged = onchainTable(\n \"version_changed\",\n (t) => ({\n ...resolverEvent(t),\n version: t.bigint().notNull(),\n }),\n resolverEventIndex,\n);\n\n/**\n * Event Relations\n */\n\n// Domain Event Relations\n\nexport const transferRelations = relations(transfer, ({ one }) => ({\n domain: one(domain, { fields: [transfer.domainId], references: [domain.id] }),\n owner: one(account, { fields: [transfer.ownerId], references: [account.id] }),\n}));\n\nexport const newOwnerRelations = relations(newOwner, ({ one }) => ({\n domain: one(domain, { fields: [newOwner.domainId], references: [domain.id] }),\n owner: one(account, { fields: [newOwner.ownerId], references: [account.id] }),\n parentDomain: one(domain, {\n fields: [newOwner.parentDomainId],\n references: [domain.id],\n }),\n}));\n\nexport const newResolverRelations = relations(newResolver, ({ one }) => ({\n domain: one(domain, {\n fields: [newResolver.domainId],\n references: [domain.id],\n }),\n resolver: one(resolver, {\n fields: [newResolver.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const newTTLRelations = relations(newTTL, ({ one }) => ({\n domain: one(domain, { fields: [newTTL.domainId], references: [domain.id] }),\n}));\n\nexport const wrappedTransferRelations = relations(wrappedTransfer, ({ one }) => ({\n domain: one(domain, {\n fields: [wrappedTransfer.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [wrappedTransfer.ownerId],\n references: [account.id],\n }),\n}));\n\nexport const nameWrappedRelations = relations(nameWrapped, ({ one }) => ({\n domain: one(domain, {\n fields: [nameWrapped.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [nameWrapped.ownerId],\n references: [account.id],\n }),\n}));\n\nexport const nameUnwrappedRelations = relations(nameUnwrapped, ({ one }) => ({\n domain: one(domain, {\n fields: [nameUnwrapped.domainId],\n references: [domain.id],\n }),\n owner: one(account, {\n fields: [nameUnwrapped.ownerId],\n references: [account.id],\n }),\n}));\n\nexport const fusesSetRelations = relations(fusesSet, ({ one }) => ({\n domain: one(domain, { fields: [fusesSet.domainId], references: [domain.id] }),\n}));\n\nexport const expiryExtendedRelations = relations(expiryExtended, ({ one }) => ({\n domain: one(domain, {\n fields: [expiryExtended.domainId],\n references: [domain.id],\n }),\n}));\n\n// Registration Event Relations\n\nexport const nameRegisteredRelations = relations(nameRegistered, ({ one }) => ({\n registration: one(registration, {\n fields: [nameRegistered.registrationId],\n references: [registration.id],\n }),\n registrant: one(account, {\n fields: [nameRegistered.registrantId],\n references: [account.id],\n }),\n}));\n\nexport const nameRenewedRelations = relations(nameRenewed, ({ one }) => ({\n registration: one(registration, {\n fields: [nameRenewed.registrationId],\n references: [registration.id],\n }),\n}));\n\nexport const nameTransferredRelations = relations(nameTransferred, ({ one }) => ({\n registration: one(registration, {\n fields: [nameTransferred.registrationId],\n references: [registration.id],\n }),\n newOwner: one(account, {\n fields: [nameTransferred.newOwnerId],\n references: [account.id],\n }),\n}));\n\n// Resolver Event Relations\n\nexport const addrChangedRelations = relations(addrChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [addrChanged.resolverId],\n references: [resolver.id],\n }),\n addr: one(account, {\n fields: [addrChanged.addrId],\n references: [account.id],\n }),\n}));\n\nexport const multicoinAddrChangedRelations = relations(multicoinAddrChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [multicoinAddrChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const nameChangedRelations = relations(nameChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [nameChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const abiChangedRelations = relations(abiChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [abiChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const pubkeyChangedRelations = relations(pubkeyChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [pubkeyChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const textChangedRelations = relations(textChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [textChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const contenthashChangedRelations = relations(contenthashChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [contenthashChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const interfaceChangedRelations = relations(interfaceChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [interfaceChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const authorisationChangedRelations = relations(authorisationChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [authorisationChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n\nexport const versionChangedRelations = relations(versionChanged, ({ one }) => ({\n resolver: one(resolver, {\n fields: [versionChanged.resolverId],\n references: [resolver.id],\n }),\n}));\n","// https://github.com/drizzle-team/drizzle-orm/issues/638\nexport function monkeypatchCollate(col: any, collation: string) {\n col.getSQLType = function (this: any) {\n return Object.getPrototypeOf(this).getSQLType.call(this) + \" COLLATE \" + collation;\n };\n return col;\n}\n","/**\n * Schema Definitions for optional tracking of additional Resolver record values\n *\n * Some background context: In the ENSv1 protocol, any number of Resolver contracts may exist on mainnet,\n * each of which can manage any number of records for any number of Nodes. That is, there is a\n * many-to-many relationship between Resolver contracts and Nodes: a Resolver manages records for\n * any number of Nodes and Nodes may have records managed by many Resolver contracts.\n *\n * During resolution, ENSIP-10 is followed to identify a single 'active' Resolver contract for a Node,\n * and it is only that Resolver that is queried in order to resolve the 'active' records for the given Node.\n *\n * A Resolver _contract_ in ENS represents the following:\n * Resolver Contract\n * - has many records for many Nodes\n * - has one `addr` record for a Node (see ENSIP-1)\n * - has one `name` record for a Node (see ENSIP-3)\n * - has one `abi` record for a Node (see ENSIP-4)\n * - has one `contenthash` record for a Node (see ENSIP-7)\n * - has one `pubkey` record for a Node (see PubkeyResolver.sol)\n * - has one `version` record for a Node (see IVersionableResolver.sol)\n * - has many address records for a Node (by coinType) (see ENSIP-9)\n * - has many text records for a Node (by key) (see ENSIP-5)\n * - has many interface records for a Node (by interfaceID) (see ENSIP-8)\n * - ...etc\n *\n * In the Subgraph schema, however, a Resolver _entity_ in the database does NOT represent a\n * Resolver _contract_: it represents the pairwise relationship between a Resolver contract and a\n * Node and is unique by ([chainId], Resolver contract address, Node). That is, it represents\n * \"a Node's relationship to an on-chain Resolver contract\".\n *\n * Naturally, this discrepancy may be confusing, but throughout this codebase a Resolver _entity_\n * refers to that _relationship_ between a Resolver and Node, _not_ the unique Resolver contract itself.\n *\n * The Subgraph describes the following datamodel instead:\n * Resolver (the Resolver-Node relationship)\n * - has one `addr` record for a Node\n * - has one `contenthash` record for a Node\n * - has one set of `coinTypes` storing the keys of all ENSIP-9 address records emitted for a Node\n * - NOTE(subgraph-compat): does _not_ track the implicit coinType of 60 for the `addr` record, if set\n * - has one set of `texts` storing the keys of all ENSIP-5 text records emitted for a Node\n *\n * In this file, we extend the subgraph's Resolver _entity_ with the following _additional_ records:\n * Resolver (the Resolver-Node relationship)\n * + has one `name` record for a Node (see ENSIP-3)\n * - see 'NOTE(resolver-records)' in subgraph.schema.ts\n * + has many `addressRecords` for a Node (by coinType) (see ENSIP-9)\n * - see ResolverAddressRecord below\n * - NOTE: _does_ represent the implicit coinType of 60 for the `addr` record, if set\n * + has many `textRecords` for a Node (by key) (see ENSIP-5)\n * - see ResolverTextRecord below\n *\n * Terminology Note:\n * - 'Subgraph Indexed Record Values' — `addr`, `contenthash`\n * - 'Additionally Indexed Record Values' — `name`, `addressRecords`, `textRecords`\n * - 'Active Resolver Record Values' — the actual record values retrieved by following the ENS protocol\n * specifications for forward resolutuon, including ENSIP-10 and CCIP-Read.\n *\n * NOTE: These additionally indexed record values still do NOT allow the caller to confidently resolve\n * records for names without following Forward Resolution according to the ENS protocol: a direct query\n * for the indexed values of a names's Resolver and retrieval of its values from the database is not\n * ENSIP-10 nor CCIP-Read compliant.\n */\n\nimport { onchainTable, relations, uniqueIndex } from \"ponder\";\nimport { resolver } from \"./subgraph.schema\";\n\n// add the additional `Resolver.records` relationship to subgraph's Resolver entity\nexport const ext_resolverRecords_resolver_relations = relations(resolver, ({ one, many }) => ({\n // resolver has many address records\n addressRecords: many(ext_resolverAddressRecords),\n\n // resolver has many text records\n // NOTE: can't use `texts` because Resolver.texts is used by subgraph schema\n textRecords: many(ext_resolverTextRecords),\n}));\n\nexport const ext_resolverAddressRecords = onchainTable(\n \"ext_resolver_address_records\",\n (t) => ({\n // keyed by (resolverId, coinType)\n id: t.text().primaryKey(),\n resolverId: t.text().notNull(),\n coinType: t.bigint().notNull(),\n\n address: t.text().notNull(),\n }),\n (t) => ({\n byResolverIdAndCoinType: uniqueIndex().on(t.resolverId, t.coinType),\n }),\n);\n\nexport const ext_resolverAddressRecordsRelations = relations(\n ext_resolverAddressRecords,\n ({ one, many }) => ({\n // belongs to resolver\n resolver: one(resolver, {\n fields: [ext_resolverAddressRecords.resolverId],\n references: [resolver.id],\n }),\n }),\n);\n\nexport const ext_resolverTextRecords = onchainTable(\n \"ext_resolver_text_records\",\n (t) => ({\n // keyed by (resolverId, key)\n id: t.text().primaryKey(),\n resolverId: t.text().notNull(),\n key: t.text().notNull(),\n\n value: t.text().notNull(),\n }),\n (t) => ({\n byResolverIdAndKey: uniqueIndex().on(t.resolverId, t.key),\n }),\n);\n\nexport const ext_resolverTextRecordsRelations = relations(\n ext_resolverTextRecords,\n ({ one, many }) => ({\n // belongs to resolver\n resolver: one(resolver, {\n fields: [ext_resolverTextRecords.resolverId],\n references: [resolver.id],\n }),\n }),\n);\n","import { index, onchainTable } from \"ponder\";\n\nexport const ext_nameSales = onchainTable(\n \"ext_name_sales\",\n (t) => ({\n /**\n * Unique and deterministic identifier of the onchain event associated with the sale.\n *\n * Composite key format: \"{chainId}-{blockNumber}-{logIndex}\" (e.g., \"1-1234567-5\")\n */\n id: t.text().primaryKey(),\n\n /**\n * The chain where the sale occurred.\n */\n chainId: t.integer().notNull(),\n\n /**\n * The block number on chainId where the sale occurred.\n */\n blockNumber: t.bigint().notNull(),\n\n /**\n * The log index position of the sale event within blockNumber.\n */\n logIndex: t.integer().notNull(),\n\n /**\n * The EVM transaction hash on chainId associated with the sale.\n */\n transactionHash: t.hex().notNull(),\n\n /**\n * The Seaport order hash.\n */\n orderHash: t.hex().notNull(),\n\n /**\n * The address of the contract on chainId that manages tokenId.\n */\n contractAddress: t.hex().notNull(),\n\n /**\n * The tokenId managed by contractAddress that was sold.\n *\n * In a general context (outside of TokenScope) ERC1155 NFTs may have\n * multiple copies, however TokenScope guarantees that all indexed NFTs\n * never have an amount / balance > 1.\n */\n tokenId: t.bigint().notNull(),\n\n /**\n * The CAIP-19 Asset Namespace of the token that was sold. Either `erc721` or `erc1155`.\n *\n * @see https://chainagnostic.org/CAIPs/caip-19\n */\n assetNamespace: t.text().notNull(),\n\n /**\n * The CAIP-19 Asset ID of token that was sold. This is a globally unique reference to the\n * specific asset in question.\n *\n * @see https://chainagnostic.org/CAIPs/caip-19\n */\n assetId: t.text().notNull(),\n\n /**\n * The namehash (Node) of the ENS domain that was sold.\n */\n domainId: t.hex().notNull(),\n\n /**\n * The account that bought the token controlling ownership of domainId from\n * the seller for the amount of currency associated with the sale.\n */\n buyer: t.hex().notNull(),\n\n /**\n * The account that sold the token controlling ownership of domainId to\n * buyer for the amount of currency associated with the sale.\n */\n seller: t.hex().notNull(),\n\n /**\n * Currency of the payment (ETH, USDC or DAI) from buyer to seller in exchange for tokenId.\n */\n currency: t.text().notNull(),\n\n /**\n * The amount of currency paid from buyer to seller in exchange for tokenId.\n *\n * Denominated in the smallest unit of currency.\n *\n * Amount interpretation depends on currency:\n * - ETH/WETH: Amount in wei (1 ETH = 10^18 wei)\n * - USDC: Amount in micro-units (1 USDC = 10^6 units)\n * - DAI: Amount in wei-equivalent (1 DAI = 10^18 units)\n */\n amount: t.bigint().notNull(),\n\n /**\n * Unix timestamp of the block timestamp when the sale occurred.\n */\n timestamp: t.bigint().notNull(),\n }),\n (t) => ({\n idx_domainId: index().on(t.domainId),\n idx_assetId: index().on(t.assetId),\n idx_buyer: index().on(t.buyer),\n idx_seller: index().on(t.seller),\n idx_timestamp: index().on(t.timestamp),\n }),\n);\n\nexport const ext_nameTokens = onchainTable(\n \"ext_name_tokens\",\n (t) => ({\n /**\n * The CAIP-19 Asset ID of the token.\n *\n * This is a globally unique reference to the token.\n *\n * @see https://chainagnostic.org/CAIPs/caip-19\n */\n id: t.text().primaryKey(),\n\n /**\n * The namehash (Node) of the ENS name associated with the token.\n *\n * Note: An ENS name may have more than one distinct token across time. It is\n * also possible for multiple distinct tokens for an ENS name to have\n * a mintStatus of `minted` at the same time. For example:\n * - When a direct subname of .eth is wrapped by the NameWrapper. This state\n * has one minted token for the name managed by the BaseRegistrar (this\n * token will be owned by the NameWrapper) and another minted token for\n * the name managed by the NameWrapper (owned by the effective owner of\n * the name).\n * - When a direct subname of .eth is wrapped by the NameWrapper and then\n * unwrapped. This state has one minted token (managed by the BaseRegistrar)\n * and another burned token (managed by the NameWrapper).\n */\n domainId: t.hex().notNull(),\n\n /**\n * The chain that manages the token.\n */\n chainId: t.integer().notNull(),\n\n /**\n * The address of the contract on chainId that manages the token.\n */\n contractAddress: t.hex().notNull(),\n\n /**\n * The tokenId of the token managed by contractAddress.\n *\n * In a general context (outside of TokenScope) ERC1155 NFTs may have\n * multiple copies, however TokenScope guarantees that all indexed NFTs\n * never have an amount / balance > 1.\n */\n tokenId: t.bigint().notNull(),\n\n /**\n * The CAIP-19 Asset Namespace of the token. Either `erc721` or `erc1155`.\n *\n * @see https://chainagnostic.org/CAIPs/caip-19\n */\n assetNamespace: t.text().notNull(),\n\n /**\n * The account that owns the token.\n *\n * Value is zeroAddress if and only if mintStatus is `burned`.\n *\n * Note: The owner of the token for a given domainId may differ from the\n * owner of the associated node in the registry. For example:\n * - Consider the case where address X owns the ENS name `foo.eth` in\n * both the BaseRegistrar and the Registry. If X sends a request directly\n * to the Registry to transfer ownership to Y, ownership of `foo.eth` will\n * be transferred to Y in the Registry but not in the BaseRegistrar.\n * - ... for the case above, the BaseRegistrar implements a `reclaim`\n * allowing the owner of the name in the BaseRegistrar to reclaim ownership\n * of the name in the Registry.\n *\n * Note: When a name is wrapped by the NameWrapper, the owner of the token\n * in the BaseRegistrar is the NameWrapper, while a new token for the name is\n * minted by the NameWrapper and owned by the effective owner of the name.\n */\n owner: t.hex().notNull(),\n\n /**\n * The mint status of the token. Either `minted` or `burned`.\n *\n * After we index a NFT we never delete it from our index. Instead, when an\n * indexed NFT is burned onchain we retain its record and update its mint\n * status as `burned`. If a NFT is minted again after it is burned its mint\n * status is updated to `minted`.\n */\n mintStatus: t.text().notNull(),\n }),\n (t) => ({\n idx_domainId: index().on(t.domainId),\n idx_owner: index().on(t.owner),\n }),\n);\n","/**\n * Schema Definitions for an extension of the subgraph schema to track Domain<->Resolver\n * connections by chainId. The subgraph never expected to track Resolvers across multiple chains,\n * but since we now index multiple chains, it becomes necessary to store the information encoding\n * \"to which Resolver on a specific chain does this Domain delegate\".\n */\n\nimport { onchainTable, relations, uniqueIndex } from \"ponder\";\nimport { domain, resolver } from \"./subgraph.schema\";\n\n// add the additional relationships to subgraph's Domain entity\nexport const ext_resolverRelations_domain_relations = relations(domain, ({ one, many }) => ({\n // domain has many resolver relations (i.e. one per chain, see above)\n resolverRelations: many(ext_domainResolverRelation),\n}));\n\n// add the additional relationships to subgraph's Resolver entity\nexport const ext_resolverRelations_resolver_relations = relations(resolver, ({ one, many }) => ({\n // resolver has many domain relations\n domainRelations: many(ext_domainResolverRelation),\n}));\n\n// tracks Domain-Resolver relationships by chainId (see above)\nexport const ext_domainResolverRelation = onchainTable(\n \"ext_domain_resolver_relations\",\n (t) => ({\n // keyed by (chainId, domainId)\n id: t.text().primaryKey(),\n chainId: t.integer().notNull(),\n domainId: t.text().notNull(),\n\n resolverId: t.text().notNull(),\n }),\n (t) => ({\n byChainIdAndDomain: uniqueIndex().on(t.chainId, t.domainId),\n }),\n);\n\nexport const ext_domainResolverRelationsRelations = relations(\n ext_domainResolverRelation,\n ({ one, many }) => ({\n // belongs to domain\n domain: one(domain, {\n fields: [ext_domainResolverRelation.domainId],\n references: [domain.id],\n }),\n // belongs to resolver\n resolver: one(resolver, {\n fields: [ext_domainResolverRelation.resolverId],\n references: [resolver.id],\n }),\n }),\n);\n","/**\n * Schema Definitions for tracking of ENS referrals.\n */\n\nimport { index, onchainTable, relations } from \"ponder\";\nimport { domain, account } from \"./subgraph.schema\";\n\n/**\n * A RegistrationReferral tracks individual occurences of referrals for ENS name registrations.\n */\nexport const ext_registrationReferral = onchainTable(\n \"ext_registration_referral\",\n (t) => ({\n // keyed by any arbitrary unique id, usually `event.id`\n id: t.text().primaryKey(),\n\n referrerId: t.hex().notNull(),\n domainId: t.text().notNull(),\n refereeId: t.hex().notNull(),\n baseCost: t.bigint().notNull(),\n premium: t.bigint().notNull(),\n total: t.bigint().notNull(),\n\n // chainId the transaction occurred on\n chainId: t.integer().notNull(),\n // transaction's hash\n transactionHash: t.hex().notNull(),\n // block's Unix timestamp in seconds\n timestamp: t.bigint().notNull(),\n }),\n (t) => ({\n byRefereeId: index().on(t.refereeId),\n byReferrerId: index().on(t.referrerId),\n }),\n);\n\nexport const ext_registrationReferral_relations = relations(\n ext_registrationReferral,\n ({ one, many }) => ({\n // RegistrationReferral references one Referrer\n referrer: one(ext_referrer, {\n fields: [ext_registrationReferral.referrerId],\n references: [ext_referrer.id],\n }),\n // RegistrationReferral references one Account (as referee)\n referee: one(account, {\n fields: [ext_registrationReferral.refereeId],\n references: [account.id],\n }),\n // RegistrationReferral references one Domain\n domain: one(domain, {\n fields: [ext_registrationReferral.domainId],\n references: [domain.id],\n }),\n }),\n);\n\n/**\n * A RenewalReferral tracks individual occurences of referrals for ENS name renewals.\n */\nexport const ext_renewalReferral = onchainTable(\n \"ext_renewal_referral\",\n (t) => ({\n // keyed by any arbitrary unique id, usually `event.id`\n id: t.text().primaryKey(),\n\n referrerId: t.hex().notNull(),\n refereeId: t.hex().notNull(),\n domainId: t.text().notNull(),\n cost: t.bigint().notNull(),\n\n // chainId the transaction occurred on\n chainId: t.integer().notNull(),\n // transaction's hash\n transactionHash: t.hex().notNull(),\n // Block's Unix timestamp in seconds\n timestamp: t.bigint().notNull(),\n }),\n (t) => ({\n byRefereeId: index().on(t.refereeId),\n byReferrerId: index().on(t.referrerId),\n }),\n);\n\nexport const ext_renewalReferral_relations = relations(ext_renewalReferral, ({ one, many }) => ({\n // RenewalReferral references one Referrer\n referrer: one(ext_referrer, {\n fields: [ext_renewalReferral.referrerId],\n references: [ext_referrer.id],\n }),\n // RenewalReferral references one Account (as referee)\n referee: one(account, {\n fields: [ext_renewalReferral.refereeId],\n references: [account.id],\n }),\n // RenewalReferral references one Domain\n domain: one(domain, {\n fields: [ext_renewalReferral.domainId],\n references: [domain.id],\n }),\n}));\n\n// add Domain relations\nexport const ext_referrals_domain_relations = relations(domain, ({ one, many }) => ({\n // Domain has many RegistrationReferrals\n registrationReferrals: many(ext_registrationReferral),\n\n // Domain has many RenewalReferrals\n renewalReferrals: many(ext_renewalReferral),\n}));\n\n/**\n * Referrer represents an individual referrer, keyed by their onchain address. It holds aggregate\n * statistics about referrals, namely the total value (in wei) they've referred to the ENS protocol.\n */\nexport const ext_referrer = onchainTable(\n \"ext_referral_totals\",\n (t) => ({\n // keyed by Referrer's id (bytes32 hex)\n id: t.hex().primaryKey(),\n valueWei: t.bigint().notNull(),\n }),\n (t) => ({}),\n);\n\nexport const ext_referrer_relations = relations(ext_referrer, ({ one, many }) => ({\n // Referrer has many RegistrationReferrals\n registrationReferrals: many(ext_registrationReferral),\n\n // Referrer has many RenewalReferrals\n renewalReferrals: many(ext_renewalReferral),\n}));\n","/**\n * Schema Definitions for tracking an Account's ENSIP-19 Primary Name(s) by CoinType.\n */\n\nimport { onchainTable, relations, uniqueIndex } from \"ponder\";\nimport { account } from \"./subgraph.schema\";\n\n// add the additional relationships to subgraph's Account entity\nexport const ext_primaryNames_domain_relations = relations(account, ({ one, many }) => ({\n // account has many primary names\n primaryNames: many(ext_primaryName),\n}));\n\n/**\n * Tracks an Account's ENSIP-19 Primary Name by CoinType.\n *\n * NOTE: this is NOT a cohesive, materialized index of ALL of an account's names, it is ONLY the\n * materialized index of its ENSIP-19 Primary Names backed by a StandaloneReverseRegistrar:\n * - default.reverse\n * - [coinType].reverse\n * - NOT *.addr.reverse\n *\n * So these records CANNOT be queried directly and used as a source of truth — you MUST perform\n * Forward Resolution to resolve a consistent set of an Account's ENSIP-19 Primary Names. These records\n * are used to power Protocol Acceleration for those ReverseResolvers backed by a StandloneReverseRegistrar.\n *\n * The emitted record values are interpreted according to `interpretNameRecordValue` — unnormalized\n * names and empty string values are interpreted as a deletion of the associated Primary Name entity.\n *\n * Note that this is an extension to the original subgraph schema and legacy subgraph compatibility\n * is not relevant.\n */\nexport const ext_primaryName = onchainTable(\n \"ext_primary_names\",\n (t) => ({\n // keyed by (address, coinType)\n id: t.text().primaryKey(),\n address: t.hex().notNull(),\n coinType: t.bigint().notNull(),\n\n /**\n * Represents the ENSIP-19 Primary Name value for a given (address, coinType).\n *\n * The value of this field is guaranteed to be a non-empty-string normalized ENS name.\n */\n name: t.text().notNull(),\n }),\n (t) => ({\n byAddressAndCoinType: uniqueIndex().on(t.address, t.coinType),\n }),\n);\n\nexport const ext_primaryNameRelations = relations(ext_primaryName, ({ one, many }) => ({\n // belongs to account\n account: one(account, {\n fields: [ext_primaryName.address],\n references: [account.id],\n }),\n}));\n"],"mappings":";AAAA,SAAS,OAAO,cAAc,iBAAiB;;;ACCxC,SAAS,mBAAmB,KAAU,WAAmB;AAC9D,MAAI,aAAa,WAAqB;AACpC,WAAO,OAAO,eAAe,IAAI,EAAE,WAAW,KAAK,IAAI,IAAI,cAAc;AAAA,EAC3E;AACA,SAAO;AACT;;;ADEO,IAAM,SAAS,aAAa,WAAW,CAAC,OAAO;AAAA;AAAA,EAEpD,IAAI,EAAE,IAAI,EAAE,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBvB,MAAM,EAAE,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBb,WAAW,EAAE,KAAK;AAAA;AAAA,EAGlB,WAAW,EAAE,IAAI;AAAA;AAAA,EAEjB,UAAU,EAAE,IAAI;AAAA;AAAA,EAGhB,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA;AAAA,EAG/C,mBAAmB,EAAE,IAAI;AAAA;AAAA,EAGzB,YAAY,EAAE,KAAK;AAAA;AAAA,EAGnB,KAAK,EAAE,OAAO;AAAA;AAAA,EAGd,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA;AAAA,EAE/C,WAAW,EAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,EAG9B,SAAS,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA,EAEzB,cAAc,EAAE,IAAI;AAAA;AAAA,EAEpB,gBAAgB,EAAE,IAAI;AAAA;AAAA,EAGtB,YAAY,EAAE,OAAO;AACvB,EAAE;AAIF,mBAAmB,OAAO,MAAM,KAAK;AACrC,mBAAmB,OAAO,WAAW,KAAK;AAEnC,IAAM,kBAAkB,UAAU,QAAQ,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA,EACnE,iBAAiB,IAAI,SAAS;AAAA,IAC5B,QAAQ,CAAC,OAAO,iBAAiB;AAAA,IACjC,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AAAA,EACD,OAAO,IAAI,SAAS,EAAE,QAAQ,CAAC,OAAO,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;AAAA,EAC1E,QAAQ,IAAI,QAAQ,EAAE,QAAQ,CAAC,OAAO,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;AAAA,EAC1E,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,OAAO,UAAU;AAAA,IAC1B,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AAAA,EACD,YAAY,KAAK,QAAQ,EAAE,cAAc,SAAS,CAAC;AAAA,EACnD,YAAY,IAAI,SAAS;AAAA,IACvB,QAAQ,CAAC,OAAO,YAAY;AAAA,IAC5B,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AAAA,EACD,cAAc,IAAI,SAAS;AAAA,IACzB,QAAQ,CAAC,OAAO,cAAc;AAAA,IAC9B,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AAAA,EACD,eAAe,IAAI,eAAe;AAAA,IAChC,QAAQ,CAAC,OAAO,EAAE;AAAA,IAClB,YAAY,CAAC,cAAc,QAAQ;AAAA,EACrC,CAAC;AAAA,EACD,cAAc,IAAI,cAAc;AAAA,IAC9B,QAAQ,CAAC,OAAO,EAAE;AAAA,IAClB,YAAY,CAAC,aAAa,QAAQ;AAAA,EACpC,CAAC;AAAA;AAAA,EAGD,WAAW,KAAK,QAAQ;AAAA,EACxB,WAAW,KAAK,QAAQ;AAAA,EACxB,cAAc,KAAK,WAAW;AAAA,EAC9B,SAAS,KAAK,MAAM;AAAA,EACpB,kBAAkB,KAAK,eAAe;AAAA,EACtC,cAAc,KAAK,WAAW;AAAA,EAC9B,gBAAgB,KAAK,aAAa;AAAA,EAClC,WAAW,KAAK,QAAQ;AAAA,EACxB,iBAAiB,KAAK,cAAc;AACtC,EAAE;AAMK,IAAM,UAAU,aAAa,YAAY,CAAC,OAAO;AAAA,EACtD,IAAI,EAAE,IAAI,EAAE,WAAW;AACzB,EAAE;AAEK,IAAM,mBAAmB,UAAU,SAAS,CAAC,EAAE,KAAK,OAAO;AAAA,EAChE,SAAS,KAAK,MAAM;AAAA,EACpB,gBAAgB,KAAK,aAAa;AAAA,EAClC,eAAe,KAAK,YAAY;AAClC,EAAE;AAMK,IAAM,WAAW;AAAA,EACtB;AAAA,EACA,CAAC,OAAO;AAAA;AAAA,IAEN,IAAI,EAAE,KAAK,EAAE,WAAW;AAAA;AAAA,IAExB,UAAU,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA,IAE1B,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAe;AAAA;AAAA,IAG1C,QAAQ,EAAE,IAAI;AAAA;AAAA,IAEd,aAAa,EAAE,KAAK;AAAA;AAAA;AAAA,IAGpB,OAAO,EAAE,KAAK,EAAE,MAAM;AAAA;AAAA;AAAA,IAGtB,WAAW,EAAE,OAAO,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAe5B,MAAM,EAAE,KAAK;AAAA,EACf;AAAA,EACA,CAAC,OAAO;AAAA,IACN,KAAK,MAAM,EAAE,GAAG,EAAE,QAAQ;AAAA,EAC5B;AACF;AAEO,IAAM,oBAAoB,UAAU,UAAU,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA,EACvE,MAAM,IAAI,SAAS,EAAE,QAAQ,CAAC,SAAS,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;AAAA,EAC1E,QAAQ,IAAI,QAAQ,EAAE,QAAQ,CAAC,SAAS,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;AAAA;AAAA,EAG5E,cAAc,KAAK,WAAW;AAAA,EAC9B,uBAAuB,KAAK,oBAAoB;AAAA,EAChD,cAAc,KAAK,WAAW;AAAA,EAC9B,aAAa,KAAK,UAAU;AAAA,EAC5B,gBAAgB,KAAK,aAAa;AAAA,EAClC,cAAc,KAAK,WAAW;AAAA,EAC9B,qBAAqB,KAAK,kBAAkB;AAAA,EAC5C,mBAAmB,KAAK,gBAAgB;AAAA,EACxC,uBAAuB,KAAK,oBAAoB;AAAA,EAChD,iBAAiB,KAAK,cAAc;AACtC,EAAE;AAMK,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA,CAAC,OAAO;AAAA;AAAA,IAEN,IAAI,EAAE,IAAI,EAAE,WAAW;AAAA;AAAA,IAEvB,UAAU,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA,IAE1B,kBAAkB,EAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,IAErC,YAAY,EAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,IAE/B,MAAM,EAAE,OAAO;AAAA;AAAA,IAEf,cAAc,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAoB9B,WAAW,EAAE,KAAK;AAAA,EACpB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,KAAK,MAAM,EAAE,GAAG,EAAE,QAAQ;AAAA,EAC5B;AACF;AAEO,IAAM,wBAAwB,UAAU,cAAc,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA,EAC/E,QAAQ,IAAI,QAAQ;AAAA,IAClB,QAAQ,CAAC,aAAa,QAAQ;AAAA,IAC9B,YAAY,CAAC,OAAO,EAAE;AAAA,EACxB,CAAC;AAAA,EACD,YAAY,IAAI,SAAS;AAAA,IACvB,QAAQ,CAAC,aAAa,YAAY;AAAA,IAClC,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AAAA;AAAA,EAGD,iBAAiB,KAAK,cAAc;AAAA,EACpC,cAAc,KAAK,WAAW;AAAA,EAC9B,kBAAkB,KAAK,eAAe;AACxC,EAAE;AAMK,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA,CAAC,OAAO;AAAA;AAAA,IAEN,IAAI,EAAE,IAAI,EAAE,WAAW;AAAA;AAAA,IAEvB,UAAU,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA,IAE1B,YAAY,EAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,IAE/B,OAAO,EAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,IAE3B,SAAS,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAmBzB,MAAM,EAAE,KAAK;AAAA,EACf;AAAA,EACA,CAAC,OAAO;AAAA,IACN,KAAK,MAAM,EAAE,GAAG,EAAE,QAAQ;AAAA,EAC5B;AACF;AAEO,IAAM,yBAAyB,UAAU,eAAe,CAAC,EAAE,IAAI,OAAO;AAAA,EAC3E,QAAQ,IAAI,QAAQ;AAAA,IAClB,QAAQ,CAAC,cAAc,QAAQ;AAAA,IAC/B,YAAY,CAAC,OAAO,EAAE;AAAA,EACxB,CAAC;AAAA,EACD,OAAO,IAAI,SAAS;AAAA,IAClB,QAAQ,CAAC,cAAc,OAAO;AAAA,IAC9B,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AACH,EAAE;AAMF,IAAM,qBAAqB,CAAC,OAAY;AAAA,EACtC,IAAI,EAAE,KAAK,EAAE,WAAW;AAAA,EACxB,aAAa,EAAE,QAAQ,EAAE,QAAQ;AAAA,EACjC,eAAe,EAAE,IAAI,EAAE,QAAQ;AACjC;AAEA,IAAM,cAAc,CAAC,OAAY;AAAA,EAC/B,GAAG,mBAAmB,CAAC;AAAA,EACvB,UAAU,EAAE,IAAI,EAAE,QAAQ;AAC5B;AAEA,IAAM,mBAAmB,CAAC,OAAY;AAAA;AAAA,EAEpC,KAAK,MAAM,EAAE,GAAG,EAAE,QAAQ;AAAA;AAAA,EAE1B,cAAc,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE;AAC3C;AAIO,IAAM,WAAW;AAAA,EACtB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,YAAY,CAAC;AAAA,IAChB,SAAS,EAAE,IAAI,EAAE,QAAQ;AAAA,EAC3B;AAAA,EACA;AACF;AAEO,IAAM,WAAW;AAAA,EACtB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,YAAY,CAAC;AAAA,IAChB,SAAS,EAAE,IAAI,EAAE,QAAQ;AAAA,IACzB,gBAAgB,EAAE,IAAI,EAAE,QAAQ;AAAA,EAClC;AAAA,EACA;AACF;AAEO,IAAM,cAAc;AAAA,EACzB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,YAAY,CAAC;AAAA,IAChB,YAAY,EAAE,KAAK,EAAE,QAAQ;AAAA,EAC/B;AAAA,EACA;AACF;AAEO,IAAM,SAAS;AAAA,EACpB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,YAAY,CAAC;AAAA,IAChB,KAAK,EAAE,OAAO,EAAE,QAAQ;AAAA,EAC1B;AAAA,EACA;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,YAAY,CAAC;AAAA,IAChB,SAAS,EAAE,IAAI,EAAE,QAAQ;AAAA,EAC3B;AAAA,EACA;AACF;AAEO,IAAM,cAAc;AAAA,EACzB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,YAAY,CAAC;AAAA,IAChB,MAAM,EAAE,KAAK;AAAA,IACb,OAAO,EAAE,QAAQ,EAAE,QAAQ;AAAA,IAC3B,SAAS,EAAE,IAAI,EAAE,QAAQ;AAAA,IACzB,YAAY,EAAE,OAAO,EAAE,QAAQ;AAAA,EACjC;AAAA,EACA;AACF;AAEO,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,YAAY,CAAC;AAAA,IAChB,SAAS,EAAE,IAAI,EAAE,QAAQ;AAAA,EAC3B;AAAA,EACA;AACF;AAEO,IAAM,WAAW;AAAA,EACtB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,YAAY,CAAC;AAAA,IAChB,OAAO,EAAE,QAAQ,EAAE,QAAQ;AAAA,EAC7B;AAAA,EACA;AACF;AAEO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,YAAY,CAAC;AAAA,IAChB,YAAY,EAAE,OAAO,EAAE,QAAQ;AAAA,EACjC;AAAA,EACA;AACF;AAIA,IAAM,oBAAoB,CAAC,OAAY;AAAA,EACrC,GAAG,mBAAmB,CAAC;AAAA,EACvB,gBAAgB,EAAE,IAAI,EAAE,QAAQ;AAClC;AAEA,IAAM,yBAAyB,CAAC,OAAY;AAAA;AAAA,EAE1C,KAAK,MAAM,EAAE,GAAG,EAAE,cAAc;AAAA;AAAA,EAEhC,cAAc,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE;AACjD;AAEO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,kBAAkB,CAAC;AAAA,IACtB,cAAc,EAAE,IAAI,EAAE,QAAQ;AAAA,IAC9B,YAAY,EAAE,OAAO,EAAE,QAAQ;AAAA,EACjC;AAAA,EACA;AACF;AAEO,IAAM,cAAc;AAAA,EACzB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,kBAAkB,CAAC;AAAA,IACtB,YAAY,EAAE,OAAO,EAAE,QAAQ;AAAA,EACjC;AAAA,EACA;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,kBAAkB,CAAC;AAAA,IACtB,YAAY,EAAE,IAAI,EAAE,QAAQ;AAAA,EAC9B;AAAA,EACA;AACF;AAIA,IAAM,gBAAgB,CAAC,OAAY;AAAA,EACjC,GAAG,mBAAmB,CAAC;AAAA,EACvB,YAAY,EAAE,KAAK,EAAE,QAAQ;AAC/B;AAEA,IAAM,qBAAqB,CAAC,OAAY;AAAA;AAAA,EAEtC,KAAK,MAAM,EAAE,GAAG,EAAE,UAAU;AAAA;AAAA,EAE5B,cAAc,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE;AAC7C;AAEO,IAAM,cAAc;AAAA,EACzB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,cAAc,CAAC;AAAA,IAClB,QAAQ,EAAE,IAAI,EAAE,QAAQ;AAAA,EAC1B;AAAA,EACA;AACF;AAEO,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,cAAc,CAAC;AAAA,IAClB,UAAU,EAAE,OAAO,EAAE,QAAQ;AAAA,IAC7B,MAAM,EAAE,IAAI,EAAE,QAAQ;AAAA,EACxB;AAAA,EACA;AACF;AAEO,IAAM,cAAc;AAAA,EACzB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,cAAc,CAAC;AAAA,IAClB,MAAM,EAAE,KAAK,EAAE,QAAQ;AAAA,EACzB;AAAA,EACA;AACF;AAEO,IAAM,aAAa;AAAA,EACxB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,cAAc,CAAC;AAAA,IAClB,aAAa,EAAE,OAAO,EAAE,QAAQ;AAAA,EAClC;AAAA,EACA;AACF;AAEO,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,cAAc,CAAC;AAAA,IAClB,GAAG,EAAE,IAAI,EAAE,QAAQ;AAAA,IACnB,GAAG,EAAE,IAAI,EAAE,QAAQ;AAAA,EACrB;AAAA,EACA;AACF;AAEO,IAAM,cAAc;AAAA,EACzB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,cAAc,CAAC;AAAA,IAClB,KAAK,EAAE,KAAK,EAAE,QAAQ;AAAA,IACtB,OAAO,EAAE,KAAK;AAAA,EAChB;AAAA,EACA;AACF;AAEO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,cAAc,CAAC;AAAA,IAClB,MAAM,EAAE,IAAI,EAAE,QAAQ;AAAA,EACxB;AAAA,EACA;AACF;AAEO,IAAM,mBAAmB;AAAA,EAC9B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,cAAc,CAAC;AAAA,IAClB,aAAa,EAAE,IAAI,EAAE,QAAQ;AAAA,IAC7B,aAAa,EAAE,IAAI,EAAE,QAAQ;AAAA,EAC/B;AAAA,EACA;AACF;AAEO,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,cAAc,CAAC;AAAA,IAClB,OAAO,EAAE,IAAI,EAAE,QAAQ;AAAA,IACvB,QAAQ,EAAE,IAAI,EAAE,QAAQ;AAAA,IACxB,cAAc,EAAE,QAAQ,EAAE,QAAQ;AAAA,EACpC;AAAA,EACA;AACF;AAEO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,GAAG,cAAc,CAAC;AAAA,IAClB,SAAS,EAAE,OAAO,EAAE,QAAQ;AAAA,EAC9B;AAAA,EACA;AACF;AAQO,IAAM,oBAAoB,UAAU,UAAU,CAAC,EAAE,IAAI,OAAO;AAAA,EACjE,QAAQ,IAAI,QAAQ,EAAE,QAAQ,CAAC,SAAS,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;AAAA,EAC5E,OAAO,IAAI,SAAS,EAAE,QAAQ,CAAC,SAAS,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC9E,EAAE;AAEK,IAAM,oBAAoB,UAAU,UAAU,CAAC,EAAE,IAAI,OAAO;AAAA,EACjE,QAAQ,IAAI,QAAQ,EAAE,QAAQ,CAAC,SAAS,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;AAAA,EAC5E,OAAO,IAAI,SAAS,EAAE,QAAQ,CAAC,SAAS,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;AAAA,EAC5E,cAAc,IAAI,QAAQ;AAAA,IACxB,QAAQ,CAAC,SAAS,cAAc;AAAA,IAChC,YAAY,CAAC,OAAO,EAAE;AAAA,EACxB,CAAC;AACH,EAAE;AAEK,IAAM,uBAAuB,UAAU,aAAa,CAAC,EAAE,IAAI,OAAO;AAAA,EACvE,QAAQ,IAAI,QAAQ;AAAA,IAClB,QAAQ,CAAC,YAAY,QAAQ;AAAA,IAC7B,YAAY,CAAC,OAAO,EAAE;AAAA,EACxB,CAAC;AAAA,EACD,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,YAAY,UAAU;AAAA,IAC/B,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AACH,EAAE;AAEK,IAAM,kBAAkB,UAAU,QAAQ,CAAC,EAAE,IAAI,OAAO;AAAA,EAC7D,QAAQ,IAAI,QAAQ,EAAE,QAAQ,CAAC,OAAO,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;AAC5E,EAAE;AAEK,IAAM,2BAA2B,UAAU,iBAAiB,CAAC,EAAE,IAAI,OAAO;AAAA,EAC/E,QAAQ,IAAI,QAAQ;AAAA,IAClB,QAAQ,CAAC,gBAAgB,QAAQ;AAAA,IACjC,YAAY,CAAC,OAAO,EAAE;AAAA,EACxB,CAAC;AAAA,EACD,OAAO,IAAI,SAAS;AAAA,IAClB,QAAQ,CAAC,gBAAgB,OAAO;AAAA,IAChC,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AACH,EAAE;AAEK,IAAM,uBAAuB,UAAU,aAAa,CAAC,EAAE,IAAI,OAAO;AAAA,EACvE,QAAQ,IAAI,QAAQ;AAAA,IAClB,QAAQ,CAAC,YAAY,QAAQ;AAAA,IAC7B,YAAY,CAAC,OAAO,EAAE;AAAA,EACxB,CAAC;AAAA,EACD,OAAO,IAAI,SAAS;AAAA,IAClB,QAAQ,CAAC,YAAY,OAAO;AAAA,IAC5B,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AACH,EAAE;AAEK,IAAM,yBAAyB,UAAU,eAAe,CAAC,EAAE,IAAI,OAAO;AAAA,EAC3E,QAAQ,IAAI,QAAQ;AAAA,IAClB,QAAQ,CAAC,cAAc,QAAQ;AAAA,IAC/B,YAAY,CAAC,OAAO,EAAE;AAAA,EACxB,CAAC;AAAA,EACD,OAAO,IAAI,SAAS;AAAA,IAClB,QAAQ,CAAC,cAAc,OAAO;AAAA,IAC9B,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AACH,EAAE;AAEK,IAAM,oBAAoB,UAAU,UAAU,CAAC,EAAE,IAAI,OAAO;AAAA,EACjE,QAAQ,IAAI,QAAQ,EAAE,QAAQ,CAAC,SAAS,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;AAC9E,EAAE;AAEK,IAAM,0BAA0B,UAAU,gBAAgB,CAAC,EAAE,IAAI,OAAO;AAAA,EAC7E,QAAQ,IAAI,QAAQ;AAAA,IAClB,QAAQ,CAAC,eAAe,QAAQ;AAAA,IAChC,YAAY,CAAC,OAAO,EAAE;AAAA,EACxB,CAAC;AACH,EAAE;AAIK,IAAM,0BAA0B,UAAU,gBAAgB,CAAC,EAAE,IAAI,OAAO;AAAA,EAC7E,cAAc,IAAI,cAAc;AAAA,IAC9B,QAAQ,CAAC,eAAe,cAAc;AAAA,IACtC,YAAY,CAAC,aAAa,EAAE;AAAA,EAC9B,CAAC;AAAA,EACD,YAAY,IAAI,SAAS;AAAA,IACvB,QAAQ,CAAC,eAAe,YAAY;AAAA,IACpC,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AACH,EAAE;AAEK,IAAM,uBAAuB,UAAU,aAAa,CAAC,EAAE,IAAI,OAAO;AAAA,EACvE,cAAc,IAAI,cAAc;AAAA,IAC9B,QAAQ,CAAC,YAAY,cAAc;AAAA,IACnC,YAAY,CAAC,aAAa,EAAE;AAAA,EAC9B,CAAC;AACH,EAAE;AAEK,IAAM,2BAA2B,UAAU,iBAAiB,CAAC,EAAE,IAAI,OAAO;AAAA,EAC/E,cAAc,IAAI,cAAc;AAAA,IAC9B,QAAQ,CAAC,gBAAgB,cAAc;AAAA,IACvC,YAAY,CAAC,aAAa,EAAE;AAAA,EAC9B,CAAC;AAAA,EACD,UAAU,IAAI,SAAS;AAAA,IACrB,QAAQ,CAAC,gBAAgB,UAAU;AAAA,IACnC,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AACH,EAAE;AAIK,IAAM,uBAAuB,UAAU,aAAa,CAAC,EAAE,IAAI,OAAO;AAAA,EACvE,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,YAAY,UAAU;AAAA,IAC/B,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AAAA,EACD,MAAM,IAAI,SAAS;AAAA,IACjB,QAAQ,CAAC,YAAY,MAAM;AAAA,IAC3B,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AACH,EAAE;AAEK,IAAM,gCAAgC,UAAU,sBAAsB,CAAC,EAAE,IAAI,OAAO;AAAA,EACzF,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,qBAAqB,UAAU;AAAA,IACxC,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AACH,EAAE;AAEK,IAAM,uBAAuB,UAAU,aAAa,CAAC,EAAE,IAAI,OAAO;AAAA,EACvE,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,YAAY,UAAU;AAAA,IAC/B,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AACH,EAAE;AAEK,IAAM,sBAAsB,UAAU,YAAY,CAAC,EAAE,IAAI,OAAO;AAAA,EACrE,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,WAAW,UAAU;AAAA,IAC9B,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AACH,EAAE;AAEK,IAAM,yBAAyB,UAAU,eAAe,CAAC,EAAE,IAAI,OAAO;AAAA,EAC3E,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,cAAc,UAAU;AAAA,IACjC,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AACH,EAAE;AAEK,IAAM,uBAAuB,UAAU,aAAa,CAAC,EAAE,IAAI,OAAO;AAAA,EACvE,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,YAAY,UAAU;AAAA,IAC/B,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AACH,EAAE;AAEK,IAAM,8BAA8B,UAAU,oBAAoB,CAAC,EAAE,IAAI,OAAO;AAAA,EACrF,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,mBAAmB,UAAU;AAAA,IACtC,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AACH,EAAE;AAEK,IAAM,4BAA4B,UAAU,kBAAkB,CAAC,EAAE,IAAI,OAAO;AAAA,EACjF,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,iBAAiB,UAAU;AAAA,IACpC,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AACH,EAAE;AAEK,IAAM,gCAAgC,UAAU,sBAAsB,CAAC,EAAE,IAAI,OAAO;AAAA,EACzF,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,qBAAqB,UAAU;AAAA,IACxC,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AACH,EAAE;AAEK,IAAM,0BAA0B,UAAU,gBAAgB,CAAC,EAAE,IAAI,OAAO;AAAA,EAC7E,UAAU,IAAI,UAAU;AAAA,IACtB,QAAQ,CAAC,eAAe,UAAU;AAAA,IAClC,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1B,CAAC;AACH,EAAE;;;AE7rBF,SAAS,gBAAAA,eAAc,aAAAC,YAAW,mBAAmB;AAI9C,IAAM,yCAAyCC,WAAU,UAAU,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,EAE5F,gBAAgB,KAAK,0BAA0B;AAAA;AAAA;AAAA,EAI/C,aAAa,KAAK,uBAAuB;AAC3C,EAAE;AAEK,IAAM,6BAA6BC;AAAA,EACxC;AAAA,EACA,CAAC,OAAO;AAAA;AAAA,IAEN,IAAI,EAAE,KAAK,EAAE,WAAW;AAAA,IACxB,YAAY,EAAE,KAAK,EAAE,QAAQ;AAAA,IAC7B,UAAU,EAAE,OAAO,EAAE,QAAQ;AAAA,IAE7B,SAAS,EAAE,KAAK,EAAE,QAAQ;AAAA,EAC5B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,yBAAyB,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ;AAAA,EACpE;AACF;AAEO,IAAM,sCAAsCD;AAAA,EACjD;AAAA,EACA,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,IAElB,UAAU,IAAI,UAAU;AAAA,MACtB,QAAQ,CAAC,2BAA2B,UAAU;AAAA,MAC9C,YAAY,CAAC,SAAS,EAAE;AAAA,IAC1B,CAAC;AAAA,EACH;AACF;AAEO,IAAM,0BAA0BC;AAAA,EACrC;AAAA,EACA,CAAC,OAAO;AAAA;AAAA,IAEN,IAAI,EAAE,KAAK,EAAE,WAAW;AAAA,IACxB,YAAY,EAAE,KAAK,EAAE,QAAQ;AAAA,IAC7B,KAAK,EAAE,KAAK,EAAE,QAAQ;AAAA,IAEtB,OAAO,EAAE,KAAK,EAAE,QAAQ;AAAA,EAC1B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,oBAAoB,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG;AAAA,EAC1D;AACF;AAEO,IAAM,mCAAmCD;AAAA,EAC9C;AAAA,EACA,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,IAElB,UAAU,IAAI,UAAU;AAAA,MACtB,QAAQ,CAAC,wBAAwB,UAAU;AAAA,MAC3C,YAAY,CAAC,SAAS,EAAE;AAAA,IAC1B,CAAC;AAAA,EACH;AACF;;;AC9HA,SAAS,SAAAE,QAAO,gBAAAC,qBAAoB;AAE7B,IAAM,gBAAgBA;AAAA,EAC3B;AAAA,EACA,CAAC,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMN,IAAI,EAAE,KAAK,EAAE,WAAW;AAAA;AAAA;AAAA;AAAA,IAKxB,SAAS,EAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,IAK7B,aAAa,EAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,IAKhC,UAAU,EAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,IAK9B,iBAAiB,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,IAKjC,WAAW,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,IAK3B,iBAAiB,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASjC,SAAS,EAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO5B,gBAAgB,EAAE,KAAK,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQjC,SAAS,EAAE,KAAK,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,IAK1B,UAAU,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,IAM1B,OAAO,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,IAMvB,QAAQ,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,IAKxB,UAAU,EAAE,KAAK,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAY3B,QAAQ,EAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,IAK3B,WAAW,EAAE,OAAO,EAAE,QAAQ;AAAA,EAChC;AAAA,EACA,CAAC,OAAO;AAAA,IACN,cAAcD,OAAM,EAAE,GAAG,EAAE,QAAQ;AAAA,IACnC,aAAaA,OAAM,EAAE,GAAG,EAAE,OAAO;AAAA,IACjC,WAAWA,OAAM,EAAE,GAAG,EAAE,KAAK;AAAA,IAC7B,YAAYA,OAAM,EAAE,GAAG,EAAE,MAAM;AAAA,IAC/B,eAAeA,OAAM,EAAE,GAAG,EAAE,SAAS;AAAA,EACvC;AACF;AAEO,IAAM,iBAAiBC;AAAA,EAC5B;AAAA,EACA,CAAC,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQN,IAAI,EAAE,KAAK,EAAE,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAiBxB,UAAU,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,IAK1B,SAAS,EAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA,IAK7B,iBAAiB,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASjC,SAAS,EAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO5B,gBAAgB,EAAE,KAAK,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAqBjC,OAAO,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUvB,YAAY,EAAE,KAAK,EAAE,QAAQ;AAAA,EAC/B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,cAAcD,OAAM,EAAE,GAAG,EAAE,QAAQ;AAAA,IACnC,WAAWA,OAAM,EAAE,GAAG,EAAE,KAAK;AAAA,EAC/B;AACF;;;ACrMA,SAAS,gBAAAE,eAAc,aAAAC,YAAW,eAAAC,oBAAmB;AAI9C,IAAM,yCAAyCC,WAAU,QAAQ,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,EAE1F,mBAAmB,KAAK,0BAA0B;AACpD,EAAE;AAGK,IAAM,2CAA2CA,WAAU,UAAU,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,EAE9F,iBAAiB,KAAK,0BAA0B;AAClD,EAAE;AAGK,IAAM,6BAA6BC;AAAA,EACxC;AAAA,EACA,CAAC,OAAO;AAAA;AAAA,IAEN,IAAI,EAAE,KAAK,EAAE,WAAW;AAAA,IACxB,SAAS,EAAE,QAAQ,EAAE,QAAQ;AAAA,IAC7B,UAAU,EAAE,KAAK,EAAE,QAAQ;AAAA,IAE3B,YAAY,EAAE,KAAK,EAAE,QAAQ;AAAA,EAC/B;AAAA,EACA,CAAC,OAAO;AAAA,IACN,oBAAoBC,aAAY,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ;AAAA,EAC5D;AACF;AAEO,IAAM,uCAAuCF;AAAA,EAClD;AAAA,EACA,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,IAElB,QAAQ,IAAI,QAAQ;AAAA,MAClB,QAAQ,CAAC,2BAA2B,QAAQ;AAAA,MAC5C,YAAY,CAAC,OAAO,EAAE;AAAA,IACxB,CAAC;AAAA;AAAA,IAED,UAAU,IAAI,UAAU;AAAA,MACtB,QAAQ,CAAC,2BAA2B,UAAU;AAAA,MAC9C,YAAY,CAAC,SAAS,EAAE;AAAA,IAC1B,CAAC;AAAA,EACH;AACF;;;AChDA,SAAS,SAAAG,QAAO,gBAAAC,eAAc,aAAAC,kBAAiB;AAMxC,IAAM,2BAA2BC;AAAA,EACtC;AAAA,EACA,CAAC,OAAO;AAAA;AAAA,IAEN,IAAI,EAAE,KAAK,EAAE,WAAW;AAAA,IAExB,YAAY,EAAE,IAAI,EAAE,QAAQ;AAAA,IAC5B,UAAU,EAAE,KAAK,EAAE,QAAQ;AAAA,IAC3B,WAAW,EAAE,IAAI,EAAE,QAAQ;AAAA,IAC3B,UAAU,EAAE,OAAO,EAAE,QAAQ;AAAA,IAC7B,SAAS,EAAE,OAAO,EAAE,QAAQ;AAAA,IAC5B,OAAO,EAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,IAG1B,SAAS,EAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,IAE7B,iBAAiB,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA,IAEjC,WAAW,EAAE,OAAO,EAAE,QAAQ;AAAA,EAChC;AAAA,EACA,CAAC,OAAO;AAAA,IACN,aAAaC,OAAM,EAAE,GAAG,EAAE,SAAS;AAAA,IACnC,cAAcA,OAAM,EAAE,GAAG,EAAE,UAAU;AAAA,EACvC;AACF;AAEO,IAAM,qCAAqCC;AAAA,EAChD;AAAA,EACA,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,IAElB,UAAU,IAAI,cAAc;AAAA,MAC1B,QAAQ,CAAC,yBAAyB,UAAU;AAAA,MAC5C,YAAY,CAAC,aAAa,EAAE;AAAA,IAC9B,CAAC;AAAA;AAAA,IAED,SAAS,IAAI,SAAS;AAAA,MACpB,QAAQ,CAAC,yBAAyB,SAAS;AAAA,MAC3C,YAAY,CAAC,QAAQ,EAAE;AAAA,IACzB,CAAC;AAAA;AAAA,IAED,QAAQ,IAAI,QAAQ;AAAA,MAClB,QAAQ,CAAC,yBAAyB,QAAQ;AAAA,MAC1C,YAAY,CAAC,OAAO,EAAE;AAAA,IACxB,CAAC;AAAA,EACH;AACF;AAKO,IAAM,sBAAsBF;AAAA,EACjC;AAAA,EACA,CAAC,OAAO;AAAA;AAAA,IAEN,IAAI,EAAE,KAAK,EAAE,WAAW;AAAA,IAExB,YAAY,EAAE,IAAI,EAAE,QAAQ;AAAA,IAC5B,WAAW,EAAE,IAAI,EAAE,QAAQ;AAAA,IAC3B,UAAU,EAAE,KAAK,EAAE,QAAQ;AAAA,IAC3B,MAAM,EAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,IAGzB,SAAS,EAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,IAE7B,iBAAiB,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA,IAEjC,WAAW,EAAE,OAAO,EAAE,QAAQ;AAAA,EAChC;AAAA,EACA,CAAC,OAAO;AAAA,IACN,aAAaC,OAAM,EAAE,GAAG,EAAE,SAAS;AAAA,IACnC,cAAcA,OAAM,EAAE,GAAG,EAAE,UAAU;AAAA,EACvC;AACF;AAEO,IAAM,gCAAgCC,WAAU,qBAAqB,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,EAE9F,UAAU,IAAI,cAAc;AAAA,IAC1B,QAAQ,CAAC,oBAAoB,UAAU;AAAA,IACvC,YAAY,CAAC,aAAa,EAAE;AAAA,EAC9B,CAAC;AAAA;AAAA,EAED,SAAS,IAAI,SAAS;AAAA,IACpB,QAAQ,CAAC,oBAAoB,SAAS;AAAA,IACtC,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AAAA;AAAA,EAED,QAAQ,IAAI,QAAQ;AAAA,IAClB,QAAQ,CAAC,oBAAoB,QAAQ;AAAA,IACrC,YAAY,CAAC,OAAO,EAAE;AAAA,EACxB,CAAC;AACH,EAAE;AAGK,IAAM,iCAAiCA,WAAU,QAAQ,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,EAElF,uBAAuB,KAAK,wBAAwB;AAAA;AAAA,EAGpD,kBAAkB,KAAK,mBAAmB;AAC5C,EAAE;AAMK,IAAM,eAAeF;AAAA,EAC1B;AAAA,EACA,CAAC,OAAO;AAAA;AAAA,IAEN,IAAI,EAAE,IAAI,EAAE,WAAW;AAAA,IACvB,UAAU,EAAE,OAAO,EAAE,QAAQ;AAAA,EAC/B;AAAA,EACA,CAAC,OAAO,CAAC;AACX;AAEO,IAAM,yBAAyBE,WAAU,cAAc,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,EAEhF,uBAAuB,KAAK,wBAAwB;AAAA;AAAA,EAGpD,kBAAkB,KAAK,mBAAmB;AAC5C,EAAE;;;AC/HF,SAAS,gBAAAC,eAAc,aAAAC,YAAW,eAAAC,oBAAmB;AAI9C,IAAM,oCAAoCC,WAAU,SAAS,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,EAEtF,cAAc,KAAK,eAAe;AACpC,EAAE;AAqBK,IAAM,kBAAkBC;AAAA,EAC7B;AAAA,EACA,CAAC,OAAO;AAAA;AAAA,IAEN,IAAI,EAAE,KAAK,EAAE,WAAW;AAAA,IACxB,SAAS,EAAE,IAAI,EAAE,QAAQ;AAAA,IACzB,UAAU,EAAE,OAAO,EAAE,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO7B,MAAM,EAAE,KAAK,EAAE,QAAQ;AAAA,EACzB;AAAA,EACA,CAAC,OAAO;AAAA,IACN,sBAAsBC,aAAY,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ;AAAA,EAC9D;AACF;AAEO,IAAM,2BAA2BF,WAAU,iBAAiB,CAAC,EAAE,KAAK,KAAK,OAAO;AAAA;AAAA,EAErF,SAAS,IAAI,SAAS;AAAA,IACpB,QAAQ,CAAC,gBAAgB,OAAO;AAAA,IAChC,YAAY,CAAC,QAAQ,EAAE;AAAA,EACzB,CAAC;AACH,EAAE;","names":["onchainTable","relations","relations","onchainTable","index","onchainTable","onchainTable","relations","uniqueIndex","relations","onchainTable","uniqueIndex","index","onchainTable","relations","onchainTable","index","relations","onchainTable","relations","uniqueIndex","relations","onchainTable","uniqueIndex"]}
|
|
1
|
+
{"version":3,"sources":["../src/schemas/subgraph.schema.ts","../src/lib/collate.ts","../src/schemas/protocol-acceleration.schema.ts","../src/schemas/referrals.schema.ts","../src/schemas/tokenscope.schema.ts"],"sourcesContent":["import { index, onchainTable, relations } from \"ponder\";\nimport type { Address } from \"viem\";\nimport { monkeypatchCollate } from \"../lib/collate\";\n\n/**\n * This file specifies an Legacy-ENS-Subgraph-Compatible Ponder Schema.\n *\n * When the subgraph_prefix is stripped and the resulting schema is paired with @ensnode/ponder-subgraph,\n * the resulting GraphQL API is fully compatible with the legacy ENS Subgraph.\n */\n\n/**\n * Domain\n */\n\nexport const subgraph_domain = onchainTable(\n \"subgraph_domains\",\n (t) => ({\n // The namehash of the name\n id: t.hex().primaryKey(),\n\n /**\n * The ENS Name that this Domain represents.\n *\n * If {@link ENSIndexerConfig#isSubgraphCompatible}, this value is guaranteed to be either:\n * a) null (in the case of the root node), or\n * b) a Subgraph Interpreted Name.\n *\n * @see https://ensnode.io/docs/reference/terminology#subgraph-indexability--labelname-interpretation\n *\n * Otherwise, this value is guaranteed to be an Interpreted Name, which is either:\n * a) a normalized Name, or\n * b) a Name entirely consisting of Interpreted Labels.\n *\n * Note that the type of the column will remain string | null, for legacy subgraph compatibility,\n * but in practice will never be null. The Root node's name will be '' (empty string).\n *\n * @see https://ensnode.io/docs/reference/terminology#interpreted-name\n */\n name: t.text(),\n\n /**\n * The Label associated with the Domain.\n *\n * If {@link ENSIndexerConfig#isSubgraphCompatible}, this value is guaranteed to be either:\n * a) null, in the case of the root Node or a name whose childmost label is subgraph-unindexable, or\n * b) a subgraph-indexable Subgraph Interpreted Label (i.e. a Literal Label of undefined normalization).\n *\n * @see https://ensnode.io/docs/reference/terminology#subgraph-indexability--labelname-interpretation\n *\n * Otherwise, this value is guaranteed to be an Interpreted Label which is either:\n * a) null, exclusively in the case of the root Node,\n * b) a normalized Label, or\n * c) an Encoded LabelHash, which encodes either\n * i. in the case of an Unknown Label, the LabelHash emitted onchain, or\n * ii. in the case of an Unnormalized Label, the LabelHash of the Literal Label value found onchain.\n *\n * @see https://ensnode.io/docs/reference/terminology#interpreted-label\n */\n labelName: t.text(),\n\n // keccak256(labelName)\n labelhash: t.hex(),\n // The namehash (id) of the parent name\n parentId: t.hex(),\n\n // The number of subdomains\n subdomainCount: t.integer().notNull().default(0),\n\n // Address logged from current resolver, if any\n resolvedAddressId: t.hex(),\n\n // The resolver that controls the domain's settings\n resolverId: t.text(),\n\n // The time-to-live (TTL) value of the domain's records\n ttl: t.bigint(),\n\n // Indicates whether the domain has been migrated to a new registrar\n isMigrated: t.boolean().notNull().default(false),\n // The time when the domain was created\n createdAt: t.bigint().notNull(),\n\n // The account that owns the domain\n ownerId: t.hex().notNull(),\n // The account that owns the ERC721 NFT for the domain\n registrantId: t.hex(),\n // The account that owns the wrapped domain\n wrappedOwnerId: t.hex(),\n\n // The expiry date for the domain, from either the registration, or the wrapped domain if PCC is burned\n expiryDate: t.bigint(),\n }),\n (t) => ({\n byLabelhash: index().on(t.labelhash),\n byParentId: index().on(t.parentId),\n byOwnerId: index().on(t.ownerId),\n byRegistrantId: index().on(t.registrantId),\n byWrappedOwnerId: index().on(t.wrappedOwnerId),\n }),\n);\n\n// monkeypatch drizzle's column (necessary to match graph-node default collation \"C\")\n// https://github.com/drizzle-team/drizzle-orm/issues/638\nmonkeypatchCollate(subgraph_domain.name, '\"C\"');\nmonkeypatchCollate(subgraph_domain.labelName, '\"C\"');\n\nexport const subgraph_domainRelations = relations(subgraph_domain, ({ one, many }) => ({\n resolvedAddress: one(subgraph_account, {\n fields: [subgraph_domain.resolvedAddressId],\n references: [subgraph_account.id],\n }),\n owner: one(subgraph_account, {\n fields: [subgraph_domain.ownerId],\n references: [subgraph_account.id],\n }),\n parent: one(subgraph_domain, {\n fields: [subgraph_domain.parentId],\n references: [subgraph_domain.id],\n }),\n resolver: one(subgraph_resolver, {\n fields: [subgraph_domain.resolverId],\n references: [subgraph_resolver.id],\n }),\n subdomains: many(subgraph_domain, { relationName: \"parent\" }),\n registrant: one(subgraph_account, {\n fields: [subgraph_domain.registrantId],\n references: [subgraph_account.id],\n }),\n wrappedOwner: one(subgraph_account, {\n fields: [subgraph_domain.wrappedOwnerId],\n references: [subgraph_account.id],\n }),\n wrappedDomain: one(subgraph_wrappedDomain, {\n fields: [subgraph_domain.id],\n references: [subgraph_wrappedDomain.domainId],\n }),\n registration: one(subgraph_registration, {\n fields: [subgraph_domain.id],\n references: [subgraph_registration.domainId],\n }),\n\n // event relations\n transfers: many(subgraph_transfer),\n newOwners: many(subgraph_newOwner),\n newResolvers: many(subgraph_newResolver),\n newTTLs: many(subgraph_newTTL),\n wrappedTransfers: many(subgraph_wrappedTransfer),\n nameWrappeds: many(subgraph_nameWrapped),\n nameUnwrappeds: many(subgraph_nameUnwrapped),\n fusesSets: many(subgraph_fusesSet),\n expiryExtendeds: many(subgraph_expiryExtended),\n}));\n\n/**\n * Account\n */\n\nexport const subgraph_account = onchainTable(\"subgraph_accounts\", (t) => ({\n id: t.hex().primaryKey(),\n}));\n\nexport const subgraph_accountRelations = relations(subgraph_account, ({ many }) => ({\n domains: many(subgraph_domain),\n wrappedDomains: many(subgraph_wrappedDomain),\n registrations: many(subgraph_registration),\n}));\n\n/**\n * Resolver\n */\n\nexport const subgraph_resolver = onchainTable(\n \"subgraph_resolvers\",\n (t) => ({\n // The unique identifier for this resolver, which is a concatenation of the domain namehash and the resolver address\n id: t.text().primaryKey(),\n // The domain that this resolver is associated with\n domainId: t.hex().notNull(),\n // The address of the resolver contract\n address: t.hex().notNull().$type<Address>(),\n\n // The current value of the 'addr' record for this resolver, as determined by the associated events\n addrId: t.hex(),\n // The content hash for this resolver, in binary format\n contentHash: t.text(),\n // The set of observed text record keys for this resolver\n // NOTE: we avoid .notNull.default([]) to match subgraph behavior\n texts: t.text().array(),\n // The set of observed SLIP-44 coin types for this resolver\n // NOTE: we avoid .notNull.default([]) to match subgraph behavior\n coinTypes: t.bigint().array(),\n }),\n (t) => ({\n byDomainId: index().on(t.domainId),\n }),\n);\n\nexport const subgraph_resolverRelations = relations(subgraph_resolver, ({ one, many }) => ({\n addr: one(subgraph_account, {\n fields: [subgraph_resolver.addrId],\n references: [subgraph_account.id],\n }),\n domain: one(subgraph_domain, {\n fields: [subgraph_resolver.domainId],\n references: [subgraph_domain.id],\n }),\n\n // event relations\n addrChangeds: many(subgraph_addrChanged),\n multicoinAddrChangeds: many(subgraph_multicoinAddrChanged),\n nameChangeds: many(subgraph_nameChanged),\n abiChangeds: many(subgraph_abiChanged),\n pubkeyChangeds: many(subgraph_pubkeyChanged),\n textChangeds: many(subgraph_textChanged),\n contenthashChangeds: many(subgraph_contenthashChanged),\n interfaceChangeds: many(subgraph_interfaceChanged),\n authorisationChangeds: many(subgraph_authorisationChanged),\n versionChangeds: many(subgraph_versionChanged),\n}));\n\n/**\n * Registration\n */\n\nexport const subgraph_registration = onchainTable(\n \"subgraph_registrations\",\n (t) => ({\n // The unique identifier of the registration\n id: t.hex().primaryKey(),\n // The domain name associated with the registration\n domainId: t.hex().notNull(),\n // The registration date of the domain\n registrationDate: t.bigint().notNull(),\n // The expiry date of the domain\n expiryDate: t.bigint().notNull(),\n // The cost associated with the domain registration\n cost: t.bigint(),\n // The account that registered the domain\n registrantId: t.hex().notNull(),\n /**\n * The Label associated with the domain registration.\n *\n * If {@link ENSIndexerConfig#isSubgraphCompatible}, this value is guaranteed to be either:\n * a) null, in the case of the root Node or a Domain whose label is subgraph-unindexable, or\n * b) a subgraph-indexable Subgraph Interpreted Label (i.e. a Literal Label of undefined normalization).\n *\n * @see https://ensnode.io/docs/reference/terminology#subgraph-indexability--labelname-interpretation\n *\n * Otherwise, this value is guaranteed to be an Interpreted Label which is either:\n * a) a normalized Label, or\n * b) in the case of an Unnormalized Label, an Encoded LabelHash of the Literal Label value found onchain.\n *\n * Note that the type of the column will remain string | null, for legacy subgraph compatibility.\n * In practice however, because there is no Registration entity for the root Node (the only Node\n * with a null labelName) this field will never be null.\n *\n * @see https://ensnode.io/docs/reference/terminology#interpreted-label\n */\n labelName: t.text(),\n }),\n (t) => ({\n byDomainId: index().on(t.domainId),\n byRegistrationDate: index().on(t.registrationDate),\n }),\n);\n\nexport const subgraph_registrationRelations = relations(subgraph_registration, ({ one, many }) => ({\n domain: one(subgraph_domain, {\n fields: [subgraph_registration.domainId],\n references: [subgraph_domain.id],\n }),\n registrant: one(subgraph_account, {\n fields: [subgraph_registration.registrantId],\n references: [subgraph_account.id],\n }),\n\n // event relations\n nameRegistereds: many(subgraph_nameRegistered),\n nameReneweds: many(subgraph_nameRenewed),\n nameTransferreds: many(subgraph_nameTransferred),\n}));\n\n/**\n * Wrapped Domain\n */\n\nexport const subgraph_wrappedDomain = onchainTable(\n \"subgraph_wrapped_domains\",\n (t) => ({\n // The unique identifier for each instance of the WrappedDomain entity\n id: t.hex().primaryKey(),\n // The domain that is wrapped by this WrappedDomain\n domainId: t.hex().notNull(),\n // The expiry date of the wrapped domain\n expiryDate: t.bigint().notNull(),\n // The number of fuses remaining on the wrapped domain\n fuses: t.integer().notNull(),\n // The account that owns this WrappedDomain\n ownerId: t.hex().notNull(),\n /**\n * The Name that this WrappedDomain represents. Names are emitted by the NameWrapper contract as\n * DNS-Encoded Names which may be malformed, which will result in this field being `null`.\n *\n * If {@link ENSIndexerConfig#isSubgraphCompatible}, this value is guaranteed to be either:\n * a) null (in the case of a DNS-Encoded Name that is malformed or contains subgraph-unindexable labels), or\n * b) a subgraph-indexable Subgraph Interpreted Label (i.e. a Literal Label of undefined normalization).\n *\n * @see https://ensnode.io/docs/reference/terminology#subgraph-indexability--labelname-interpretation\n *\n * Otherwise, this value is guaranteed to be either:\n * a) null (in the case of a malformed DNS-Encoded Name),\n * b) an Interpreted Name.\n *\n * @see https://ensnode.io/docs/reference/terminology#interpreted-name\n */\n name: t.text(),\n }),\n (t) => ({\n byDomainId: index().on(t.domainId),\n }),\n);\n\nexport const subgraph_wrappedDomainRelations = relations(subgraph_wrappedDomain, ({ one }) => ({\n domain: one(subgraph_domain, {\n fields: [subgraph_wrappedDomain.domainId],\n references: [subgraph_domain.id],\n }),\n owner: one(subgraph_account, {\n fields: [subgraph_wrappedDomain.ownerId],\n references: [subgraph_account.id],\n }),\n}));\n\n/**\n * Events\n */\n\nconst sharedEventColumns = (t: any) => ({\n id: t.text().primaryKey(),\n blockNumber: t.integer().notNull(),\n transactionID: t.hex().notNull(),\n});\n\nconst domainEvent = (t: any) => ({\n ...sharedEventColumns(t),\n domainId: t.hex().notNull(),\n});\n\nconst domainEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.domainId),\n // sorting index\n idx_compound: index().on(t.domainId, t.id),\n});\n\n// Domain Event Entities\n\nexport const subgraph_transfer = onchainTable(\n \"subgraph_transfers\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const subgraph_newOwner = onchainTable(\n \"subgraph_new_owners\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n parentDomainId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const subgraph_newResolver = onchainTable(\n \"subgraph_new_resolvers\",\n (t) => ({\n ...domainEvent(t),\n resolverId: t.text().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const subgraph_newTTL = onchainTable(\n \"subgraph_new_ttls\",\n (t) => ({\n ...domainEvent(t),\n ttl: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const subgraph_wrappedTransfer = onchainTable(\n \"subgraph_wrapped_transfers\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const subgraph_nameWrapped = onchainTable(\n \"subgraph_name_wrapped\",\n (t) => ({\n ...domainEvent(t),\n name: t.text(),\n fuses: t.integer().notNull(),\n ownerId: t.hex().notNull(),\n expiryDate: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const subgraph_nameUnwrapped = onchainTable(\n \"subgraph_name_unwrapped\",\n (t) => ({\n ...domainEvent(t),\n ownerId: t.hex().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const subgraph_fusesSet = onchainTable(\n \"subgraph_fuses_set\",\n (t) => ({\n ...domainEvent(t),\n fuses: t.integer().notNull(),\n }),\n domainEventIndex,\n);\n\nexport const subgraph_expiryExtended = onchainTable(\n \"subgraph_expiry_extended\",\n (t) => ({\n ...domainEvent(t),\n expiryDate: t.bigint().notNull(),\n }),\n domainEventIndex,\n);\n\n// Registration Event Entities\n\nconst registrationEvent = (t: any) => ({\n ...sharedEventColumns(t),\n registrationId: t.hex().notNull(),\n});\n\nconst registrationEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.registrationId),\n // sorting index\n idx_compound: index().on(t.registrationId, t.id),\n});\n\nexport const subgraph_nameRegistered = onchainTable(\n \"subgraph_name_registered\",\n (t) => ({\n ...registrationEvent(t),\n registrantId: t.hex().notNull(),\n expiryDate: t.bigint().notNull(),\n }),\n registrationEventIndex,\n);\n\nexport const subgraph_nameRenewed = onchainTable(\n \"subgraph_name_renewed\",\n (t) => ({\n ...registrationEvent(t),\n expiryDate: t.bigint().notNull(),\n }),\n registrationEventIndex,\n);\n\nexport const subgraph_nameTransferred = onchainTable(\n \"subgraph_name_transferred\",\n (t) => ({\n ...registrationEvent(t),\n newOwnerId: t.hex().notNull(),\n }),\n registrationEventIndex,\n);\n\n// Resolver Event Entities\n\nconst resolverEvent = (t: any) => ({\n ...sharedEventColumns(t),\n resolverId: t.text().notNull(),\n});\n\nconst resolverEventIndex = (t: any) => ({\n // primary reverse lookup\n idx: index().on(t.resolverId),\n // sorting index\n idx_compound: index().on(t.resolverId, t.id),\n});\n\nexport const subgraph_addrChanged = onchainTable(\n \"subgraph_addr_changed\",\n (t) => ({\n ...resolverEvent(t),\n addrId: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const subgraph_multicoinAddrChanged = onchainTable(\n \"subgraph_multicoin_addr_changed\",\n (t) => ({\n ...resolverEvent(t),\n coinType: t.bigint().notNull(),\n addr: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const subgraph_nameChanged = onchainTable(\n \"subgraph_name_changed\",\n (t) => ({\n ...resolverEvent(t),\n name: t.text().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const subgraph_abiChanged = onchainTable(\n \"subgraph_abi_changed\",\n (t) => ({\n ...resolverEvent(t),\n contentType: t.bigint().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const subgraph_pubkeyChanged = onchainTable(\n \"subgraph_pubkey_changed\",\n (t) => ({\n ...resolverEvent(t),\n x: t.hex().notNull(),\n y: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const subgraph_textChanged = onchainTable(\n \"subgraph_text_changed\",\n (t) => ({\n ...resolverEvent(t),\n key: t.text().notNull(),\n value: t.text(),\n }),\n resolverEventIndex,\n);\n\nexport const subgraph_contenthashChanged = onchainTable(\n \"subgraph_contenthash_changed\",\n (t) => ({\n ...resolverEvent(t),\n hash: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const subgraph_interfaceChanged = onchainTable(\n \"subgraph_interface_changed\",\n (t) => ({\n ...resolverEvent(t),\n interfaceID: t.hex().notNull(),\n implementer: t.hex().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const subgraph_authorisationChanged = onchainTable(\n \"subgraph_authorisation_changed\",\n (t) => ({\n ...resolverEvent(t),\n owner: t.hex().notNull(),\n target: t.hex().notNull(),\n isAuthorized: t.boolean().notNull(),\n }),\n resolverEventIndex,\n);\n\nexport const subgraph_versionChanged = onchainTable(\n \"subgraph_version_changed\",\n (t) => ({\n ...resolverEvent(t),\n version: t.bigint().notNull(),\n }),\n resolverEventIndex,\n);\n\n/**\n * Event Relations\n */\n\n// Domain Event Relations\n\nexport const subgraph_transferRelations = relations(subgraph_transfer, ({ one }) => ({\n domain: one(subgraph_domain, {\n fields: [subgraph_transfer.domainId],\n references: [subgraph_domain.id],\n }),\n owner: one(subgraph_account, {\n fields: [subgraph_transfer.ownerId],\n references: [subgraph_account.id],\n }),\n}));\n\nexport const subgraph_newOwnerRelations = relations(subgraph_newOwner, ({ one }) => ({\n domain: one(subgraph_domain, {\n fields: [subgraph_newOwner.domainId],\n references: [subgraph_domain.id],\n }),\n owner: one(subgraph_account, {\n fields: [subgraph_newOwner.ownerId],\n references: [subgraph_account.id],\n }),\n parentDomain: one(subgraph_domain, {\n fields: [subgraph_newOwner.parentDomainId],\n references: [subgraph_domain.id],\n }),\n}));\n\nexport const subgraph_newResolverRelations = relations(subgraph_newResolver, ({ one }) => ({\n domain: one(subgraph_domain, {\n fields: [subgraph_newResolver.domainId],\n references: [subgraph_domain.id],\n }),\n resolver: one(subgraph_resolver, {\n fields: [subgraph_newResolver.resolverId],\n references: [subgraph_resolver.id],\n }),\n}));\n\nexport const subgraph_newTTLRelations = relations(subgraph_newTTL, ({ one }) => ({\n domain: one(subgraph_domain, {\n fields: [subgraph_newTTL.domainId],\n references: [subgraph_domain.id],\n }),\n}));\n\nexport const subgraph_wrappedTransferRelations = relations(subgraph_wrappedTransfer, ({ one }) => ({\n domain: one(subgraph_domain, {\n fields: [subgraph_wrappedTransfer.domainId],\n references: [subgraph_domain.id],\n }),\n owner: one(subgraph_account, {\n fields: [subgraph_wrappedTransfer.ownerId],\n references: [subgraph_account.id],\n }),\n}));\n\nexport const subgraph_nameWrappedRelations = relations(subgraph_nameWrapped, ({ one }) => ({\n domain: one(subgraph_domain, {\n fields: [subgraph_nameWrapped.domainId],\n references: [subgraph_domain.id],\n }),\n owner: one(subgraph_account, {\n fields: [subgraph_nameWrapped.ownerId],\n references: [subgraph_account.id],\n }),\n}));\n\nexport const subgraph_nameUnwrappedRelations = relations(subgraph_nameUnwrapped, ({ one }) => ({\n domain: one(subgraph_domain, {\n fields: [subgraph_nameUnwrapped.domainId],\n references: [subgraph_domain.id],\n }),\n owner: one(subgraph_account, {\n fields: [subgraph_nameUnwrapped.ownerId],\n references: [subgraph_account.id],\n }),\n}));\n\nexport const subgraph_fusesSetRelations = relations(subgraph_fusesSet, ({ one }) => ({\n domain: one(subgraph_domain, {\n fields: [subgraph_fusesSet.domainId],\n references: [subgraph_domain.id],\n }),\n}));\n\nexport const subgraph_expiryExtendedRelations = relations(subgraph_expiryExtended, ({ one }) => ({\n domain: one(subgraph_domain, {\n fields: [subgraph_expiryExtended.domainId],\n references: [subgraph_domain.id],\n }),\n}));\n\n// Registration Event Relations\n\nexport const subgraph_nameRegisteredRelations = relations(subgraph_nameRegistered, ({ one }) => ({\n registration: one(subgraph_registration, {\n fields: [subgraph_nameRegistered.registrationId],\n references: [subgraph_registration.id],\n }),\n registrant: one(subgraph_account, {\n fields: [subgraph_nameRegistered.registrantId],\n references: [subgraph_account.id],\n }),\n}));\n\nexport const subgraph_nameRenewedRelations = relations(subgraph_nameRenewed, ({ one }) => ({\n registration: one(subgraph_registration, {\n fields: [subgraph_nameRenewed.registrationId],\n references: [subgraph_registration.id],\n }),\n}));\n\nexport const subgraph_nameTransferredRelations = relations(subgraph_nameTransferred, ({ one }) => ({\n registration: one(subgraph_registration, {\n fields: [subgraph_nameTransferred.registrationId],\n references: [subgraph_registration.id],\n }),\n newOwner: one(subgraph_account, {\n fields: [subgraph_nameTransferred.newOwnerId],\n references: [subgraph_account.id],\n }),\n}));\n\n// Resolver Event Relations\n\nexport const subgraph_addrChangedRelations = relations(subgraph_addrChanged, ({ one }) => ({\n resolver: one(subgraph_resolver, {\n fields: [subgraph_addrChanged.resolverId],\n references: [subgraph_resolver.id],\n }),\n addr: one(subgraph_account, {\n fields: [subgraph_addrChanged.addrId],\n references: [subgraph_account.id],\n }),\n}));\n\nexport const subgraph_multicoinAddrChangedRelations = relations(\n subgraph_multicoinAddrChanged,\n ({ one }) => ({\n resolver: one(subgraph_resolver, {\n fields: [subgraph_multicoinAddrChanged.resolverId],\n references: [subgraph_resolver.id],\n }),\n }),\n);\n\nexport const subgraph_nameChangedRelations = relations(subgraph_nameChanged, ({ one }) => ({\n resolver: one(subgraph_resolver, {\n fields: [subgraph_nameChanged.resolverId],\n references: [subgraph_resolver.id],\n }),\n}));\n\nexport const subgraph_abiChangedRelations = relations(subgraph_abiChanged, ({ one }) => ({\n resolver: one(subgraph_resolver, {\n fields: [subgraph_abiChanged.resolverId],\n references: [subgraph_resolver.id],\n }),\n}));\n\nexport const subgraph_pubkeyChangedRelations = relations(subgraph_pubkeyChanged, ({ one }) => ({\n resolver: one(subgraph_resolver, {\n fields: [subgraph_pubkeyChanged.resolverId],\n references: [subgraph_resolver.id],\n }),\n}));\n\nexport const subgraph_textChangedRelations = relations(subgraph_textChanged, ({ one }) => ({\n resolver: one(subgraph_resolver, {\n fields: [subgraph_textChanged.resolverId],\n references: [subgraph_resolver.id],\n }),\n}));\n\nexport const subgraph_contenthashChangedRelations = relations(\n subgraph_contenthashChanged,\n ({ one }) => ({\n resolver: one(subgraph_resolver, {\n fields: [subgraph_contenthashChanged.resolverId],\n references: [subgraph_resolver.id],\n }),\n }),\n);\n\nexport const subgraph_interfaceChangedRelations = relations(\n subgraph_interfaceChanged,\n ({ one }) => ({\n resolver: one(subgraph_resolver, {\n fields: [subgraph_interfaceChanged.resolverId],\n references: [subgraph_resolver.id],\n }),\n }),\n);\n\nexport const subgraph_authorisationChangedRelations = relations(\n subgraph_authorisationChanged,\n ({ one }) => ({\n resolver: one(subgraph_resolver, {\n fields: [subgraph_authorisationChanged.resolverId],\n references: [subgraph_resolver.id],\n }),\n }),\n);\n\nexport const subgraph_versionChangedRelations = relations(subgraph_versionChanged, ({ one }) => ({\n resolver: one(subgraph_resolver, {\n fields: [subgraph_versionChanged.resolverId],\n references: [subgraph_resolver.id],\n }),\n}));\n","// https://github.com/drizzle-team/drizzle-orm/issues/638\nexport function monkeypatchCollate(col: any, collation: string) {\n col.getSQLType = function (this: any) {\n return Object.getPrototypeOf(this).getSQLType.call(this) + \" COLLATE \" + collation;\n };\n return col;\n}\n","/**\n * Schema Definitions that power Protocol Acceleration in the Resolution API.\n */\n\nimport { onchainTable, primaryKey, relations } from \"ponder\";\n\n/**\n * Tracks an Account's ENSIP-19 Reverse Name Records by CoinType.\n *\n * NOTE: this is NOT a cohesive, materialized index of ALL of an account's Primary Names, it is ONLY\n * an index of its ENSIP-19 Reverse Name _Records_ stored by a StandaloneReverseRegistrar:\n * - default.reverse\n * - [coinType].reverse\n * - NOT *.addr.reverse\n *\n * So these records CANNOT be queried directly and used as a source of truth — you MUST perform\n * Forward Resolution to resolve a consistent set of an Account's ENSIP-19 Primary Names. These records\n * are used to power Protocol Acceleration for those ReverseResolvers backed by a StandloneReverseRegistrar.\n */\nexport const reverseNameRecord = onchainTable(\n \"reverse_name_records\",\n (t) => ({\n // keyed by (address, coinType)\n address: t.hex().notNull(),\n coinType: t.bigint().notNull(),\n\n /**\n * Represents the ENSIP-19 Reverse Name Record for a given (address, coinType).\n *\n * The value of this field is guaranteed to be a non-empty-string normalized ENS name (see\n * `interpretNameRecordValue` for additional context and specific guarantees). Unnormalized\n * names and empty string values are interpreted as a deletion of the associated Reverse Name\n * Record entity (represented in the schema as the _absence_ of a relevant Reverse Name Record\n * entity).\n */\n value: t.text().notNull(),\n }),\n (t) => ({\n pk: primaryKey({ columns: [t.address, t.coinType] }),\n }),\n);\n\n/**\n * Tracks Node-Resolver relationships to accelerate the identification of a node's active resolver\n * in a specific (shadow)Registry.\n *\n * Note that this model supports the indexing of Node-Resolver relationships across any Registry on\n * on any chain, in particular to support the acceleration of ForwardResolution#findResolver for the\n * ENS Root Chain's Registry which can have any number of (shadow)Registries (like Basenames' and\n * Lineanames') on any chain.\n *\n * It is keyed by (chainId, registry, node) to match the on-chain datamodel of Registry/(shadow)Registry\n * Node-Resolver relationships.\n */\nexport const nodeResolverRelation = onchainTable(\n \"node_resolver_relations\",\n (t) => ({\n // keyed by (chainId, registry, node)\n chainId: t.integer().notNull(),\n registry: t.hex().notNull(),\n node: t.hex().notNull(),\n\n /**\n * The Address of the Resolver contract this `node` has set (via Registry#NewResolver) within\n * the Registry on `chainId`.\n */\n resolver: t.hex().notNull(),\n }),\n (t) => ({\n pk: primaryKey({ columns: [t.chainId, t.registry, t.node] }),\n }),\n);\n\n/**\n * Tracks a set of records for a specified `node` within a `resolver` contract on `chainId`.\n *\n * ResolverRecords is keyed by (chainId, resolver, node) and:\n * - has one `name` record (see ENSIP-3)\n * - has many `addressRecords` (unique by coinType) (see ENSIP-9)\n * - has many `textRecords` (unique by key) (see ENSIP-5)\n *\n * It is keyed by (chainId, resolver, node) to match the on-chain datamodel of Resolver contract storage.\n *\n * WARNING: These record values do NOT allow the caller to confidently resolve records for names\n * without following Forward Resolution according to the ENS protocol: a direct query to the database\n * for a record's value is not ENSIP-10 nor CCIP-Read compliant.\n */\nexport const resolverRecords = onchainTable(\n \"resolver_records\",\n (t) => ({\n // keyed by (chainId, resolver, node)\n chainId: t.integer().notNull(),\n resolver: t.hex().notNull(),\n node: t.hex().notNull(),\n\n /**\n * Represents the value of the reverse-resolution (ENSIP-3) name() record, used for Reverse Resolution.\n *\n * The emitted record values are interpreted according to `interpretNameRecordValue` — unnormalized\n * names and empty string values are interpreted as a deletion of the associated record (represented\n * here as `null`).\n *\n * If set, the value of this field is guaranteed to be a non-empty-string normalized ENS name\n * (see `interpretNameRecordValue` for additional context and specific guarantees).\n */\n name: t.text(),\n }),\n (t) => ({\n pk: primaryKey({ columns: [t.chainId, t.resolver, t.node] }),\n }),\n);\n\nexport const resolverRecords_relations = relations(resolverRecords, ({ one, many }) => ({\n // resolverRecord has many address records\n addressRecords: many(resolverAddressRecord),\n\n // resolverRecord has many text records\n textRecords: many(resolverTextRecord),\n}));\n\n/**\n * Tracks address records for a `node` by `coinType` within a `resolver` on `chainId`.\n *\n * ResolverAddressRecord is keyed by (chainId, resolver, node, coinType), where the composite key\n * segment (chainId, resolver, node) describes a ResolverRecord entity. A ResolverAddressRecord is\n * then additionally keyed by (coinType).\n */\nexport const resolverAddressRecord = onchainTable(\n \"resolver_address_records\",\n (t) => ({\n // keyed by ((chainId, resolver, node), coinType)\n chainId: t.integer().notNull(),\n resolver: t.hex().notNull(),\n node: t.hex().notNull(),\n coinType: t.bigint().notNull(),\n\n /**\n * Represents the value of the Addresss Record specified by ((chainId, resolver, node), coinType).\n *\n * The value of this field is interpreted by `interpretAddressRecordValue` — see its implementation\n * for additional context and specific guarantees.\n */\n address: t.text().notNull(),\n }),\n (t) => ({\n pk: primaryKey({ columns: [t.chainId, t.resolver, t.node, t.coinType] }),\n }),\n);\n\nexport const resolverAddressRecordRelations = relations(resolverAddressRecord, ({ one, many }) => ({\n // belongs to resolverRecord\n resolver: one(resolverRecords, {\n fields: [\n resolverAddressRecord.chainId,\n resolverAddressRecord.resolver,\n resolverAddressRecord.node,\n ],\n references: [resolverRecords.chainId, resolverRecords.resolver, resolverRecords.node],\n }),\n}));\n\n/**\n * Tracks text records for a `node` by `key` within a `resolver` on `chainId`.\n *\n * ResolverTextRecord is keyed by (chainId, resolver, node, key), where the composite key\n * segment (chainId, resolver, node) describes a ResolverRecord entity. A ResolverTextRecord is\n * then additionally keyed by (key).\n */\nexport const resolverTextRecord = onchainTable(\n \"resolver_trecords\",\n (t) => ({\n // keyed by ((chainId, resolver, node), key)\n chainId: t.integer().notNull(),\n resolver: t.hex().notNull(),\n node: t.hex().notNull(),\n key: t.text().notNull(),\n\n /**\n * Represents the value of the Text Record specified by ((chainId, resolver, node), key).\n *\n * The value of this field is interpreted by `interpretTextRecordValue` — see its implementation\n * for additional context and specific guarantees.\n */\n value: t.text().notNull(),\n }),\n (t) => ({\n pk: primaryKey({ columns: [t.chainId, t.resolver, t.node, t.key] }),\n }),\n);\n\nexport const resolverTextRecordRelations = relations(resolverTextRecord, ({ one, many }) => ({\n // belongs to resolverRecord\n resolver: one(resolverRecords, {\n fields: [resolverTextRecord.chainId, resolverTextRecord.resolver, resolverTextRecord.node],\n references: [resolverRecords.chainId, resolverRecords.resolver, resolverRecords.node],\n }),\n}));\n\n/**\n * Tracks the migration status of a node.\n *\n * Due to a security issue, ENS migrated from the RegistryOld contract to a new Registry\n * contract. When indexing events, the indexer must ignore any events on the RegistryOld for domains\n * that have since been migrated to the new Registry.\n *\n * To store the necessary information required to implement this behavior, we track the set of nodes\n * that have been registered in the (new) Registry contract on the ENS Root Chain. When an event is\n * encountered on the RegistryOld contract, if the relevant node exists in this set, the event should\n * be ignored, as the node is considered migrated.\n *\n * Note that this logic is only necessary for the ENS Root Chain, the only chain that includes the\n * Registry migration: we do not track nodes in the the Basenames and Lineanames deployments of the\n * Registry on their respective chains, for example.\n *\n * Note also that this Registry migration tracking is isolated to the Protocol Acceleration schema/plugin.\n * That is, the subgraph core plugin implements its own Registry migration logic, and the future\n * ensv2 core plugin will likely do the same. By isolating this logic to the Protocol Acceleration\n * plugin, we allow the Protocol acceleration plugin to be run independently of a core plugin\n * (and could be run _without_ a core plugin, for example).\n */\nexport const migratedNode = onchainTable(\"migrated_nodes\", (t) => ({\n node: t.hex().primaryKey(),\n}));\n","/**\n * Schema Definitions for tracking of ENS referrals.\n */\n\nimport { index, onchainTable, relations } from \"ponder\";\n\n/**\n * A RegistrationReferral tracks individual occurences of referrals for ENS name registrations.\n */\nexport const registrationReferral = onchainTable(\n \"registration_referral\",\n (t) => ({\n // keyed by any arbitrary unique id, usually `event.id`\n id: t.text().primaryKey(),\n\n referrer: t.hex().notNull(),\n node: t.hex().notNull(),\n referee: t.hex().notNull(),\n baseCost: t.bigint().notNull(),\n premium: t.bigint().notNull(),\n total: t.bigint().notNull(),\n\n // chainId the transaction occurred on\n chainId: t.integer().notNull(),\n // transaction's hash\n transactionHash: t.hex().notNull(),\n // block's Unix timestamp in seconds\n timestamp: t.bigint().notNull(),\n }),\n (t) => ({\n byReferee: index().on(t.referee),\n byReferrer: index().on(t.referrer),\n }),\n);\n\nexport const registrationReferral_relations = relations(registrationReferral, ({ one, many }) => ({\n // RegistrationReferral belongs to Referrer\n referrer: one(referrer, {\n fields: [registrationReferral.referrer],\n references: [referrer.id],\n }),\n}));\n\n/**\n * A RenewalReferral tracks individual occurences of referrals for ENS name renewals.\n */\nexport const renewalReferral = onchainTable(\n \"renewal_referral\",\n (t) => ({\n // keyed by any arbitrary unique id, usually `event.id`\n id: t.text().primaryKey(),\n\n referrer: t.hex().notNull(),\n referee: t.hex().notNull(),\n node: t.hex().notNull(),\n cost: t.bigint().notNull(),\n\n // chainId the transaction occurred on\n chainId: t.integer().notNull(),\n // transaction's hash\n transactionHash: t.hex().notNull(),\n // Block's Unix timestamp in seconds\n timestamp: t.bigint().notNull(),\n }),\n (t) => ({\n byReferee: index().on(t.referee),\n byReferrer: index().on(t.referrer),\n }),\n);\n\nexport const renewalReferral_relations = relations(renewalReferral, ({ one, many }) => ({\n // RenewalReferral belongs to Referrer\n referrer: one(referrer, {\n fields: [renewalReferral.referrer],\n references: [referrer.id],\n }),\n}));\n\n/**\n * Referrer represents an individual referrer, keyed by unique `referrer` id (bytes32). It holds\n * aggregate statistics about referrals, namely the total value (in wei) they've referred to the\n * ENS protocol.\n */\nexport const referrer = onchainTable(\n \"referral_totals\",\n (t) => ({\n // keyed by Referrer's id (bytes32 hex)\n id: t.hex().primaryKey(),\n valueWei: t.bigint().notNull(),\n }),\n (t) => ({}),\n);\n\nexport const referrer_relations = relations(referrer, ({ one, many }) => ({\n // Referrer has many RegistrationReferrals\n registrationReferrals: many(registrationReferral),\n\n // Referrer has many RenewalReferrals\n renewalReferrals: many(renewalReferral),\n}));\n","import { index, onchainTable } from \"ponder\";\n\nexport const nameSales = onchainTable(\n \"name_sales\",\n (t) => ({\n /**\n * Unique and deterministic identifier of the onchain event associated with the sale.\n *\n * Composite key format: \"{chainId}-{blockNumber}-{logIndex}\" (e.g., \"1-1234567-5\")\n */\n id: t.text().primaryKey(),\n\n /**\n * The chain where the sale occurred.\n */\n chainId: t.integer().notNull(),\n\n /**\n * The block number on chainId where the sale occurred.\n */\n blockNumber: t.bigint().notNull(),\n\n /**\n * The log index position of the sale event within blockNumber.\n */\n logIndex: t.integer().notNull(),\n\n /**\n * The EVM transaction hash on chainId associated with the sale.\n */\n transactionHash: t.hex().notNull(),\n\n /**\n * The Seaport order hash.\n */\n orderHash: t.hex().notNull(),\n\n /**\n * The address of the contract on chainId that manages tokenId.\n */\n contractAddress: t.hex().notNull(),\n\n /**\n * The tokenId managed by contractAddress that was sold.\n *\n * In a general context (outside of TokenScope) ERC1155 NFTs may have\n * multiple copies, however TokenScope guarantees that all indexed NFTs\n * never have an amount / balance > 1.\n */\n tokenId: t.bigint().notNull(),\n\n /**\n * The CAIP-19 Asset Namespace of the token that was sold. Either `erc721` or `erc1155`.\n *\n * @see https://chainagnostic.org/CAIPs/caip-19\n */\n assetNamespace: t.text().notNull(),\n\n /**\n * The CAIP-19 Asset ID of token that was sold. This is a globally unique reference to the\n * specific asset in question.\n *\n * @see https://chainagnostic.org/CAIPs/caip-19\n */\n assetId: t.text().notNull(),\n\n /**\n * The namehash (Node) of the ENS domain that was sold.\n */\n domainId: t.hex().notNull(),\n\n /**\n * The account that bought the token controlling ownership of domainId from\n * the seller for the amount of currency associated with the sale.\n */\n buyer: t.hex().notNull(),\n\n /**\n * The account that sold the token controlling ownership of domainId to\n * buyer for the amount of currency associated with the sale.\n */\n seller: t.hex().notNull(),\n\n /**\n * Currency of the payment (ETH, USDC or DAI) from buyer to seller in exchange for tokenId.\n */\n currency: t.text().notNull(),\n\n /**\n * The amount of currency paid from buyer to seller in exchange for tokenId.\n *\n * Denominated in the smallest unit of currency.\n *\n * Amount interpretation depends on currency:\n * - ETH/WETH: Amount in wei (1 ETH = 10^18 wei)\n * - USDC: Amount in micro-units (1 USDC = 10^6 units)\n * - DAI: Amount in wei-equivalent (1 DAI = 10^18 units)\n */\n amount: t.bigint().notNull(),\n\n /**\n * Unix timestamp of the block timestamp when the sale occurred.\n */\n timestamp: t.bigint().notNull(),\n }),\n (t) => ({\n idx_domainId: index().on(t.domainId),\n idx_assetId: index().on(t.assetId),\n idx_buyer: index().on(t.buyer),\n idx_seller: index().on(t.seller),\n idx_timestamp: index().on(t.timestamp),\n }),\n);\n\nexport const nameTokens = onchainTable(\n \"name_tokens\",\n (t) => ({\n /**\n * The CAIP-19 Asset ID of the token.\n *\n * This is a globally unique reference to the token.\n *\n * @see https://chainagnostic.org/CAIPs/caip-19\n */\n id: t.text().primaryKey(),\n\n /**\n * The namehash (Node) of the ENS name associated with the token.\n *\n * Note: An ENS name may have more than one distinct token across time. It is\n * also possible for multiple distinct tokens for an ENS name to have\n * a mintStatus of `minted` at the same time. For example:\n * - When a direct subname of .eth is wrapped by the NameWrapper. This state\n * has one minted token for the name managed by the BaseRegistrar (this\n * token will be owned by the NameWrapper) and another minted token for\n * the name managed by the NameWrapper (owned by the effective owner of\n * the name).\n * - When a direct subname of .eth is wrapped by the NameWrapper and then\n * unwrapped. This state has one minted token (managed by the BaseRegistrar)\n * and another burned token (managed by the NameWrapper).\n */\n domainId: t.hex().notNull(),\n\n /**\n * The chain that manages the token.\n */\n chainId: t.integer().notNull(),\n\n /**\n * The address of the contract on chainId that manages the token.\n */\n contractAddress: t.hex().notNull(),\n\n /**\n * The tokenId of the token managed by contractAddress.\n *\n * In a general context (outside of TokenScope) ERC1155 NFTs may have\n * multiple copies, however TokenScope guarantees that all indexed NFTs\n * never have an amount / balance > 1.\n */\n tokenId: t.bigint().notNull(),\n\n /**\n * The CAIP-19 Asset Namespace of the token. Either `erc721` or `erc1155`.\n *\n * @see https://chainagnostic.org/CAIPs/caip-19\n */\n assetNamespace: t.text().notNull(),\n\n /**\n * The account that owns the token.\n *\n * Value is zeroAddress if and only if mintStatus is `burned`.\n *\n * Note: The owner of the token for a given domainId may differ from the\n * owner of the associated node in the registry. For example:\n * - Consider the case where address X owns the ENS name `foo.eth` in\n * both the BaseRegistrar and the Registry. If X sends a request directly\n * to the Registry to transfer ownership to Y, ownership of `foo.eth` will\n * be transferred to Y in the Registry but not in the BaseRegistrar.\n * - ... for the case above, the BaseRegistrar implements a `reclaim`\n * allowing the owner of the name in the BaseRegistrar to reclaim ownership\n * of the name in the Registry.\n *\n * Note: When a name is wrapped by the NameWrapper, the owner of the token\n * in the BaseRegistrar is the NameWrapper, while a new token for the name is\n * minted by the NameWrapper and owned by the effective owner of the name.\n */\n owner: t.hex().notNull(),\n\n /**\n * The mint status of the token. Either `minted` or `burned`.\n *\n * After we index a NFT we never delete it from our index. Instead, when an\n * indexed NFT is burned onchain we retain its record and update its mint\n * status as `burned`. If a NFT is minted again after it is burned its mint\n * status is updated to `minted`.\n */\n mintStatus: t.text().notNull(),\n }),\n (t) => ({\n idx_domainId: index().on(t.domainId),\n idx_owner: index().on(t.owner),\n }),\n);\n"],"mappings":"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","names":["onchainTable","relations","index","onchainTable","relations","index","onchainTable"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ensnode/ensnode-schema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "The ponder schema for ENSNode",
|
|
6
6
|
"license": "MIT",
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
"access": "public"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"ponder": "0.
|
|
29
|
+
"ponder": "0.13.14",
|
|
30
30
|
"viem": "^2.22.13"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@biomejs/biome": "^1.9.4",
|
|
34
34
|
"tsup": "^8.3.6",
|
|
35
35
|
"typescript": "^5.7.3",
|
|
36
|
-
"@ensnode/shared-configs": "0.
|
|
36
|
+
"@ensnode/shared-configs": "0.36.0"
|
|
37
37
|
},
|
|
38
38
|
"scripts": {
|
|
39
39
|
"prepublish": "tsup",
|