UNPKG

zkverifyjs

Version:

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

119 lines (118 loc) 4.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleFinalized = exports.handleInBlock = void 0; const enums_1 = require("../../../enums"); const events_1 = require("../events"); const helpers_1 = require("../../helpers"); const errors_1 = require("../errors"); /** * Handles "In Block" transaction updates. */ const handleInBlock = async (api, events, transactionInfo, emitter, transactionType) => { if (transactionInfo.status === enums_1.TransactionStatus.Error) return; transactionInfo.status = enums_1.TransactionStatus.InBlock; const updatedTransactionInfo = (0, events_1.handleTransactionEvents)(api, events, transactionInfo, emitter, transactionType); Object.assign(transactionInfo, updatedTransactionInfo); (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.IncludedInBlock, transactionInfo); }; exports.handleInBlock = handleInBlock; /** * Handles "Finalized" transaction updates. */ const handleFinalized = async (api, transactionInfo, dispatchError, emitter, transactionType) => { if (transactionInfo.status === enums_1.TransactionStatus.Error) return; if (dispatchError) { (0, errors_1.handleError)(emitter, api, transactionInfo, dispatchError); return; } transactionInfo.status = enums_1.TransactionStatus.Finalized; switch (transactionType) { case enums_1.TransactionType.Verify: { const info = transactionInfo; const hasDomainId = !!info.domainId; const hasAggregationId = !!info.aggregationId; if (!hasDomainId || hasAggregationId) { (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.Finalized, info); } else { (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.ErrorEvent, { ...info, error: 'Finalized but no aggregation ID found.', }); } break; } case enums_1.TransactionType.VKRegistration: { const info = transactionInfo; if (info.statementHash) { (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.Finalized, info); } else { (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.ErrorEvent, { ...info, error: 'Finalized but no statement hash found.', }); } break; } case enums_1.TransactionType.DomainRegistration: { const info = transactionInfo; if (info.domainId !== undefined) { (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.NewDomain, { domainId: info.domainId, }); (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.Finalized, info); } else { (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.ErrorEvent, { ...info, error: 'Finalized but no domain ID found.', }); } break; } case enums_1.TransactionType.DomainHold: case enums_1.TransactionType.DomainUnregister: { const info = transactionInfo; if (info.domainState !== undefined) { (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.DomainStateChanged, { domainId: info.domainId, domainState: info.domainState, }); (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.Finalized, info); } else { (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.ErrorEvent, { ...info, error: 'Finalized but no domain state returned.', }); } break; } case enums_1.TransactionType.Aggregate: { const info = transactionInfo; if (info.domainId !== undefined || info.aggregationId !== undefined || info.receipt !== undefined) { (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.Finalized, info); } else { const missingFields = ['domainId', 'aggregationId', 'receipt'] .filter((key) => info[key] === undefined) .join(', '); (0, helpers_1.safeEmit)(emitter, enums_1.ZkVerifyEvents.ErrorEvent, { ...info, error: `Finalized but missing fields: ${missingFields}`, }); } break; } default: { console.warn('Unknown transaction type finalized:', transactionType); break; } } }; exports.handleFinalized = handleFinalized;