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