UNPKG

@witnet/ethers

Version:

Wit/Oracle Ethers Framework package for EVM-compatible projects

71 lines 8.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ContractWrapper = void 0; const ethers_1 = require("ethers"); class ContractWrapper { constructor(signer, network, abi, target) { this._address = target; this._contract = new ethers_1.Contract(target, abi, signer); this.abi = abi; this.network = network; this.provider = signer.provider; this.signer = signer; } attach(target) { this._contract = new ethers_1.Contract(target, this.abi, this.signer); this._address = target; return this; } /** * The address of the underlying Wit/Oracle Framework artifact. */ get address() { return this._address; } /** * The underlying Ethers' contract wrapper. */ get contract() { return this._contract; } /** * Name of the underlying logic implementation contract. * @returns Contract name. */ async getEvmImplClass() { return this.contract .getFunction("class()") .staticCall(); } /** * Get specs identifier of the underlying logic implementation contract. * @returns 4-byte hex string. */ async getEvmImplSpecs() { return this.contract .getFunction("specs()") .staticCall(); } /** * Version tag of the underlying logic implementation contract. * @returns Version tag. */ async getEvmImplVersion() { let version; try { version = await this.provider .call({ to: this.address, data: "0x54fd4d50", // funcSig for 'version()' }) .then(result => ethers_1.AbiCoder.defaultAbiCoder().decode(["string"], result)) .then(result => result.toString()); } catch (_err) { return "(immutable)"; } return version; } } exports.ContractWrapper = ContractWrapper; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJhY3RXcmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi93cmFwcGVycy9Db250cmFjdFdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBU2U7QUFFZixNQUFzQixlQUFlO0lBRWpDLFlBQWEsTUFBcUIsRUFBRSxPQUFlLEVBQUUsR0FBNkIsRUFBRSxNQUE0QjtRQUM1RyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQTtRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksaUJBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQXdCLENBQUMsQ0FBQTtRQUNwRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQTtRQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQTtRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUN4QixDQUFDO0lBS00sTUFBTSxDQUFDLE1BQTRCO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxpQkFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQTtRQUN0QixPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFPRDs7T0FFRztJQUNILElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7SUFDekIsQ0FBQztJQWlCRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRO2FBQ2YsV0FBVyxDQUFDLFNBQVMsQ0FBQzthQUN0QixVQUFVLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsUUFBUTthQUNmLFdBQVcsQ0FBQyxTQUFTLENBQUM7YUFDdEIsVUFBVSxFQUFFLENBQUE7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxpQkFBaUI7UUFDMUIsSUFBSSxPQUFPLENBQUE7UUFDWCxJQUFJLENBQUM7WUFDRCxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUTtpQkFDeEIsSUFBSSxDQUFDO2dCQUNGLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDaEIsSUFBSSxFQUFFLFlBQVksRUFBRSwwQkFBMEI7YUFDakQsQ0FBQztpQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxpQkFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNaLE9BQU8sYUFBYSxDQUFBO1FBQ3hCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQTtJQUNsQixDQUFDO0NBQ0o7QUE3RkQsMENBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXHJcbiAgICBBYmlDb2RlcixcclxuICAgIEFkZHJlc3NhYmxlLFxyXG4gICAgQ29udHJhY3QsIFxyXG4gICAgQ29udHJhY3RSdW5uZXIsXHJcbiAgICBJbnRlcmZhY2UsIFxyXG4gICAgSW50ZXJmYWNlQWJpLCBcclxuICAgIEpzb25ScGNBcGlQcm92aWRlcixcclxuICAgIEpzb25ScGNTaWduZXIsXHJcbn0gZnJvbSBcImV0aGVyc1wiXHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29udHJhY3RXcmFwcGVyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvciAoc2lnbmVyOiBKc29uUnBjU2lnbmVyLCBuZXR3b3JrOiBzdHJpbmcsIGFiaTogSW50ZXJmYWNlIHwgSW50ZXJmYWNlQWJpLCB0YXJnZXQ6IHN0cmluZyB8IEFkZHJlc3NhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5fYWRkcmVzcyA9IHRhcmdldFxyXG4gICAgICAgIHRoaXMuX2NvbnRyYWN0ID0gbmV3IENvbnRyYWN0KHRhcmdldCwgYWJpLCBzaWduZXIgYXMgQ29udHJhY3RSdW5uZXIpXHJcbiAgICAgICAgdGhpcy5hYmkgPSBhYmlcclxuICAgICAgICB0aGlzLm5ldHdvcmsgPSBuZXR3b3JrXHJcbiAgICAgICAgdGhpcy5wcm92aWRlciA9IHNpZ25lci5wcm92aWRlclxyXG4gICAgICAgIHRoaXMuc2lnbmVyID0gc2lnbmVyXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9hZGRyZXNzOiBzdHJpbmcgfCBBZGRyZXNzYWJsZTtcclxuICAgIHByb3RlY3RlZCBfY29udHJhY3Q6IENvbnRyYWN0O1xyXG5cclxuICAgIHB1YmxpYyBhdHRhY2godGFyZ2V0OiBzdHJpbmcgfCBBZGRyZXNzYWJsZSk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fY29udHJhY3QgPSBuZXcgQ29udHJhY3QodGFyZ2V0LCB0aGlzLmFiaSwgdGhpcy5zaWduZXIpXHJcbiAgICAgICAgdGhpcy5fYWRkcmVzcyA9IHRhcmdldFxyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY29udHJhY3QncyBBQkkuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWFkb25seSBhYmk6IEludGVyZmFjZSB8IEludGVyZmFjZUFiaVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGFkZHJlc3Mgb2YgdGhlIHVuZGVybHlpbmcgV2l0L09yYWNsZSBGcmFtZXdvcmsgYXJ0aWZhY3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgYWRkcmVzcygpOiBzdHJpbmcgfCBBZGRyZXNzYWJsZXtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkcmVzc1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHVuZGVybHlpbmcgRXRoZXJzJyBjb250cmFjdCB3cmFwcGVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGNvbnRyYWN0KCk6IENvbnRyYWN0IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY29udHJhY3RcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgRVZNIG5ldHdvcmsgY3VycmVudGx5IGNvbm5lY3RlZCB0by5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBFVEgvUlBDIHByb3ZpZGVyIHVzZWQgb2YgY29udHJhY3QgaW50ZXJhY3Rpb25zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJvdmlkZXI6IEpzb25ScGNBcGlQcm92aWRlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBFVk0gYWRkcmVzcyB0aGF0IHdpbGwgc2lnbiBjb250cmFjdCBpbnRlcmFjdGlvbiB0cmFuc2FjdGlvbnMsIHdoZW4gcmVxdWlyZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWFkb25seSBzaWduZXI6IEpzb25ScGNTaWduZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYW1lIG9mIHRoZSB1bmRlcmx5aW5nIGxvZ2ljIGltcGxlbWVudGF0aW9uIGNvbnRyYWN0LiBcclxuICAgICAqIEByZXR1cm5zIENvbnRyYWN0IG5hbWUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhc3luYyBnZXRFdm1JbXBsQ2xhc3MoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb250cmFjdFxyXG4gICAgICAgICAgICAuZ2V0RnVuY3Rpb24oXCJjbGFzcygpXCIpXHJcbiAgICAgICAgICAgIC5zdGF0aWNDYWxsKClcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBzcGVjcyBpZGVudGlmaWVyIG9mIHRoZSB1bmRlcmx5aW5nIGxvZ2ljIGltcGxlbWVudGF0aW9uIGNvbnRyYWN0LlxyXG4gICAgICogQHJldHVybnMgNC1ieXRlIGhleCBzdHJpbmcuIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RXZtSW1wbFNwZWNzKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJhY3RcclxuICAgICAgICAgICAgLmdldEZ1bmN0aW9uKFwic3BlY3MoKVwiKVxyXG4gICAgICAgICAgICAuc3RhdGljQ2FsbCgpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJzaW9uIHRhZyBvZiB0aGUgdW5kZXJseWluZyBsb2dpYyBpbXBsZW1lbnRhdGlvbiBjb250cmFjdC4gXHJcbiAgICAgKiBAcmV0dXJucyBWZXJzaW9uIHRhZy4gXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhc3luYyBnZXRFdm1JbXBsVmVyc2lvbigpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGxldCB2ZXJzaW9uXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdmVyc2lvbiA9IGF3YWl0IHRoaXMucHJvdmlkZXJcclxuICAgICAgICAgICAgICAgIC5jYWxsKHtcclxuICAgICAgICAgICAgICAgICAgICB0bzogdGhpcy5hZGRyZXNzLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IFwiMHg1NGZkNGQ1MFwiLCAvLyBmdW5jU2lnIGZvciAndmVyc2lvbigpJ1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiBBYmlDb2Rlci5kZWZhdWx0QWJpQ29kZXIoKS5kZWNvZGUoW1wic3RyaW5nXCJdLCByZXN1bHQpKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHJlc3VsdC50b1N0cmluZygpKTtcclxuICAgICAgICB9IGNhdGNoIChfZXJyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIihpbW11dGFibGUpXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZlcnNpb25cclxuICAgIH1cclxufSJdfQ==