@owlprotocol/contracts-account-abstraction
Version:
ERC4337 Account Abstraction support for deploying relevant smart contracts and interacting with UserOps.
108 lines (107 loc) • 4.86 kB
JavaScript
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 createPaymasterEIP1193_exports = {};
__export(createPaymasterEIP1193_exports, {
createBackendPaymasterEIP1193: () => createBackendPaymasterEIP1193,
isPaymasterRpcMethod: () => isPaymasterRpcMethod,
paymasterRpcMethods: () => paymasterRpcMethods
});
module.exports = __toCommonJS(createPaymasterEIP1193_exports);
var import_viem = require("viem");
var import_utils = require("viem/utils");
var import_actions = require("../actions/index.js");
var import_UserOperation = require("../models/UserOperation.js");
const paymasterRpcMethods = [
"pimlico_getUserOperationGasPrice",
"pm_getPaymasterStubData",
"pm_getPaymasterData"
];
function isPaymasterRpcMethod(method) {
return paymasterRpcMethods.includes(method);
}
function createBackendPaymasterEIP1193(client) {
return async function(args) {
try {
if (args.method === "pimlico_getUserOperationGasPrice") {
const gasPrice = await (0, import_utils.getAction)(client, import_actions.getUserOperationGasPrice, "getUserOperationGasPrice")({});
return {
slow: {
maxFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxFeePerGas),
maxPriorityFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxPriorityFeePerGas)
},
standard: {
maxFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxFeePerGas),
maxPriorityFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxPriorityFeePerGas)
},
fast: {
maxFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxFeePerGas),
maxPriorityFeePerGas: (0, import_viem.numberToHex)(gasPrice.slow.maxPriorityFeePerGas)
}
};
} else if (args.method === "pm_getPaymasterStubData") {
const [userOperationHex, entryPointAddress, chainIdHex] = args.params;
const userOperation = (0, import_UserOperation.decodeUserOp)(userOperationHex);
const {
paymaster,
paymasterData,
paymasterVerificationGasLimit,
paymasterPostOpGasLimit,
sponsor,
isFinal
} = await (0, import_utils.getAction)(
client,
import_actions.getPaymasterStubData,
"getPaymasterStubData"
)({ ...userOperation, entryPointAddress, chainId: (0, import_viem.hexToNumber)(chainIdHex) });
const result = {
paymaster,
paymasterData,
//Interfaces don't match between official viem action & RPC. Default to 0
paymasterVerificationGasLimit: paymasterVerificationGasLimit ? (0, import_viem.numberToHex)(paymasterVerificationGasLimit) : "0x",
paymasterPostOpGasLimit: (0, import_viem.numberToHex)(paymasterPostOpGasLimit)
};
if (sponsor) {
result.sponsor = sponsor;
}
if (isFinal != void 0) {
result.isFinal = isFinal;
}
return result;
} else if (args.method === "pm_getPaymasterData") {
const [userOperationHex, entryPointAddress, chainIdHex] = args.params;
const userOperation = (0, import_UserOperation.decodeUserOp)(userOperationHex);
const { paymaster, paymasterData, paymasterVerificationGasLimit, paymasterPostOpGasLimit } = await (0, import_utils.getAction)(
client,
import_actions.getPaymasterData,
"getPaymasterData"
)({ ...userOperation, entryPointAddress, chainId: (0, import_viem.hexToNumber)(chainIdHex) });
const result = {
paymaster,
paymasterData,
//Interfaces don't match between official viem action & RPC. Default to 0
paymasterVerificationGasLimit: paymasterVerificationGasLimit ? (0, import_viem.numberToHex)(paymasterVerificationGasLimit) : "0x",
//Interfaces don't match between official viem action & RPC. Default to 0
paymasterPostOpGasLimit: paymasterPostOpGasLimit ? (0, import_viem.numberToHex)(paymasterPostOpGasLimit) : "0x"
};
return result;
}
} catch (error) {
return null;
}
};
}