1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const client_common_1 = require("@neo-one/client-common");
|
4 | const contractParameter_1 = require("../contractParameter");
|
5 | const Serializable_1 = require("../Serializable");
|
6 | const utils_1 = require("../utils");
|
7 | class InvocationResultBase {
|
8 | constructor({ state, gasConsumed, gasCost, stack }) {
|
9 | this.serializeWire = Serializable_1.createSerializeWire(this.serializeWireBase.bind(this));
|
10 | this.state = state;
|
11 | this.gasConsumed = gasConsumed;
|
12 | this.gasCost = gasCost;
|
13 | this.stack = stack;
|
14 | this.sizeExclusive = () => 0;
|
15 | this.sizeInternal = client_common_1.utils.lazy(() => this.sizeExclusive() +
|
16 | client_common_1.IOHelper.sizeOfUInt8 +
|
17 | client_common_1.IOHelper.sizeOfFixed8 +
|
18 | client_common_1.IOHelper.sizeOfFixed8 +
|
19 | client_common_1.IOHelper.sizeOfArray(this.stack, (value) => value.size));
|
20 | }
|
21 | static deserializeInvocationResultWireBase(options) {
|
22 | const { reader } = options;
|
23 | const state = reader.readUInt8();
|
24 | const gasConsumed = reader.readFixed8();
|
25 | const gasCost = reader.readFixed8();
|
26 | const stack = reader.readArray(() => contractParameter_1.deserializeContractParameterWireBase(options));
|
27 | return {
|
28 | state: client_common_1.assertVMState(state),
|
29 | gasConsumed,
|
30 | gasCost,
|
31 | stack,
|
32 | };
|
33 | }
|
34 | static deserializeWireBase(_options) {
|
35 | throw new Error('Not Implemented');
|
36 | }
|
37 | static deserializeWire(options) {
|
38 | return this.deserializeWireBase({
|
39 | context: options.context,
|
40 | reader: new utils_1.BinaryReader(options.buffer),
|
41 | });
|
42 | }
|
43 | get size() {
|
44 | return this.sizeInternal();
|
45 | }
|
46 | serializeWireBase(writer) {
|
47 | writer.writeUInt8(this.state);
|
48 | writer.writeFixed8(this.gasConsumed);
|
49 | writer.writeFixed8(this.gasCost);
|
50 | writer.writeArray(this.stack, (contractParameter) => contractParameter.serializeWireBase(writer));
|
51 | }
|
52 | }
|
53 | exports.InvocationResultBase = InvocationResultBase;
|
54 |
|
55 |
|