import { WebSocketServer } from 'ws'; import { Store } from './db/store.ts'; import type { BroadcastFn, BroadcastTableChangeFn, EventHandler, MockServerConfig, QueryDef, RequestReplyDef, TableDef, ViewDef } from './types.ts'; export interface MockServer { start(port: number): WebSocketServer; listen(port?: number): Promise; stop(): Promise; store: Store; broadcast: BroadcastFn; broadcastTableChange: BroadcastTableChangeFn; setTable(tableName: string, tableDef: TableDef): void; setView(viewName: string, viewDef: ViewDef): void; setQuery(resourceName: string, queryDef: QueryDef): void; setRequestReply(resourceName: string, requestReplyDef: RequestReplyDef): void; setEventHandler(eventName: string, handler: EventHandler): void; getQuery(resourceName: string): QueryDef | undefined; getRequestReply(resourceName: string): RequestReplyDef | undefined; getEventHandler(eventName: string): EventHandler | undefined; extendQuery(resourceName: string, augment: (current: QueryDef | undefined) => QueryDef): void; extendRequestReply(resourceName: string, augment: (current: RequestReplyDef | undefined) => RequestReplyDef): void; extendEventHandler(eventName: string, augment: (current: EventHandler | undefined) => EventHandler): void; } export declare function createMockServer(config: MockServerConfig): MockServer;