diff --git a/.prettierrc b/.prettierrc index 853ae99..808bbea 100644 --- a/.prettierrc +++ b/.prettierrc @@ -8,5 +8,6 @@ "trailingComma": "none", "arrowParens": "always", "bracketSpacing": true, + "importOrderParserPlugins": ["typescript", "decorators-legacy"], "importOrderTypeScriptVersion": "5.0.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index f856199..93d631c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 2.6.0 + +- Support initializing/connecting SDK objects with/to non-signer providers + ## 2.5.0 - Add schema verification function diff --git a/dist/eas.d.ts b/dist/eas.d.ts index 7bc42af..c23d443 100644 --- a/dist/eas.d.ts +++ b/dist/eas.d.ts @@ -3,7 +3,7 @@ import { Overrides } from 'ethers'; import { EIP712Proxy } from './eip712-proxy'; import { Delegated, Offchain } from './offchain'; import { AttestationRequest, DelegatedAttestationRequest, DelegatedProxyAttestationRequest, DelegatedProxyRevocationRequest, DelegatedRevocationRequest, MultiAttestationRequest, MultiDelegatedAttestationRequest, MultiDelegatedProxyAttestationRequest, MultiDelegatedProxyRevocationRequest, MultiDelegatedRevocationRequest, MultiRevocationRequest, RevocationRequest } from './request'; -import { Base, Transaction, TransactionSigner } from './transaction'; +import { Base, Transaction, TransactionProvider, TransactionSigner } from './transaction'; export { Overrides } from 'ethers'; export * from './request'; export interface Attestation { @@ -19,9 +19,10 @@ export interface Attestation { data: string; } export interface EASOptions { - signer?: TransactionSigner; + signer?: TransactionSigner | TransactionProvider; proxy?: EIP712Proxy; } +export declare const RequireProxy: (_target: unknown, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; export declare class EAS extends Base { private proxy?; private delegated?; @@ -29,7 +30,7 @@ export declare class EAS extends Base { private version?; private legacyEAS; constructor(address: string, options?: EASOptions); - connect(signer: TransactionSigner): this; + connect(signer: TransactionSigner | TransactionProvider): this; getVersion(): Promise; getAttestation(uid: string): Promise; isAttestationValid(uid: string): Promise; diff --git a/dist/eas.js b/dist/eas.js index b0c21b2..53fd961 100644 --- a/dist/eas.js +++ b/dist/eas.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.EAS = void 0; +exports.EAS = exports.RequireProxy = void 0; const tslib_1 = require("tslib"); const eas_contracts_1 = require("@ethereum-attestation-service/eas-contracts"); const semver_1 = tslib_1.__importDefault(require("semver")); @@ -12,6 +12,19 @@ const transaction_1 = require("./transaction"); const utils_1 = require("./utils"); const LEGACY_VERSION = '1.1.0'; tslib_1.__exportStar(require("./request"), exports); +const RequireProxy = (_target, _propertyKey, descriptor) => { + const originalMethod = descriptor.value; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + descriptor.value = function (...args) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + if (!this.proxy) { + throw new Error('Invalid proxy'); + } + return originalMethod.apply(this, args); + }; + return descriptor; +}; +exports.RequireProxy = RequireProxy; class EAS extends transaction_1.Base { proxy; delegated; @@ -92,18 +105,12 @@ class EAS extends transaction_1.Base { } // Attests to a specific schema async attest({ schema, data: { recipient = utils_1.ZERO_ADDRESS, data, expirationTime = request_1.NO_EXPIRATION, revocable = true, refUID = utils_1.ZERO_BYTES32, value = 0n } }, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } return new transaction_1.Transaction(await this.contract.attest.populateTransaction({ schema, data: { recipient, expirationTime, revocable, refUID, data, value } }, { value, ...overrides }), this.signer, // eslint-disable-next-line require-await async (receipt) => (0, utils_1.getUIDsFromAttestReceipt)(receipt)[0]); } // Attests to a specific schema via an EIP712 delegation request async attestByDelegation({ schema, data: { recipient = utils_1.ZERO_ADDRESS, data, expirationTime = request_1.NO_EXPIRATION, revocable = true, refUID = utils_1.ZERO_BYTES32, value = 0n }, signature, attester, deadline = request_1.NO_EXPIRATION }, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } let tx; if (await this.isLegacyContract()) { tx = await this.legacyEAS.contract.attestByDelegation.populateTransaction({ @@ -142,9 +149,6 @@ class EAS extends transaction_1.Base { } // Multi-attests to multiple schemas async multiAttest(requests, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } const multiAttestationRequests = requests.map((r) => ({ schema: r.schema, data: r.data.map((d) => ({ @@ -169,9 +173,6 @@ class EAS extends transaction_1.Base { } // Multi-attests to multiple schemas via an EIP712 delegation requests async multiAttestByDelegation(requests, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } let tx; if (await this.isLegacyContract()) { const multiAttestationRequests = requests.map((r) => ({ @@ -227,16 +228,10 @@ class EAS extends transaction_1.Base { } // Revokes an existing attestation async revoke({ schema, data: { uid, value = 0n } }, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } return new transaction_1.Transaction(await this.contract.revoke.populateTransaction({ schema, data: { uid, value } }, { value, ...overrides }), this.signer, async () => { }); } // Revokes an existing attestation an EIP712 delegation request async revokeByDelegation({ schema, data: { uid, value = 0n }, signature, revoker, deadline = request_1.NO_EXPIRATION }, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } let tx; if (await this.isLegacyContract()) { tx = await this.legacyEAS.contract.revokeByDelegation.populateTransaction({ @@ -265,9 +260,6 @@ class EAS extends transaction_1.Base { } // Multi-revokes multiple attestations async multiRevoke(requests, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } const multiRevocationRequests = requests.map((r) => ({ schema: r.schema, data: r.data.map((d) => ({ @@ -286,12 +278,6 @@ class EAS extends transaction_1.Base { } // Multi-revokes multiple attestations via an EIP712 delegation requests async multiRevokeByDelegation(requests, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } - if (!this.signer) { - throw new Error('Invalid signer'); - } let tx; if (await this.isLegacyContract()) { const multiRevocationRequests = requests.map((r) => ({ @@ -336,64 +322,40 @@ class EAS extends transaction_1.Base { } // Attests to a specific schema via an EIP712 delegation request using an external EIP712 proxy attestByDelegationProxy(request, overrides) { - if (!this.proxy) { - throw new Error("Proxy wasn't set"); - } return this.proxy.attestByDelegationProxy(request, overrides); } // Multi-attests to multiple schemas via an EIP712 delegation requests using an external EIP712 proxy multiAttestByDelegationProxy(requests, overrides) { - if (!this.proxy) { - throw new Error("Proxy wasn't set"); - } return this.proxy.multiAttestByDelegationProxy(requests, overrides); } // Revokes an existing attestation an EIP712 delegation request using an external EIP712 proxy revokeByDelegationProxy(request, overrides) { - if (!this.proxy) { - throw new Error("Proxy wasn't set"); - } return this.proxy.revokeByDelegationProxy(request, overrides); } // Multi-revokes multiple attestations via an EIP712 delegation requests using an external EIP712 proxy multiRevokeByDelegationProxy(requests, overrides) { - if (!this.proxy) { - throw new Error("Proxy wasn't set"); - } return this.proxy.multiRevokeByDelegationProxy(requests, overrides); } // Timestamps the specified bytes32 data async timestamp(data, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } return new transaction_1.Transaction(await this.contract.timestamp.populateTransaction(data, overrides ?? {}), this.signer, // eslint-disable-next-line require-await async (receipt) => (0, utils_1.getTimestampFromTimestampReceipt)(receipt)[0]); } // Timestamps the specified multiple bytes32 data async multiTimestamp(data, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } return new transaction_1.Transaction(await this.contract.multiTimestamp.populateTransaction(data, overrides ?? {}), this.signer, // eslint-disable-next-line require-await async (receipt) => (0, utils_1.getTimestampFromTimestampReceipt)(receipt)); } // Revokes the specified offchain attestation UID async revokeOffchain(uid, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } return new transaction_1.Transaction(await this.contract.revokeOffchain.populateTransaction(uid, overrides ?? {}), this.signer, // eslint-disable-next-line require-await async (receipt) => (0, utils_1.getTimestampFromOffchainRevocationReceipt)(receipt)[0]); } // Revokes the specified multiple offchain attestation UIDs async multiRevokeOffchain(uids, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } return new transaction_1.Transaction(await this.contract.multiRevokeOffchain.populateTransaction(uids, overrides ?? {}), this.signer, // eslint-disable-next-line require-await async (receipt) => (0, utils_1.getTimestampFromOffchainRevocationReceipt)(receipt)); @@ -442,4 +404,104 @@ class EAS extends transaction_1.Base { } } exports.EAS = EAS; +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "attest", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "attestByDelegation", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Array, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "multiAttest", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Array, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "multiAttestByDelegation", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "revoke", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "revokeByDelegation", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Array, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "multiRevoke", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Array, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "multiRevokeByDelegation", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + exports.RequireProxy, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "attestByDelegationProxy", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + exports.RequireProxy, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Array, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "multiAttestByDelegationProxy", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + exports.RequireProxy, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "revokeByDelegationProxy", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + exports.RequireProxy, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Array, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "multiRevokeByDelegationProxy", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [String, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "timestamp", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Array, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "multiTimestamp", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [String, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "revokeOffchain", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Array, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EAS.prototype, "multiRevokeOffchain", null); //# sourceMappingURL=eas.js.map \ No newline at end of file diff --git a/dist/eas.js.map b/dist/eas.js.map index 25f1fb6..b20f11d 100644 --- a/dist/eas.js.map +++ b/dist/eas.js.map @@ -1 +1 @@ -{"version":3,"file":"eas.js","sourceRoot":"","sources":["../src/eas.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"eas.js","sourceRoot":"","sources":["../src/eas.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/eip712-proxy.d.ts b/dist/eip712-proxy.d.ts index 78cf932..2b4500c 100644 --- a/dist/eip712-proxy.d.ts +++ b/dist/eip712-proxy.d.ts @@ -2,14 +2,14 @@ import { EIP712Proxy as EIP712ProxyContract } from '@ethereum-attestation-servic import { Overrides } from 'ethers'; import { DelegatedProxy } from './offchain'; import { DelegatedProxyAttestationRequest, DelegatedProxyRevocationRequest, MultiDelegatedProxyAttestationRequest, MultiDelegatedProxyRevocationRequest } from './request'; -import { Base, Transaction, TransactionSigner } from './transaction'; +import { Base, Transaction, TransactionProvider, TransactionSigner } from './transaction'; export interface EIP712ProxyOptions { - signer?: TransactionSigner; + signer?: TransactionSigner | TransactionProvider; } export declare class EIP712Proxy extends Base { private delegated?; constructor(address: string, options?: EIP712ProxyOptions); - connect(signer: TransactionSigner): this; + connect(signer: TransactionSigner | TransactionProvider): this; getVersion(): Promise; getEAS(): Promise; getName(): Promise; diff --git a/dist/eip712-proxy.js b/dist/eip712-proxy.js index 4e169bc..083f695 100644 --- a/dist/eip712-proxy.js +++ b/dist/eip712-proxy.js @@ -1,6 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EIP712Proxy = void 0; +const tslib_1 = require("tslib"); const eas_contracts_1 = require("@ethereum-attestation-service/eas-contracts"); const version_1 = require("./legacy/version"); const offchain_1 = require("./offchain"); @@ -56,9 +57,6 @@ class EIP712Proxy extends transaction_1.Base { } // Attests to a specific schema via an EIP712 delegation request using an external EIP712 proxy async attestByDelegationProxy({ schema, data: { recipient, data, expirationTime = request_1.NO_EXPIRATION, revocable = true, refUID = utils_1.ZERO_BYTES32, value = 0n }, attester, signature, deadline = request_1.NO_EXPIRATION }, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } return new transaction_1.Transaction(await this.contract.attestByDelegation.populateTransaction({ schema, data: { @@ -78,9 +76,6 @@ class EIP712Proxy extends transaction_1.Base { } // Multi-attests to multiple schemas via an EIP712 delegation requests using an external EIP712 proxy async multiAttestByDelegationProxy(requests, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } const multiAttestationRequests = requests.map((r) => ({ schema: r.schema, data: r.data.map((d) => ({ @@ -108,9 +103,6 @@ class EIP712Proxy extends transaction_1.Base { } // Revokes an existing attestation an EIP712 delegation request using an external EIP712 proxy async revokeByDelegationProxy({ schema, data: { uid, value = 0n }, signature, revoker, deadline = request_1.NO_EXPIRATION }, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } return new transaction_1.Transaction(await this.contract.revokeByDelegation.populateTransaction({ schema, data: { @@ -124,9 +116,6 @@ class EIP712Proxy extends transaction_1.Base { } // Multi-revokes multiple attestations via an EIP712 delegation requests using an external EIP712 proxy async multiRevokeByDelegationProxy(requests, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } const multiRevocationRequests = requests.map((r) => ({ schema: r.schema, data: r.data.map((d) => ({ @@ -158,4 +147,28 @@ class EIP712Proxy extends transaction_1.Base { } } exports.EIP712Proxy = EIP712Proxy; +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EIP712Proxy.prototype, "attestByDelegationProxy", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Array, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EIP712Proxy.prototype, "multiAttestByDelegationProxy", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EIP712Proxy.prototype, "revokeByDelegationProxy", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Array, Object]), + tslib_1.__metadata("design:returntype", Promise) +], EIP712Proxy.prototype, "multiRevokeByDelegationProxy", null); //# sourceMappingURL=eip712-proxy.js.map \ No newline at end of file diff --git a/dist/eip712-proxy.js.map b/dist/eip712-proxy.js.map index 638631c..ceb8d03 100644 --- a/dist/eip712-proxy.js.map +++ b/dist/eip712-proxy.js.map @@ -1 +1 @@ -{"version":3,"file":"eip712-proxy.js","sourceRoot":"","sources":["../src/eip712-proxy.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"eip712-proxy.js","sourceRoot":"","sources":["../src/eip712-proxy.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/indexer.d.ts b/dist/indexer.d.ts index b8dfa3c..81aa0a0 100644 --- a/dist/indexer.d.ts +++ b/dist/indexer.d.ts @@ -1,8 +1,8 @@ import { Indexer as IndexerContract } from '@ethereum-attestation-service/eas-contracts'; import { Overrides } from 'ethers'; -import { Base, Transaction, TransactionSigner } from './transaction'; +import { Base, Transaction, TransactionProvider, TransactionSigner } from './transaction'; export interface IndexerOptions { - signer?: TransactionSigner; + signer?: TransactionSigner | TransactionProvider; } export interface UIDOptions { uid: string; @@ -44,7 +44,7 @@ export interface GetSchemaAttestationUIDCountOptions { export declare class Indexer extends Base { private delegated?; constructor(address: string, options?: IndexerOptions); - connect(signer: TransactionSigner): this; + connect(signer: TransactionSigner | TransactionProvider): this; getVersion(): Promise; getEAS(): Promise; indexAttestation({ uid }: IndexAttestationOptions, overrides?: Overrides): Promise>; diff --git a/dist/indexer.js b/dist/indexer.js index 684e6df..970b165 100644 --- a/dist/indexer.js +++ b/dist/indexer.js @@ -1,6 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Indexer = void 0; +const tslib_1 = require("tslib"); const eas_contracts_1 = require("@ethereum-attestation-service/eas-contracts"); const version_1 = require("./legacy/version"); const transaction_1 = require("./transaction"); @@ -26,16 +27,10 @@ class Indexer extends transaction_1.Base { } // Indexes an existing attestation async indexAttestation({ uid }, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } return new transaction_1.Transaction(await this.contract.indexAttestation.populateTransaction(uid, { ...overrides }), this.signer, async () => { }); } // Indexes multiple existing attestations async indexAttestations({ uids }, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } return new transaction_1.Transaction(await this.contract.indexAttestations.populateTransaction(uids, { ...overrides }), this.signer, async () => { }); } isAttestationIndexed({ uid }, overrides) { @@ -79,4 +74,16 @@ class Indexer extends transaction_1.Base { } } exports.Indexer = Indexer; +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, Object]), + tslib_1.__metadata("design:returntype", Promise) +], Indexer.prototype, "indexAttestation", null); +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, Object]), + tslib_1.__metadata("design:returntype", Promise) +], Indexer.prototype, "indexAttestations", null); //# sourceMappingURL=indexer.js.map \ No newline at end of file diff --git a/dist/indexer.js.map b/dist/indexer.js.map index 024ed3b..0c724c2 100644 --- a/dist/indexer.js.map +++ b/dist/indexer.js.map @@ -1 +1 @@ -{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":";;;;AAAA,+EAA2G;AAE3G,8CAAiD;AAEjD,+CAAyG;AAsDzG,MAAa,OAAQ,SAAQ,kBAAqB;IACxC,SAAS,CAAkB;IAEnC,YAAY,OAAe,EAAE,OAAwB;QACnD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAEjC,KAAK,CAAC,IAAI,gCAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,wCAAwC;IACjC,OAAO,CAAC,MAA+C;QAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;QAEtB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sCAAsC;IAC/B,KAAK,CAAC,UAAU;QACrB,OAAO,CAAC,MAAM,IAAA,uBAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACzE,CAAC;IAED,0CAA0C;IACnC,MAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,kCAAkC;IAErB,AAAN,KAAK,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAA2B,EAAE,SAAqB;QACnF,OAAO,IAAI,yBAAW,CACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,EAC/E,IAAI,CAAC,MAAO,EACZ,KAAK,IAAI,EAAE,GAAE,CAAC,CACf,CAAC;IACJ,CAAC;IAED,yCAAyC;IAE5B,AAAN,KAAK,CAAC,iBAAiB,CAC5B,EAAE,IAAI,EAA4B,EAClC,SAAqB;QAErB,OAAO,IAAI,yBAAW,CACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,EACjF,IAAI,CAAC,MAAO,EACZ,KAAK,IAAI,EAAE,GAAE,CAAC,CACf,CAAC;IACJ,CAAC;IAEM,oBAAoB,CAAC,EAAE,GAAG,EAA+B,EAAE,SAAqB;QACrF,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAAG,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAEM,0BAA0B,CAC/B,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAqC,EACrF,SAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IACpH,CAAC;IAEM,8BAA8B,CACnC,EAAE,SAAS,EAAE,MAAM,EAAyC,EAC5D,SAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,SAAS,EAAE,MAAM,EAAE;YACrE,GAAG,SAAS;SACb,CAAC,CAAC;IACL,CAAC;IAEM,sBAAsB,CAC3B,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAiC,EAChF,SAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IAC/G,CAAC;IAEM,0BAA0B,CAC/B,EAAE,QAAQ,EAAE,MAAM,EAAqC,EACvD,SAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE;YAChE,GAAG,SAAS;SACb,CAAC,CAAC;IACL,CAAC;IAEM,yCAAyC,CAC9C,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAoD,EAC9G,SAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAC5D,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,YAAY,EACZ;YACE,GAAG,SAAS;SACb,CACF,CAAC;IACJ,CAAC;IAEM,6CAA6C,CAClD,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAwD,EACrF,SAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,6CAA6C,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC9F,GAAG,SAAS;SACb,CAAC,CAAC;IACL,CAAC;IAEM,wBAAwB,CAC7B,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAmC,EACxE,SAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;YACjF,GAAG,SAAS;SACb,CAAC,CAAC;IACL,CAAC;IAEM,4BAA4B,CACjC,EAAE,MAAM,EAAuC,EAC/C,SAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,MAAM,EAAE;YACxD,GAAG,SAAS;SACb,CAAC,CAAC;IACL,CAAC;CACF;AAlID,0BAkIC;AApGc;IADZ,2BAAa;;;;+CAOb;AAIY;IADZ,2BAAa;;;;gDAUb"} \ No newline at end of file diff --git a/dist/request.d.ts b/dist/request.d.ts index 8996173..2cbe965 100644 --- a/dist/request.d.ts +++ b/dist/request.d.ts @@ -34,6 +34,10 @@ export interface RevocationRequest { schema: string; data: RevocationRequestData; } +export interface OffchainRevocationRequest { + schema: string; + data: RevocationRequestData; +} export interface DelegatedRevocationRequest extends RevocationRequest { signature: Signature; revoker: string; diff --git a/dist/schema-registry.d.ts b/dist/schema-registry.d.ts index 373c081..2fd6faf 100644 --- a/dist/schema-registry.d.ts +++ b/dist/schema-registry.d.ts @@ -1,6 +1,6 @@ import { SchemaRegistry as SchemaRegistryContract } from '@ethereum-attestation-service/eas-contracts'; import { Overrides } from 'ethers'; -import { Base, Transaction, TransactionSigner } from './transaction'; +import { Base, Transaction, TransactionProvider, TransactionSigner } from './transaction'; export declare type SchemaRecord = { uid: string; resolver: string; @@ -16,7 +16,7 @@ export interface GetSchemaParams { uid: string; } export interface SchemaRegistryOptions { - signer?: TransactionSigner; + signer?: TransactionSigner | TransactionProvider; } export declare class SchemaRegistry extends Base { constructor(address: string, options?: SchemaRegistryOptions); diff --git a/dist/schema-registry.js b/dist/schema-registry.js index c8617c3..018891b 100644 --- a/dist/schema-registry.js +++ b/dist/schema-registry.js @@ -1,6 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SchemaRegistry = void 0; +const tslib_1 = require("tslib"); const eas_contracts_1 = require("@ethereum-attestation-service/eas-contracts"); const version_1 = require("./legacy/version"); const transaction_1 = require("./transaction"); @@ -16,9 +17,6 @@ class SchemaRegistry extends transaction_1.Base { } // Registers a new schema and returns its UID async register({ schema, resolverAddress = utils_1.ZERO_ADDRESS, revocable = true }, overrides) { - if (!this.signer) { - throw new Error('Invalid signer'); - } return new transaction_1.Transaction(await this.contract.register.populateTransaction(schema, resolverAddress, revocable, overrides ?? {}), this.signer, // eslint-disable-next-line require-await async (_receipt) => (0, utils_1.getSchemaUID)(schema, resolverAddress, revocable)); @@ -33,4 +31,10 @@ class SchemaRegistry extends transaction_1.Base { } } exports.SchemaRegistry = SchemaRegistry; +tslib_1.__decorate([ + transaction_1.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Object, Object]), + tslib_1.__metadata("design:returntype", Promise) +], SchemaRegistry.prototype, "register", null); //# sourceMappingURL=schema-registry.js.map \ No newline at end of file diff --git a/dist/schema-registry.js.map b/dist/schema-registry.js.map index 430f07a..0aa6290 100644 --- a/dist/schema-registry.js.map +++ b/dist/schema-registry.js.map @@ -1 +1 @@ -{"version":3,"file":"schema-registry.js","sourceRoot":"","sources":["../src/schema-registry.ts"],"names":[],"mappings":";;;AAAA,+EAGqD;AAErD,8CAAiD;AACjD,+CAAqE;AACrE,mCAAmE;AAuBnE,MAAa,cAAe,SAAQ,kBAA4B;IAC9D,YAAY,OAAe,EAAE,OAA+B;QAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAEjC,KAAK,CAAC,IAAI,uCAAuB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,sCAAsC;IAC/B,KAAK,CAAC,UAAU;QACrB,OAAO,CAAC,MAAM,IAAA,uBAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACzE,CAAC;IAED,6CAA6C;IACtC,KAAK,CAAC,QAAQ,CACnB,EAAE,MAAM,EAAE,eAAe,GAAG,oBAAY,EAAE,SAAS,GAAG,IAAI,EAAwB,EAClF,SAAqB;QAErB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,yBAAW,CACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC,EACrG,IAAI,CAAC,MAAM;QACX,yCAAyC;QACzC,KAAK,EAAE,QAA4B,EAAE,EAAE,CAAC,IAAA,oBAAY,EAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,CACzF,CAAC;IACJ,CAAC;IAED,6CAA6C;IACtC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,EAAmB;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,GAAG,KAAK,oBAAY,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAtCD,wCAsCC"} \ No newline at end of file +{"version":3,"file":"schema-registry.js","sourceRoot":"","sources":["../src/schema-registry.ts"],"names":[],"mappings":";;;;AAAA,+EAGqD;AAErD,8CAAiD;AACjD,+CAAyG;AACzG,mCAAmE;AAuBnE,MAAa,cAAe,SAAQ,kBAA4B;IAC9D,YAAY,OAAe,EAAE,OAA+B;QAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAEjC,KAAK,CAAC,IAAI,uCAAuB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,sCAAsC;IAC/B,KAAK,CAAC,UAAU;QACrB,OAAO,CAAC,MAAM,IAAA,uBAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACzE,CAAC;IAED,6CAA6C;IAEhC,AAAN,KAAK,CAAC,QAAQ,CACnB,EAAE,MAAM,EAAE,eAAe,GAAG,oBAAY,EAAE,SAAS,GAAG,IAAI,EAAwB,EAClF,SAAqB;QAErB,OAAO,IAAI,yBAAW,CACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC,EACrG,IAAI,CAAC,MAAO;QACZ,yCAAyC;QACzC,KAAK,EAAE,QAA4B,EAAE,EAAE,CAAC,IAAA,oBAAY,EAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,CACzF,CAAC;IACJ,CAAC;IAED,6CAA6C;IACtC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,EAAmB;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,GAAG,KAAK,oBAAY,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAnCD,wCAmCC;AArBc;IADZ,2BAAa;;;;8CAWb"} \ No newline at end of file diff --git a/dist/transaction.d.ts b/dist/transaction.d.ts index cac610d..0ab8b4b 100644 --- a/dist/transaction.d.ts +++ b/dist/transaction.d.ts @@ -1,22 +1,25 @@ import { BaseContract, ContractFactory, ContractTransaction, TransactionReceipt, TransactionRequest } from 'ethers'; -export interface TransactionSigner { +export interface TransactionProvider { estimateGas: (tx: TransactionRequest) => Promise; - sendTransaction: (tx: TransactionRequest) => Promise; call: (tx: TransactionRequest) => Promise; resolveName: (name: string) => Promise; } +export interface TransactionSigner extends TransactionProvider { + sendTransaction: (tx: TransactionRequest) => Promise; +} +export declare const RequireSigner: (_target: unknown, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; export declare class Transaction { readonly data: ContractTransaction; receipt?: TransactionReceipt; private readonly signer; private readonly waitCallback; - constructor(data: ContractTransaction, signer: TransactionSigner, waitCallback: (receipt: TransactionReceipt) => Promise); + constructor(data: ContractTransaction, signer: TransactionSigner | TransactionProvider, waitCallback: (receipt: TransactionReceipt) => Promise); wait(confirmations?: number): Promise; } export declare class Base { contract: C; - protected signer?: TransactionSigner; - constructor(factory: ContractFactory, address: string, signer?: TransactionSigner); - connect(signer: TransactionSigner): this; + protected signer?: TransactionSigner | TransactionProvider; + constructor(factory: ContractFactory, address: string, signer?: TransactionSigner | TransactionProvider); + connect(signer: TransactionSigner | TransactionProvider): this; getChainId(): Promise; } diff --git a/dist/transaction.js b/dist/transaction.js index 04c5be3..1c9e5d6 100644 --- a/dist/transaction.js +++ b/dist/transaction.js @@ -1,6 +1,21 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.Base = exports.Transaction = void 0; +exports.Base = exports.Transaction = exports.RequireSigner = void 0; +const tslib_1 = require("tslib"); +const RequireSigner = (_target, _propertyKey, descriptor) => { + const originalMethod = descriptor.value; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + descriptor.value = function (...args) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const signer = this.signer; + if (!signer || !signer.sendTransaction) { + throw new Error('Invalid signer'); + } + return originalMethod.apply(this, args); + }; + return descriptor; +}; +exports.RequireSigner = RequireSigner; class Transaction { data; receipt; @@ -24,6 +39,12 @@ class Transaction { } } exports.Transaction = Transaction; +tslib_1.__decorate([ + exports.RequireSigner, + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [Number]), + tslib_1.__metadata("design:returntype", Promise) +], Transaction.prototype, "wait", null); class Base { contract; signer; diff --git a/dist/transaction.js.map b/dist/transaction.js.map index cba9bd3..e988fdf 100644 --- a/dist/transaction.js.map +++ b/dist/transaction.js.map @@ -1 +1 @@ -{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":";;;AAiBA,MAAa,WAAW;IACN,IAAI,CAAsB;IACnC,OAAO,CAAsB;IACnB,MAAM,CAAoB;IAC1B,YAAY,CAA8C;IAE3E,YACE,IAAyB,EACzB,MAAyB,EACzB,YAAyD;QAEzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,aAAsB;QACtC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;CACF;AA7BD,kCA6BC;AAED,MAAa,IAAI;IACR,QAAQ,CAAI;IACT,MAAM,CAAqB;IAErC,YAAY,OAAwB,EAAE,OAAe,EAAE,MAA0B;QAC/E,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAM,CAAC;QAC7C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAErB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAED,wCAAwC;IACjC,OAAO,CAAC,MAAyB;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAmC,CAAM,CAAC;QAEhF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB;IACb,KAAK,CAAC,UAAU;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC;IAC/C,CAAC;CACF;AA/BD,oBA+BC"} \ No newline at end of file +{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":";;;;AAqBO,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAE,YAAoB,EAAE,UAA8B,EAAE,EAAE;IACtG,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;IAExC,8DAA8D;IAC9D,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW;QACzC,8DAA8D;QAC9D,MAAM,MAAM,GAAmC,IAAY,CAAC,MAAM,CAAC;QACnE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAdW,QAAA,aAAa,iBAcxB;AAEF,MAAa,WAAW;IACN,IAAI,CAAsB;IACnC,OAAO,CAAsB;IACnB,MAAM,CAA0C;IAChD,YAAY,CAA8C;IAE3E,YACE,IAAyB,EACzB,MAA+C,EAC/C,YAAyD;QAEzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAGY,AAAN,KAAK,CAAC,IAAI,CAAC,aAAsB;QACtC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,EAAE,GAAG,MAAO,IAAI,CAAC,MAA4B,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;CACF;AA9BD,kCA8BC;AAbc;IADZ,qBAAa;;;;uCAab;AAGH,MAAa,IAAI;IACR,QAAQ,CAAI;IACT,MAAM,CAA2C;IAE3D,YAAY,OAAwB,EAAE,OAAe,EAAE,MAAgD;QACrG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAM,CAAC;QAC7C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAErB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAED,wCAAwC;IACjC,OAAO,CAAC,MAA+C;QAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAmC,CAAM,CAAC;QAEhF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB;IACb,KAAK,CAAC,UAAU;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC;IAC/C,CAAC;CACF;AA/BD,oBA+BC"} \ No newline at end of file diff --git a/package.json b/package.json index 809b376..41cc359 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ethereum-attestation-service/eas-sdk", - "version": "2.5.0", + "version": "2.6.0", "description": "Ethereum Attestation Service - TypeScript/JavaScript SDK", "repository": "git@github.com:ethereum-attestation-service/eas-sdk.git", "author": "Leonid Beder ", @@ -14,7 +14,7 @@ "build": "rm -rf dist && tsc --build tsconfig.json", "test": "cd test && pnpm test", "lint": "eslint src test", - "format": "prettier --check --write . --config .prettierrc", + "format": "prettier --check --write src --config .prettierrc", "prepare:release": "pnpm lint && pnpm format && pnpm test && pnpm build" }, "dependencies": { diff --git a/src/eas.ts b/src/eas.ts index b59365b..7d58562 100644 --- a/src/eas.ts +++ b/src/eas.ts @@ -20,7 +20,7 @@ import { NO_EXPIRATION, RevocationRequest } from './request'; -import { Base, Transaction, TransactionSigner } from './transaction'; +import { Base, RequireSigner, Transaction, TransactionProvider, TransactionSigner } from './transaction'; import { getTimestampFromOffchainRevocationReceipt, getTimestampFromTimestampReceipt, @@ -48,10 +48,25 @@ export interface Attestation { } export interface EASOptions { - signer?: TransactionSigner; + signer?: TransactionSigner | TransactionProvider; proxy?: EIP712Proxy; } +export const RequireProxy = (_target: unknown, _propertyKey: string, descriptor: PropertyDescriptor) => { + const originalMethod = descriptor.value; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + descriptor.value = function (...args: any[]) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + if (!(this as any).proxy) { + throw new Error('Invalid proxy'); + } + return originalMethod.apply(this, args); + }; + + return descriptor; +}; + export class EAS extends Base { private proxy?: EIP712Proxy; private delegated?: Delegated; @@ -79,7 +94,7 @@ export class EAS extends Base { } // Connects the API to a specific signer - public connect(signer: TransactionSigner) { + public connect(signer: TransactionSigner | TransactionProvider) { delete this.delegated; delete this.offchain; @@ -155,6 +170,7 @@ export class EAS extends Base { } // Attests to a specific schema + @RequireSigner public async attest( { schema, @@ -169,22 +185,19 @@ export class EAS extends Base { }: AttestationRequest, overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - return new Transaction( await this.contract.attest.populateTransaction( { schema, data: { recipient, expirationTime, revocable, refUID, data, value } }, { value, ...overrides } ), - this.signer, + this.signer!, // eslint-disable-next-line require-await async (receipt: TransactionReceipt) => getUIDsFromAttestReceipt(receipt)[0] ); } // Attests to a specific schema via an EIP712 delegation request + @RequireSigner public async attestByDelegation( { schema, @@ -202,10 +215,6 @@ export class EAS extends Base { }: DelegatedAttestationRequest, overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - let tx: ContractTransaction; if (await this.isLegacyContract()) { @@ -247,18 +256,15 @@ export class EAS extends Base { return new Transaction( tx, - this.signer, + this.signer!, // eslint-disable-next-line require-await async (receipt: TransactionReceipt) => getUIDsFromAttestReceipt(receipt)[0] ); } // Multi-attests to multiple schemas + @RequireSigner public async multiAttest(requests: MultiAttestationRequest[], overrides?: Overrides): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - const multiAttestationRequests = requests.map((r) => ({ schema: r.schema, data: r.data.map((d) => ({ @@ -281,21 +287,18 @@ export class EAS extends Base { value: requestedValue, ...overrides }), - this.signer, + this.signer!, // eslint-disable-next-line require-await async (receipt: TransactionReceipt) => getUIDsFromAttestReceipt(receipt) ); } // Multi-attests to multiple schemas via an EIP712 delegation requests + @RequireSigner public async multiAttestByDelegation( requests: MultiDelegatedAttestationRequest[], overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - let tx: ContractTransaction; if (await this.isLegacyContract()) { @@ -352,37 +355,31 @@ export class EAS extends Base { return new Transaction( tx, - this.signer, + this.signer!, // eslint-disable-next-line require-await async (receipt: TransactionReceipt) => getUIDsFromAttestReceipt(receipt) ); } // Revokes an existing attestation + @RequireSigner public async revoke( { schema, data: { uid, value = 0n } }: RevocationRequest, overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - return new Transaction( await this.contract.revoke.populateTransaction({ schema, data: { uid, value } }, { value, ...overrides }), - this.signer, + this.signer!, async () => {} ); } // Revokes an existing attestation an EIP712 delegation request + @RequireSigner public async revokeByDelegation( { schema, data: { uid, value = 0n }, signature, revoker, deadline = NO_EXPIRATION }: DelegatedRevocationRequest, overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - let tx: ContractTransaction; if (await this.isLegacyContract()) { @@ -414,15 +411,12 @@ export class EAS extends Base { ); } - return new Transaction(tx, this.signer, async () => {}); + return new Transaction(tx, this.signer!, async () => {}); } // Multi-revokes multiple attestations + @RequireSigner public async multiRevoke(requests: MultiRevocationRequest[], overrides?: Overrides): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - const multiRevocationRequests = requests.map((r) => ({ schema: r.schema, data: r.data.map((d) => ({ @@ -441,24 +435,17 @@ export class EAS extends Base { value: requestedValue, ...overrides }), - this.signer, + this.signer!, async () => {} ); } // Multi-revokes multiple attestations via an EIP712 delegation requests + @RequireSigner public async multiRevokeByDelegation( requests: MultiDelegatedRevocationRequest[], overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - - if (!this.signer) { - throw new Error('Invalid signer'); - } - let tx: ContractTransaction; if (await this.isLegacyContract()) { @@ -504,108 +491,88 @@ export class EAS extends Base { }); } - return new Transaction(tx, this.signer, async () => {}); + return new Transaction(tx, this.signer!, async () => {}); } // Attests to a specific schema via an EIP712 delegation request using an external EIP712 proxy + @RequireSigner + @RequireProxy public attestByDelegationProxy( request: DelegatedProxyAttestationRequest, overrides?: Overrides ): Promise> { - if (!this.proxy) { - throw new Error("Proxy wasn't set"); - } - - return this.proxy.attestByDelegationProxy(request, overrides); + return this.proxy!.attestByDelegationProxy(request, overrides); } // Multi-attests to multiple schemas via an EIP712 delegation requests using an external EIP712 proxy + @RequireSigner + @RequireProxy public multiAttestByDelegationProxy( requests: MultiDelegatedProxyAttestationRequest[], overrides?: Overrides ): Promise> { - if (!this.proxy) { - throw new Error("Proxy wasn't set"); - } - - return this.proxy.multiAttestByDelegationProxy(requests, overrides); + return this.proxy!.multiAttestByDelegationProxy(requests, overrides); } // Revokes an existing attestation an EIP712 delegation request using an external EIP712 proxy + @RequireSigner + @RequireProxy public revokeByDelegationProxy( request: DelegatedProxyRevocationRequest, overrides?: Overrides ): Promise> { - if (!this.proxy) { - throw new Error("Proxy wasn't set"); - } - - return this.proxy.revokeByDelegationProxy(request, overrides); + return this.proxy!.revokeByDelegationProxy(request, overrides); } // Multi-revokes multiple attestations via an EIP712 delegation requests using an external EIP712 proxy + @RequireSigner + @RequireProxy public multiRevokeByDelegationProxy( requests: MultiDelegatedProxyRevocationRequest[], overrides?: Overrides ): Promise> { - if (!this.proxy) { - throw new Error("Proxy wasn't set"); - } - - return this.proxy.multiRevokeByDelegationProxy(requests, overrides); + return this.proxy!.multiRevokeByDelegationProxy(requests, overrides); } // Timestamps the specified bytes32 data + @RequireSigner public async timestamp(data: string, overrides?: Overrides): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - return new Transaction( await this.contract.timestamp.populateTransaction(data, overrides ?? {}), - this.signer, + this.signer!, // eslint-disable-next-line require-await async (receipt: TransactionReceipt) => getTimestampFromTimestampReceipt(receipt)[0] ); } // Timestamps the specified multiple bytes32 data + @RequireSigner public async multiTimestamp(data: string[], overrides?: Overrides): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - return new Transaction( await this.contract.multiTimestamp.populateTransaction(data, overrides ?? {}), - this.signer, + this.signer!, // eslint-disable-next-line require-await async (receipt: TransactionReceipt) => getTimestampFromTimestampReceipt(receipt) ); } // Revokes the specified offchain attestation UID + @RequireSigner public async revokeOffchain(uid: string, overrides?: Overrides): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - return new Transaction( await this.contract.revokeOffchain.populateTransaction(uid, overrides ?? {}), - this.signer, + this.signer!, // eslint-disable-next-line require-await async (receipt: TransactionReceipt) => getTimestampFromOffchainRevocationReceipt(receipt)[0] ); } // Revokes the specified multiple offchain attestation UIDs + @RequireSigner public async multiRevokeOffchain(uids: string[], overrides?: Overrides): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - return new Transaction( await this.contract.multiRevokeOffchain.populateTransaction(uids, overrides ?? {}), - this.signer, + this.signer!, // eslint-disable-next-line require-await async (receipt: TransactionReceipt) => getTimestampFromOffchainRevocationReceipt(receipt) ); diff --git a/src/eip712-proxy.ts b/src/eip712-proxy.ts index 2a09852..64899d9 100644 --- a/src/eip712-proxy.ts +++ b/src/eip712-proxy.ts @@ -9,11 +9,11 @@ import { MultiDelegatedProxyRevocationRequest, NO_EXPIRATION } from './request'; -import { Base, Transaction, TransactionSigner } from './transaction'; +import { Base, RequireSigner, Transaction, TransactionProvider, TransactionSigner } from './transaction'; import { getUIDsFromAttestReceipt, ZERO_BYTES32 } from './utils'; export interface EIP712ProxyOptions { - signer?: TransactionSigner; + signer?: TransactionSigner | TransactionProvider; } export class EIP712Proxy extends Base { @@ -26,7 +26,7 @@ export class EIP712Proxy extends Base { } // Connects the API to a specific signer - public connect(signer: TransactionSigner) { + public connect(signer: TransactionSigner | TransactionProvider) { delete this.delegated; super.connect(signer); @@ -78,6 +78,7 @@ export class EIP712Proxy extends Base { } // Attests to a specific schema via an EIP712 delegation request using an external EIP712 proxy + @RequireSigner public async attestByDelegationProxy( { schema, @@ -88,10 +89,6 @@ export class EIP712Proxy extends Base { }: DelegatedProxyAttestationRequest, overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - return new Transaction( await this.contract.attestByDelegation.populateTransaction( { @@ -110,21 +107,18 @@ export class EIP712Proxy extends Base { }, { value, ...overrides } ), - this.signer, + this.signer!, // eslint-disable-next-line require-await async (receipt: TransactionReceipt) => getUIDsFromAttestReceipt(receipt)[0] ); } // Multi-attests to multiple schemas via an EIP712 delegation requests using an external EIP712 proxy + @RequireSigner public async multiAttestByDelegationProxy( requests: MultiDelegatedProxyAttestationRequest[], overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - const multiAttestationRequests = requests.map((r) => ({ schema: r.schema, data: r.data.map((d) => ({ @@ -150,13 +144,14 @@ export class EIP712Proxy extends Base { value: requestedValue, ...overrides }), - this.signer, + this.signer!, // eslint-disable-next-line require-await async (receipt: TransactionReceipt) => getUIDsFromAttestReceipt(receipt) ); } // Revokes an existing attestation an EIP712 delegation request using an external EIP712 proxy + @RequireSigner public async revokeByDelegationProxy( { schema, @@ -167,10 +162,6 @@ export class EIP712Proxy extends Base { }: DelegatedProxyRevocationRequest, overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - return new Transaction( await this.contract.revokeByDelegation.populateTransaction( { @@ -185,20 +176,17 @@ export class EIP712Proxy extends Base { }, { value, ...overrides } ), - this.signer, + this.signer!, async () => {} ); } // Multi-revokes multiple attestations via an EIP712 delegation requests using an external EIP712 proxy + @RequireSigner public async multiRevokeByDelegationProxy( requests: MultiDelegatedProxyRevocationRequest[], overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - const multiRevocationRequests = requests.map((r) => ({ schema: r.schema, data: r.data.map((d) => ({ @@ -220,7 +208,7 @@ export class EIP712Proxy extends Base { value: requestedValue, ...overrides }), - this.signer, + this.signer!, async () => {} ); } diff --git a/src/indexer.ts b/src/indexer.ts index 20f2996..33ad0dd 100644 --- a/src/indexer.ts +++ b/src/indexer.ts @@ -2,10 +2,10 @@ import { Indexer__factory, Indexer as IndexerContract } from '@ethereum-attestat import { Overrides } from 'ethers'; import { legacyVersion } from './legacy/version'; import { DelegatedProxy } from './offchain'; -import { Base, Transaction, TransactionSigner } from './transaction'; +import { Base, RequireSigner, Transaction, TransactionProvider, TransactionSigner } from './transaction'; export interface IndexerOptions { - signer?: TransactionSigner; + signer?: TransactionSigner | TransactionProvider; } export interface UIDOptions { @@ -66,7 +66,7 @@ export class Indexer extends Base { } // Connects the API to a specific signer - public connect(signer: TransactionSigner) { + public connect(signer: TransactionSigner | TransactionProvider) { delete this.delegated; super.connect(signer); @@ -85,30 +85,24 @@ export class Indexer extends Base { } // Indexes an existing attestation + @RequireSigner public async indexAttestation({ uid }: IndexAttestationOptions, overrides?: Overrides): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - return new Transaction( await this.contract.indexAttestation.populateTransaction(uid, { ...overrides }), - this.signer, + this.signer!, async () => {} ); } // Indexes multiple existing attestations + @RequireSigner public async indexAttestations( { uids }: IndexAttestationsOptions, overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - return new Transaction( await this.contract.indexAttestations.populateTransaction(uids, { ...overrides }), - this.signer, + this.signer!, async () => {} ); } diff --git a/src/request.ts b/src/request.ts index fee4790..ee4faf5 100644 --- a/src/request.ts +++ b/src/request.ts @@ -43,6 +43,11 @@ export interface RevocationRequest { data: RevocationRequestData; } +export interface OffchainRevocationRequest { + schema: string; + data: RevocationRequestData; +} + export interface DelegatedRevocationRequest extends RevocationRequest { signature: Signature; revoker: string; diff --git a/src/schema-registry.ts b/src/schema-registry.ts index f2845a4..3ceb2a6 100644 --- a/src/schema-registry.ts +++ b/src/schema-registry.ts @@ -4,7 +4,7 @@ import { } from '@ethereum-attestation-service/eas-contracts'; import { Overrides, TransactionReceipt } from 'ethers'; import { legacyVersion } from './legacy/version'; -import { Base, Transaction, TransactionSigner } from './transaction'; +import { Base, RequireSigner, Transaction, TransactionProvider, TransactionSigner } from './transaction'; import { getSchemaUID, ZERO_ADDRESS, ZERO_BYTES32 } from './utils'; export declare type SchemaRecord = { @@ -25,7 +25,7 @@ export interface GetSchemaParams { } export interface SchemaRegistryOptions { - signer?: TransactionSigner; + signer?: TransactionSigner | TransactionProvider; } export class SchemaRegistry extends Base { @@ -41,17 +41,14 @@ export class SchemaRegistry extends Base { } // Registers a new schema and returns its UID + @RequireSigner public async register( { schema, resolverAddress = ZERO_ADDRESS, revocable = true }: RegisterSchemaParams, overrides?: Overrides ): Promise> { - if (!this.signer) { - throw new Error('Invalid signer'); - } - return new Transaction( await this.contract.register.populateTransaction(schema, resolverAddress, revocable, overrides ?? {}), - this.signer, + this.signer!, // eslint-disable-next-line require-await async (_receipt: TransactionReceipt) => getSchemaUID(schema, resolverAddress, revocable) ); diff --git a/src/transaction.ts b/src/transaction.ts index a4842fa..3283e55 100644 --- a/src/transaction.ts +++ b/src/transaction.ts @@ -7,23 +7,43 @@ import { TransactionRequest } from 'ethers'; -export interface TransactionSigner { +export interface TransactionProvider { estimateGas: (tx: TransactionRequest) => Promise; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - sendTransaction: (tx: TransactionRequest) => Promise; + call: (tx: TransactionRequest) => Promise; resolveName: (name: string) => Promise; } +export interface TransactionSigner extends TransactionProvider { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + sendTransaction: (tx: TransactionRequest) => Promise; +} + +export const RequireSigner = (_target: unknown, _propertyKey: string, descriptor: PropertyDescriptor) => { + const originalMethod = descriptor.value; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + descriptor.value = function (...args: any[]) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const signer: TransactionSigner | undefined = (this as any).signer; + if (!signer || !signer.sendTransaction) { + throw new Error('Invalid signer'); + } + return originalMethod.apply(this, args); + }; + + return descriptor; +}; + export class Transaction { public readonly data: ContractTransaction; public receipt?: TransactionReceipt; - private readonly signer: TransactionSigner; + private readonly signer: TransactionSigner | TransactionProvider; private readonly waitCallback: (receipt: TransactionReceipt) => Promise; constructor( data: ContractTransaction, - signer: TransactionSigner, + signer: TransactionSigner | TransactionProvider, waitCallback: (receipt: TransactionReceipt) => Promise ) { this.data = data; @@ -31,12 +51,13 @@ export class Transaction { this.waitCallback = waitCallback; } + @RequireSigner public async wait(confirmations?: number): Promise { if (this.receipt) { throw new Error(`Transaction already broadcast: ${this.receipt}`); } - const tx = await this.signer.sendTransaction(this.data); + const tx = await (this.signer as TransactionSigner).sendTransaction(this.data); this.receipt = await tx.wait(confirmations); if (!this.receipt) { throw new Error(`Unable to confirm: ${tx}`); @@ -48,9 +69,9 @@ export class Transaction { export class Base { public contract: C; - protected signer?: TransactionSigner; + protected signer?: TransactionSigner | TransactionProvider; - constructor(factory: ContractFactory, address: string, signer?: TransactionSigner) { + constructor(factory: ContractFactory, address: string, signer?: TransactionSigner | TransactionProvider) { this.contract = factory.attach(address) as C; if (signer) { this.connect(signer); @@ -60,7 +81,7 @@ export class Base { } // Connects the API to a specific signer - public connect(signer: TransactionSigner) { + public connect(signer: TransactionSigner | TransactionProvider) { this.contract = this.contract.connect(signer as unknown as ContractRunner) as C; this.signer = signer; diff --git a/test/test/eas.ts b/test/test/eas.ts index e897f56..3fd2b3c 100644 --- a/test/test/eas.ts +++ b/test/test/eas.ts @@ -1,5 +1,6 @@ import { encodeBytes32String, Signer } from 'ethers'; import { ethers } from 'hardhat'; +import { getSchemaUID } from '../../src'; import { EAS, NO_EXPIRATION } from '../../src/eas'; import { EIP712Proxy } from '../../src/eip712-proxy'; import { @@ -58,6 +59,235 @@ describe('EAS API', () => { }); }); + describe('partial signer', () => { + const schemaId = getSchemaUID('bool like', ZERO_ADDRESS, true); + let recipient: string; + let attester: string; + const signature = { v: 1, s: ZERO_BYTES32, r: ZERO_BYTES32 }; + + beforeEach(async () => { + recipient: await sender.getAddress(); + attester: await sender.getAddress(); + }); + + enum PartialSignerType { + NoSigner = 'no signer', + Provider = 'provider' + } + + for (const partialSignerType of [PartialSignerType.NoSigner, PartialSignerType.Provider]) { + context(partialSignerType, () => { + beforeEach(async () => { + const easContract = await Contracts.EAS.deploy(await schemaRegistry.contract.getAddress()); + const proxyContract = await Contracts.EIP712Proxy.deploy(await easContract.getAddress(), EIP712_PROXY_NAME); + + switch (partialSignerType) { + case PartialSignerType.NoSigner: + { + const proxy = new EIP712Proxy(await proxyContract.getAddress()); + eas = new EAS(await easContract.getAddress(), { proxy }); + } + + break; + + case PartialSignerType.Provider: + { + const proxy = new EIP712Proxy(await proxyContract.getAddress(), { + signer: ethers.getDefaultProvider() + }); + eas = new EAS(await easContract.getAddress(), { proxy, signer: ethers.getDefaultProvider() }); + } + + break; + + default: + throw new Error(`Unsupported partial signer type: ${partialSignerType}`); + } + }); + + it('should throw an error on methods which require a signer', () => { + expect(() => + eas.attest({ + schema: schemaId, + data: { + recipient, + expirationTime: NO_EXPIRATION, + revocable: true, + data: ZERO_BYTES + } + }) + ).to.throw('Invalid signer'); + + expect(() => + eas.attestByDelegation({ + schema: schemaId, + data: { + recipient, + expirationTime: NO_EXPIRATION, + revocable: true, + data: ZERO_BYTES + }, + attester, + signature + }) + ).to.throw('Invalid signer'); + + expect(() => + eas.attestByDelegationProxy({ + schema: schemaId, + data: { + recipient, + expirationTime: NO_EXPIRATION, + revocable: true, + data: ZERO_BYTES + }, + attester, + signature + }) + ).to.throw('Invalid signer'); + + expect(() => + eas.multiAttest([ + { + schema: schemaId, + data: [ + { + recipient, + expirationTime: NO_EXPIRATION, + revocable: true, + data: ZERO_BYTES + } + ] + } + ]) + ).to.throw('Invalid signer'); + + expect(() => + eas.multiAttestByDelegation([ + { + schema: schemaId, + data: [ + { + recipient, + expirationTime: NO_EXPIRATION, + revocable: true, + data: ZERO_BYTES + } + ], + attester, + signatures: [signature] + } + ]) + ).to.throw('Invalid signer'); + + expect(() => + eas.multiAttestByDelegationProxy([ + { + schema: schemaId, + data: [ + { + recipient, + expirationTime: NO_EXPIRATION, + revocable: true, + data: ZERO_BYTES + } + ], + attester, + signatures: [signature] + } + ]) + ).to.throw('Invalid signer'); + + const uid = ZERO_BYTES32; + + expect(() => + eas.revoke({ + schema: schemaId, + data: { + uid + } + }) + ).to.throw('Invalid signer'); + + expect(() => + eas.revokeByDelegation({ + schema: schemaId, + data: { + uid + }, + revoker: attester, + signature + }) + ).to.throw('Invalid signer'); + + expect(() => + eas.revokeByDelegationProxy({ + schema: schemaId, + data: { + uid + }, + revoker: attester, + signature + }) + ).to.throw('Invalid signer'); + + expect(() => + eas.multiRevoke([ + { + schema: schemaId, + data: [ + { + uid + } + ] + } + ]) + ).to.throw('Invalid signer'); + + expect(() => + eas.multiRevokeByDelegation([ + { + schema: schemaId, + data: [ + { + uid + } + ], + revoker: attester, + signatures: [signature] + } + ]) + ).to.throw('Invalid signer'); + + expect(() => + eas.multiRevokeByDelegationProxy([ + { + schema: schemaId, + data: [ + { + uid + } + ], + revoker: attester, + signatures: [signature] + } + ]) + ).to.throw('Invalid signer'); + + expect(() => eas.revokeOffchain(uid)).to.throw('Invalid signer'); + + expect(() => eas.multiRevokeOffchain([uid])).to.throw('Invalid signer'); + + expect(() => eas.timestamp(uid)).to.throw('Invalid signer'); + + expect(() => eas.multiTimestamp([uid])).to.throw('Invalid signer'); + }); + + context('with a provider', () => {}); + }); + } + }); + for (const { version, signatureTypes } of [ { version: EASVersion.Legacy, @@ -132,7 +362,7 @@ describe('EAS API', () => { ? `with maxPriorityFeePerGas=${maxPriorityFeePerGas.toString()}, maxFeePerGas=${maxFeePerGas.toString()} overrides` : 'with default fees', () => { - context(`with ${revocable ? 'a revocable' : 'an irrevocable'} registered schema`, () => { + context.only(`with ${revocable ? 'a revocable' : 'an irrevocable'} registered schema`, () => { const schema1 = 'bool like'; const schema2 = 'bytes32 proposalId, bool vote'; let schema1Id: string; diff --git a/test/tsconfig.json b/test/tsconfig.json index 965462d..bb6ae34 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -9,6 +9,7 @@ "sourceMap": true, "strict": true, "esModuleInterop": true, + "experimentalDecorators": true, "baseUrl": "./", "paths": { "@nomiclabs/hardhat-ethers/*": ["node_modules/@nomiclabs/hardhat-ethers/dist/src/*"], diff --git a/tsconfig.json b/tsconfig.json index 77880ce..9d71c35 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,6 +22,8 @@ "forceConsistentCasingInFileNames": true, "esModuleInterop": true, "resolveJsonModule": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, "rootDir": "src", "outDir": "dist", "baseUrl": ".",