Soak the cashews in ½ cup warm water for 10 mins. Once soaked, add the soaked cashews (without water), onions and green chillies to a blender and blend to a smooth paste. Use little water if needed. Alternatively, you can use ready to use ground cashews available in stores. In a pan, add 2 tsp ghee and fry up the paneer slightly. Once done, take out in a plate and add the makhana to the remaining ghee and very lightly toast them for 1-2 minutes. Take out in the same plate and set aside.
Add oil for frying in a wide pan and heat it up. When the oil is hot but not smoky, add sliced onions to it. On medium heat, fry up the onions to a deep shade of brown, but don't make them too brown. Frying in a wide pan in a single layer will avoid the onions from becoming soggy. Keep an eye and keep on stirring them. Once done, drain on a paper towel in a single layer and let cool down, they will crisp up a bit. Grind into a smooth paste adding very little water if needed. This step can be done 2-3 days ahead. Use the oil for making any savory curry if you wish.
In a pot, add ghee and warm up on low medium heat. Temper the ghee with all the whole spices - cinnamon, cloves, cardamom. Add the ginger 7 garlic paste and saute for 30 seconds taking care that they don't burn. Add a splash of water if you feel that the pan is too hot.
Next, add the onion paste to the pan along with all the powdered spices- coriander, cumin. Also add the black pepper powder. Saute the onions and spices on low heat for 4-5 minutes until you see little oil bubbles on the surface and sides. You will have to stir it continuously since the cashews will tend to stick to the bottom of pan.
Add the yogurt and sugar next, immediately mix it with the onion masala. Keep mixing till it is nicely combined. Return to a low stove and keep on continuously mixing till the yogurt is heated through. This will ensure that the yogurt won't curdle. It will take 5-6 minutes.
Continue to cook and when you see little bubbles of oil on the sides of the pan, add ½ water to the pan. Add the salt. Taste and adjust the salt and sugar high now.On low medium heat, let the gravy simmer, do not let boil.
Once the gravy is simmering, add the mawa, heavy cream, paneer and makhana. Let everything simmer on low heat for 4-5 minutes. Finish the curry with garam masala. Let simmer for 1-2 minutes more. Switch off the stove and mix in the rose water if using. Gently mix everything. Cover and let the curry sit for 20 minutes before serving.
Garnish with chopped cilantro and a pinch of black pepper powder. Enjoy with naan or jeera rice.