@taquito/local-forging 21.0.4-beta.1 → 22.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,515 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.burnLimitDecoder = exports.burnLimitEncoder = exports.entrypointNameDecoder = exports.entrypointNameEncoder = exports.blockPayloadHashDecoder = exports.blockPayloadHashEncoder = exports.valueParameterDecoder = exports.valueParameterEncoder = exports.parametersEncoder = exports.entrypointEncoder = exports.parametersDecoder = exports.entrypointDecoder = exports.zarithDecoder = exports.zarithEncoder = exports.smartRollupCommitmentHashDecoder = exports.smartContractAddressDecoder = exports.smartRollupAddressDecoder = exports.addressDecoder = exports.smartRollupCommitmentHashEncoder = exports.publicKeyDecoder = exports.smartContractAddressEncoder = exports.smartRollupAddressEncoder = exports.addressEncoder = exports.publicKeyEncoder = exports.publicKeyHashesEncoder = exports.publicKeyHashEncoder = exports.delegateDecoder = exports.boolDecoder = exports.int16Decoder = exports.int16Encoder = exports.int32Decoder = exports.int32Encoder = exports.delegateEncoder = exports.pvmKindDecoder = exports.pvmKindEncoder = exports.ballotDecoder = exports.ballotEncoder = exports.proposalsEncoder = exports.proposalsDecoder = exports.proposalDecoder = exports.proposalEncoder = exports.boolEncoder = exports.tz1Encoder = exports.branchEncoder = exports.publicKeyHashesDecoder = exports.publicKeyHashDecoder = exports.branchDecoder = exports.tz1Decoder = exports.prefixDecoder = exports.prefixEncoder = void 0;
4
+ exports.slotHeaderDecoder = exports.slotHeaderEncoder = exports.dalCommitmentDecoder = exports.dalCommitmentEncoder = exports.smartRollupMessageDecoder = exports.smartRollupMessageEncoder = exports.paddedBytesDecoder = exports.paddedBytesEncoder = exports.depositsLimitDecoder = exports.depositsLimitEncoder = void 0;
5
+ const utils_1 = require("@taquito/utils");
6
+ const errors_1 = require("./errors");
7
+ const bignumber_js_1 = require("bignumber.js");
8
+ const constants_proto021_1 = require("./constants-proto021");
9
+ const codec_1 = require("./michelson/codec");
10
+ const uint8array_consumer_1 = require("./uint8array-consumer");
11
+ const utils_2 = require("./utils");
12
+ const core_1 = require("@taquito/core");
13
+ // https://tezos.gitlab.io/shell/p2p_api.html specifies data types and structure for forging
14
+ const prefixEncoder = (prefix) => (str) => {
15
+ return (0, utils_1.buf2hex)(Buffer.from((0, utils_1.b58cdecode)(str, utils_1.prefix[prefix])));
16
+ };
17
+ exports.prefixEncoder = prefixEncoder;
18
+ const prefixDecoder = (pre) => (str) => {
19
+ const val = str.consume(utils_1.prefixLength[pre]);
20
+ return (0, utils_1.b58cencode)(val, utils_1.prefix[pre]);
21
+ };
22
+ exports.prefixDecoder = prefixDecoder;
23
+ exports.tz1Decoder = (0, exports.prefixDecoder)(utils_1.Prefix.TZ1);
24
+ exports.branchDecoder = (0, exports.prefixDecoder)(utils_1.Prefix.B);
25
+ const publicKeyHashDecoder = (val) => {
26
+ const prefix = val.consume(1);
27
+ if (prefix[0] === 0x00) {
28
+ return (0, exports.prefixDecoder)(utils_1.Prefix.TZ1)(val);
29
+ }
30
+ else if (prefix[0] === 0x01) {
31
+ return (0, exports.prefixDecoder)(utils_1.Prefix.TZ2)(val);
32
+ }
33
+ else if (prefix[0] === 0x02) {
34
+ return (0, exports.prefixDecoder)(utils_1.Prefix.TZ3)(val);
35
+ }
36
+ };
37
+ exports.publicKeyHashDecoder = publicKeyHashDecoder;
38
+ const publicKeyHashesDecoder = (val) => {
39
+ if (!(0, exports.boolDecoder)(val)) {
40
+ return undefined;
41
+ }
42
+ const publicKeyHashes = [];
43
+ val.consume(4);
44
+ while (val.length() > 0) {
45
+ publicKeyHashes.push((0, exports.publicKeyHashDecoder)(val));
46
+ }
47
+ return publicKeyHashes;
48
+ };
49
+ exports.publicKeyHashesDecoder = publicKeyHashesDecoder;
50
+ exports.branchEncoder = (0, exports.prefixEncoder)(utils_1.Prefix.B);
51
+ exports.tz1Encoder = (0, exports.prefixEncoder)(utils_1.Prefix.TZ1);
52
+ const boolEncoder = (bool) => (bool ? 'ff' : '00');
53
+ exports.boolEncoder = boolEncoder;
54
+ const proposalEncoder = (proposal) => {
55
+ return (0, exports.prefixEncoder)(utils_1.Prefix.P)(proposal);
56
+ };
57
+ exports.proposalEncoder = proposalEncoder;
58
+ const proposalDecoder = (proposal) => {
59
+ return (0, exports.prefixDecoder)(utils_1.Prefix.P)(proposal);
60
+ };
61
+ exports.proposalDecoder = proposalDecoder;
62
+ const proposalsDecoder = (proposal) => {
63
+ const proposals = [];
64
+ proposal.consume(4);
65
+ while (proposal.length() > 0) {
66
+ proposals.push((0, exports.proposalDecoder)(proposal));
67
+ }
68
+ return proposals;
69
+ };
70
+ exports.proposalsDecoder = proposalsDecoder;
71
+ const proposalsEncoder = (proposals) => {
72
+ return (0, utils_2.pad)(32 * proposals.length) + proposals.map((x) => (0, exports.proposalEncoder)(x)).join('');
73
+ };
74
+ exports.proposalsEncoder = proposalsEncoder;
75
+ const ballotEncoder = (ballot) => {
76
+ switch (ballot) {
77
+ case 'yay':
78
+ return '00';
79
+ case 'nay':
80
+ return '01';
81
+ case 'pass':
82
+ return '02';
83
+ default:
84
+ throw new errors_1.InvalidBallotValueError(ballot);
85
+ }
86
+ };
87
+ exports.ballotEncoder = ballotEncoder;
88
+ const ballotDecoder = (ballot) => {
89
+ const value = ballot.consume(1);
90
+ switch (value[0]) {
91
+ case 0x00:
92
+ return 'yay';
93
+ case 0x01:
94
+ return 'nay';
95
+ case 0x02:
96
+ return 'pass';
97
+ default:
98
+ throw new errors_1.DecodeBallotValueError(value[0].toString());
99
+ }
100
+ };
101
+ exports.ballotDecoder = ballotDecoder;
102
+ const pvmKindEncoder = (pvm) => {
103
+ switch (pvm) {
104
+ case 'arith':
105
+ return '00';
106
+ case 'wasm_2_0_0':
107
+ return '01';
108
+ case 'riscv':
109
+ return '02';
110
+ default:
111
+ throw new errors_1.UnsupportedPvmKindError(pvm);
112
+ }
113
+ };
114
+ exports.pvmKindEncoder = pvmKindEncoder;
115
+ const pvmKindDecoder = (pvm) => {
116
+ const value = pvm.consume(1);
117
+ switch (value[0]) {
118
+ case 0x00:
119
+ return 'arith';
120
+ case 0x01:
121
+ return 'wasm_2_0_0';
122
+ case 0x02:
123
+ return 'riscv';
124
+ default:
125
+ throw new errors_1.DecodePvmKindError(value[0].toString());
126
+ }
127
+ };
128
+ exports.pvmKindDecoder = pvmKindDecoder;
129
+ const delegateEncoder = (val) => {
130
+ if (val) {
131
+ return (0, exports.boolEncoder)(true) + (0, exports.publicKeyHashEncoder)(val);
132
+ }
133
+ else {
134
+ return (0, exports.boolEncoder)(false);
135
+ }
136
+ };
137
+ exports.delegateEncoder = delegateEncoder;
138
+ const int32Encoder = (val) => {
139
+ const num = parseInt(String(val), 10);
140
+ const byte = [];
141
+ for (let i = 0; i < 4; i++) {
142
+ const shiftBy = (4 - (i + 1)) * 8;
143
+ byte.push((num & (0xff << shiftBy)) >> shiftBy);
144
+ }
145
+ return Buffer.from(byte).toString('hex');
146
+ };
147
+ exports.int32Encoder = int32Encoder;
148
+ const int32Decoder = (val) => {
149
+ const num = val.consume(4);
150
+ let finalNum = 0;
151
+ for (let i = 0; i < num.length; i++) {
152
+ finalNum = finalNum | (num[i] << ((num.length - (i + 1)) * 8));
153
+ }
154
+ return finalNum;
155
+ };
156
+ exports.int32Decoder = int32Decoder;
157
+ const int16Encoder = (val) => {
158
+ const num = parseInt(String(val), 10);
159
+ const byte = [];
160
+ for (let i = 0; i < 2; i++) {
161
+ const shiftBy = (2 - (i + 1)) * 8;
162
+ byte.push((num & (0xff << shiftBy)) >> shiftBy);
163
+ }
164
+ return Buffer.from(byte).toString('hex');
165
+ };
166
+ exports.int16Encoder = int16Encoder;
167
+ const int16Decoder = (val) => {
168
+ const num = val.consume(2);
169
+ let finalNum = 0;
170
+ for (let i = 0; i < num.length; i++) {
171
+ finalNum = finalNum | (num[i] << ((num.length - (i + 1)) * 8));
172
+ }
173
+ return finalNum;
174
+ };
175
+ exports.int16Decoder = int16Decoder;
176
+ const boolDecoder = (val) => {
177
+ const bool = val.consume(1);
178
+ return bool[0] === 0xff;
179
+ };
180
+ exports.boolDecoder = boolDecoder;
181
+ const delegateDecoder = (val) => {
182
+ const hasDelegate = (0, exports.boolDecoder)(val);
183
+ if (hasDelegate) {
184
+ return (0, exports.publicKeyHashDecoder)(val);
185
+ }
186
+ };
187
+ exports.delegateDecoder = delegateDecoder;
188
+ const publicKeyHashEncoder = (val) => {
189
+ const pubkeyPrefix = val.substring(0, 3);
190
+ switch (pubkeyPrefix) {
191
+ case utils_1.Prefix.TZ1:
192
+ return '00' + (0, exports.prefixEncoder)(utils_1.Prefix.TZ1)(val);
193
+ case utils_1.Prefix.TZ2:
194
+ return '01' + (0, exports.prefixEncoder)(utils_1.Prefix.TZ2)(val);
195
+ case utils_1.Prefix.TZ3:
196
+ return '02' + (0, exports.prefixEncoder)(utils_1.Prefix.TZ3)(val);
197
+ case utils_1.Prefix.TZ4:
198
+ return '03' + (0, exports.prefixEncoder)(utils_1.Prefix.TZ4)(val);
199
+ default:
200
+ throw new utils_1.InvalidKeyHashError(val, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) +
201
+ ` expecting one for the following "${utils_1.Prefix.TZ1}", "${utils_1.Prefix.TZ2}", "${utils_1.Prefix.TZ3}" or "${utils_1.Prefix.TZ4}".`);
202
+ }
203
+ };
204
+ exports.publicKeyHashEncoder = publicKeyHashEncoder;
205
+ const publicKeyHashesEncoder = (val) => {
206
+ if (!val) {
207
+ return (0, exports.boolEncoder)(false);
208
+ }
209
+ if (val.length === 0) {
210
+ return (0, exports.boolEncoder)(true) + (0, utils_2.pad)(0);
211
+ }
212
+ const publicKeyHashes = val.reduce((prev, curr) => {
213
+ return prev + (0, exports.publicKeyHashEncoder)(curr);
214
+ }, '');
215
+ return (0, exports.boolEncoder)(true) + (0, utils_2.pad)(publicKeyHashes.length / 2) + publicKeyHashes;
216
+ };
217
+ exports.publicKeyHashesEncoder = publicKeyHashesEncoder;
218
+ const publicKeyEncoder = (val) => {
219
+ const pubkeyPrefix = val.substring(0, 4);
220
+ switch (pubkeyPrefix) {
221
+ case utils_1.Prefix.EDPK:
222
+ return '00' + (0, exports.prefixEncoder)(utils_1.Prefix.EDPK)(val);
223
+ case utils_1.Prefix.SPPK:
224
+ return '01' + (0, exports.prefixEncoder)(utils_1.Prefix.SPPK)(val);
225
+ case utils_1.Prefix.P2PK:
226
+ return '02' + (0, exports.prefixEncoder)(utils_1.Prefix.P2PK)(val);
227
+ default:
228
+ throw new utils_1.InvalidPublicKeyError(val, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) +
229
+ ` expecting one of the following '${utils_1.Prefix.EDPK}', '${utils_1.Prefix.SPPK}', '${utils_1.Prefix.P2PK}' or '${utils_1.Prefix.BLPK}'.`);
230
+ }
231
+ };
232
+ exports.publicKeyEncoder = publicKeyEncoder;
233
+ const addressEncoder = (val) => {
234
+ const pubkeyPrefix = val.substring(0, 3);
235
+ switch (pubkeyPrefix) {
236
+ case utils_1.Prefix.TZ1:
237
+ case utils_1.Prefix.TZ2:
238
+ case utils_1.Prefix.TZ3:
239
+ case utils_1.Prefix.TZ4:
240
+ return '00' + (0, exports.publicKeyHashEncoder)(val);
241
+ case utils_1.Prefix.KT1:
242
+ return '01' + (0, exports.prefixEncoder)(utils_1.Prefix.KT1)(val) + '00';
243
+ default:
244
+ throw new core_1.InvalidAddressError(val, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) +
245
+ ` expecting one of the following prefix '${utils_1.Prefix.TZ1}', ${utils_1.Prefix.TZ2}', '${utils_1.Prefix.TZ3}', '${utils_1.Prefix.TZ4}' or '${utils_1.Prefix.KT1}'.`);
246
+ }
247
+ };
248
+ exports.addressEncoder = addressEncoder;
249
+ const smartRollupAddressEncoder = (val) => {
250
+ if (val.substring(0, 3) !== utils_1.Prefix.SR1) {
251
+ throw new errors_1.InvalidSmartRollupAddressError(val, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) + ` expecting prefix '${utils_1.Prefix.SR1}'.`);
252
+ }
253
+ return (0, exports.prefixEncoder)(utils_1.Prefix.SR1)(val);
254
+ };
255
+ exports.smartRollupAddressEncoder = smartRollupAddressEncoder;
256
+ const smartContractAddressEncoder = (val) => {
257
+ const prefix = val.substring(0, 3);
258
+ if (prefix === utils_1.Prefix.KT1) {
259
+ return '01' + (0, exports.prefixEncoder)(utils_1.Prefix.KT1)(val) + '00';
260
+ }
261
+ throw new core_1.InvalidContractAddressError(val, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) + ` expecting prefix '${utils_1.Prefix.KT1}'.`);
262
+ };
263
+ exports.smartContractAddressEncoder = smartContractAddressEncoder;
264
+ const publicKeyDecoder = (val) => {
265
+ const preamble = val.consume(1);
266
+ switch (preamble[0]) {
267
+ case 0x00:
268
+ return (0, exports.prefixDecoder)(utils_1.Prefix.EDPK)(val);
269
+ case 0x01:
270
+ return (0, exports.prefixDecoder)(utils_1.Prefix.SPPK)(val);
271
+ case 0x02:
272
+ return (0, exports.prefixDecoder)(utils_1.Prefix.P2PK)(val);
273
+ default:
274
+ throw new utils_1.InvalidPublicKeyError(val.toString(), (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED));
275
+ }
276
+ };
277
+ exports.publicKeyDecoder = publicKeyDecoder;
278
+ const smartRollupCommitmentHashEncoder = (val) => {
279
+ const prefix = val.substring(0, 4);
280
+ if (prefix === utils_1.Prefix.SRC1) {
281
+ return (0, exports.prefixEncoder)(utils_1.Prefix.SRC1)(val);
282
+ }
283
+ throw new errors_1.InvalidSmartRollupCommitmentHashError(val, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) + ` expecting prefix '${utils_1.Prefix.SRC1}'`);
284
+ };
285
+ exports.smartRollupCommitmentHashEncoder = smartRollupCommitmentHashEncoder;
286
+ const addressDecoder = (val) => {
287
+ const preamble = val.consume(1);
288
+ switch (preamble[0]) {
289
+ case 0x00:
290
+ return (0, exports.publicKeyHashDecoder)(val);
291
+ case 0x01: {
292
+ const address = (0, exports.prefixDecoder)(utils_1.Prefix.KT1)(val);
293
+ val.consume(1);
294
+ return address;
295
+ }
296
+ default:
297
+ throw new core_1.InvalidAddressError(val.toString(), ': Unable to decode.');
298
+ }
299
+ };
300
+ exports.addressDecoder = addressDecoder;
301
+ const smartRollupAddressDecoder = (val) => {
302
+ const address = (0, exports.prefixDecoder)(utils_1.Prefix.SR1)(val);
303
+ if (address.substring(0, 3) !== utils_1.Prefix.SR1) {
304
+ throw new errors_1.InvalidSmartRollupAddressError(address, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) + ` expecting prefix '${utils_1.Prefix.SR1}'.`);
305
+ }
306
+ return address;
307
+ };
308
+ exports.smartRollupAddressDecoder = smartRollupAddressDecoder;
309
+ const smartContractAddressDecoder = (val) => {
310
+ const preamble = val.consume(1);
311
+ if (preamble[0] === 0x01) {
312
+ const scAddress = (0, exports.prefixDecoder)(utils_1.Prefix.KT1)(val);
313
+ val.consume(1);
314
+ return scAddress;
315
+ }
316
+ throw new core_1.InvalidContractAddressError(val.toString(), (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED));
317
+ };
318
+ exports.smartContractAddressDecoder = smartContractAddressDecoder;
319
+ const smartRollupCommitmentHashDecoder = (val) => {
320
+ const address = (0, exports.prefixDecoder)(utils_1.Prefix.SRC1)(val);
321
+ if (address.substring(0, 4) !== utils_1.Prefix.SRC1) {
322
+ throw new errors_1.InvalidSmartRollupCommitmentHashError(address, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) + ` expecting prefix '${utils_1.Prefix.SRC1}'`);
323
+ }
324
+ return address;
325
+ };
326
+ exports.smartRollupCommitmentHashDecoder = smartRollupCommitmentHashDecoder;
327
+ const zarithEncoder = (n) => {
328
+ const fn = [];
329
+ let nn = new bignumber_js_1.default(n, 10);
330
+ if (nn.isNaN()) {
331
+ throw new TypeError(`Invalid zarith number ${n}`);
332
+ }
333
+ // eslint-disable-next-line no-constant-condition
334
+ while (true) {
335
+ if (nn.lt(128)) {
336
+ if (nn.lt(16))
337
+ fn.push('0');
338
+ fn.push(nn.toString(16));
339
+ break;
340
+ }
341
+ else {
342
+ let b = nn.mod(128);
343
+ nn = nn.minus(b);
344
+ nn = nn.dividedBy(128);
345
+ b = b.plus(128);
346
+ fn.push(b.toString(16));
347
+ }
348
+ }
349
+ return fn.join('');
350
+ };
351
+ exports.zarithEncoder = zarithEncoder;
352
+ const zarithDecoder = (n) => {
353
+ let mostSignificantByte = 0;
354
+ while (mostSignificantByte < n.length() && (n.get(mostSignificantByte) & 128) !== 0) {
355
+ mostSignificantByte += 1;
356
+ }
357
+ let num = new bignumber_js_1.default(0);
358
+ for (let i = mostSignificantByte; i >= 0; i -= 1) {
359
+ const tmp = n.get(i) & 0x7f;
360
+ num = num.multipliedBy(128);
361
+ num = num.plus(tmp);
362
+ }
363
+ n.consume(mostSignificantByte + 1);
364
+ return new bignumber_js_1.default(num).toString();
365
+ };
366
+ exports.zarithDecoder = zarithDecoder;
367
+ const entrypointDecoder = (value) => {
368
+ const preamble = (0, utils_2.pad)(value.consume(1)[0], 2);
369
+ if (preamble in constants_proto021_1.entrypointMapping) {
370
+ return constants_proto021_1.entrypointMapping[preamble];
371
+ }
372
+ else {
373
+ const entry = (0, codec_1.extractRequiredLen)(value, 1);
374
+ const entrypoint = Buffer.from(entry).toString('utf8');
375
+ if (entrypoint.length > constants_proto021_1.ENTRYPOINT_MAX_LENGTH) {
376
+ throw new errors_1.OversizedEntryPointError(entrypoint);
377
+ }
378
+ return entrypoint;
379
+ }
380
+ };
381
+ exports.entrypointDecoder = entrypointDecoder;
382
+ const parametersDecoder = (val) => {
383
+ const preamble = val.consume(1);
384
+ if (preamble[0] === 0x00) {
385
+ return;
386
+ }
387
+ else {
388
+ const encodedEntrypoint = (0, exports.entrypointDecoder)(val);
389
+ const params = (0, codec_1.extractRequiredLen)(val);
390
+ const parameters = (0, codec_1.valueDecoder)(new uint8array_consumer_1.Uint8ArrayConsumer(params));
391
+ return {
392
+ entrypoint: encodedEntrypoint,
393
+ value: parameters,
394
+ };
395
+ }
396
+ };
397
+ exports.parametersDecoder = parametersDecoder;
398
+ const entrypointEncoder = (entrypoint) => {
399
+ if (entrypoint in constants_proto021_1.entrypointMappingReverse) {
400
+ return `${constants_proto021_1.entrypointMappingReverse[entrypoint]}`;
401
+ }
402
+ else {
403
+ if (entrypoint.length > constants_proto021_1.ENTRYPOINT_MAX_LENGTH) {
404
+ throw new errors_1.OversizedEntryPointError(entrypoint);
405
+ }
406
+ const value = { string: entrypoint };
407
+ return `ff${(0, codec_1.valueEncoder)(value).slice(8)}`;
408
+ }
409
+ };
410
+ exports.entrypointEncoder = entrypointEncoder;
411
+ const parametersEncoder = (val) => {
412
+ if (!val || (val.entrypoint === 'default' && 'prim' in val.value && val.value.prim === 'Unit')) {
413
+ return '00';
414
+ }
415
+ const encodedEntrypoint = (0, exports.entrypointEncoder)(val.entrypoint);
416
+ const parameters = (0, codec_1.valueEncoder)(val.value);
417
+ const length = (0, utils_2.pad)(parameters.length / 2);
418
+ return `ff${encodedEntrypoint}${length}${parameters}`;
419
+ };
420
+ exports.parametersEncoder = parametersEncoder;
421
+ const valueParameterEncoder = (value) => {
422
+ const valueEncoded = (0, codec_1.valueEncoder)(value);
423
+ return `${(0, utils_2.pad)(valueEncoded.length / 2)}${valueEncoded}`;
424
+ };
425
+ exports.valueParameterEncoder = valueParameterEncoder;
426
+ const valueParameterDecoder = (val) => {
427
+ const value = (0, codec_1.extractRequiredLen)(val);
428
+ return (0, codec_1.valueDecoder)(new uint8array_consumer_1.Uint8ArrayConsumer(value));
429
+ };
430
+ exports.valueParameterDecoder = valueParameterDecoder;
431
+ exports.blockPayloadHashEncoder = (0, exports.prefixEncoder)(utils_1.Prefix.VH);
432
+ exports.blockPayloadHashDecoder = (0, exports.prefixDecoder)(utils_1.Prefix.VH);
433
+ const entrypointNameEncoder = (entrypoint) => {
434
+ const value = { string: entrypoint };
435
+ return `${(0, codec_1.valueEncoder)(value).slice(2)}`;
436
+ };
437
+ exports.entrypointNameEncoder = entrypointNameEncoder;
438
+ const entrypointNameDecoder = (val) => {
439
+ const entry = (0, codec_1.extractRequiredLen)(val);
440
+ return Buffer.from(entry).toString('utf8');
441
+ };
442
+ exports.entrypointNameDecoder = entrypointNameDecoder;
443
+ const burnLimitEncoder = (val) => {
444
+ return !val ? '00' : `ff${(0, exports.zarithEncoder)(val)}`;
445
+ };
446
+ exports.burnLimitEncoder = burnLimitEncoder;
447
+ const burnLimitDecoder = (value) => {
448
+ const prefix = value.consume(1);
449
+ if (Buffer.from(prefix).toString('hex') !== '00') {
450
+ return (0, exports.zarithDecoder)(value);
451
+ }
452
+ };
453
+ exports.burnLimitDecoder = burnLimitDecoder;
454
+ const depositsLimitEncoder = (val) => {
455
+ return !val ? '00' : `ff${(0, exports.zarithEncoder)(val)}`;
456
+ };
457
+ exports.depositsLimitEncoder = depositsLimitEncoder;
458
+ const depositsLimitDecoder = (value) => {
459
+ const prefix = value.consume(1);
460
+ if (Buffer.from(prefix).toString('hex') !== '00') {
461
+ return (0, exports.zarithDecoder)(value);
462
+ }
463
+ };
464
+ exports.depositsLimitDecoder = depositsLimitDecoder;
465
+ const paddedBytesEncoder = (val, paddingLength = 8) => {
466
+ return `${(0, utils_2.pad)(val.length / 2, paddingLength)}${val}`;
467
+ };
468
+ exports.paddedBytesEncoder = paddedBytesEncoder;
469
+ const paddedBytesDecoder = (val) => {
470
+ const value = (0, codec_1.extractRequiredLen)(val);
471
+ return Buffer.from(value).toString('hex');
472
+ };
473
+ exports.paddedBytesDecoder = paddedBytesDecoder;
474
+ const smartRollupMessageEncoder = (val) => {
475
+ const message = val.reduce((prev, curr) => {
476
+ return prev + `${(0, utils_2.pad)(curr.length / 2)}${curr}`;
477
+ }, '');
478
+ return `${(0, utils_2.pad)(message.length / 2)}${message}`;
479
+ };
480
+ exports.smartRollupMessageEncoder = smartRollupMessageEncoder;
481
+ const smartRollupMessageDecoder = (val) => {
482
+ const valueArray = (0, codec_1.extractRequiredLen)(val);
483
+ const ret = (0, codec_1.stripLengthPrefixFromBytes)(new uint8array_consumer_1.Uint8ArrayConsumer(valueArray));
484
+ return ret.map((value) => Buffer.from(value).toString('hex'));
485
+ };
486
+ exports.smartRollupMessageDecoder = smartRollupMessageDecoder;
487
+ const dalCommitmentEncoder = (val) => {
488
+ const prefix = val.substring(0, 2);
489
+ if (prefix === utils_1.Prefix.SH) {
490
+ return (0, exports.prefixEncoder)(utils_1.Prefix.SH)(val);
491
+ }
492
+ throw new errors_1.InvalidDalCommitmentError(val, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) + ` expecting prefix '${utils_1.Prefix.SH}'`);
493
+ };
494
+ exports.dalCommitmentEncoder = dalCommitmentEncoder;
495
+ const dalCommitmentDecoder = (val) => {
496
+ const commitment = (0, exports.prefixDecoder)(utils_1.Prefix.SH)(val);
497
+ if (commitment.substring(0, 2) !== utils_1.Prefix.SH) {
498
+ throw new errors_1.InvalidDalCommitmentError(commitment, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) + ` expecting prefix '${utils_1.Prefix.SH}'`);
499
+ }
500
+ return commitment;
501
+ };
502
+ exports.dalCommitmentDecoder = dalCommitmentDecoder;
503
+ const slotHeaderEncoder = (val) => {
504
+ return (0, utils_2.pad)(val.slot_index, 2) + (0, exports.dalCommitmentEncoder)(val.commitment) + val.commitment_proof;
505
+ };
506
+ exports.slotHeaderEncoder = slotHeaderEncoder;
507
+ const slotHeaderDecoder = (val) => {
508
+ const preamble = val.consume(1);
509
+ return {
510
+ slot_index: Number(preamble[0].toString(10)),
511
+ commitment: (0, exports.dalCommitmentDecoder)(val),
512
+ commitment_proof: (0, utils_2.toHexString)(val.consume(96)), // rpcForger expect commitment_proof bytes to be len 96
513
+ };
514
+ };
515
+ exports.slotHeaderDecoder = slotHeaderDecoder;
package/dist/lib/codec.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.burnLimitDecoder = exports.burnLimitEncoder = exports.entrypointNameDecoder = exports.entrypointNameEncoder = exports.blockPayloadHashDecoder = exports.blockPayloadHashEncoder = exports.valueParameterDecoder = exports.valueParameterEncoder = exports.parametersEncoder = exports.entrypointEncoder = exports.parametersDecoder = exports.entrypointDecoder = exports.zarithDecoder = exports.zarithEncoder = exports.smartRollupCommitmentHashDecoder = exports.smartContractAddressDecoder = exports.smartRollupAddressDecoder = exports.addressDecoder = exports.smartRollupCommitmentHashEncoder = exports.publicKeyDecoder = exports.smartContractAddressEncoder = exports.smartRollupAddressEncoder = exports.addressEncoder = exports.publicKeyEncoder = exports.publicKeyHashesEncoder = exports.publicKeyHashEncoder = exports.delegateDecoder = exports.boolDecoder = exports.int16Decoder = exports.int16Encoder = exports.int32Decoder = exports.int32Encoder = exports.delegateEncoder = exports.pvmKindDecoder = exports.pvmKindEncoder = exports.ballotDecoder = exports.ballotEncoder = exports.proposalsEncoder = exports.proposalsDecoder = exports.proposalDecoder = exports.proposalEncoder = exports.boolEncoder = exports.tz1Encoder = exports.branchEncoder = exports.publicKeyHashesDecoder = exports.publicKeyHashDecoder = exports.branchDecoder = exports.tz1Decoder = exports.prefixDecoder = exports.prefixEncoder = void 0;
4
- exports.slotHeaderDecoder = exports.slotHeaderEncoder = exports.dalCommitmentDecoder = exports.dalCommitmentEncoder = exports.smartRollupMessageDecoder = exports.smartRollupMessageEncoder = exports.paddedBytesDecoder = exports.paddedBytesEncoder = exports.depositsLimitDecoder = exports.depositsLimitEncoder = void 0;
4
+ exports.slotHeaderDecoder = exports.slotHeaderEncoder = exports.dalCommitmentDecoder = exports.dalCommitmentEncoder = exports.smartRollupMessageDecoder = exports.smartRollupMessageEncoder = exports.paddedBytesDecoder = exports.paddedBytesEncoder = exports.signatureProofDecoder = exports.signatureProofEncoder = exports.depositsLimitDecoder = exports.depositsLimitEncoder = void 0;
5
5
  const utils_1 = require("@taquito/utils");
