import { ParsedUrlQuery } from 'querystring';
import { WSRequest, WSResponse } from './service';
import { JsonValue, PartialDeep } from 'type-fest';
export type AbbreviatedResponse = Readonly<[number, PartialDeep<JsonValue>] | [number, PartialDeep<JsonValue>, Record<string, string>]>;
export type Handler = (params: Record<string, string>, body: Uint8Array<ArrayBuffer> | undefined, headers: Record<string, string>, query?: ParsedUrlQuery) => Promise<AbbreviatedResponse>;
export type RouterOptions = Readonly<{
    beforeRequest: (verb: string, path: string, headers: Record<string, string>) => Promise<void>;
}>;
export declare class Router {
    private options;
    private readonly routes;
    private isAuthenticated;
    constructor(options: RouterOptions);
    register(method: string, pattern: string, handler: Handler): void;
    get(pattern: string, handler: Handler): void;
    patch(pattern: string, handler: Handler): void;
    put(pattern: string, handler: Handler): void;
    post(pattern: string, handler: Handler): void;
    del(pattern: string, handler: Handler): void;
    run(request: WSRequest): Promise<WSResponse>;
    setIsAuthenticated(value: boolean): void;
}
