import { a as RequestHandler, c as RequestHandlerOptions, g as ResponseResolutionContext, l as ResponseResolver, o as RequestHandlerDefaultInfo } from "./request-handler.js";
import { n as Path, r as PathParams, t as Match } from "./match-request-url.js";
//#region src/http/http-handler.d.ts
type HttpHandlerMethod = string | RegExp;
interface HttpHandlerInfo extends RequestHandlerDefaultInfo {
  method: HttpHandlerMethod;
  path: HttpRequestPredicate<PathParams>;
}
declare enum HttpMethods {
  HEAD = "HEAD",
  GET = "GET",
  POST = "POST",
  PUT = "PUT",
  PATCH = "PATCH",
  OPTIONS = "OPTIONS",
  DELETE = "DELETE"
}
type RequestQuery = {
  [queryName: string]: string;
};
type HttpRequestParsedResult = {
  match: Match;
  cookies: Record<string, string>;
};
type HttpRequestResolverExtras<Params extends PathParams> = {
  params: Params;
  cookies: Record<string, string>;
};
type HttpCustomPredicate<Params extends PathParams> = (args: {
  request: Request;
  cookies: Record<string, string>;
}) => HttpCustomPredicateResult<Params> | Promise<HttpCustomPredicateResult<Params>>;
type HttpCustomPredicateResult<Params extends PathParams> = boolean | {
  matches: boolean;
  params: Params;
};
type HttpRequestPredicate<Params extends PathParams> = Path | HttpCustomPredicate<Params>;
/**
 * Request handler for HTTP requests.
 * Provides request matching based on method and URL.
 */
declare class HttpHandler extends RequestHandler<HttpHandlerInfo, HttpRequestParsedResult, HttpRequestResolverExtras<any>> {
  constructor(method: HttpHandlerMethod, predicate: HttpRequestPredicate<PathParams>, resolver: ResponseResolver<HttpRequestResolverExtras<any>, any, any>, options?: RequestHandlerOptions);
  private checkRedundantQueryParameters;
  parse(args: {
    request: Request;
    resolutionContext?: ResponseResolutionContext;
  }): Promise<{
    match: Match;
    cookies: Record<string, string>;
  }>;
  predicate(args: {
    request: Request;
    parsedResult: HttpRequestParsedResult;
    resolutionContext?: ResponseResolutionContext;
  }): Promise<boolean>;
  private matchMethod;
  protected extendResolverArgs(args: {
    request: Request;
    parsedResult: HttpRequestParsedResult;
  }): {
    params: PathParams<string>;
    cookies: Record<string, string>;
  };
  log(args: {
    request: Request;
    response: Response;
  }): Promise<void>;
}
//#endregion
export { HttpMethods as a, HttpRequestResolverExtras as c, HttpHandlerMethod as i, RequestQuery as l, HttpHandler as n, HttpRequestParsedResult as o, HttpHandlerInfo as r, HttpRequestPredicate as s, HttpCustomPredicate as t };
//# sourceMappingURL=http-handler.d.ts.map