Import a safe into connect
Import safe into Cometh Connect
Import a safe 1.3.0
import {
createComethPaymasterClient,
createSafeSmartAccount,
createSmartAccountClient,
importSafeActions,
} from "@cometh/connect-sdk-4337";
import { http, encodeFunctionData } from "viem";
import { gnosis } from "viem/chains";
import countContractAbi from "../contract/counterABI.json";
import { privateKeyToAccount } from "viem/accounts";
const apiKey = process.env.NEXT_PUBLIC_COMETH_4337_API_KEY;
const chain = gnosis;
const bundlerUrl = "https://bundler.cometh.io/"+CHAIN_ID+"?apikey="+COMETH_4337_API_KEY;
const paymasterUrl = "https://paymaster.cometh.io/"+CHAIN_ID+"?apikey="+COMETH_4337_API_KEY;
// Step 1 - This is the address of you safe using the connect legacy
const smartAccountAddress = WALLET_ADDRESS_TO_IMPORT
// Your current owner
const signer = privateKeyToAccount(PK)
const safe4337SmartAccount = await createSafeSmartAccount({
apiKey,
chain,
smartAccountAddress: legacyWalletAddress,
signer,
});
const paymasterClient = await createComethPaymasterClient({
transport: http(paymasterUrl),
chain,
});
const smartAccountClient = createSmartAccountClient({
account: smartAccount,
chain,
bundlerTransport: http(bundlerUrl),
paymaster: paymasterClient,
userOperation: {
estimateFeesPerGas: async () => {
return await paymasterClient.getUserOperationGasPrice();
},
},
})
const extendedClient = smartAccountClient.extend(importSafeActions());
const importMessage = await extendedClient.prepareImportSafe1_3Tx();
const signature = (await extendedClient.signTransactionByExternalOwner({
signer,
tx: importMessage.tx,
})) as Hex;
await extendedClient.importSafe({
signature,
...importMessage
});Import a safe 1.4.0
After import
Last updated