autotel
Version:
Write Once, Observe Anywhere
24 lines (21 loc) • 780 B
text/typescript
import { EventSchemaMetadata } from './event-subscriber.cjs';
type SafeParseResult<T> = {
success: true;
data: T;
} | {
success: false;
error: unknown;
};
interface SchemaLike<T> {
safeParse(input: unknown): SafeParseResult<T>;
}
interface DefineEventOptions<S> {
toJsonSchema?: (schema: S) => unknown;
}
interface DefinedEvent<Name extends string, Payload> {
readonly name: Name;
readonly schemaMetadata?: EventSchemaMetadata;
track(payload: Payload): void;
}
declare function defineEvent<Name extends string, Payload, S extends SchemaLike<Payload>>(name: Name, schema: S, options?: DefineEventOptions<S>): DefinedEvent<Name, Payload>;
export { type DefineEventOptions as D, type SchemaLike as S, type DefinedEvent as a, defineEvent as d };