import { IncomingMessage, ServerResponse } from 'node:http';

interface MiddlewareOptions {
    responses?: Record<string, object | string | number | boolean | null | ((p: ResponseFunctionParams) => any)>;
    responsesFile?: string;
    watchFiles?: string | string[];
    responseDelay?: number;
    enable?: boolean;
}
interface ResponseFunctionParams {
    body: Record<string, any>;
    query: Record<string, any>;
    headers: Record<string, any>;
    params: Record<string, any>;
    req: IncomingMessage;
    res: ServerResponse;
}
declare const middleware: (middlewareOptions: MiddlewareOptions) => (req: any, res: any, next: any) => Promise<any>;

declare const vitePlugin: (middlewareOptions: MiddlewareOptions) => {
    name: string;
    configureServer(server: any): void;
};

declare const delay: (time: number) => Promise<void>;
declare const isString: (value: any) => value is string;
declare const debounce: <T extends (...args: any[]) => any>(func: T, wait: number, immediate?: boolean) => (...args: Parameters<T>) => void;

export { MiddlewareOptions, ResponseFunctionParams, debounce, delay, isString, middleware, vitePlugin };
