import { ModularSdk } from '@etherspot/modular-sdk';
const modularSdk = new ModularSdk( { privateKey: process.env.WALLET_PRIVATE_KEY }, { chainId: Number(process.env.CHAIN_ID), bundlerProvider: new EtherspotBundler(Number(process.env.CHAIN_ID), bundlerApiKey, customBundlerUrl) } );
const recipient = ''; // recipient wallet address const value = '0.0000001'; // transfer value // get address of EtherspotWallet... const address: string = await modularSdk.getCounterFactualAddress(); console.log('\x1b[33m%s\x1b[0m', `EtherspotWallet address: ${address}`); // clear the transaction batch await modularSdk.clearUserOpsFromBatch(); // add transactions to the batch const transactionBatch = await modularSdk.addUserOpsToBatch({ to: recipient, value: ethers.utils.parseEther(value) }); console.log('transactions: ', transactionBatch); // get balance of the account address const balance = await modularSdk.getNativeBalance(); console.log('balances: ', balance); // estimate transactions added to the batch and get the fee data for the UserOp const op = await modularSdk.estimate(); console.log(`Estimate UserOp: ${await printOp(op)}`); // sign the UserOp and sending to the bundler... const uoHash = await modularSdk.send(op); console.log(`UserOpHash: ${uoHash}`); // get transaction hash... console.log('Waiting for transaction...'); let userOpsReceipt = null; const timeout = Date.now() + 60000; // 1 minute timeout while ((userOpsReceipt == null) && (Date.now() < timeout)) { await sleep(2); userOpsReceipt = await modularSdk.getUserOpReceipt(uoHash); } console.log('\x1b[33m%s\x1b[0m', `Transaction Receipt: `, userOpsReceipt); }