UNPKG

zkverifyjs

Version:

Submit proofs to zkVerify and query proof state with ease using our npm package.

150 lines 6.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleTransactionEvents = void 0; const enums_js_1 = require("../../../enums.js"); const index_js_1 = require("../../helpers/index.js"); const handleTransactionEvents = (api, events, transactionInfo, emitter, transactionType) => { let statementHash; let aggregationId; let statement; let domainId; let domainState; let receipt; let myExtrinsicIndex; const expectedPallet = transactionType === enums_js_1.TransactionType.Verify || transactionType === enums_js_1.TransactionType.VKRegistration ? (0, index_js_1.getProofPallet)(transactionInfo.proofType) : undefined; events.forEach(({ event, phase }) => { if (phase.isApplyExtrinsic && myExtrinsicIndex === undefined) { myExtrinsicIndex = phase.asApplyExtrinsic.toNumber(); transactionInfo.extrinsicIndex = myExtrinsicIndex; } if (!phase.isApplyExtrinsic || phase.asApplyExtrinsic.toNumber() !== transactionInfo.extrinsicIndex) { return; } if (event.section === 'transactionPayment' && event.method === 'TransactionFeePaid') { transactionInfo.feeInfo = { payer: event.data[0].toString(), actualFee: event.data[1].toString(), tip: event.data[2].toString(), paysFee: 'Yes', }; } if (event.section === 'system' && event.method === 'ExtrinsicSuccess') { const dispatchInfo = event.data[0]; transactionInfo.weightInfo = { refTime: dispatchInfo.weight.refTime?.toString(), proofSize: dispatchInfo.weight.proofSize?.toString(), }; transactionInfo.txClass = dispatchInfo.class.toString(); if (transactionInfo.feeInfo) { transactionInfo.feeInfo.paysFee = dispatchInfo.paysFee.toString(); } } if (event.section === 'system' && event.method === 'ExtrinsicFailed') { const [dispatchError] = event.data; throw dispatchError; } if (transactionType === enums_js_1.TransactionType.Verify && event.section === expectedPallet && event.method === 'ProofVerified') { statement = event.data[0].toString(); (0, index_js_1.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.ProofVerified, { statement }); } if (transactionType === enums_js_1.TransactionType.Verify && event.section === 'aggregate' && event.method === 'NewProof') { const [eventStatement, eventDomainId, eventAggregationId] = event.data; statement = eventStatement.toString(); domainId = Number(eventDomainId.toString()); aggregationId = Number(eventAggregationId.toString()); (0, index_js_1.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.NewProof, { statement, domainId, aggregationId, }); } if (transactionType === enums_js_1.TransactionType.VKRegistration && event.section === expectedPallet && event.method === 'VkRegistered') { statementHash = event.data[0].toString(); (0, index_js_1.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.VkRegistered, { statementHash }); } if ((transactionType === enums_js_1.TransactionType.DomainHold || transactionType === enums_js_1.TransactionType.DomainUnregister || transactionType === enums_js_1.TransactionType.DomainRemoveSubmitters) && event.section === 'aggregate' && event.method === 'DomainStateChanged') { const [eventDomainId, state] = event.data; domainId = Number(eventDomainId.toString()); domainState = state.toString(); (0, index_js_1.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.DomainStateChanged, { domainId, domainState, }); } if (transactionType === enums_js_1.TransactionType.DomainRegistration && event.section === 'aggregate' && event.method === 'NewDomain') { domainId = Number(event.data[0].toString()); (0, index_js_1.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.NewDomain, { domainId }); } if (transactionType === enums_js_1.TransactionType.Aggregate && event.section === 'aggregate' && event.method === 'NewAggregationReceipt') { const [eventDomainId, eventAggregationId, eventReceipt] = event.data; domainId = Number(eventDomainId.toString()); aggregationId = Number(eventAggregationId.toString()); receipt = eventReceipt.toString(); (0, index_js_1.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.NewAggregationReceipt, { domainId, aggregationId, receipt, }); } }); switch (transactionType) { case enums_js_1.TransactionType.Aggregate: return { ...transactionInfo, domainId, aggregationId, receipt, }; case enums_js_1.TransactionType.DomainRegistration: return { ...transactionInfo, domainId, }; case enums_js_1.TransactionType.DomainHold: case enums_js_1.TransactionType.DomainUnregister: case enums_js_1.TransactionType.DomainRemoveSubmitters: return { ...transactionInfo, domainId, domainState, }; case enums_js_1.TransactionType.DomainAddSubmitters: return { ...transactionInfo, }; case enums_js_1.TransactionType.Verify: return { ...transactionInfo, statement, domainId, aggregationId, }; case enums_js_1.TransactionType.VKRegistration: default: return { ...transactionInfo, statementHash, }; } }; exports.handleTransactionEvents = handleTransactionEvents; //# sourceMappingURL=index.js.map