@mavrykdynamics/taquito
Version:
High level functionality that builds upon the other packages in the Mavryk Typescript Library Suite.
67 lines (66 loc) • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BatchOperation = void 0;
const bignumber_js_1 = require("bignumber.js");
const rpc_batch_provider_1 = require("../batch/rpc-batch-provider");
const errors_1 = require("./errors");
const operations_1 = require("./operations");
const types_1 = require("./types");
class BatchOperation extends operations_1.Operation {
constructor(hash, params, source, raw, results, context) {
super(hash, raw, results, context);
this.params = params;
this.source = source;
}
sumProp(arr, prop) {
return arr.reduce((prev, current) => {
return prop in current ? Number(current[prop]) + prev : prev;
}, 0);
}
getOriginatedContractAddresses() {
const originationOpResults = this.results.filter((x) => x.kind === 'origination');
let addresses = [];
for (const res of originationOpResults) {
if (res.metadata.operation_result.originated_contracts) {
addresses = [...addresses, ...res.metadata.operation_result.originated_contracts];
}
}
return addresses;
}
get status() {
return (this.results
.filter((result) => rpc_batch_provider_1.BATCH_KINDS.indexOf(result.kind) !== -1)
.map((result) => {
if ((0, types_1.hasMetadataWithResult)(result)) {
const opResult = result.metadata.operation_result;
return opResult.status;
}
else {
return 'unknown';
}
})[0] || 'unknown');
}
get fee() {
return this.sumProp(this.params, 'fee');
}
get gasLimit() {
return this.sumProp(this.params, 'gas_limit');
}
get storageLimit() {
return this.sumProp(this.params, 'storage_limit');
}
get consumedGas() {
bignumber_js_1.default.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: bignumber_js_1.default.ROUND_UP });
return new bignumber_js_1.default(this.consumedMilliGas).dividedBy(1000).toString();
}
get consumedMilliGas() {
return String(this.sumProp((0, errors_1.flattenOperationResult)({ contents: this.results }), 'consumed_milligas'));
}
get storageDiff() {
return String(this.sumProp((0, errors_1.flattenOperationResult)({ contents: this.results }), 'paid_storage_size_diff'));
}
get errors() {
return (0, errors_1.flattenErrors)({ contents: this.results });
}
}
exports.BatchOperation = BatchOperation;