cp-app
Version:
Easily bootstrap a new permissionless app based on permissionless.js and your favourite tooling!
37 lines (32 loc) • 1.25 kB
text/typescript
import { pimlicoPaymaster } from "@/config/pimlicoConfig"
import { createSmartAccountClient } from "permissionless"
import { type SmartAccountClient } from "permissionless"
import {
type SafeSmartAccount,
privateKeyToSafeSmartAccount
} from "permissionless/accounts"
import { http, type Address } from "viem"
import { type PublicClient } from "viem"
import { sepolia } from "viem/chains"
export const createSafeAccount = async (publicClient: PublicClient) => {
const safeAccount: SafeSmartAccount = await privateKeyToSafeSmartAccount(
publicClient,
{
privateKey: "0xPRIVATE_KEY",
safeVersion: "1.4.1",
entryPoint: process.env.NEXT_PUBLIC_ENTRYPOINT as Address,
saltNonce: 0n // optional
}
)
return safeAccount
}
export const createSafeAccountClient = async (publicClient: PublicClient) => {
const safeAccount = await createSafeAccount(publicClient)
const smartAccountClient: SmartAccountClient = createSmartAccountClient({
account: safeAccount,
chain: sepolia,
transport: http(process.env.NEXT_PUBLIC_BUNDLER_RPC_HOST),
sponsorUserOperation: pimlicoPaymaster.sponsorUserOperation
})
return smartAccountClient
}