UNPKG

@mavrykdynamics/taquito-local-forging

Version:

Provide local forging functionality to be with taquito

238 lines (237 loc) 9.61 kB
"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;