import { KakapoRequest } from '../Request';
import { KakapoResponse } from '../Response';
import { Database, DatabaseSchema } from '../Database';
export declare type RouterHandler<M extends DatabaseSchema> = (request: KakapoRequest, db: Database<M>) => KakapoResponse | any | Promise<KakapoResponse | any>;
export interface InterceptorConfig<M extends DatabaseSchema> {
    host: string;
    routes: {
        [method: string]: {
            [path: string]: RouterHandler<M>;
        };
    };
    db: Database<M> | null;
    requestDelay: number;
}
export interface UrlDetails {
    handlers: any;
    pathname: string;
    fullpath: string;
}
export interface Interceptor<M extends DatabaseSchema> {
    getDB(): Database<M> | null;
    getDelay(): number;
    getHandler(url: string, method: string): RouterHandler<M> | null;
    getParams(url: string, method: string): any;
    getQuery(url: string): any;
}
export declare const interceptorHelper: <M extends DatabaseSchema>(config: InterceptorConfig<M>) => Interceptor<M>;
