const tx = contract.doSomething();
const receipt = await tx.wait();
Тогда мы можем сделать функцию для поиска события
import type { ContractReceipt } from 'ethers';
async function eventFor(receipt: ContractReceipt, name: string) {
return receipt?.events?.find(function (e) {
return e.event === name;
});
}Ищем событие
const myEvent = await eventFor(receipt, "MyEvent");
И достаём из него нужное поле
myEvent?.args?.value
Вопросительные знаки тут потому, что наличие этих полей не гарантированно, то есть формально события может и не быть (другими словами, это атрибуты optional). Но так как мы делаем это в тестах и как раз ожидаем, что оно *должно быть* (если, конечно, все предварительные условия выполнены), то всё должно сработать корректно. А вот если события как раз нет, то вылетит ошибка, тест сломается и мы поймём, что где-то у нас проблема.