-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathschema.graphql
325 lines (300 loc) · 9.9 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
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
"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 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")
}
type Account @entity {
"The unique identifier for the account"
id: ID!
"The domains owned by the account"
domains: [Domain!]! @derivedFrom(field: "owner")
}
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!
}
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 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 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 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 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!
}
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 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")
}
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 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 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 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 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 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
}