type SmartWalletOptions = Prettify<
  {
    factoryAddress?: string;
    overrides?: {
      accountAddress?: string;
      accountSalt?: string;
      bundlerUrl?: string;
      createAccount?: (
      entrypointAddress?: string;
      erc20Paymaster?: { address: string; token: string };
      execute?: (
        transaction: SendTransactionOption,
      executeBatch?: (
        transactions: Array<SendTransactionOption>,
      getAccountNonce?: (
      ) => Promise<bigint>;
      paymaster?: (
        userOp: UserOperationV06 | UserOperationV07,
      predictAddress?: (
      ) => Promise<string>;
    };
  } & ({ gasless: boolean } | { sponsorGas: boolean })
>;