@witnet/ethers
Version:
Wit/Oracle Ethers Framework package for EVM-compatible projects
71 lines • 8.31 kB
JavaScript
"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==