import { z } from "zod/v4"; import type { AnyZodSchema, ZodErrorLike, inferZodSchemaInput, inferZodSchemaOutput } from "./types/schemas.js"; import type { StructuredLogger } from "./utils/structuredLogger.js"; export declare class ZodSchemaParsedError extends Error { error: ZodErrorLike; payload: unknown; constructor(error: ZodErrorLike, payload: unknown); } export type ZodMessageValueSchema = TSchema; export interface ZodMessageCatalogSchema { [key: string]: AnyZodSchema; } export type ZodMessageHandlers = Partial<{ [K in keyof TCatalogSchema]: (payload: inferZodSchemaOutput) => Promise; }>; export type ZodMessageHandlerOptions = { schema: TMessageCatalog; messages?: ZodMessageHandlers; logger?: StructuredLogger; }; export type MessageFromSchema = { type: K; payload: inferZodSchemaInput; }; export type MessagePayloadFromSchema = inferZodSchemaOutput; export type MessageFromCatalog = { [K in keyof TMessageCatalog]: MessageFromSchema; }[keyof TMessageCatalog]; export declare const ZodMessageSchema: z.ZodObject<{ version: z.ZodDefault>; type: z.ZodString; payload: z.ZodUnknown; }, z.core.$strip>; export interface EventEmitterLike { on(eventName: string | symbol, listener: (...args: any[]) => void): this; } export declare class ZodMessageHandler { #private; constructor(options: ZodMessageHandlerOptions); handleMessage(message: unknown): Promise<{ success: true; data: unknown; } | { success: false; error: string; }>; parseMessage(message: unknown): { success: true; data: MessageFromCatalog; } | { success: false; error: string; }; registerHandlers(emitter: EventEmitterLike, logger?: StructuredLogger): void; } export declare function parseMessageFromCatalog(message: unknown, schema: TMessageCatalog): MessageFromCatalog; type ZodMessageSenderCallback = (message: { type: keyof TMessageCatalog; payload: inferZodSchemaOutput; version: "v1"; }) => Promise; export type ZodMessageSenderOptions = { schema: TMessageCatalog; sender: ZodMessageSenderCallback; canSendMessage?: () => Promise | boolean; }; export declare class ZodMessageSender { #private; constructor(options: ZodMessageSenderOptions); validateCanSendMessage(): Promise; send(type: K, payload: inferZodSchemaInput): Promise; forwardMessage(message: unknown): Promise; } export declare function sendMessageInCatalog(catalog: TMessageCatalog, type: keyof TMessageCatalog, payload: inferZodSchemaInput, sender: ZodMessageSenderCallback): Promise; export type MessageCatalogToSocketIoEvents = { [K in keyof TCatalog]: (message: inferZodSchemaOutput) => void; }; export {};