для hardhat есть модификация с ним+ethers. Задумка вроде норм, но у меня почему-то их сгенерированные классы контактов в TypeScript не сочетались с типом Contract, хотя они его наследуют — что странно. Я тогда не успевал с этим разобраться, так-что просто убрал его
Хотя я может опять не в ту сторону советы даю. У них это используется для тестирования контрактов, а не для работы с задеплоенными контрактами, например в мэйннете. Если тебе для фронтэнда это надо использовать мож тебе это не поможет сильно
Я пока тож на первом проекте использую тайпскрипт, хардхэт и этерс. Седня от коллеги узнал, что через хардхэт можно консоль.логи из контрактов во время их исполнения, и мой мир перевернулся