UNPKG

@owlprotocol/contracts-account-abstraction

Version:

ERC4337 Account Abstraction support for deploying relevant smart contracts and interacting with UserOps.

65 lines (64 loc) 2.08 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var parseFailedOpWithRevert_exports = {}; __export(parseFailedOpWithRevert_exports, { parseFailedOpWithRevert: () => parseFailedOpWithRevert }); module.exports = __toCommonJS(parseFailedOpWithRevert_exports); var import_viem = require("viem"); const panicCodes = { // from https://docs.soliditylang.org/en/v0.8.0/control-structures.html 1: "assert(false)", 17: "arithmetic overflow/underflow", 18: "divide by zero", 33: "invalid enum value", 34: "storage byte array that is incorrectly encoded", 49: ".pop() on an empty array.", 50: "array sout-of-bounds or negative index", 65: "memory overflow", 81: "zero-initialized variable of internal function type" }; function parseFailedOpWithRevert(data) { const methodSig = data.slice(0, 10); const dataParams = `0x${data.slice(10)}`; if (methodSig === "0x08c379a0") { const [err] = (0, import_viem.decodeAbiParameters)( [ { name: "err", type: "string" } ], dataParams ); return err; } if (methodSig === "0x4e487b71") { const [code] = (0, import_viem.decodeAbiParameters)( [ { name: "err", type: "uint256" } ], dataParams ); return panicCodes[Number(code)] ?? `${code}`; } return data; }