import { AspidaClient, HttpMethod } from 'aspida';
import callMockHandler, { hasMockHandler } from './callMockHandler';
import { MockMethods, MockResponse, PartialResponse } from './types';
import { createValues } from './utils';
export declare const mockMethods: <T extends Partial<Record<import("aspida").LowerHttpMethod, import("aspida").AspidaMethodParams>>>(methods: MockMethods<T>) => MockMethods<T>;
export type MockRoute = {
    path: string;
    methods: MockMethods<any>;
};
export type MockRequestConfig = {
    path: string;
    method: HttpMethod;
    reqBody: any | undefined;
    reqHeaders: any | undefined;
    query: any | undefined;
};
export type MockRequestConfigAndValues = MockRequestConfig & {
    values: ReturnType<typeof createValues>;
};
export type MiddlewareHandler = (req: MockRequestConfigAndValues, res: (res?: PartialResponse | undefined) => void, next: (req?: MockRequestConfigAndValues | undefined) => void) => void | Promise<void>;
export declare const mockMiddleware: (middleware: MiddlewareHandler[]) => MiddlewareHandler[];
export type MockConfig = {
    log?: boolean;
    delayMSec?: number | undefined;
    middleware?: MiddlewareHandler[] | undefined;
};
export type MockClient<U> = AspidaClient<U> & {
    attachRoutes(routes: MockRoute[], config?: MockConfig | undefined): void;
    detachRoutes(): void;
};
export declare const printLog: (config: MockRequestConfig, status: number) => void;
export declare const mockClient: <T>(aspidaClient: AspidaClient<T>) => MockClient<T>;
export { MockResponse, callMockHandler, hasMockHandler };
//# sourceMappingURL=index.d.ts.map