export interface MockFunction<TArgs extends unknown[] = unknown[], TReturn = unknown> {
    (...args: TArgs): TReturn;
    calls: TArgs[];
    lastCall?: TArgs;
    returnValue?: TReturn;
    callCount: number;
}
export declare function createMockFunction<TArgs extends unknown[] = unknown[], TReturn = unknown>(implementation?: (...args: TArgs) => TReturn): MockFunction<TArgs, TReturn>;
export interface MockWebSocketAPI {
    postMessage<T extends Record<string, unknown> = Record<string, unknown>>(data: T, transferables?: Transferable[]): void;
    addEventListener(event: string, handler: EventListener): void;
    removeEventListener(event: string, handler: EventListener): void;
    close(): void;
    readyState: number;
    url: string;
}
export declare function createMockWebSocket(url?: string): MockWebSocketAPI;
export interface MockEventSourceAPI {
    simulateMessage<T = string>(data: T, eventType?: 'message' | 'open' | 'error', lastEventId?: string): void;
    addEventListener(event: string, handler: EventListener): void;
    removeEventListener(event: string, handler: EventListener): void;
    close(): void;
    readyState: number;
    url: string;
}
export declare function createMockEventSource(url?: string): MockEventSourceAPI;
export interface MockWorkerAPI {
    postMessage<T = unknown>(message: T, transfer?: Transferable[]): void;
    addEventListener(type: string, listener: EventListener): void;
    removeEventListener(type: string, listener: EventListener): void;
    terminate(): void;
    onmessage: ((event: MessageEvent) => void) | null;
    onerror: ((event: ErrorEvent) => void) | null;
}
export declare function createMockWorker(): MockWorkerAPI;
export interface MockExpressResponse<T = unknown> {
    json(data: T): this;
    send(data: T): this;
    status(code: number): this;
    header(name: string, value: string): this;
    contentType(type: string): this;
    getStatusCode(): number;
    getData(): T | undefined;
    getHeaders(): Record<string, string>;
}
export declare function createMockExpressResponse<T = unknown>(): MockExpressResponse<T>;
export interface MockExpressRequest<T = unknown> {
    method: string;
    url: string;
    body: T;
    params: Record<string, string>;
    query: Record<string, string>;
    headers: Record<string, string>;
    get(header: string): string | undefined;
}
export declare function createMockExpressRequest<T = unknown>(options?: Partial<MockExpressRequest<T>>): MockExpressRequest<T>;
//# sourceMappingURL=mock-types.d.ts.map