1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const client_common_1 = require("@neo-one/client-common");
|
4 | const client_full_common_1 = require("@neo-one/client-full-common");
|
5 | const Contract_1 = require("../Contract");
|
6 | const errors_1 = require("../errors");
|
7 | const utils_1 = require("../utils");
|
8 | const TransactionBase_1 = require("./TransactionBase");
|
9 | const TransactionType_1 = require("./TransactionType");
|
10 | class 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 | }
|
78 | exports.PublishTransaction = PublishTransaction;
|
79 |
|
80 |
|