import type { DisplayProperty, EventFilter, FailedRunNotification, OverridableRunTaskOptions, Prettify, RedactString, RegisteredOptionsDiff, RunTaskOptions, RuntimeEnvironmentType, SourceEventOption, SuccessfulRunNotification, TriggerMetadata } from "@systemfsoftware/trigger.dev_core-v2"; import { Logger } from "@systemfsoftware/trigger.dev_core-backend"; import { z } from "zod"; import { Job } from "./job.js"; import { TriggerClient } from "./triggerClient.js"; export type EventMap = { [key: string]: (...args: any[]) => void; }; /** * Type-safe event emitter. * * Use it like this: * * ```typescript * type MyEvents = { * error: (error: Error) => void; * message: (from: string, content: string) => void; * } * * const myEmitter = new EventEmitter() as TypedEmitter; * * myEmitter.emit("error", "x") // <- Will catch this type error; * ``` */ export interface TypedEventEmitter { addListener(event: E, listener: Events[E]): this; on(event: E, listener: Events[E]): this; once(event: E, listener: Events[E]): this; prependListener(event: E, listener: Events[E]): this; prependOnceListener(event: E, listener: Events[E]): this; off(event: E, listener: Events[E]): this; removeAllListeners(event?: E): this; removeListener(event: E, listener: Events[E]): this; emit(event: E, ...args: Parameters): boolean; eventNames(): (keyof Events | string | symbol)[]; rawListeners(event: E): Events[E][]; listeners(event: E): Events[E][]; listenerCount(event: E): number; getMaxListeners(): number; setMaxListeners(maxListeners: number): this; } export type { DisplayProperty, Logger, OverridableRunTaskOptions, Prettify, RedactString, RegisteredOptionsDiff, RunTaskOptions, SourceEventOption, }; export interface TriggerContext { /** Job metadata */ job: { id: string; version: string; }; /** Environment metadata */ environment: { slug: string; id: string; type: RuntimeEnvironmentType; }; /** Organization metadata */ organization: { slug: string; id: string; title: string; }; /** Project metadata */ project: { slug: string; id: string; name: string; }; /** Run metadata */ run: { id: string; isTest: boolean; startedAt: Date; isRetry: boolean; }; /** Event metadata */ event: { id: string; name: string; context: any; timestamp: Date; }; /** Source metadata */ source?: { id: string; metadata?: any; }; /** Account metadata */ account?: { id: string; metadata?: any; }; } export interface TriggerPreprocessContext { job: { id: string; version: string; }; environment: { slug: string; id: string; type: RuntimeEnvironmentType; }; organization: { slug: string; id: string; title: string; }; run: { id: string; isTest: boolean; }; event: { id: string; name: string; context: any; timestamp: Date; }; account?: { id: string; metadata?: any; }; } export interface TaskLogger { debug(message: string, properties?: Record): Promise; info(message: string, properties?: Record): Promise; warn(message: string, properties?: Record): Promise; error(message: string, properties?: Record): Promise; } export type PreprocessResults = { abort: boolean; properties: DisplayProperty[]; }; export type TriggerEventType> = TTrigger extends Trigger ? ReturnType : never; export type TriggerInvokeType> = TTrigger extends Trigger> ? TInvoke : any; export type VerifyResult = { success: true; } | { success: false; reason?: string; }; export interface Trigger> { event: TEventSpec; toJSON(): TriggerMetadata; attachToJob(triggerClient: TriggerClient, job: Job, any>): void; preprocessRuns: boolean; verifyPayload: (payload: ReturnType) => Promise; } export type TriggerPayload = TTrigger extends Trigger> ? TEvent : never; export declare const EventSpecificationExampleSchema: z.ZodObject<{ id: z.ZodString; name: z.ZodString; icon: z.ZodOptional; payload: z.ZodAny; }, "strip", z.ZodTypeAny, { name: string; id: string; icon?: string | undefined; payload?: any; }, { name: string; id: string; icon?: string | undefined; payload?: any; }>; export type EventSpecificationExample = z.infer; export type TypedEventSpecificationExample = { id: string; name: string; icon?: string; payload: TEvent; }; export interface EventSpecification { name: string | string[]; title: string; source: string; icon: string; properties?: DisplayProperty[]; schema?: any; examples?: Array; filter?: EventFilter; parsePayload: (payload: unknown) => TEvent; parseInvokePayload?: (payload: unknown) => TInvoke; runProperties?: (payload: TEvent) => DisplayProperty[]; } export type EventTypeFromSpecification> = TEventSpec extends EventSpecification ? TEvent : never; export type SchemaParserIssue = { path: PropertyKey[]; message: string; }; export type SchemaParserResult = { success: true; data: T; } | { success: false; error: { issues: SchemaParserIssue[]; }; }; export type SchemaParser = { safeParse: (a: unknown) => SchemaParserResult; }; export type WaitForEventResult = { id: string; name: string; source: string; payload: TEvent; timestamp: Date; context?: any; accountId?: string; }; export declare function waitForEventSchema(schema: z.ZodTypeAny): z.ZodObject<{ id: z.ZodString; name: z.ZodString; source: z.ZodString; payload: z.ZodTypeAny; timestamp: z.ZodDate; context: z.ZodOptional; accountId: z.ZodOptional; }, "strip", z.ZodTypeAny, { name: string; id: string; source: string; timestamp: Date; payload?: any; context?: any; accountId?: string | undefined; }, { name: string; id: string; source: string; timestamp: Date; payload?: any; context?: any; accountId?: string | undefined; }>; export type NotificationEvents = { runSucceeeded: (notification: SuccessfulRunNotification) => void; runFailed: (notification: FailedRunNotification) => void; }; export type NotificationsEventEmitter = TypedEventEmitter; //# sourceMappingURL=types.d.ts.map