@biconomy/ecosystem
Version:
Testing infrastructure for abstractjs with ephemeral networks
57 lines (50 loc) • 1.32 kB
text/typescript
import {
createBicoBundlerClient,
toNexusAccount
} from "@biconomy/abstractjs-canary"
import { http, parseEther, zeroAddress } from "viem"
import { privateKeyToAccount } from "viem/accounts"
import type { Infra } from "../src/toEcosystem"
import { toClients } from "../src/utils"
export const validateCore = async ({
bundler,
network: { rpcUrl, chain, privateKey }
}: Infra) => {
const eoaAccount = privateKeyToAccount(privateKey)
const nexusAccount = await toNexusAccount({
signer: eoaAccount,
chain,
transport: http(rpcUrl)
})
const accountAddress = await nexusAccount.getAddress()
const bundlerClient = createBicoBundlerClient({
account: nexusAccount,
chain,
transport: http(bundler.url),
mock: true // Using mock mode for testing purposes
})
const { testClient } = await toClients({
rpcUrl,
chain,
privateKey
})
await testClient.setBalance({
address: accountAddress,
value: parseEther("1")
})
const hash = await bundlerClient.sendUserOperation({
calls: [
{
to: zeroAddress,
value: 0n
}
]
})
const { success } = await bundlerClient.waitForUserOperationReceipt({
hash
})
if (!success) {
throw new Error("core validation failed")
}
console.log("core validation passed ✅")
}