forked from ensdomains/ens-subgraph
-
Notifications
You must be signed in to change notification settings - Fork 0
/
schema.graphql
451 lines (416 loc) · 13.8 KB
/
schema.graphql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
type Domain @entity {
"The namehash of the name"
id: ID!
"The human readable name, if known. Unknown portions replaced with hash in square brackets (eg, foo.[1234].eth)"
name: String
"The human readable label name (imported from CSV), if known"
labelName: String
"keccak256(labelName)"
labelhash: Bytes
"The namehash (id) of the parent name"
parent: Domain
"Can count domains from length of array"
subdomains: [Domain!]! @derivedFrom(field: "parent")
"The number of subdomains"
subdomainCount: Int!
"Address logged from current resolver, if any"
resolvedAddress: Account
"The resolver that controls the domain's settings"
resolver: Resolver
"The time-to-live (TTL) value of the domain's records"
ttl: BigInt
"Indicates whether the domain has been migrated to a new registrar"
isMigrated: Boolean!
"The time when the domain was created"
createdAt: BigInt!
"The account that owns the domain"
owner: Account!
"The account that owns the ERC721 NFT for the domain"
registrant: Account
"The account that owns the wrapped domain"
wrappedOwner: Account
"The expiry date for the domain, from either the registration, or the wrapped domain if PCC is burned"
expiryDate: BigInt
"The registration associated with the domain"
registration: Registration @derivedFrom(field: "domain")
"The wrapped domain associated with the domain"
wrappedDomain: WrappedDomain @derivedFrom(field: "domain")
"The events associated with the domain"
events: [DomainEvent!]! @derivedFrom(field: "domain")
}
interface DomainEvent {
"The unique identifier of the event"
id: ID!
"The domain name associated with the event"
domain: Domain!
"The block number at which the event occurred"
blockNumber: Int!
"The transaction hash of the transaction that triggered the event"
transactionID: Bytes!
}
type Transfer implements DomainEvent @entity {
"The unique identifier of the event"
id: ID!
"The domain name associated with the event"
domain: Domain!
"The block number at which the event occurred"
blockNumber: Int!
"The transaction hash of the transaction that triggered the event"
transactionID: Bytes!
"The account that owns the domain after the transfer"
owner: Account!
}
type NewOwner implements DomainEvent @entity {
"The unique identifier of the event"
id: ID!
"The parent domain of the domain name associated with the event"
parentDomain: Domain!
"The domain name associated with the event"
domain: Domain!
"The block number at which the event occurred"
blockNumber: Int!
"The transaction hash of the transaction that triggered the event"
transactionID: Bytes!
"The new account that owns the domain"
owner: Account!
}
type NewResolver implements DomainEvent @entity {
"The unique identifier of the event"
id: ID!
"The domain name associated with the event"
domain: Domain!
"The block number at which the event occurred"
blockNumber: Int!
"The transaction hash of the transaction that triggered the event"
transactionID: Bytes!
"The new resolver contract address associated with the domain"
resolver: Resolver!
}
type NewTTL implements DomainEvent @entity {
"The unique identifier of the event"
id: ID!
"The domain name associated with the event"
domain: Domain!
"The block number at which the event occurred"
blockNumber: Int!
"The transaction hash of the transaction that triggered the event"
transactionID: Bytes!
"The new TTL value (in seconds) associated with the domain"
ttl: BigInt!
}
type WrappedTransfer implements DomainEvent @entity {
"The unique identifier of the event"
id: ID!
"The domain name associated with the event"
domain: Domain!
"The block number at which the event occurred"
blockNumber: Int!
"The transaction hash of the transaction that triggered the event"
transactionID: Bytes!
"The account that owns the wrapped domain after the transfer"
owner: Account!
}
type NameWrapped implements DomainEvent @entity {
"The unique identifier of the wrapped domain"
id: ID!
"The domain name associated with the wrapped domain"
domain: Domain!
"The block number at which the wrapped domain was wrapped"
blockNumber: Int!
"The transaction hash of the transaction that wrapped the domain"
transactionID: Bytes!
"The human-readable name of the wrapped domain"
name: String
"The number of fuses associated with the wrapped domain"
fuses: Int!
"The account that owns the wrapped domain"
owner: Account!
"The expiry date of the wrapped domain registration"
expiryDate: BigInt!
}
type NameUnwrapped implements DomainEvent @entity {
"The unique identifier of the event"
id: ID!
"The domain name associated with the event"
domain: Domain!
"The block number at which the event occurred"
blockNumber: Int!
"The transaction hash of the transaction that triggered the event"
transactionID: Bytes!
"The account that owns the domain after it was unwrapped"
owner: Account!
}
type FusesSet implements DomainEvent @entity {
"The unique identifier of the event"
id: ID!
"The domain name associated with the event"
domain: Domain!
"The block number at which the event occurred"
blockNumber: Int!
"The transaction hash of the transaction that triggered the event"
transactionID: Bytes!
"The number of fuses associated with the domain after the set event"
fuses: Int!
}
type ExpiryExtended implements DomainEvent @entity {
"The unique identifier of the event"
id: ID!
"The domain name associated with the event"
domain: Domain!
"The block number at which the event occurred"
blockNumber: Int!
"The transaction hash of the transaction that triggered the event"
transactionID: Bytes!
"The new expiry date associated with the domain after the extension event"
expiryDate: BigInt!
}
type Registration @entity {
"The unique identifier of the registration"
id: ID!
"The domain name associated with the registration"
domain: Domain!
"The registration date of the domain"
registrationDate: BigInt!
"The expiry date of the domain"
expiryDate: BigInt!
"The cost associated with the domain registration"
cost: BigInt
"The account that registered the domain"
registrant: Account!
"The human-readable label name associated with the domain registration"
labelName: String
"The events associated with the domain registration"
events: [RegistrationEvent!]! @derivedFrom(field: "registration")
}
interface RegistrationEvent {
"The unique identifier of the registration event"
id: ID!
"The registration associated with the event"
registration: Registration!
"The block number of the event"
blockNumber: Int!
"The transaction ID associated with the event"
transactionID: Bytes!
}
type NameRegistered implements RegistrationEvent @entity {
"The unique identifier of the NameRegistered event"
id: ID!
"The registration associated with the event"
registration: Registration!
"The block number of the event"
blockNumber: Int!
"The transaction ID associated with the event"
transactionID: Bytes!
"The account that registered the name"
registrant: Account!
"The expiry date of the registration"
expiryDate: BigInt!
}
type NameRenewed implements RegistrationEvent @entity {
"The unique identifier of the NameRenewed event"
id: ID!
"The registration associated with the event"
registration: Registration!
"The block number of the event"
blockNumber: Int!
"The transaction ID associated with the event"
transactionID: Bytes!
"The new expiry date of the registration"
expiryDate: BigInt!
}
type NameTransferred implements RegistrationEvent @entity {
"The ID of the event"
id: ID!
"The registration associated with the event"
registration: Registration!
"The block number of the event"
blockNumber: Int!
"The transaction ID of the event"
transactionID: Bytes!
"The new owner of the domain"
newOwner: Account!
}
type WrappedDomain @entity {
"unique identifier for each instance of the WrappedDomain entity"
id: ID!
"The domain that is wrapped by this WrappedDomain"
domain: Domain!
"The expiry date of the wrapped domain"
expiryDate: BigInt!
"The number of fuses remaining on the wrapped domain"
fuses: Int!
"The account that owns this WrappedDomain"
owner: Account!
"The name of the wrapped domain"
name: String
}
type Account @entity {
"The unique identifier for the account"
id: ID!
"The domains owned by the account"
domains: [Domain!]! @derivedFrom(field: "owner")
"The WrappedDomains owned by the account"
wrappedDomains: [WrappedDomain!] @derivedFrom(field: "owner")
"The Registrations made by the account"
registrations: [Registration!] @derivedFrom(field: "registrant")
}
type Resolver @entity {
"The unique identifier for this resolver, which is a concatenation of the resolver address and the domain namehash"
id: ID!
"The domain that this resolver is associated with"
domain: Domain
"The address of the resolver contract"
address: Bytes!
"The current value of the 'addr' record for this resolver, as determined by the associated events"
addr: Account
"The content hash for this resolver, in binary format"
contentHash: Bytes
"The set of observed text record keys for this resolver"
texts: [String!]
"The set of observed SLIP-44 coin types for this resolver"
coinTypes: [BigInt!]
"The events associated with this resolver"
events: [ResolverEvent!]! @derivedFrom(field: "resolver")
}
interface ResolverEvent {
"Concatenation of block number and log ID"
id: ID!
"Used to derive relationships to Resolvers"
resolver: Resolver!
"The block number that the event occurred on"
blockNumber: Int!
"The transaction hash of the event"
transactionID: Bytes!
}
type AddrChanged implements ResolverEvent @entity {
"Unique identifier for this event"
id: ID!
"The resolver associated with this event"
resolver: Resolver!
"The block number at which this event occurred"
blockNumber: Int!
"The transaction ID for the transaction in which this event occurred"
transactionID: Bytes!
"The new address associated with the resolver"
addr: Account!
}
type MulticoinAddrChanged implements ResolverEvent @entity {
"Unique identifier for the event"
id: ID!
"Resolver associated with this event"
resolver: Resolver!
"Block number in which this event was emitted"
blockNumber: Int!
"Transaction ID in which this event was emitted"
transactionID: Bytes!
"The coin type of the changed address"
coinType: BigInt!
"The new address value for the given coin type"
addr: Bytes!
}
type NameChanged implements ResolverEvent @entity {
"Concatenation of block number and log ID"
id: ID!
"Used to derive relationships to Resolvers"
resolver: Resolver!
"Block number where event occurred"
blockNumber: Int!
"Unique transaction ID where event occurred"
transactionID: Bytes!
"New ENS name value"
name: String!
}
type AbiChanged implements ResolverEvent @entity {
"Concatenation of block number and log ID"
id: ID!
"Used to derive relationships to Resolvers"
resolver: Resolver!
"The block number at which the event was emitted"
blockNumber: Int!
"The transaction hash of the transaction in which the event was emitted"
transactionID: Bytes!
"The content type of the ABI change"
contentType: BigInt!
}
type PubkeyChanged implements ResolverEvent @entity {
"Concatenation of block number and log ID"
id: ID!
"Used to derive relationships to Resolvers"
resolver: Resolver!
"Block number of the Ethereum block where the event occurred"
blockNumber: Int!
"Transaction hash of the Ethereum transaction where the event occurred"
transactionID: Bytes!
"The x-coordinate of the new public key"
x: Bytes!
"The y-coordinate of the new public key"
y: Bytes!
}
type TextChanged implements ResolverEvent @entity {
"Concatenation of block number and log ID"
id: ID!
"Used to derive relationships to Resolvers"
resolver: Resolver!
"Block number of the Ethereum block in which the event occurred"
blockNumber: Int!
"Hash of the Ethereum transaction in which the event occurred"
transactionID: Bytes!
"The key of the text record that was changed"
key: String!
"The new value of the text record that was changed"
value: String
}
type ContenthashChanged implements ResolverEvent @entity {
"Concatenation of block number and log ID"
id: ID!
"Used to derive relationships to Resolvers"
resolver: Resolver!
"The block number where the event occurred"
blockNumber: Int!
"The ID of the transaction where the event occurred"
transactionID: Bytes!
"The new content hash for the domain"
hash: Bytes!
}
type InterfaceChanged implements ResolverEvent @entity {
"Concatenation of block number and log ID"
id: ID!
"Used to derive relationships to Resolvers"
resolver: Resolver!
"The block number in which the event occurred"
blockNumber: Int!
"The transaction ID for the transaction in which the event occurred"
transactionID: Bytes!
"The ID of the EIP-1820 interface that was changed"
interfaceID: Bytes!
"The address of the contract that implements the interface"
implementer: Bytes!
}
type AuthorisationChanged implements ResolverEvent @entity {
"Unique identifier for this event"
id: ID!
"The resolver associated with this event"
resolver: Resolver!
"The block number at which the event occurred"
blockNumber: Int!
"The transaction hash associated with the event"
transactionID: Bytes!
"The owner of the authorisation"
owner: Bytes!
"The target of the authorisation"
target: Bytes!
"Whether the authorisation was added or removed"
isAuthorized: Boolean!
}
type VersionChanged implements ResolverEvent @entity {
"Unique identifier for this event"
id: ID!
"The resolver associated with this event"
resolver: Resolver!
"The block number at which the event occurred"
blockNumber: Int!
"The transaction hash associated with the event"
transactionID: Bytes!
"The new version number of the resolver"
version: BigInt!
}