Block hardness

I'm fiddling around with the various types of vanilla stones and I currently have some custom tools available in my datapack. Is there a way to specify what pickaxe can break what stone and at what speed, the same way that pickaxes and ores interact? For example: granite and diorite can be broken by wooden and stone tools, but andesite requires copper pickaxe and above, tuff needs iron pickaxe, deepslate needs iron, etc etc
Continue to help post