import { Pipe, Prettify, PipeOutput, IsInTypeList, PipeInput, DistributiveOmit } from 'valleyed'; import { Enum } from './types/index.js'; import { IncomingHttpHeaders } from 'node:http2'; import { Readable } from 'node:stream'; import { SerializeOptions } from '@fastify/cookie'; import { A as AuthUser } from './overrides-6Hxg764S.js'; declare class EquippedError extends Error { readonly message: string; readonly context: Record; readonly cause?: unknown | undefined; constructor(message: string, context: Record, cause?: unknown | undefined); } declare const Methods: { readonly head: "head"; readonly get: "get"; readonly post: "post"; readonly put: "put"; readonly patch: "patch"; readonly delete: "delete"; readonly options: "options"; }; declare const StatusCodes: { readonly Ok: 200; readonly Found: 302; readonly BadRequest: 400; readonly NotAuthenticated: 401; readonly NotAuthorized: 403; readonly NotFound: 404; readonly ValidationError: 422; readonly TooManyRequests: 429; readonly TokenExpired: 461; }; type MethodsEnum = Enum; type StatusCodesEnum = Enum; type DefaultHeaders = Record>; type DefaultCookies = Record; type ArrayOrValue = T | T[] | undefined; type IncomingFile = { name: string; type: string; size: number; isTruncated: boolean; data: Buffer; duration: number; }; type RouteDef = { params?: Pipe>, Record>>; query?: Pipe>, Record>>; headers?: Pipe; cookies?: Pipe; body?: Pipe, Record>; response?: Pipe; responseHeaders?: Pipe; responseCookies?: Pipe; defaultStatusCode?: StatusCodesEnum; defaultContentType?: string; }; type RouteGroup = { name: string; description?: string; }; type HandlerSetup = (route: Route) => void; type RouteConfig = { middlewares?: ReturnType>[]; responseMiddlewares?: ReturnType>[]; onError?: ReturnType>; groups?: (RouteGroup | RouteGroup['name'])[]; title?: string; descriptions?: string[]; security?: Record[]; schema?: T; hide?: boolean; }; type RouterConfig = RouteConfig & { path: string; }; type Route = RouteConfig & { path: string; method: MethodsEnum; handler: RouteDefHandler; }; type GetApiPart = NonNullable extends true ? RouteDef[K] : T[K]>; type ArePipes = A extends Pipe ? (B extends Pipe ? true : false) : false; type Compare = IsInTypeList extends true ? A : IsInTypeList extends true ? B : K extends `default${string}` | 'context' ? B : ArePipes extends true ? Pipe & PipeInput, PipeOutput & PipeOutput> : B; type MergeRouteDefs = { [K in keyof RouteDef]: Compare; }; type RouteDefToReqRes = Prettify<{ body: PipeOutput>; params: PipeOutput>; requestHeaders: PipeOutput>; requestCookies: PipeOutput>; query: PipeOutput>; response: PipeOutput>; responseHeaders: PipeOutput>; responseCookies: PipeOutput>; statusCode: GetApiPart; contentType: GetApiPart; }>; type Awaitable = Promise | T; type Res> = Awaitable extends true ? IsInTypeList extends true ? IsInTypeList extends true ? Response | T['response'] : Response : Response : Response>; type RouteDefHandler = (req: Request>) => Res>; type RouteMiddlewareHandler<_Def extends RouteDef> = (req: Request>) => Awaitable; type RouteResponseMiddlewareHandler<_Def extends RouteDef> = (req: Request>, res: Response>) => Awaitable; type ErrorHandler = (req: Request>, err: Error) => Res, 'response' | 'statusCode' | 'responseHeaders' | 'responseCookies'> & { response: RequestError['serializedErrors']; statusCode: RequestError['statusCode']; responseHeaders: DefaultHeaders; responseCookies: DefaultCookies; }>; declare function makeMiddlewareHandler(cb: Cb, onSetup?: HandlerSetup): { cb: Cb; onSetup: HandlerSetup | undefined; }; declare const makeMiddleware: (...args: Parameters, Def>>) => { cb: RouteMiddlewareHandler; onSetup: HandlerSetup | undefined; }; declare const makeResponseMiddleware: (...args: Parameters, Def>>) => { cb: RouteResponseMiddlewareHandler; onSetup: HandlerSetup | undefined; }; declare const makeErrorMiddleware: (...args: Parameters, Def>>) => { cb: ErrorHandler; onSetup: HandlerSetup | undefined; }; type CookieVal = { [K in keyof C]: SerializeOptions & { value: C[K]; }; }; declare class Request> { readonly ip: string | undefined; readonly method: MethodsEnum; readonly path: string; body: Def['body']; params: Def['params']; query: Def['query']; headers: IncomingHttpHeaders & Def['requestHeaders']; cookies: Record & Def['requestCookies']; authUser: AuthUser | null; constructor({ ip, body, cookies, params, query, method, path, headers, files, }: { ip: string | undefined; body: Def['body']; params: Def['params']; query: Def['query']; cookies: Record & Def['requestCookies']; headers: IncomingHttpHeaders; files: Record; method: MethodsEnum; path: string; }); pipe(stream: Readable, opts?: { headers?: Def['responseHeaders']; cookies?: Def['responseCookies']; status?: Def['statusCode']; }): Response & { response: Readable; }>; res(params: DistributiveOmit, 'piped'>): Response; error & { response: RequestError['serializedErrors']; statusCode: RequestError['statusCode']; responseHeaders: DefaultHeaders; responseCookies: DefaultCookies; contentType: 'application/json'; }>(params: DistributiveOmit, 'piped'>): Response; } type RequestParams, T = Def['response']> = { body: T; piped?: boolean; } & (IsInTypeList, 200 ]> extends true ? { status?: Def['statusCode']; } : { status: Def['statusCode']; }) & (IsInTypeList, 'application/json']> extends true ? { contentType?: Def['contentType']; } : { contentType: Def['contentType']; }) & (IsInTypeList extends true ? { headers?: Def['responseHeaders']; } : { headers: Def['responseHeaders']; }) & (IsInTypeList extends true ? { cookies?: CookieVal; } : { cookies: CookieVal; }); declare class Response> { body: Def['response'] | undefined; headers: Def['responseHeaders']; cookies: CookieVal; readonly status: Def['statusCode']; readonly contentType: Def['contentType']; readonly piped: boolean; constructor({ body, status, headers, cookies, piped, contentType, }: RequestParams); get cookieValues(): DefaultCookies; set cookieValues(values: DefaultCookies); } declare abstract class RequestError extends EquippedError { readonly message: string; readonly serializedErrors: { message: string; field?: string; }[]; abstract readonly statusCode: StatusCodesEnum; protected constructor(message: string, serializedErrors: { message: string; field?: string; }[], cause?: unknown); } export { type CookieVal as C, type DefaultHeaders as D, EquippedError as E, type IncomingFile as I, Methods as M, RequestError as R, StatusCodes as S, Request as a, Response as b, type RouteDefToReqRes as c, type RouteDef as d, type Route as e, type MethodsEnum as f, type StatusCodesEnum as g, type DefaultCookies as h, type RouteConfig as i, type RouterConfig as j, type MergeRouteDefs as k, type RouteDefHandler as l, makeMiddleware as m, makeResponseMiddleware as n, makeErrorMiddleware as o };