import { Event, isEvent } from "./event"; export interface RespondEvent< Name extends string | symbol = string, T = unknown > extends Event { /** * @param value * @throws InvalidStateError */ respondWith(value: T | Promise): void; } export function isRespondEvent( value: object ): value is RespondEvent { function isRespondEventLike( value: object ): value is Partial> { return isEvent(value); } return isRespondEventLike(value) && typeof value.respondWith === "function"; }