@show-karma/karma-gap-sdk 0.3.3 → 0.3.5

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.
@@ -0,0 +1,508 @@
1
+ [
2
+ {
3
+ "inputs": [
4
+ {
5
+ "internalType": "contract IEAS",
6
+ "name": "eas",
7
+ "type": "address"
8
+ }
9
+ ],
10
+ "stateMutability": "nonpayable",
11
+ "type": "constructor"
12
+ },
13
+ {
14
+ "inputs": [],
15
+ "name": "AccessDenied",
16
+ "type": "error"
17
+ },
18
+ {
19
+ "inputs": [],
20
+ "name": "InsufficientValue",
21
+ "type": "error"
22
+ },
23
+ {
24
+ "inputs": [],
25
+ "name": "InvalidEAS",
26
+ "type": "error"
27
+ },
28
+ {
29
+ "inputs": [],
30
+ "name": "NotPayable",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "anonymous": false,
35
+ "inputs": [
36
+ {
37
+ "indexed": false,
38
+ "internalType": "uint8",
39
+ "name": "version",
40
+ "type": "uint8"
41
+ }
42
+ ],
43
+ "name": "Initialized",
44
+ "type": "event"
45
+ },
46
+ {
47
+ "anonymous": false,
48
+ "inputs": [
49
+ {
50
+ "indexed": true,
51
+ "internalType": "address",
52
+ "name": "previousOwner",
53
+ "type": "address"
54
+ },
55
+ {
56
+ "indexed": true,
57
+ "internalType": "address",
58
+ "name": "newOwner",
59
+ "type": "address"
60
+ }
61
+ ],
62
+ "name": "OwnershipTransferred",
63
+ "type": "event"
64
+ },
65
+ {
66
+ "inputs": [
67
+ {
68
+ "components": [
69
+ {
70
+ "internalType": "bytes32",
71
+ "name": "uid",
72
+ "type": "bytes32"
73
+ },
74
+ {
75
+ "internalType": "bytes32",
76
+ "name": "schema",
77
+ "type": "bytes32"
78
+ },
79
+ {
80
+ "internalType": "uint64",
81
+ "name": "time",
82
+ "type": "uint64"
83
+ },
84
+ {
85
+ "internalType": "uint64",
86
+ "name": "expirationTime",
87
+ "type": "uint64"
88
+ },
89
+ {
90
+ "internalType": "uint64",
91
+ "name": "revocationTime",
92
+ "type": "uint64"
93
+ },
94
+ {
95
+ "internalType": "bytes32",
96
+ "name": "refUID",
97
+ "type": "bytes32"
98
+ },
99
+ {
100
+ "internalType": "address",
101
+ "name": "recipient",
102
+ "type": "address"
103
+ },
104
+ {
105
+ "internalType": "address",
106
+ "name": "attester",
107
+ "type": "address"
108
+ },
109
+ {
110
+ "internalType": "bool",
111
+ "name": "revocable",
112
+ "type": "bool"
113
+ },
114
+ {
115
+ "internalType": "bytes",
116
+ "name": "data",
117
+ "type": "bytes"
118
+ }
119
+ ],
120
+ "internalType": "struct Attestation",
121
+ "name": "attestation",
122
+ "type": "tuple"
123
+ }
124
+ ],
125
+ "name": "attest",
126
+ "outputs": [
127
+ {
128
+ "internalType": "bool",
129
+ "name": "",
130
+ "type": "bool"
131
+ }
132
+ ],
133
+ "stateMutability": "payable",
134
+ "type": "function"
135
+ },
136
+ {
137
+ "inputs": [
138
+ {
139
+ "internalType": "address",
140
+ "name": "attester",
141
+ "type": "address"
142
+ }
143
+ ],
144
+ "name": "canAttest",
145
+ "outputs": [
146
+ {
147
+ "internalType": "bool",
148
+ "name": "",
149
+ "type": "bool"
150
+ }
151
+ ],
152
+ "stateMutability": "view",
153
+ "type": "function"
154
+ },
155
+ {
156
+ "inputs": [
157
+ {
158
+ "internalType": "bytes32",
159
+ "name": "community",
160
+ "type": "bytes32"
161
+ },
162
+ {
163
+ "internalType": "address",
164
+ "name": "addr",
165
+ "type": "address"
166
+ }
167
+ ],
168
+ "name": "delist",
169
+ "outputs": [],
170
+ "stateMutability": "nonpayable",
171
+ "type": "function"
172
+ },
173
+ {
174
+ "inputs": [
175
+ {
176
+ "internalType": "bytes32",
177
+ "name": "community",
178
+ "type": "bytes32"
179
+ },
180
+ {
181
+ "internalType": "address",
182
+ "name": "addr",
183
+ "type": "address"
184
+ }
185
+ ],
186
+ "name": "enlist",
187
+ "outputs": [],
188
+ "stateMutability": "nonpayable",
189
+ "type": "function"
190
+ },
191
+ {
192
+ "inputs": [],
193
+ "name": "initialize",
194
+ "outputs": [],
195
+ "stateMutability": "nonpayable",
196
+ "type": "function"
197
+ },
198
+ {
199
+ "inputs": [
200
+ {
201
+ "internalType": "bytes32",
202
+ "name": "community",
203
+ "type": "bytes32"
204
+ },
205
+ {
206
+ "internalType": "address",
207
+ "name": "addr",
208
+ "type": "address"
209
+ }
210
+ ],
211
+ "name": "isAdmin",
212
+ "outputs": [
213
+ {
214
+ "internalType": "bool",
215
+ "name": "",
216
+ "type": "bool"
217
+ }
218
+ ],
219
+ "stateMutability": "view",
220
+ "type": "function"
221
+ },
222
+ {
223
+ "inputs": [],
224
+ "name": "isPayable",
225
+ "outputs": [
226
+ {
227
+ "internalType": "bool",
228
+ "name": "",
229
+ "type": "bool"
230
+ }
231
+ ],
232
+ "stateMutability": "pure",
233
+ "type": "function"
234
+ },
235
+ {
236
+ "inputs": [
237
+ {
238
+ "components": [
239
+ {
240
+ "internalType": "bytes32",
241
+ "name": "uid",
242
+ "type": "bytes32"
243
+ },
244
+ {
245
+ "internalType": "bytes32",
246
+ "name": "schema",
247
+ "type": "bytes32"
248
+ },
249
+ {
250
+ "internalType": "uint64",
251
+ "name": "time",
252
+ "type": "uint64"
253
+ },
254
+ {
255
+ "internalType": "uint64",
256
+ "name": "expirationTime",
257
+ "type": "uint64"
258
+ },
259
+ {
260
+ "internalType": "uint64",
261
+ "name": "revocationTime",
262
+ "type": "uint64"
263
+ },
264
+ {
265
+ "internalType": "bytes32",
266
+ "name": "refUID",
267
+ "type": "bytes32"
268
+ },
269
+ {
270
+ "internalType": "address",
271
+ "name": "recipient",
272
+ "type": "address"
273
+ },
274
+ {
275
+ "internalType": "address",
276
+ "name": "attester",
277
+ "type": "address"
278
+ },
279
+ {
280
+ "internalType": "bool",
281
+ "name": "revocable",
282
+ "type": "bool"
283
+ },
284
+ {
285
+ "internalType": "bytes",
286
+ "name": "data",
287
+ "type": "bytes"
288
+ }
289
+ ],
290
+ "internalType": "struct Attestation[]",
291
+ "name": "attestations",
292
+ "type": "tuple[]"
293
+ },
294
+ {
295
+ "internalType": "uint256[]",
296
+ "name": "values",
297
+ "type": "uint256[]"
298
+ }
299
+ ],
300
+ "name": "multiAttest",
301
+ "outputs": [
302
+ {
303
+ "internalType": "bool",
304
+ "name": "",
305
+ "type": "bool"
306
+ }
307
+ ],
308
+ "stateMutability": "payable",
309
+ "type": "function"
310
+ },
311
+ {
312
+ "inputs": [
313
+ {
314
+ "components": [
315
+ {
316
+ "internalType": "bytes32",
317
+ "name": "uid",
318
+ "type": "bytes32"
319
+ },
320
+ {
321
+ "internalType": "bytes32",
322
+ "name": "schema",
323
+ "type": "bytes32"
324
+ },
325
+ {
326
+ "internalType": "uint64",
327
+ "name": "time",
328
+ "type": "uint64"
329
+ },
330
+ {
331
+ "internalType": "uint64",
332
+ "name": "expirationTime",
333
+ "type": "uint64"
334
+ },
335
+ {
336
+ "internalType": "uint64",
337
+ "name": "revocationTime",
338
+ "type": "uint64"
339
+ },
340
+ {
341
+ "internalType": "bytes32",
342
+ "name": "refUID",
343
+ "type": "bytes32"
344
+ },
345
+ {
346
+ "internalType": "address",
347
+ "name": "recipient",
348
+ "type": "address"
349
+ },
350
+ {
351
+ "internalType": "address",
352
+ "name": "attester",
353
+ "type": "address"
354
+ },
355
+ {
356
+ "internalType": "bool",
357
+ "name": "revocable",
358
+ "type": "bool"
359
+ },
360
+ {
361
+ "internalType": "bytes",
362
+ "name": "data",
363
+ "type": "bytes"
364
+ }
365
+ ],
366
+ "internalType": "struct Attestation[]",
367
+ "name": "attestations",
368
+ "type": "tuple[]"
369
+ },
370
+ {
371
+ "internalType": "uint256[]",
372
+ "name": "values",
373
+ "type": "uint256[]"
374
+ }
375
+ ],
376
+ "name": "multiRevoke",
377
+ "outputs": [
378
+ {
379
+ "internalType": "bool",
380
+ "name": "",
381
+ "type": "bool"
382
+ }
383
+ ],
384
+ "stateMutability": "payable",
385
+ "type": "function"
386
+ },
387
+ {
388
+ "inputs": [],
389
+ "name": "owner",
390
+ "outputs": [
391
+ {
392
+ "internalType": "address",
393
+ "name": "",
394
+ "type": "address"
395
+ }
396
+ ],
397
+ "stateMutability": "view",
398
+ "type": "function"
399
+ },
400
+ {
401
+ "inputs": [],
402
+ "name": "renounceOwnership",
403
+ "outputs": [],
404
+ "stateMutability": "nonpayable",
405
+ "type": "function"
406
+ },
407
+ {
408
+ "inputs": [
409
+ {
410
+ "components": [
411
+ {
412
+ "internalType": "bytes32",
413
+ "name": "uid",
414
+ "type": "bytes32"
415
+ },
416
+ {
417
+ "internalType": "bytes32",
418
+ "name": "schema",
419
+ "type": "bytes32"
420
+ },
421
+ {
422
+ "internalType": "uint64",
423
+ "name": "time",
424
+ "type": "uint64"
425
+ },
426
+ {
427
+ "internalType": "uint64",
428
+ "name": "expirationTime",
429
+ "type": "uint64"
430
+ },
431
+ {
432
+ "internalType": "uint64",
433
+ "name": "revocationTime",
434
+ "type": "uint64"
435
+ },
436
+ {
437
+ "internalType": "bytes32",
438
+ "name": "refUID",
439
+ "type": "bytes32"
440
+ },
441
+ {
442
+ "internalType": "address",
443
+ "name": "recipient",
444
+ "type": "address"
445
+ },
446
+ {
447
+ "internalType": "address",
448
+ "name": "attester",
449
+ "type": "address"
450
+ },
451
+ {
452
+ "internalType": "bool",
453
+ "name": "revocable",
454
+ "type": "bool"
455
+ },
456
+ {
457
+ "internalType": "bytes",
458
+ "name": "data",
459
+ "type": "bytes"
460
+ }
461
+ ],
462
+ "internalType": "struct Attestation",
463
+ "name": "attestation",
464
+ "type": "tuple"
465
+ }
466
+ ],
467
+ "name": "revoke",
468
+ "outputs": [
469
+ {
470
+ "internalType": "bool",
471
+ "name": "",
472
+ "type": "bool"
473
+ }
474
+ ],
475
+ "stateMutability": "payable",
476
+ "type": "function"
477
+ },
478
+ {
479
+ "inputs": [
480
+ {
481
+ "internalType": "address",
482
+ "name": "newOwner",
483
+ "type": "address"
484
+ }
485
+ ],
486
+ "name": "transferOwnership",
487
+ "outputs": [],
488
+ "stateMutability": "nonpayable",
489
+ "type": "function"
490
+ },
491
+ {
492
+ "inputs": [],
493
+ "name": "version",
494
+ "outputs": [
495
+ {
496
+ "internalType": "string",
497
+ "name": "",
498
+ "type": "string"
499
+ }
500
+ ],
501
+ "stateMutability": "view",
502
+ "type": "function"
503
+ },
504
+ {
505
+ "stateMutability": "payable",
506
+ "type": "receive"
507
+ }
508
+ ]
@@ -205,7 +205,16 @@ export declare class GAP extends Facade {
205
205
  * Get the multicall contract
206
206
  * @param signer
207
207
  */
208
- static getProjectResolver(signer: SignerOrProvider, chainId?: number): ethers.Contract;
208
+ static getProjectResolver(signer: SignerOrProvider & {
209
+ getChainId?: () => Promise<number>;
210
+ }, chainId?: number): Promise<ethers.Contract>;
211
+ /**
212
+ * Get the multicall contract
213
+ * @param signer
214
+ */
215
+ static getCommunityResolver(signer: SignerOrProvider & {
216
+ getChainId?: () => Promise<number>;
217
+ }, chainId?: number): Promise<ethers.Contract>;
209
218
  get schemas(): GapSchema[];
210
219
  /**
211
220
  * Defined if the transactions will be gasless or not.
package/core/class/GAP.js CHANGED
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.GAP = void 0;
7
7
  const MultiAttester_json_1 = __importDefault(require("../abi/MultiAttester.json"));
8
8
  const ProjectResolver_json_1 = __importDefault(require("../abi/ProjectResolver.json"));
9
+ const CommunityResolverABI_json_1 = __importDefault(require("../abi/CommunityResolverABI.json"));
9
10
  const types_1 = require("../types");
10
11
  const Schema_1 = require("./Schema");
11
12
  const GapSchema_1 = require("./GapSchema");
@@ -186,12 +187,28 @@ class GAP extends types_1.Facade {
186
187
  * Get the multicall contract
187
188
  * @param signer
188
189
  */
189
- static getProjectResolver(signer, chainId) {
190
+ static async getProjectResolver(signer, chainId) {
191
+ const currentChainId = chainId ||
192
+ Number((await signer.provider.getNetwork())?.chainId ||
193
+ (await signer.getChainId()));
190
194
  const provider = chainId ? (0, get_web3_provider_1.getWeb3Provider)(chainId) : signer;
191
- const network = Object.values(consts_1.Networks).find((n) => +n.chainId === Number(chainId));
195
+ const network = Object.values(consts_1.Networks).find((n) => +n.chainId === Number(currentChainId));
192
196
  const address = network.contracts.projectResolver;
193
197
  return new ethers_1.ethers.Contract(address, ProjectResolver_json_1.default, provider);
194
198
  }
199
+ /**
200
+ * Get the multicall contract
201
+ * @param signer
202
+ */
203
+ static async getCommunityResolver(signer, chainId) {
204
+ const currentChainId = chainId ||
205
+ Number((await signer.provider.getNetwork())?.chainId ||
206
+ (await signer.getChainId()));
207
+ const provider = chainId ? (0, get_web3_provider_1.getWeb3Provider)(chainId) : signer;
208
+ const network = Object.values(consts_1.Networks).find((n) => +n.chainId === Number(currentChainId));
209
+ const address = network.contracts.communityResolver;
210
+ return new ethers_1.ethers.Contract(address, CommunityResolverABI_json_1.default, provider);
211
+ }
195
212
  get schemas() {
196
213
  return this._schemas;
197
214
  }
@@ -171,7 +171,7 @@ class GapContract {
171
171
  * @returns
172
172
  */
173
173
  static async transferProjectOwnership(signer, projectUID, newOwner) {
174
- const contract = GAP_1.GAP.getProjectResolver(signer);
174
+ const contract = await GAP_1.GAP.getProjectResolver(signer);
175
175
  const tx = await contract.functions.transferProjectOwnership(projectUID, newOwner);
176
176
  return tx.wait?.();
177
177
  }
@@ -182,7 +182,7 @@ class GapContract {
182
182
  * @returns
183
183
  */
184
184
  static async isProjectOwner(signer, projectUID, projectChainId) {
185
- const contract = GAP_1.GAP.getProjectResolver(signer, projectChainId);
185
+ const contract = await GAP_1.GAP.getProjectResolver(signer, projectChainId);
186
186
  const address = await this.getSignerAddress(signer);
187
187
  const isOwner = await contract.functions.isAdmin(projectUID, address);
188
188
  return !!isOwner?.[0];
package/core/consts.js CHANGED
@@ -20,40 +20,6 @@ exports.zeroAddress = exports.nullResolver;
20
20
  * The networks that are supported by the EAS
21
21
  */
22
22
  exports.Networks = {
23
- // mainnet: {
24
- // url: "https://easscan.org/graphql",
25
- // chainId: 1,
26
- // contracts: {
27
- // eas: "0xA1207F3BBa224E2c9c3c6D5aF63D0eb1582Ce587",
28
- // schema: "0xA7b39296258348C78294F95B872b282326A97BDF",
29
- // multicall:''
30
- // },
31
- // schemas: {
32
- // Grant: "",
33
- // GrantVerified: "",
34
- // MemberOf: "",
35
- // MilestoneApproved: "",
36
- // MilestoneCompleted: "",
37
- // Project: "",
38
- // },
39
- // },
40
- // "base-goerli": {
41
- // chainId: 5,
42
- // url: "https://base-goerli.easscan.org/graphql",
43
- // contracts: {
44
- // eas: "0xAcfE09Fd03f7812F022FBf636700AdEA18Fd2A7A",
45
- // schema: "0x720c2bA66D19A725143FBf5fDC5b4ADA2742682E",
46
- // multicall:''
47
- // },
48
- // schemas: {
49
- // Grant: "",
50
- // GrantVerified: "",
51
- // MemberOf: "",
52
- // MilestoneApproved: "",
53
- // MilestoneCompleted: "",
54
- // Project: "",
55
- // },
56
- // },
57
23
  optimism: {
58
24
  chainId: 10,
59
25
  url: 'https://optimism.easscan.org/graphql',
@@ -63,6 +29,7 @@ exports.Networks = {
63
29
  schema: '0x4200000000000000000000000000000000000020',
64
30
  multicall: '0xd2eD366393FDfd243931Fe48e9fb65A192B0018c',
65
31
  projectResolver: '0x7177AdC0f924b695C0294A40C4C5FEFf5EE1E141',
32
+ communityResolver: '0x6dC1D6b864e8BEf815806f9e4677123496e12026',
66
33
  },
67
34
  schemas: {
68
35
  Community: '0x721c17b065dccc5c916e0c2708d0ef50f1810591b76d0402ff6fe5accbd8488f',
@@ -84,6 +51,7 @@ exports.Networks = {
84
51
  schema: '0x4200000000000000000000000000000000000020',
85
52
  multicall: '0x5D5a8032b2FA06652804c33F60DcEA00e389B732',
86
53
  projectResolver: '0xbCf8910Bc3971eA59D93256357b76E846CF2e1F8',
54
+ communityResolver: '0xa09369bDE7E4403a9C821AffA00E649cF85Ef09e',
87
55
  },
88
56
  schemas: {
89
57
  Community: '0xc1aade58410b3fd807c19845181996721248459c5f042284f27d21cec12a38d1',
@@ -106,6 +74,7 @@ exports.Networks = {
106
74
  schema: '0xA310da9c5B885E7fb3fbA9D66E9Ba6Df512b78eB',
107
75
  multicall: '0x6dC1D6b864e8BEf815806f9e4677123496e12026',
108
76
  projectResolver: '0x28BE0b0515be8BB8822aF1467A6613795E74717b',
77
+ communityResolver: '0xD534C4704F82494aBbc901560046fB62Ac63E9C4',
109
78
  },
110
79
  schemas: {
111
80
  Community: '0xc604f0661cfd522583835ed2b2c644b80e068139d287f93c7f1680888894bacc',
@@ -127,6 +96,7 @@ exports.Networks = {
127
96
  schema: '0x0a7E2Ff54e76B8E6659aedc9103FB21c038050D0',
128
97
  multicall: '0xec8d7BFe344790FD860920C41B46B259c005727A',
129
98
  projectResolver: '0x099787D5a5aC92779A519CfD925ACB0Dc7E8bd23',
99
+ communityResolver: '0xa9E55D9F52d7B47792d2Db15F6A9674c56ccc5C9',
130
100
  },
131
101
  schemas: {
132
102
  Community: '0xf3d790c7fdab6c1b1f25ffcc9289e5be2792eb596d2851a4d059c8aae1bc8b2e',
package/core/types.d.ts CHANGED
@@ -67,6 +67,7 @@ export interface EASNetworkConfig {
67
67
  schema: Hex;
68
68
  multicall: Hex;
69
69
  projectResolver: Hex;
70
+ communityResolver: Hex;
70
71
  };
71
72
  /**
72
73
  * A tuple containing the schema name and it's UID for that network
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.3.3",
6
+ "version": "0.3.5",
7
7
  "description": "Simple and easy interface between EAS and Karma GAP.",
8
8
  "main": "./index.js",
9
9
  "author": "KarmaHQ",