import { BufReader, BufWriter, Status } from "./deps.ts";
export type ErrorStatus = | Status.BadRequest | Status.Unauthorized | Status.PaymentRequired | Status.Forbidden | Status.NotFound | Status.MethodNotAllowed | Status.NotAcceptable | Status.ProxyAuthRequired | Status.RequestTimeout | Status.Conflict | Status.Gone | Status.LengthRequired | Status.PreconditionFailed | Status.RequestEntityTooLarge | Status.RequestURITooLong | Status.UnsupportedMediaType | Status.RequestedRangeNotSatisfiable | Status.ExpectationFailed | Status.Teapot | Status.MisdirectedRequest | Status.UnprocessableEntity | Status.Locked | Status.FailedDependency | Status.UpgradeRequired | Status.PreconditionRequired | Status.TooManyRequests | Status.RequestHeaderFieldsTooLarge | Status.UnavailableForLegalReasons | Status.InternalServerError | Status.NotImplemented | Status.BadGateway | Status.ServiceUnavailable | Status.GatewayTimeout | Status.HTTPVersionNotSupported | Status.VariantAlsoNegotiates | Status.InsufficientStorage | Status.LoopDetected | Status.NotExtended | Status.NetworkAuthenticationRequired;
export type RedirectStatus = | Status.MultipleChoices | Status.MovedPermanently | Status.Found | Status.SeeOther | Status.UseProxy | Status.TemporaryRedirect | Status.PermanentRedirect;
export type HTTPMethods = | "HEAD" | "OPTIONS" | "GET" | "PUT" | "PATCH" | "POST" | "DELETE";
type HTTPOptions = Omit<Deno.ListenOptions, "transport">;type HTTPSOptions = Omit<Deno.ListenTlsOptions, "transport">;export type Serve = (options: string | HTTPOptions) => Server;export type ServeTls = (options: HTTPSOptions) => Server;
export interface Server extends AsyncIterable<ServerRequest> { close(): void;}
export interface ServerRequest { body: Deno.Reader; conn: Deno.Conn; headers: Headers; method: string; r: BufReader; respond(response: ServerResponse): Promise<void>; url: string; w: BufWriter;}
export interface ServerResponse { status: number; headers: Headers; body: Uint8Array | Deno.Reader | undefined;}