@witnet/ethers
Version:
Wit/Oracle Ethers Framework package for EVM-compatible projects
79 lines • 10.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WitPriceFeedsLegacy = void 0;
const WitAppliance_1 = require("./WitAppliance");
class WitPriceFeedsLegacy extends WitAppliance_1.WitAppliance {
constructor(witOracle, at) {
super(witOracle, "WitPriceFeedsLegacy", at);
}
static async at(witOracle, target) {
const priceFeeds = new WitPriceFeedsLegacy(witOracle, target);
const oracleAddr = await priceFeeds.contract.witnet.staticCall();
if (oracleAddr !== witOracle.address) {
throw new Error(`WitPriceFeedsLegacy at ${target}: mismatching Wit/Oracle address (${oracleAddr})`);
}
return priceFeeds;
}
async getEvmFootprint() {
return this.contract
.footprint
.staticCall();
}
async isCaptionSupported(caption) {
return this.contract
.supportsCaption
.staticCall(caption);
}
async lookupPriceFeedCaption(id4) {
return this.contract
.lookupCaption
.staticCall(id4);
}
async lookupPriceFeedExponent(id4) {
return this.contract
.lookupDecimals
.staticCall(id4)
.then(result => Number(result));
}
async lookupPriceFeeds() {
let priceFeeds = await this.contract
.supportedFeeds
.staticCall()
.then(results => {
const [id4s, captions, dataSources] = results;
return id4s.map((id4, index) => ({
id4,
exponent: -Number(captions[index].split('#')[0].split('-').slice(-1)[0]),
symbol: captions[index],
...(dataSources[index].endsWith("00000000000000")
? {
mapper: {
class: "product",
deps: [
dataSources[index].slice(0, 42),
],
},
} : {
oracle: {
class: "Witnet",
target: this.witOracle.address,
sources: dataSources[index],
},
}),
}));
});
let latestPrices = await this.contract
.latestPrices
.staticCall(priceFeeds.map(pf => pf.id4));
return priceFeeds.map((pf, index) => ({
...pf,
lastUpdate: {
timestamp: latestPrices[index].timestamp,
trail: latestPrices[index].drTxHash,
price: Number(latestPrices[index].value) / 10 ** (-pf.exponent)
}
}));
}
}
exports.WitPriceFeedsLegacy = WitPriceFeedsLegacy;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2l0UHJpY2VGZWVkc0xlZ2FjeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvd3JhcHBlcnMvV2l0UHJpY2VGZWVkc0xlZ2FjeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxpREFBNkM7QUFHN0MsTUFBYSxtQkFBb0IsU0FBUSwyQkFBWTtJQUVqRCxZQUF1QixTQUFvQixFQUFFLEVBQVU7UUFDbkQsS0FBSyxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBb0IsRUFBRSxNQUFjO1FBQ2hELE1BQU0sVUFBVSxHQUFHLElBQUksbUJBQW1CLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzdELE1BQU0sVUFBVSxHQUFHLE1BQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDaEUsSUFBSSxVQUFVLEtBQUssU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLE1BQU0scUNBQXFDLFVBQVUsR0FBRyxDQUFDLENBQUE7UUFDdkcsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFBO0lBQ3JCLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRO2FBQ2YsU0FBUzthQUNULFVBQVUsRUFBRSxDQUFBO0lBQ3JCLENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBZTtRQUMzQyxPQUFPLElBQUksQ0FBQyxRQUFRO2FBQ2YsZUFBZTthQUNmLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM1QixDQUFDO0lBRU0sS0FBSyxDQUFDLHNCQUFzQixDQUFDLEdBQXFCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLFFBQVE7YUFDZixhQUFhO2FBQ2IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3hCLENBQUM7SUFFTSxLQUFLLENBQUMsdUJBQXVCLENBQUMsR0FBcUI7UUFDdEQsT0FBTyxJQUFJLENBQUMsUUFBUTthQUNmLGNBQWM7YUFDZCxVQUFVLENBQUMsR0FBRyxDQUFDO2FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0I7UUFDekIsSUFBSSxVQUFVLEdBQXFCLE1BQU0sSUFBSSxDQUFDLFFBQVE7YUFDakQsY0FBYzthQUNkLFVBQVUsRUFBRTthQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNaLE1BQU0sQ0FBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBRSxHQUFHLE9BQU8sQ0FBQTtZQUMvQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFXLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QyxHQUFHO2dCQUNILFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZCLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO29CQUM3QyxDQUFDLENBQUM7d0JBQ0UsTUFBTSxFQUFFOzRCQUNKLEtBQUssRUFBRSxTQUFTOzRCQUNoQixJQUFJLEVBQUU7Z0NBQ0YsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDOzZCQUNsQzt5QkFDSjtxQkFDSixDQUFDLENBQUMsQ0FBQztvQkFDQSxNQUFNLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFFBQVE7d0JBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTzt3QkFDOUIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUM7cUJBQzlCO2lCQUNKLENBQ0o7YUFDSixDQUFDLENBQUMsQ0FBQTtRQUNQLENBQUMsQ0FBQyxDQUFBO1FBRU4sSUFBSSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUTthQUNqQyxZQUFZO2FBQ1osVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUU3QyxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLEdBQUcsRUFBRTtZQUNMLFVBQVUsRUFBRTtnQkFDUixTQUFTLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVM7Z0JBQ3hDLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUTtnQkFDbkMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO2FBQ2xFO1NBQ0osQ0FBQyxDQUFDLENBQUE7SUFDUCxDQUFDO0NBQ0o7QUFsRkQsa0RBa0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2l0bmV0IH0gZnJvbSBcIkB3aXRuZXQvc2RrXCJcclxuaW1wb3J0IHsgUHJpY2VGZWVkIH0gZnJvbSBcIi4uL3R5cGVzXCJcclxuaW1wb3J0IHsgV2l0QXBwbGlhbmNlIH0gZnJvbSBcIi4vV2l0QXBwbGlhbmNlXCJcclxuaW1wb3J0IHsgV2l0T3JhY2xlIH0gZnJvbSBcIi4vV2l0T3JhY2xlXCJcclxuXHJcbmV4cG9ydCBjbGFzcyBXaXRQcmljZUZlZWRzTGVnYWN5IGV4dGVuZHMgV2l0QXBwbGlhbmNlIHtcclxuICAgIFxyXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yICh3aXRPcmFjbGU6IFdpdE9yYWNsZSwgYXQ6IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKHdpdE9yYWNsZSwgXCJXaXRQcmljZUZlZWRzTGVnYWN5XCIsIGF0KVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBhc3luYyBhdCh3aXRPcmFjbGU6IFdpdE9yYWNsZSwgdGFyZ2V0OiBzdHJpbmcpOiBQcm9taXNlPFdpdFByaWNlRmVlZHNMZWdhY3k+IHtcclxuICAgICAgICBjb25zdCBwcmljZUZlZWRzID0gbmV3IFdpdFByaWNlRmVlZHNMZWdhY3kod2l0T3JhY2xlLCB0YXJnZXQpXHJcbiAgICAgICAgY29uc3Qgb3JhY2xlQWRkciA9IGF3YWl0IHByaWNlRmVlZHMuY29udHJhY3Qud2l0bmV0LnN0YXRpY0NhbGwoKVxyXG4gICAgICAgIGlmIChvcmFjbGVBZGRyICE9PSB3aXRPcmFjbGUuYWRkcmVzcykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdpdFByaWNlRmVlZHNMZWdhY3kgYXQgJHt0YXJnZXR9OiBtaXNtYXRjaGluZyBXaXQvT3JhY2xlIGFkZHJlc3MgKCR7b3JhY2xlQWRkcn0pYClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHByaWNlRmVlZHNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RXZtRm9vdHByaW50KCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJhY3RcclxuICAgICAgICAgICAgLmZvb3RwcmludFxyXG4gICAgICAgICAgICAuc3RhdGljQ2FsbCgpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGlzQ2FwdGlvblN1cHBvcnRlZChjYXB0aW9uOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb250cmFjdFxyXG4gICAgICAgICAgICAuc3VwcG9ydHNDYXB0aW9uXHJcbiAgICAgICAgICAgIC5zdGF0aWNDYWxsKGNhcHRpb24pXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGxvb2t1cFByaWNlRmVlZENhcHRpb24oaWQ0OiBXaXRuZXQuSGV4U3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb250cmFjdFxyXG4gICAgICAgICAgICAubG9va3VwQ2FwdGlvblxyXG4gICAgICAgICAgICAuc3RhdGljQ2FsbChpZDQpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGxvb2t1cFByaWNlRmVlZEV4cG9uZW50KGlkNDogV2l0bmV0LkhleFN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJhY3RcclxuICAgICAgICAgICAgLmxvb2t1cERlY2ltYWxzXHJcbiAgICAgICAgICAgIC5zdGF0aWNDYWxsKGlkNClcclxuICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IE51bWJlcihyZXN1bHQpKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBsb29rdXBQcmljZUZlZWRzKCk6IFByb21pc2U8QXJyYXk8UHJpY2VGZWVkPj4ge1xyXG4gICAgICAgIGxldCBwcmljZUZlZWRzOiBBcnJheTxQcmljZUZlZWQ+ID0gYXdhaXQgdGhpcy5jb250cmFjdFxyXG4gICAgICAgICAgICAuc3VwcG9ydGVkRmVlZHNcclxuICAgICAgICAgICAgLnN0YXRpY0NhbGwoKVxyXG4gICAgICAgICAgICAudGhlbihyZXN1bHRzID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFsgaWQ0cywgY2FwdGlvbnMsIGRhdGFTb3VyY2VzIF0gPSByZXN1bHRzXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaWQ0cy5tYXAoKGlkNDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgIGlkNCxcclxuICAgICAgICAgICAgICAgICAgICBleHBvbmVudDogLU51bWJlcihjYXB0aW9uc1tpbmRleF0uc3BsaXQoJyMnKVswXS5zcGxpdCgnLScpLnNsaWNlKC0xKVswXSksXHJcbiAgICAgICAgICAgICAgICAgICAgc3ltYm9sOiBjYXB0aW9uc1tpbmRleF0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uKGRhdGFTb3VyY2VzW2luZGV4XS5lbmRzV2l0aChcIjAwMDAwMDAwMDAwMDAwXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IFwicHJvZHVjdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHM6IFsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2VzW2luZGV4XS5zbGljZSgwLCA0MiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmFjbGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogXCJXaXRuZXRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHRoaXMud2l0T3JhY2xlLmFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlczogZGF0YVNvdXJjZXNbaW5kZXhdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBcclxuICAgICAgICBsZXQgbGF0ZXN0UHJpY2VzID0gYXdhaXQgdGhpcy5jb250cmFjdFxyXG4gICAgICAgICAgICAubGF0ZXN0UHJpY2VzXHJcbiAgICAgICAgICAgIC5zdGF0aWNDYWxsKHByaWNlRmVlZHMubWFwKHBmID0+IHBmLmlkNCkpXHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHByaWNlRmVlZHMubWFwKChwZiwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICAgIC4uLnBmLFxyXG4gICAgICAgICAgICBsYXN0VXBkYXRlOiB7XHJcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGxhdGVzdFByaWNlc1tpbmRleF0udGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgdHJhaWw6IGxhdGVzdFByaWNlc1tpbmRleF0uZHJUeEhhc2gsXHJcbiAgICAgICAgICAgICAgICBwcmljZTogTnVtYmVyKGxhdGVzdFByaWNlc1tpbmRleF0udmFsdWUpIC8gMTAgKiogKC1wZi5leHBvbmVudClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pKVxyXG4gICAgfVxyXG59XHJcbiJdfQ==