@mavrykdynamics/taquito-local-forging
Version:
Provide local forging functionality to be with taquito
238 lines (237 loc) • 9.61 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.schemaDecoder = exports.schemaEncoder = exports.operationDecoder = exports.operationEncoder = exports.FailingNoopSchema = exports.DalPublishCommitmentSchema = exports.SmartRollupExecuteOutboxMessageSchema = exports.SmartRollupAddMessagesSchema = exports.SmartRollupOriginateSchema = exports.SetDepositsLimitSchema = exports.DrainDelegateSchema = exports.UpdateConsensusKeySchema = exports.IncreasePaidStorageSchema = exports.TransferTicketSchema = exports.RegisterGlobalConstantSchema = exports.ProposalsSchema = exports.SeedNonceRevelationSchema = exports.AttestationWithDalSchema = exports.AttestationSchema = exports.BallotSchema = exports.OriginationSchema = exports.TransactionSchema = exports.DelegationSchema = exports.RevealSchema = exports.ActivationSchema = exports.ManagerOperationSchema = void 0;
const constants_1 = require("../constants");
const taquito_core_1 = require("@mavrykdynamics/taquito-core");
const errors_1 = require("../errors");
exports.ManagerOperationSchema = {
branch: constants_1.CODEC.BRANCH,
contents: [constants_1.CODEC.OPERATION],
};
exports.ActivationSchema = {
pkh: constants_1.CODEC.MV1,
secret: constants_1.CODEC.SECRET,
};
exports.RevealSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
public_key: constants_1.CODEC.PUBLIC_KEY,
};
exports.DelegationSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
delegate: constants_1.CODEC.DELEGATE,
};
exports.TransactionSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
amount: constants_1.CODEC.ZARITH,
destination: constants_1.CODEC.ADDRESS,
parameters: constants_1.CODEC.PARAMETERS,
};
exports.OriginationSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
balance: constants_1.CODEC.ZARITH,
delegate: constants_1.CODEC.DELEGATE,
script: constants_1.CODEC.SCRIPT,
};
exports.BallotSchema = {
source: constants_1.CODEC.PKH,
period: constants_1.CODEC.INT32,
proposal: constants_1.CODEC.PROPOSAL,
ballot: constants_1.CODEC.BALLOT_STATEMENT,
};
exports.AttestationSchema = {
slot: constants_1.CODEC.INT16,
level: constants_1.CODEC.INT32,
round: constants_1.CODEC.INT32,
block_payload_hash: constants_1.CODEC.BLOCK_PAYLOAD_HASH,
};
exports.AttestationWithDalSchema = {
slot: constants_1.CODEC.INT16,
level: constants_1.CODEC.INT32,
round: constants_1.CODEC.INT32,
block_payload_hash: constants_1.CODEC.BLOCK_PAYLOAD_HASH,
dal_attestation: constants_1.CODEC.ZARITH,
};
exports.SeedNonceRevelationSchema = {
level: constants_1.CODEC.INT32,
nonce: constants_1.CODEC.RAW,
};
exports.ProposalsSchema = {
source: constants_1.CODEC.PKH,
period: constants_1.CODEC.INT32,
proposals: constants_1.CODEC.PROPOSAL_ARR,
};
exports.RegisterGlobalConstantSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
value: constants_1.CODEC.VALUE,
};
exports.TransferTicketSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
ticket_contents: constants_1.CODEC.VALUE,
ticket_ty: constants_1.CODEC.VALUE,
ticket_ticketer: constants_1.CODEC.ADDRESS,
ticket_amount: constants_1.CODEC.ZARITH,
destination: constants_1.CODEC.ADDRESS,
entrypoint: constants_1.CODEC.ENTRYPOINT,
};
exports.IncreasePaidStorageSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
amount: constants_1.CODEC.ZARITH,
destination: constants_1.CODEC.SMART_CONTRACT_ADDRESS,
};
exports.UpdateConsensusKeySchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
pk: constants_1.CODEC.PUBLIC_KEY,
};
exports.DrainDelegateSchema = {
consensus_key: constants_1.CODEC.PKH,
delegate: constants_1.CODEC.PKH,
destination: constants_1.CODEC.PKH,
};
exports.SetDepositsLimitSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
limit: constants_1.CODEC.DEPOSITS_LIMIT,
};
exports.SmartRollupOriginateSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
pvm_kind: constants_1.CODEC.PVM_KIND,
kernel: constants_1.CODEC.PADDED_BYTES,
parameters_ty: constants_1.CODEC.VALUE,
whitelist: constants_1.CODEC.PKH_ARR,
};
exports.SmartRollupAddMessagesSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
message: constants_1.CODEC.SMART_ROLLUP_MESSAGE,
};
exports.SmartRollupExecuteOutboxMessageSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
rollup: constants_1.CODEC.SMART_ROLLUP_ADDRESS,
cemented_commitment: constants_1.CODEC.SMART_ROLLUP_COMMITMENT_HASH,
output_proof: constants_1.CODEC.PADDED_BYTES,
};
exports.DalPublishCommitmentSchema = {
source: constants_1.CODEC.PKH,
fee: constants_1.CODEC.ZARITH,
counter: constants_1.CODEC.ZARITH,
gas_limit: constants_1.CODEC.ZARITH,
storage_limit: constants_1.CODEC.ZARITH,
slot_header: constants_1.CODEC.SLOT_HEADER,
};
exports.FailingNoopSchema = {
arbitrary: constants_1.CODEC.PADDED_BYTES,
};
const operationEncoder = (encoders) => (operation) => {
if (!(operation.kind in encoders) || !(operation.kind in constants_1.kindMappingReverse)) {
throw new taquito_core_1.InvalidOperationKindError(operation.kind);
}
return constants_1.kindMappingReverse[operation.kind] + encoders[operation.kind](operation);
};
exports.operationEncoder = operationEncoder;
const operationDecoder = (decoders) => (value) => {
const op = value.consume(1);
const operationName = constants_1.kindMapping[op[0]];
if (operationName === undefined) {
throw new errors_1.UnsupportedOperationError(op[0].toString());
}
const decodedObj = decoders[operationName](value);
if (typeof decodedObj !== 'object') {
throw new errors_1.OperationDecodingError('Invalid operation, cannot be decoded.');
}
return Object.assign({ kind: operationName }, decodedObj);
};
exports.operationDecoder = operationDecoder;
const schemaEncoder = (encoders) => (schema) => (value) => {
const keys = Object.keys(schema);
return keys.reduce((prev, key) => {
const valueToEncode = schema[key];
if (value && Array.isArray(valueToEncode)) {
const encoder = encoders[valueToEncode[0]];
const values = value[key];
if (!Array.isArray(values)) {
throw new errors_1.OperationEncodingError(`Invalid operation value "${JSON.stringify(values)}" of key "${key}, expected value to be Array.`);
}
return (prev + values.reduce((prevBytes, current) => prevBytes + encoder(current), ''));
}
else {
const encoder = encoders[valueToEncode];
return prev + encoder(value[key]);
}
}, '');
};
exports.schemaEncoder = schemaEncoder;
const schemaDecoder = (decoders) => (schema) => (value) => {
const keys = Object.keys(schema);
return keys.reduce((prev, key) => {
const valueToEncode = schema[key];
if (Array.isArray(valueToEncode)) {
const decoder = decoders[valueToEncode[0]];
const decoded = [];
const lastLength = value.length();
while (value.length() > 0) {
decoded.push(decoder(value));
if (lastLength === value.length()) {
throw new errors_1.OperationDecodingError('Unable to decode value');
}
}
return Object.assign(Object.assign({}, prev), { [key]: decoded });
}
else {
const decoder = decoders[valueToEncode];
const result = decoder(value);
if (typeof result !== 'undefined') {
return Object.assign(Object.assign({}, prev), { [key]: result });
}
else {
return Object.assign({}, prev);
}
}
}, {});
};
exports.schemaDecoder = schemaDecoder;