Mix all the beans, wash nicely and soak in water for at least 7-8 hours or overnight. In the morning put all the soaked beans in a pressure cooker with water and salt. Cook on medium flame till 6-7 whistles or till the beans get cooked without losing their shape.
Put the onion, garlic, and ginger in a grinder to make a paste. Take out the paste in a bowl and keep aside. In the same grinder, add the tomatoes and green chilies, make a paste and keep in a separate bowl.
Heat oil in a pot. Add the Bay leaf, cinnamon stick, peppercorns, cloves, and cumin seeds. Saute for a few seconds or till the spices become fragrant.
Add the onion paste and fry till it becomes golden brown. Keep on stirring in between and every time when you feel that it's sticking to the bottom add around 2 tablespoons of water and continue cooking.
Mix all the dry spices except garam masala with 2 tablespoons of water and add to the pot. Saute for a few seconds.
Next, add the tomato paste. Cook for around 10-12 minutes, till tomatoes, get nicely cooked and change their color.
Finally, add the cooked beans along with the water in which it's cooked to the pot. Add chopped coriander leaves and garam masala. Simmer on low flame for 5-6 minutes and then switch off the gas.
Squeeze in some fresh lime juice, garnish with chopped coriander leaves and serve the beans curry with rice or roti.