UNPKG

zkverifyjs

Version:

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

147 lines 6.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleFinalized = exports.handleInBlock = void 0; const enums_js_1 = require("../../../enums.js"); const index_js_1 = require("../events/index.js"); const index_js_2 = require("../../helpers/index.js"); const index_js_3 = require("../errors/index.js"); /** * Handles "In Block" transaction updates. */ const handleInBlock = async (api, events, transactionInfo, emitter, transactionType) => { if (transactionInfo.status === enums_js_1.TransactionStatus.Error) return; transactionInfo.status = enums_js_1.TransactionStatus.InBlock; const updatedTransactionInfo = (0, index_js_1.handleTransactionEvents)(api, events, transactionInfo, emitter, transactionType); Object.assign(transactionInfo, updatedTransactionInfo); (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.IncludedInBlock, transactionInfo); }; exports.handleInBlock = handleInBlock; /** * Handles "Finalized" transaction updates. */ const handleFinalized = async (api, transactionInfo, dispatchError, emitter, transactionType) => { if (transactionInfo.status === enums_js_1.TransactionStatus.Error) return; if (dispatchError) { (0, index_js_3.handleError)(emitter, api, transactionInfo, dispatchError); return; } transactionInfo.status = enums_js_1.TransactionStatus.Finalized; switch (transactionType) { case enums_js_1.TransactionType.Verify: { const info = transactionInfo; const hasDomainId = !!info.domainId; const hasAggregationId = !!info.aggregationId; if (!hasDomainId || hasAggregationId) { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.Finalized, info); } else { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.ErrorEvent, { ...info, error: 'Finalized but no aggregation ID found.', }); } break; } case enums_js_1.TransactionType.BatchVerify: { const info = transactionInfo; if (typeof info.batchCount === 'number' && info.batchCount > 0) { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.Finalized, info); } else { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.ErrorEvent, { ...info, error: 'Finalized but batchCount is missing or invalid.', }); } break; } case enums_js_1.TransactionType.VKRegistration: { const info = transactionInfo; if (info.statementHash) { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.Finalized, info); } else { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.ErrorEvent, { ...info, error: 'Finalized but no statement hash found.', }); } break; } case enums_js_1.TransactionType.DomainRegistration: { const info = transactionInfo; if (info.domainId !== undefined) { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.NewDomain, { domainId: info.domainId, }); (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.Finalized, info); } else { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.ErrorEvent, { ...info, error: 'Finalized but no domain ID found.', }); } break; } case enums_js_1.TransactionType.DomainHold: case enums_js_1.TransactionType.DomainUnregister: { const info = transactionInfo; if (info.domainState !== undefined) { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.DomainStateChanged, { domainId: info.domainId, domainState: info.domainState, }); (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.Finalized, info); } else { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.ErrorEvent, { ...info, error: 'Finalized but no domain state returned.', }); } break; } case enums_js_1.TransactionType.DomainRemoveSubmitters: { const info = transactionInfo; if (info.domainState !== undefined) { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.DomainStateChanged, { domainId: info.domainId, domainState: info.domainState, }); } (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.Finalized, transactionInfo); break; } case enums_js_1.TransactionType.DomainAddSubmitters: { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.Finalized, transactionInfo); break; } case enums_js_1.TransactionType.Aggregate: { const info = transactionInfo; if (info.domainId !== undefined || info.aggregationId !== undefined || info.receipt !== undefined) { (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.Finalized, info); } else { const missingFields = ['domainId', 'aggregationId', 'receipt'] .filter((key) => info[key] === undefined) .join(', '); (0, index_js_2.safeEmit)(emitter, enums_js_1.ZkVerifyEvents.ErrorEvent, { ...info, error: `Finalized but missing fields: ${missingFields}`, }); } break; } default: { console.warn('Unknown transaction type finalized:', transactionType); break; } } }; exports.handleFinalized = handleFinalized; //# sourceMappingURL=index.js.map