import { BulkCrudOperationKeys, OperationKeys } from "@decaf-ts/db-decorators"; import { SseMessage } from "event-source-plus"; export type ServerEventType = "message" | "heartbeat" | string; export type ServerRawMessage = SseMessage & { id?: string; event: ServerEventType; data: string; retry?: number; }; export type SingleServerEvent = readonly [ modelName: string, operation: OperationKeys | string, id: string, payload: T ]; export type BulkServerEvent = readonly [ modelName: string, operation: BulkCrudOperationKeys, id: string[], payload: T[] ]; export type ServerEvent = SingleServerEvent | BulkServerEvent; export type EventHandlers = { onEvent: ([tableName, operation, id]: ServerEvent) => void; onError: (err: unknown) => void; };