zkverifyjs
Version:
Submit proofs to zkVerify and query proof state with ease using our npm package.
147 lines • 6.34 kB
JavaScript
;
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