@alchemy/aa-core
Version:
viem based SDK that enables interactions with ERC-4337 Smart Accounts. ABIs are based off the definitions generated in @account-abstraction/contracts
33 lines • 1.78 kB
JavaScript
import { isHex, } from "viem";
import { concatPaymasterAndData, parsePaymasterAndData, } from "../utils/userop.js";
import { defaultFeeEstimator } from "./defaults/feeEstimator.js";
import { defaultGasEstimator } from "./defaults/gasEstimator.js";
import { defaultPaymasterAndData } from "./defaults/paymasterAndData.js";
import { defaultUserOpSigner } from "./defaults/userOpSigner.js";
import { noopMiddleware } from "./noopMiddleware.js";
export const middlewareActions = (overrides) => (client) => ({
middleware: {
customMiddleware: overrides.customMiddleware ?? noopMiddleware,
dummyPaymasterAndData: overrides.paymasterAndData?.dummyPaymasterAndData
? async (struct, { account }) => {
const data = overrides.paymasterAndData.dummyPaymasterAndData();
const paymasterOverrides = account.getEntryPoint().version === "0.7.0"
? isHex(data)
? parsePaymasterAndData(data)
: data
: {
paymasterAndData: isHex(data)
? data
: concatPaymasterAndData(data),
};
return { ...struct, ...paymasterOverrides };
}
: defaultPaymasterAndData,
feeEstimator: overrides.feeEstimator ?? defaultFeeEstimator(client),
gasEstimator: overrides.gasEstimator ?? defaultGasEstimator(client),
paymasterAndData: overrides.paymasterAndData?.paymasterAndData ?? defaultPaymasterAndData,
userOperationSimulator: overrides.userOperationSimulator ?? noopMiddleware,
signUserOperation: overrides.signUserOperation ?? defaultUserOpSigner,
},
});
//# sourceMappingURL=actions.js.map