@owlprotocol/contracts-account-abstraction
Version:
ERC4337 Account Abstraction support for deploying relevant smart contracts and interacting with UserOps.
38 lines (37 loc) • 1.3 kB
JavaScript
import { concatHex } from "viem";
import { encodeAbiParameters, getAction } from "viem/utils";
import { dummySignature } from "../../models/UserOperation.js";
import { getSupportedEntryPoints } from "../bundler/getSupportedEntryPoints.js";
async function getPaymasterStubData(client, parameters) {
const { entryPointAddress } = parameters;
const { paymaster } = client;
const supportedEntryPoints = await getAction(client, getSupportedEntryPoints, "getSupportedEntryPoints")({});
if (!supportedEntryPoints.includes(entryPointAddress)) {
throw new Error(`Unsupported entrypoint ${entryPointAddress}, expected one of ${supportedEntryPoints}`);
}
const validUntil = Date.now() + 3600;
const validAfter = 0;
const paymasterDataUnsigned = encodeAbiParameters(
[
{ name: "validUntil", type: "uint48" },
{ name: "validAfter", type: "uint48" }
],
[validUntil, validAfter]
);
const paymasterDataSigned = concatHex([paymasterDataUnsigned, dummySignature]);
const sponsor = {
name: "Owl Protocol",
icon: "https://example.com"
};
return {
paymaster,
paymasterData: paymasterDataSigned,
paymasterVerificationGasLimit: 100000n,
paymasterPostOpGasLimit: 100000n,
sponsor,
isFinal: false
};
}
export {
getPaymasterStubData
};