@biconomy/abstractjs
Version:
SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.
48 lines • 1.95 kB
JavaScript
import { toPackedUserOperation } from "viem/account-abstraction";
import { getTenderlyDetails } from "./index.js";
import { ENTRY_POINT_ADDRESS } from "../../constants/index.js";
import { deepHexlify } from "./deepHexlify.js";
export const DUMMY_SIMULATION_GAS = {
callGasLimit: 1000000n,
verificationGasLimit: 1000000n,
preVerificationGas: 1000000n,
maxFeePerGas: 1000000n,
maxPriorityFeePerGas: 1000000n
};
export const getSimulationUserOp = (partialUserOp) => {
const mergedUserOp = deepHexlify({
...DUMMY_SIMULATION_GAS,
...partialUserOp
});
return toPackedUserOperation(mergedUserOp);
};
export function tenderlySimulation(partialUserOp, chainId = 84532) {
const tenderlyDetails = getTenderlyDetails();
if (!tenderlyDetails) {
console.log("Tenderly details not found in environment variables. Please set TENDERLY_API_KEY, TENDERLY_ACCOUNT_SLUG, and TENDERLY_PROJECT_SLUG.");
return null;
}
const tenderlyUrl = new URL(`https://dashboard.tenderly.co/${tenderlyDetails.accountSlug}/${tenderlyDetails.projectSlug}/simulator/new`);
const packedUserOp = getSimulationUserOp(partialUserOp);
console.log({ packedUserOp });
const params = new URLSearchParams({
contractAddress: ENTRY_POINT_ADDRESS,
value: "0",
network: chainId.toString(),
contractFunction: "0x765e827f", // handleOps
functionInputs: JSON.stringify([packedUserOp]),
stateOverrides: JSON.stringify([
{
contractAddress: packedUserOp.sender,
balance: "100000000000000000000"
},
{
contractAddress: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", // vitalek.eth
balance: "100000000000000000000"
}
])
});
tenderlyUrl.search = params.toString();
return tenderlyUrl.toString();
}
//# sourceMappingURL=tenderlySimulation.js.map