import type { FileSystemEvents } from './modules/fs'; import type { ShellEvents } from './modules/shell'; import type { PreviewInfo } from './modules/preview'; import type { PreviewEvents } from './modules/preview'; export interface ConsumerEvents extends FileSystemEvents, ShellEvents, PreviewEvents { connect: { cdnUrl?: string | null; }; } declare type WatcherEvent = { type: 'create'; path: string; } | { type: 'remove'; path: string; } | { type: 'change'; path: string; } | { type: 'rename'; oldPath: string; newPath: string; } | { type: 'close'; }; export declare type FSWatchEvent = WatcherEvent & { watcherId: string; }; export declare type WorkerStatusUpdate = { state: 'downloading_manifest'; } | { state: 'downloaded_module'; name: string; version: string; totalPending: number; } | { state: 'starting_command'; } | { state: 'command_running'; }; export interface WorkerEvents { 'internal/handshake/done': void; 'internal/operation/done': { operationId: string; listenerPayload: unknown; }; 'internal/operation/failed': { operationId: string; error: Error; }; 'runtime/ready': void; 'worker/progress': { workerId?: string; status: WorkerStatusUpdate; }; 'worker/tty': { workerId: string; payload: { data: string; type: 'out' | 'err'; }; }; 'worker/exit': { workerId: string; exitCode: number; error?: { message: string; }; }; 'preview/port/ready': PreviewInfo; 'fs/watch-event': FSWatchEvent; } declare type OperationEvent = Payload & { operationId: string; }; declare type MaybePromise = T | Promise; export declare class MessageReceiver { private emitter; private senderPort; constructor(); private waitForHandshake; private addMessageListener; on(event: Event, listener: (message: ConsumerEvents[Event] extends [infer PayloadType, infer _] ? PayloadType : ConsumerEvents[Event]) => MaybePromise, options?: AddEventListenerOptions): void; send(event: Event, ...data: WorkerEvents[Event] extends Record ? [WorkerEvents[Event]] : [undefined?]): void; } export declare class MessageSender { private readonly target; private emitter; private channel; private receiverPort; private receiverReadyPromise; constructor(target: Window); handshake(): Promise; on(event: Event, listener: (message: MessageEvent) => void, options?: AddEventListenerOptions): void; off(event: Event, listener: (message: MessageEvent) => void, options?: AddEventListenerOptions): void; send(event: Event, ...data: ConsumerEvents[Event] extends [infer PayloadType, infer _] ? [PayloadType] : ConsumerEvents[Event] extends Record ? [ConsumerEvents[Event]] : [undefined?]): Promise | undefined : void>; } export {};