UNPKG

3.41 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const client_common_1 = require("@neo-one/client-common");
4const client_full_common_1 = require("@neo-one/client-full-common");
5const Contract_1 = require("../Contract");
6const errors_1 = require("../errors");
7const utils_1 = require("../utils");
8const TransactionBase_1 = require("./TransactionBase");
9const TransactionType_1 = require("./TransactionType");
10class PublishTransaction extends TransactionBase_1.TransactionBase(client_common_1.TransactionBaseModel) {
11 constructor({ version, attributes, inputs, outputs, scripts, hash, contract }) {
12 super({
13 version,
14 type: TransactionType_1.TransactionType.Publish,
15 attributes,
16 inputs,
17 outputs,
18 scripts,
19 hash,
20 });
21 this.sizeExclusive = utils_1.utils.lazy(() => client_common_1.IOHelper.sizeOfUInt8 +
22 Contract_1.sizeOfContract({
23 script: this.contract.script,
24 parameterList: this.contract.parameterList,
25 name: this.contract.name,
26 codeVersion: this.contract.codeVersion,
27 author: this.contract.author,
28 email: this.contract.email,
29 description: this.contract.description,
30 publishVersion: this.version,
31 }));
32 this.contract = contract;
33 if (this.version > 1) {
34 throw new client_common_1.InvalidFormatError(`Expected version to be greater than 1. Received: ${this.version}`);
35 }
36 }
37 static deserializeWireBase(options) {
38 const { type, version } = super.deserializeTransactionBaseStartWireBase(options);
39 if (type !== TransactionType_1.TransactionType.Publish) {
40 throw new client_common_1.InvalidFormatError(`Expected transaction type to be ${TransactionType_1.TransactionType.Publish}. Received: ${type}`);
41 }
42 const contract = Contract_1.deserializeContractWireBase(Object.assign(Object.assign({}, options), { publishVersion: version }));
43 const { attributes, inputs, outputs, scripts } = super.deserializeTransactionBaseEndWireBase(options);
44 return new this({
45 version,
46 attributes,
47 inputs,
48 outputs,
49 scripts,
50 contract,
51 });
52 }
53 clone({ scripts = this.scripts, attributes = this.attributes, inputs = this.inputs, outputs = this.outputs, }) {
54 return new this.constructor({
55 version: this.version,
56 attributes,
57 inputs,
58 outputs,
59 scripts,
60 contract: this.contract,
61 });
62 }
63 serializeExclusiveBase(writer) {
64 client_full_common_1.serializeContractWireBase({
65 contract: this.contract,
66 writer,
67 publishVersion: this.version,
68 });
69 }
70 async serializeJSON(context) {
71 const transactionBaseJSON = await super.serializeTransactionBaseJSON(context);
72 return Object.assign(Object.assign({}, transactionBaseJSON), { type: 'PublishTransaction', contract: this.contract.serializeJSON(context) });
73 }
74 async verify(_options) {
75 throw new errors_1.VerifyError('Publish transactions are obsolete');
76 }
77}
78exports.PublishTransaction = PublishTransaction;
79
80//# sourceMappingURL=PublishTransaction.js.map