6
6
  const errors_1 = require("./errors");
7
7
  const bignumber_js_1 = require("bignumber.js");
@@ -33,11 +33,14 @@ const publicKeyHashDecoder = (val) => {
33
33
  else if (prefix[0] === 0x02) {
34
34
  return (0, exports.prefixDecoder)(utils_1.Prefix.TZ3)(val);
35
35
  }
36
+ else if (prefix[0] === 0x03) {
37
+ return (0, exports.prefixDecoder)(utils_1.Prefix.TZ4)(val);
38
+ }
36
39
  };
37
40
  exports.publicKeyHashDecoder = publicKeyHashDecoder;
38
41
  const publicKeyHashesDecoder = (val) => {
39
42
  if (!(0, exports.boolDecoder)(val)) {
40
- return undefined;
43
+ return;
41
44
  }
42
45
  const publicKeyHashes = [];
43
46
  val.consume(4);
@@ -224,6 +227,8 @@ const publicKeyEncoder = (val) => {
224
227
  return '01' + (0, exports.prefixEncoder)(utils_1.Prefix.SPPK)(val);
225
228
  case utils_1.Prefix.P2PK:
226
229
  return '02' + (0, exports.prefixEncoder)(utils_1.Prefix.P2PK)(val);
230
+ case utils_1.Prefix.BLPK:
231
+ return '03' + (0, exports.prefixEncoder)(utils_1.Prefix.BLPK)(val);
227
232
  default:
228
233
  throw new utils_1.InvalidPublicKeyError(val, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) +
229
234
  ` expecting one of the following '${utils_1.Prefix.EDPK}', '${utils_1.Prefix.SPPK}', '${utils_1.Prefix.P2PK}' or '${utils_1.Prefix.BLPK}'.`);
@@ -270,6 +275,8 @@ const publicKeyDecoder = (val) => {
270
275
  return (0, exports.prefixDecoder)(utils_1.Prefix.SPPK)(val);
271
276
  case 0x02:
272
277
  return (0, exports.prefixDecoder)(utils_1.Prefix.P2PK)(val);
278
+ case 0x03:
279
+ return (0, exports.prefixDecoder)(utils_1.Prefix.BLPK)(val);
273
280
  default:
274
281
  throw new utils_1.InvalidPublicKeyError(val.toString(), (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED));
275
282
  }
@@ -462,6 +469,47 @@ const depositsLimitDecoder = (value) => {
462
469
  }
463
470
  };
