import { S, T } from "./constants.js"; export type Either = L | R; export type Nullable = Either; export type Lambda = (value: I) => O; export type Subscriber = Lambda : void>; export type Subscribers = Set>; export type Transform = Lambda; export type EventSync = (transform?: Transform) => { [S]: Nullable>; [T]: Transform; }; export type EventAsync = (transform?: Transform>) => { [S]: Nullable>; [T]: Transform>; }; export type EventAny = Either, EventAsync>; export type InferSubscriber> = T extends EventAsync ? Subscriber : T extends EventSync ? Subscriber : never;