464
471
  exports.depositsLimitDecoder = depositsLimitDecoder;
472
+ const signatureV1Encoder = (val) => {
473
+ const signaturePrefix = val.substring(0, 5);
474
+ switch (signaturePrefix) {
475
+ case utils_1.Prefix.EDSIG:
476
+ return (0, exports.paddedBytesEncoder)((0, exports.prefixEncoder)(utils_1.Prefix.EDSIG)(val));
477
+ case utils_1.Prefix.SPSIG:
478
+ return (0, exports.paddedBytesEncoder)((0, exports.prefixEncoder)(utils_1.Prefix.SPSIG)(val));
479
+ case utils_1.Prefix.P2SIG:
480
+ return (0, exports.paddedBytesEncoder)((0, exports.prefixEncoder)(utils_1.Prefix.P2SIG)(val));
481
+ case utils_1.Prefix.BLSIG:
482
+ return (0, exports.paddedBytesEncoder)((0, exports.prefixEncoder)(utils_1.Prefix.BLSIG)(val));
483
+ default:
484
+ throw new core_1.InvalidSignatureError(val, (0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED) +
485
+ ` expecting one of the following '${utils_1.Prefix.EDSIG}', '${utils_1.Prefix.SPSIG}', '${utils_1.Prefix.P2SIG}' or '${utils_1.Prefix.BLSIG}'.`);
486
+ }
487
+ };
488
+ const signatureV1Decoder = (val) => {
489
+ val.consume(4);
490
+ if (val.length().toString() === '96') {
491
+ return (0, exports.prefixDecoder)(utils_1.Prefix.BLSIG)(val);
492
+ }
493
+ else {
494
+ throw new core_1.ProhibitedActionError('currently we only support decoding of BLSIG signatures');
495
+ }
496
+ };
497
+ const signatureProofEncoder = (val) => {
498
+ if (val) {
499
+ return (0, exports.boolEncoder)(true) + signatureV1Encoder(val);
500
+ }
501
+ else {
502
+ return (0, exports.boolEncoder)(false);
503
+ }
504
+ };
505
+ exports.signatureProofEncoder = signatureProofEncoder;
506
+ const signatureProofDecoder = (value) => {
507
+ const hasProof = (0, exports.boolDecoder)(value);
508
+ if (hasProof) {
509
+ return signatureV1Decoder(value);
510
+ }
511
+ };
512
+ exports.signatureProofDecoder = signatureProofDecoder;
465
513
  const paddedBytesEncoder = (val, paddingLength = 8) => {
466
514
  return `${(0, utils_2.pad)(val.length / 2, paddingLength)}${val}`;
467
515
  };